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

|
|
|
|