ТЕХНИЧЕСКОЕ ЗАДАНИЕ на разработку утилиты **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, Вручную". При выборе "По умолчанию", второе поле для ввода вручную становится заблокированным для манипуляций - текст введённого поля серый. При выборе "По умолчанию" в конфигурационный файл передаются значения: "NTPSERVERS=default". - поле ввода для ручного указания серверов. Неактивно, если выбраны значения "Отключено, Остановлено, По умолчанию, DHCP" комбобокса в блоке "Синхронизация через NTP". 1. Блок с заголовком "Часовой пояс". - лейбл "Синхронизация аппаратного времени:" - комбокс с вариантами "Локальное время, Время по UTC" - вложенный блок с заголовком "Часовой пояс". - блок с заголовком "Синхронизация через NTP" - лейбл "Регион:". - комбобокс. Локализованный перечень регионов. - лейбл "Зона:". - комбобокс. Перечень городов с поправкой на часовой пояс. Например, "(UTC +06) Омск". Перечень регионов, локализация стандартными средствами. 1. **ОСОБЕННОСТИ** 1. При загрузке утилиты по умолчанию загружаются данные из локального конфигурационного файла (выполняются команды блоков "Чтение значений: из локального конфигурационного файла"). 1. Функции записи в локальный конфигурационный файл и чтения-записи в глобальный конфигурационный файл должны проходить процедуру повышения привилегий прав пользователя через polkit. 1. Кнопка "Загрузить" -> ("Загрузить глобальную конфигурацию, Загрузить локальную конфигурацию"). При нажатии на кнопку происходит открытие меню с пунктами: "Загрузить глобальную конфигурацию, Загрузить локальную конфигурацию". Загрузка текущей и глобальной конфигурации в системе через скрипт ubconfig (выполняются команды блоков "Чтение значений: из локального конфигурационного файла"), загрузка конфигурации из файла настроек ОС ublinux.ini (выполняются команды блоков "Чтение значений: из глобального конфигурационного файла"). 1. Кнопка "Сохранить" -> ("Cохранить конфигурацию, Сохранить в глобальную конфигурацию, Сохранить в локальную конфигурацию"). Сохраняет текущие настройки через скрипт ubconfig (выполняются команды блоков "Установить значение: в локальный конфигурационный файл") и в конфигурационный файл настроек ОС ublinux.ini (выполняются команды блоков "Установить значение: в глобальный конфигурационный файл"). При выборе пунктов "Сохранить в глобальную конфигурацию, Сохранить в локальную конфигурацию" происходит отдельное сохранение настроек. 1. Строка уведомлений. Цвет в зависимости от сигнала: - песочный, пиктограмма "Птичка", сообщения об удачных загрузках или сохранениях конфигураций системы. - красный, пиктограмма "Восклицательный знак", сообщения об ошибках при сохранении, загрузке параметров конфигурации, при ошибках в работе программы. 1. Окно с выводом информации о программе: - Заголовок окна по локализованному названию утилиты - Версия берётся из main.cpp глобальной переменной в исходника: UBAPP_VERSION - Копирайты, порядок: - Иконка приложения - Название утилиты - Версия программы - Название утилиты, локализованное - Ссылка "Домашняя страница проекта" на https://ublinux.ru/ - Copyright (c) 2023 - UBSoft Software LLC 1. **КОМАНДЫ** 1. Текущие дата и время - Чтение значения: - через средства функции на языке Си - Установить значение: - счётчики часы и минуты: `date +%T -s "h:m:sec"` (кнопка "Синхронизировать") - дата: `date +%Y%m%d -s "2000:06:14"` (кнопка "Синхронизировать") - Синхронизировать аппаратное время: - Установить значение: `hwclock --systohc` (кнопка "Синхронизировать аппаратное время") 1. Синхронизация через NTP - Чтение значения: - из локального конфигурационного файла: `/usr/bin/ubconfig --source system get network NTPSERVERS` - из глобального конфигурационного файла: `/usr/bin/ubconfig --source global get network NTPSERVERS` - Установить значение: - "Остановлено" в локальный конфигурационный файл: `/usr/bin/ubconfig --target system set network NTPSERVERS=stop` в глобальный конфигурационный файл: `/usr/bin/ubconfig --target global set network NTPSERVERS=stop` - "По умолчанию" в локальный конфигурационный файл: `/usr/bin/ubconfig --target system set network NTPSERVERS=default` в глобальный конфигурационный файл: `/usr/bin/ubconfig --target global set network NTPSERVERS=default` - "DHCP" в локальный конфигурационный файл: `/usr/bin/ubconfig --target system set network NTPSERVERS=dhcp` в глобальный конфигурационный файл: `/usr/bin/ubconfig --target global set network NTPSERVERS=dhcp` - "Вручную" в локальный конфигурационный файл: `/usr/bin/ubconfig --target system set network NTPSERVERS=$VALUE` в глобальный конфигурационный файл: `/usr/bin/ubconfig --target global set network NTPSERVERS=$VALUE` где $VALUE - перечень серверов, полученных из поля в блоке "Синхронизация через NTP", разделённых "," или ";". - Проверка запущенных процессов синхронизации (systemd-timesyncd, ntpd, chronyd) и остановка этих сервисов сервисов, осуществляется выполнением команды `/usr/bin/ubconfig remove network NTPSERVERS` при выборе опции "Остановлено" из выпадающего списка блока "Синхронизация через NTP" 1. Часовой пояс - Синхронизация аппаратного времени: - Чтение значений: - из локального конфигурационного файла: `/usr/bin/ubconfig --source system get clock HWCLOCK_SYNC` - из глобального конфигурационного файла: `/usr/bin/ubconfig --source global get clock HWCLOCK_SYNC` - Установить значение: - "Локальное время" в локальный конфигурационный файл: `/usr/bin/ubconfig --target system set clock HWCLOCK_SYNC=localtime` в глобальный конфигурационный файл: `/usr/bin/ubconfig --target global set clock HWCLOCK_SYNC=localtime` - "Время по UTC" в локальный конфигурационный файл: `/usr/bin/ubconfig --target system set clock HWCLOCK_SYNC=utc` в глобальный конфигурационный файл: `/usr/bin/ubconfig --target global set clock HWCLOCK_SYNC=utc` - Комбобокс "Регион", "Зона": - Чтение значений: - из локального конфигурационного файла: `/usr/bin/ubconfig --source system get clock ZONE` - из глобального конфигурационного файла: `/usr/bin/ubconfig --source global get clock ZONE` - Установить значение: - в локальный конфигурационный файл: `/usr/bin/ubconfig --target system set clock ZONE=$VALUE` - в глобальный конфигурационный файл: `/usr/bin/ubconfig --target global set clock ZONE=$VALUE` где $VALUE - сложение срок-значений из комбобокса "Регион" и "Зона" через символ "/", например "Asia/Omsk". 1. **ПРИБЛИЗИТЕЛЬНЫЙ МАКЕТ ПРИЛОЖЕНИЯ.** 1. Главное окно ![](https://gitea.ublinux.ru/miramax166/design-ubl-settings-apps/raw/branch/master/ubl-settings-datetime/pic/01%28ru_RU%29.png)