ТЕХНИЧЕСКОЕ ЗАДАНИЕ на разработку утилиты **ubl-settings-datetime** 1. **ОПИСАНИЕ:** Графическое средство настройки даты и времени в ОС UBLinux 1. **ЭТАПЫ И СРОКИ СОЗДАНИЯ ПРИЛОЖЕНИЯ:** Общий срок работ по созданию приложения составляет N дней: - N дня - макет и дизайн приложения и его утверждение - N дней - разработка приложения - N дня - тестирование приложения и исправление ошибок Перечень этапов разработки приложения: - Разработка макета и дизайна приложения, самостоятельно - Утверждение и доработка макета, самостоятельно - Создание работающего интерфейса, включая полную разработку действующих ярлыков, кнопок и т.д., самостоятельно - Проектирование алгоритма работы приложения, самостоятельно - Написание работающего кода приложения, включая полноценно работающие элементы графического интерфейса, а также перевод (поддержка локализации En, Ru), самостоятельно - Тестирование и исправление ошибок, самостоятельно - Публикация 1. **ТЕХНОЛОГИЧЕСКИЕ ТРЕБОВАНИЯ:** 1. Приложение разрабатывается под нужды операционной системы UBLinux 1. Использование фирменного логотипа компании 1. Название приложения, техническое: **ubl-settings-datetime** 1. Название приложения, публичное: **UBConfig - Дата и время** 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 3. Главное окно: 1. Требования к внешнему виду: - Адаптивный (резиновый) дизайн. - Минимальный размер окна до прекращения масштабирования 800 на 600 пикселей. - Шапка в стиле приложений GTK3. - В верхней части крупный логотип утилиты, с права от него краткое описание утилиты. Фон заполнен изображением. - Срока уведомления, представляющая собой полосу с инфографикой и элементом для закрытия/скрытия строки уведомлений. - Рабочая область. 1. Требования к «Рабочей области». Выводятся группы настроек запуска: 1. Элементы - лейбл "Время". - счётчик от 00 до 23 (часы). - лейбл «:» (разделитель). - счётчик от 00 до 59 (минуты). - лейбл «Дата». - поле ввода. Ввод даты в формате ДД.ММ.ГГГГ - кнопка с иконкой календаря. Вызов объекта датапикер (визуальное представление выбора даты). - кнопка «Синхронизировать». Синхронизация выставленных даты и времени с часами и датой системы. Неактивно, если выбраны значения "По умолчанию, DHCP, Вручную" чекбокса в блоке "Синхронизация через NTP". - кнопка «Синхронизировать аппаратное время». Синхронизация даты и времени с временем BIOS рабочей станции. - лейбл "Синхронизация аппаратного времени:" - комбокс с вариантами "Локальное время, Время по UTC" - вложенный блок с заголовком «Часовой пояс». - блок с заголовком "Синхронизация через NTP" - комбобокс с вариантами выбора сервера: «По умолчанию, DHCP, Вручную». При выборе «По умолчанию», второе поле для ввода вручную становится заблокированным для манипуляций - текст введённого поля серый. Содержание поля - ответ полученный на запрос «ubconfig --source=default get NTPSERVERS\_DEFAULT». При выборе «По умолчанию» в конфиг файл передаются значения: «NTPSERVERS=default». - поле ввода для ручного указания серверов. Неактивно, если выбраны значения "Отключено, Остановлено, По умолчанию, DHCP" чекбокса в блоке "Синхронизация через NTP". - блок с заголовком «Часовой пояс». - лейбл «Регион:». - комбобокс. Перечень регионов, локализация стандартными средствами. - лейбл «Зона:». - комбобокс. Перечень городов с поправкой на часовой пояс. Например, «(UTC +06) Омск». Перечень регионов, локализация стандартными средствами. 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. systemd-timesyncd `[[ systemctl --quiet is-active systemd-timesyncd &>/dev/null ]] && systemctl stop systemd-timesyncd` 1. ntp `[[ systemctl --quiet is-active ntpd &>/dev/null ]] && systemctl stop ntpd` 1. openntp `[[ systemctl --quiet is-active openntpd &>/dev/null ]] && systemctl stop openntpd` 1. linuxptp `[[ systemctl - -quiet is-active ptp4l &>/dev/null ]] && systemctl stop ptp4l` 1. Установка часового пояса: `ln -s /usr/share/zoneinfo/ && ln -s /usr/share/zoneinfo/REGION/ZONE` (комбобокс "Регион", "Зона") 1. Команды записи в конфигурационный файл: 1. Получить статус синхронизации NTP: `/usr/bin/ubconfig get network NTPSERVERS` 1. Задать значение NTPSERVERS: 1. Если выбран по умолчанию: `/usr/bin/ubconfig set network NTPSERVERS=default` 1. Если выбран dhcp: `/usr/bin/ubconfig set network NTPSERVERS=dhcp` 1. Если выбран вручную: `/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` 1. **ПРИБЛИЗИТЕЛЬНЫЙ МАКЕТ ПРИЛОЖЕНИЯ.** 1. Главное окно ![](https://gitea.ublinux.ru/miramax166/design-ubl-settings-apps/raw/branch/master/ubl-settings-datetime/pic/01%28ru_RU%29.png)