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