You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
14 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

ТЕХНИЧЕСКОЕ ЗАДАНИЕ на разработку утилиты **ubl-settings-datetime**
1. **ОПИСАНИЕ:**
Графическое средство настройки даты и времени в ОС UBLinux
1. **ЭТАПЫ И СРОКИ СОЗДАНИЯ ПРИЛОЖЕНИЯ:**
Общий срок работ по созданию приложения составляет N дней:
- N дня - макет и дизайн приложения и его утверждение
- N дней - разработка приложения
- N дня - тестирование приложения и исправление ошибок
Перечень этапов разработки приложения:
- Разработка макета и дизайна приложения, самостоятельно
- Утверждение и доработка макета, самостоятельно
- Создание работающего интерфейса, включая полную разработку действующих ярлыков, кнопок и т.д., самостоятельно
- Проектирование алгоритма работы приложения, самостоятельно
- Написание работающего кода приложения, включая полноценно работающие элементы графического интерфейса, а также перевод (поддержка локализации En, Ru), самостоятельно
- Тестирование и исправление ошибок, самостоятельно
- Публикация
1. **ТЕХНОЛОГИЧЕСКИЕ ТРЕБОВАНИЯ:**
1. Приложение разрабатывается под нужды операционной системы UBLinux
1. Использование фирменного логотипа компании
1. Название приложения, техническое: **ubl-settings-datetime**
1. Название приложения, публичное: **Дата и время**
1. Стек технологий:
- Язык программирования: Bash или C++
- Приложение для разработки графического интерфейса: Glade 3
- Графические библиотеки: GTK3
- Операционная система разработки: UBLinux DB
1. Структура:
- **/usr/bin/ubl-settings-datetime (скомпилированный бинарный файл)**
Bash/C: Весь функционал сосредоточен в графической части, вызовы и исполнение процедур написаны на языках Bash, C++
- Файл **glade** скомпилирован в бинарный файл
Графическая часть, фронт
- Файл **css** скомпилирован в бинарный файл
Стили виджетов GTK
- **/usr/share/ubl-settings-datetime/images/{\*.png,\*.svg}**
Элементы изображений
- **/usr/share/ubl-settings-datetime/locale -> /usr/share/locale**
Локализация En/Ru
1. **ТЕХНИЧЕСКОЕ ЗАДАНИЕ:**
1. Ярлык (desktop-файл):
1. Type: Application
1. Exec: ubl-settings-datetime
1. Categories: X-UBL-SettingsManager;X-UBL-SystemSettings
1. Главное окно:
1. Требования к внешнему виду:
- Адаптивный (резиновый) дизайн.
- Минимальный размер окна до прекращения масштабирования 800 на 600 пикселей.
- Шапка в стиле приложений GTK3 с содержимым:
- Кнопка с выпадающим списком "Загрузить" -> ("Загрузить глобальную конфигурацию, Загрузить локальную конфигурацию")
- Заголовок окна, название приложения
- Кнопка с выпадающим списком "Сохранить" -> ("Сохранить глобальную конфигурацию, Сохранить локальную конфигурацию")
- Кнопка с иконкой с выпадающим списком -> "Справка, О приложении"
- Стандартные элементы окна, кнопки "Свернуть, Минимизировать/На весь экран, Закрыть"
- В верхней части крупный логотип утилиты, с права от него краткое описание утилиты. Фон заполнен изображением.
- Срока уведомления, представляющая собой полосу с инфографикой строки уведомлений.
- Рабочая область.
1. Требования к "Рабочей области". Выводятся группы настроек запуска:
1. Блок с заголовком "Текущие дата и время"
- лейбл "Время".
- счётчик от 00 до 23 (часы).
- лейбл ":" (разделитель).
- счётчик от 00 до 59 (минуты).
- лейбл "Дата".
- поле ввода. Ввод даты в формате ДД.ММ.ГГГГ
- кнопка с иконкой календаря. Вызов объекта датапикер (визуальное представление выбора даты).
- кнопка "Синхронизировать". Синхронизация выставленных даты и времени с часами и датой системы. Неактивно, если выбраны значения "По умолчанию, DHCP, Вручную" чекбокса в блоке "Синхронизация через NTP".
- кнопка "Синхронизировать аппаратное время". Синхронизация даты и времени с временем BIOS рабочей станции.
1. Блок с заголовком "Синхронизация через NTP"
- комбобокс с вариантами выбора сервера: "Остановлено, По умолчанию, DHCP, Вручную". При выборе "По умолчанию", второе поле для ввода вручную становится заблокированным для манипуляций - текст введённого поля серый. Содержание поля - ответ полученный на запрос "ubconfig --source=default get NTPSERVERS\_DEFAULT". При выборе "По умолчанию» в конфигурационный файл передаются значения: "NTPSERVERS=default".
- поле ввода для ручного указания серверов. Неактивно, если выбраны значения "Отключено, Остановлено, По умолчанию, DHCP" комбобокса в блоке "Синхронизация через NTP".
1. Блок с заголовком "Часовой пояс".
- лейбл "Синхронизация аппаратного времени:"
- комбокс с вариантами "Локальное время, Время по UTC"
- вложенный блок с заголовком "Часовой пояс".
- блок с заголовком "Синхронизация через NTP"
- лейбл "Регион:".
- комбобокс. Локализованный перечень регионов.
- лейбл "Зона:".
- комбобокс. Перечень городов с поправкой на часовой пояс. Например, "(UTC +06) Омск". Перечень регионов, локализация стандартными средствами.
1. **ОСОБЕННОСТИ**
1. При загрузке утилиты по умолчанию загружаются данные из локального конфигурационного файла.
1. Функции записи в локальный конфигурационный файл и чтения-записи в глобальный конфигурационный файл должны проходить процедуру повышения привилегий прав пользователя через pcexec.
1. Кнопка "Загрузить" -> ("Загрузить глобальную конфигурацию, Загрузить локальную конфигурацию"). При нажатии на кнопку происходит открытие меню с пунктами: "Загрузить глобальную конфигурацию, Загрузить локальную конфигурацию". Загрузка текущей и глобальной конфигурации в системе через скрипт ubconfig (команда get local), загрузка конфигурации из файла настроек ОС ublinux.ini (команда get global).
1. Кнопка "Сохранить" -> ("Cохранить конфигурацию, Сохранить в глобальную конфигурацию, Сохранить в локальную конфигурацию"). Сохраняет текущие настройки через скрипт ubconfig (команда set local) и в конфигурационный файл настроек ОС ublinux.ini (команда set global). При выборе пунктов "Сохранить в глобальную конфигурацию, Сохранить в локальную конфигурацию" происходит отдельное сохранение настроек.
1. Строка уведомлений. Цвет в зависимости от сигнала:
- песочный, пиктограмма "Птичка", сообщения об удачных загрузках или сохранениях конфигураций системы.
- красный, пиктограмма "Восклицательный знак", сообщения об ошибках при сохранении, загрузке параметров конфигурации, при ошибках в работе программы.
1. Окно с выводом информации о программе:
- Заголовок окна по локализованному названию утилиты
- Версия берётся из main.cpp глобальной переменной в исходника: UBAPP_VERSION
- Копирайты, порядок:
- Иконка приложения
- Название утилиты
- Версия программы
- Название утилиты локализованное
- Ссылка "Домашняя страница проекта" на https://ublinux.ru/
- Copyright (c) 2023 - UBSoft Software LLC
1. **КОМАНДЫ**
1. Задать время: `date +%T -s "h:m:sec"` (кнопка "Синхронизировать")
1. Задать дату: `date +%Y%m%d -s "2000:06:14"` (кнопка "Синхронизировать")
1. Синхронизировать аппаратное время: `hwclock --systohc` (кнопка "Синхронизировать аппаратное время")
1. Проверка запущенных процессов синхронизации, например, `pidof -q systemd-timesyncd ntpd chronyd`.
1. Остановка сервисов:
1. `SEL_SERVICE=\"systemd-timesyncd\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service;`
`SEL_SERVICE=\"ntpd\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE};`
`SEL_SERVICE=\"ntpdate\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE};`
`SEL_SERVICE=\"chronyd\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE};`
`SEL_SERVICE=\"openntpd\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ntpd;`
`SEL_SERVICE=\"ptp4l\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE};`
`SEL_SERVICE=\"phc2sys\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE}`
1. Установка часового пояса: `ln -s /usr/share/zoneinfo/ && ln -s /usr/share/zoneinfo/REGION/ZONE` (комбобокс "Регион", "Зона")
1. Команды записи в конфигурационный файл:
1. Получить статус синхронизации NTP: `/usr/bin/ubconfig get network NTPSERVERS`
1. Задать значение NTPSERVERS:
- Если выбран по умолчанию: `/usr/bin/ubconfig set network NTPSERVERS=default`
- Если выбран dhcp: `/usr/bin/ubconfig set network NTPSERVERS=dhcp`
- Если выбран вручную: `/usr/bin/ubconfig set network NTPSERVERS=АДРЕСА ИЗ ПОЛЯ`
1. Получить текущую временную зону: `/usr/bin/ubconfig get clock ZONE`
1. Задать временную зону: `/usr/bin/ubconfig set clock ZONE=REGION/ZONE`
1. Отключить синхронизацию NTP: `/usr/bin/ubconfig remove network NTPSERVERS`
7. **ПРИБЛИЗИТЕЛЬНЫЙ МАКЕТ ПРИЛОЖЕНИЯ.**
1. Главное окно
![](https://gitea.ublinux.ru/miramax166/design-ubl-settings-apps/raw/branch/master/ubl-settings-datetime/pic/01%28ru_RU%29.png)