ТЕХНИЧЕСКОЕ ЗАДАНИЕ на разработку утилиты **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)