- gui - предназначен для хранения графического интерфейса приложения. Содержит точку входа.
- core - содержит модули, которые занимаются обработкой, загрузкой видео, а так же взаимодействуют с плагинами.
- plugins - содержит плагины для расширения функционала приложения.
- tests - предназначен для хранения юнит-тестов (пока не используется).
- res - каталог рессурсов.
Все виджеты расположены внутри MainWindow. MainWindow отвечает за корректную компановку виджетов приложения.
- Viewport - занимается отрисовкой кадров видео.
- PluginList - содержит виджиты плагинов.
- VideoControlBar - управляет проигрыванием видео.
- VideoCutterList - содержит список виджетов VideoCutter. Добавляет и удаляет новые виджеты VideoCutter, а так же управляет порядком расположения виджетов. Содержит информацию об активном VideoCutter.
- VideoCutter - используется для выбора нужного фрагмента видео.
GUIManager изолирует модули графического интерфейса от остальных модулей системы. Занимыется пересылкой сигналов от модулей gui к другим модулям системы того же уровня. Содержит только сигналы, дублирующие сигнатуры сигналов и слотов внутренних и внешних модулей. Аналогичную функцию выполняет Core для модулей ядра.
Такой подход позволяет избежать перекрестного взаимодействия моделей различных подсистем, выстраивая четкую иерархию взаимодействий.
void uploadVideo(QString*) Загрузить видео
void playVideo() Начать отправку кадров
void stopVideo() Останавить отправку кадров и сбросить счетчик кадров
void pauseVideo() Приостанавливить отправку кадров
void videoLen(int) Получить длину видео в кадрах
void updateFrame(QImage*); Получить кадр
void stoped(); Получить сигнал об остановке видео