You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

17 KiB

ТЕХНИЧЕСКОЕ ЗАДАНИЕ на разработку утилиты ubl-settings-datetime

  1. ОПИСАНИЕ: Графическое средство настройки даты и времени в ОС UBLinux

  2. ЭТАПЫ И СРОКИ СОЗДАНИЯ ПРИЛОЖЕНИЯ:

    1. Общий срок работ по созданию приложения составляет N дней:
      1. N дня - макет и дизайн приложения и его утверждение
      2. N дней - разработка приложения
      3. N дня - тестирование приложения и исправление ошибок
    2. Перечень этапов разработки приложения:
      1. Разработка макета и дизайна приложения, самостоятельно
      2. Утверждение и доработка макета, самостоятельно
      3. Создание работающего интерфейса, включая полную разработку действующих ярлыков, кнопок и т.д., самостоятельно
    3. Проектирование алгоритма работы приложения, самостоятельно
    4. Написание работающего кода приложения, включая полноценно работающие элементы графического интерфейса, а также перевод (поддержка локализации En, Ru), самостоятельно
    5. Тестирование и исправление ошибок, самостоятельно
    6. Публикация
  3. ТЕХНОЛОГИЧЕСКИЕ ТРЕБОВАНИЯ:

    1. Приложение разрабатывается под нужды операционной системы UBLinux
    2. Использование фирменного логотипа компании
    3. Название приложения, техническое: ubl-settings-datetime
    4. Название приложения, публичное: Дата и время
    5. Стек технологий:
      1. Язык программирования: Bash или C++
      2. Приложение для разработки графического интерфейса: Glade 3
      3. Графические библиотеки: GTK3
      4. Операционная система разработки: UBLinux DB
    6. Структура:
      1. /usr/bin/ubl-settings-datetime (скомпилированный бинарный файл) Bash/C: Весь функционал сосредоточен в графической части, вызовы и исполнение процедур написаны на языках Bash, C++
      2. Файл glade скомпилирован в бинарный файл Графическая часть, фронт
      3. Файл css скомпилирован в бинарный файл Стили виджетов GTK
      4. /usr/share/ubl-settings-datetime/images/{*.png,*.svg} Элементы изображений
      5. /usr/share/ubl-settings-datetime/locale -> /usr/share/locale Локализация En/Ru
  4. ТЕХНИЧЕСКОЕ ЗАДАНИЕ:

    1. Ярлык (desktop-файл):
      1. Type: Application
      2. Exec: ubl-settings-datetime
      3. Categories: X-UBL-SettingsManager;X-UBL-SystemSettings
    2. Главное окно:
      1. Требования к внешнему виду:
        1. Адаптивный (резиновый) дизайн.
        2. Минимальный размер окна до прекращения масштабирования 800 на 600 пикселей.
        3. Шапка в стиле приложений GTK3 с содержимым:
          1. Иконка приложения
          2. Кнопка с выпадающим списком "Загрузить" -> ("Загрузить глобальную конфигурацию, Загрузить локальную конфигурацию")
          3. Заголовок окна, название приложения
          4. Кнопка с выпадающим списком "Сохранить" -> ("Сохранить глобальную конфигурацию, Сохранить локальную конфигурацию")
          5. Кнопка с иконкой с выпадающим списком -> "Справка, О приложении"
          6. Стандартные элементы окна, кнопки "Свернуть, Минимизировать/На весь экран, Закрыть"
        4. В верхней части крупный логотип утилиты, с права от него краткое описание утилиты. Фон заполнен изображением.
        5. Срока уведомления, представляющая собой полосу с инфографикой строки уведомлений.
        6. Рабочая область.
      2. Требования к "Рабочей области". Выводятся группы настроек запуска:
        1. Блок с заголовком "Текущие дата и время"
          1. лейбл "Время".
          2. счётчик от 00 до 23 (часы).
          3. лейбл ":" (разделитель).
          4. счётчик от 00 до 59 (минуты).
          5. лейбл "Дата".
          6. поле ввода. Ввод даты в формате ДД.ММ.ГГГГ
          7. кнопка с иконкой календаря. Вызов объекта датапикер (визуальное представление выбора даты).
          8. кнопка "Синхронизировать". Синхронизация выставленных даты и времени с часами и датой системы. Неактивно, если выбраны значения "По умолчанию, DHCP, Вручную" чекбокса в блоке "Синхронизация через NTP".
          9. кнопка "Синхронизировать аппаратное время". Синхронизация даты и времени с временем BIOS рабочей станции.
        2. Блок с заголовком "Синхронизация через NTP"
          1. комбобокс с вариантами выбора сервера: "Остановлено, По умолчанию, DHCP, Вручную". При выборе "По умолчанию", второе поле для ввода вручную становится заблокированным для манипуляций - текст введённого поля серый. При выборе "По умолчанию" в конфигурационный файл передаются значения: "NTPSERVERS=default".
          2. поле ввода для ручного указания серверов. Неактивно, если выбраны значения "Отключено, Остановлено, По умолчанию, DHCP" комбобокса в блоке "Синхронизация через NTP".
        3. Блок с заголовком "Часовой пояс".
          1. лейбл "Синхронизация аппаратного времени:"
          2. комбокс с вариантами "Локальное время, Время по UTC"
          3. вложенный блок с заголовком "Часовой пояс".
          4. блок с заголовком "Синхронизация через NTP"
          5. лейбл "Регион:".
          6. комбобокс. Локализованный перечень регионов.
          7. лейбл "Зона:".
          8. комбобокс. Перечень городов с поправкой на часовой пояс. Например, "(UTC +06) Омск". Перечень регионов, локализация стандартными средствами.
  5. ОСОБЕННОСТИ

    1. При загрузке утилиты по умолчанию загружаются данные из локального конфигурационного файла (выполняются команды блоков "Чтение значений: из локального конфигурационного файла").
    2. Функции записи в локальный конфигурационный файл и чтения-записи в глобальный конфигурационный файл должны проходить процедуру повышения привилегий прав пользователя через polkit.
    3. Кнопка "Загрузить" -> ("Загрузить глобальную конфигурацию, Загрузить локальную конфигурацию"). При нажатии на кнопку происходит открытие меню с пунктами: "Загрузить глобальную конфигурацию, Загрузить локальную конфигурацию". Загрузка текущей и глобальной конфигурации в системе через скрипт ubconfig (выполняются команды блоков "Чтение значений: из локального конфигурационного файла"), загрузка конфигурации из файла настроек ОС ublinux.ini (выполняются команды блоков "Чтение значений: из глобального конфигурационного файла").
    4. Кнопка "Сохранить" -> ("Cохранить конфигурацию, Сохранить в глобальную конфигурацию, Сохранить в локальную конфигурацию"). Сохраняет текущие настройки через скрипт ubconfig (выполняются команды блоков "Установить значение: в локальный конфигурационный файл") и в конфигурационный файл настроек ОС ublinux.ini (выполняются команды блоков "Установить значение: в глобальный конфигурационный файл"). При выборе пунктов "Сохранить в глобальную конфигурацию, Сохранить в локальную конфигурацию" происходит отдельное сохранение настроек.
    5. Строка уведомлений. Цвет в зависимости от сигнала:
      • песочный, пиктограмма "Птичка", сообщения об удачных загрузках или сохранениях конфигураций системы.
      • красный, пиктограмма "Восклицательный знак", сообщения об ошибках при сохранении, загрузке параметров конфигурации, при ошибках в работе программы.
    6. Окно с выводом информации о программе:
      1. Заголовок окна по локализованному названию утилиты
      2. Версия берётся из main.cpp глобальной переменной в исходника: UBAPP_VERSION
      3. Копирайты, порядок:
        1. Иконка приложения
        2. Название утилиты
        3. Версия программы
        4. Название утилиты, локализованное
        5. Ссылка "Домашняя страница проекта" на https://ublinux.ru/
        6. Copyright (c) 2023 - UBSoft Software LLC
  6. КОМАНДЫ

    1. Текущие дата и время
      1. Чтение значения:
        1. через средства функции на языке Си
      2. Установить значение:
        1. счётчики часы и минуты: date +%T -s "h:m:sec" (кнопка "Синхронизировать")
        2. дата: date +%Y%m%d -s "2000:06:14" (кнопка "Синхронизировать")
      3. Синхронизировать аппаратное время:
      4. Установить значение: hwclock --systohc (кнопка "Синхронизировать аппаратное время")
    2. Синхронизация через NTP
      1. Чтение значения:
        1. из локального конфигурационного файла: /usr/bin/ubconfig --default --source system get network NTPSERVERS
        2. из глобального конфигурационного файла: /usr/bin/ubconfig --default --source global get network NTPSERVERS
      2. Установить значение:
        1. "Остановлено" в локальный конфигурационный файл: /usr/bin/ubconfig --target system set network NTPSERVERS=stop в глобальный конфигурационный файл: /usr/bin/ubconfig --target global set network NTPSERVERS=stop
        2. "По умолчанию" в локальный конфигурационный файл: /usr/bin/ubconfig --target system set network NTPSERVERS=default в глобальный конфигурационный файл: /usr/bin/ubconfig --target global set network NTPSERVERS=default
        3. "DHCP" в локальный конфигурационный файл: /usr/bin/ubconfig --target system set network NTPSERVERS=dhcp в глобальный конфигурационный файл: /usr/bin/ubconfig --target global set network NTPSERVERS=dhcp
        4. "Вручную" в локальный конфигурационный файл: /usr/bin/ubconfig --target system set network NTPSERVERS=$VALUE в глобальный конфигурационный файл: /usr/bin/ubconfig --target global set network NTPSERVERS=$VALUE где $VALUE - перечень серверов, полученных из поля в блоке "Синхронизация через NTP", разделённых "," или ";".
      3. Проверка запущенных процессов синхронизации (systemd-timesyncd, ntpd, chronyd) и остановка этих сервисов сервисов, осуществляется выполнением команды /usr/bin/ubconfig remove network NTPSERVERS при выборе опции "Остановлено" из выпадающего списка блока "Синхронизация через NTP"
    3. Часовой пояс
      1. Синхронизация аппаратного времени:
        1. Чтение значений:
          • из локального конфигурационного файла: /usr/bin/ubconfig --default --source system get clock HWCLOCK_SYNC
          • из глобального конфигурационного файла: /usr/bin/ubconfig --default --source global get clock HWCLOCK_SYNC
        2. Установить значение:
          1. "Локальное время" в локальный конфигурационный файл: /usr/bin/ubconfig --target system set clock HWCLOCK_SYNC=localtime в глобальный конфигурационный файл: /usr/bin/ubconfig --target global set clock HWCLOCK_SYNC=localtime
          2. "Время по UTC" в локальный конфигурационный файл: /usr/bin/ubconfig --target system set clock HWCLOCK_SYNC=utc в глобальный конфигурационный файл: /usr/bin/ubconfig --target global set clock HWCLOCK_SYNC=utc
      2. Комбобокс "Регион", "Зона":
        1. Чтение значений:
          • из локального конфигурационного файла: /usr/bin/ubconfig --default --source system get clock ZONE
          • из глобального конфигурационного файла: /usr/bin/ubconfig --default --source global get clock ZONE
        2. Установить значение:
          • в локальный конфигурационный файл: /usr/bin/ubconfig --target system set clock ZONE=$VALUE
          • в глобальный конфигурационный файл: /usr/bin/ubconfig --target global set clock ZONE=$VALUE где $VALUE - сложение срок-значений из комбобокса "Регион" и "Зона" через символ "/", например "Asia/Omsk".
  7. ПРИБЛИЗИТЕЛЬНЫЙ МАКЕТ ПРИЛОЖЕНИЯ.

    1. Главное окно