diff --git a/scwx-qt/res/icons/font-awesome-6/pause-solid.svg b/scwx-qt/res/icons/font-awesome-6/pause-solid.svg new file mode 100644 index 00000000..57ee1e2e --- /dev/null +++ b/scwx-qt/res/icons/font-awesome-6/pause-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scwx-qt/res/icons/font-awesome-6/play-solid.svg b/scwx-qt/res/icons/font-awesome-6/play-solid.svg new file mode 100644 index 00000000..1298e049 --- /dev/null +++ b/scwx-qt/res/icons/font-awesome-6/play-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake index becb5901..1618d1a5 100644 --- a/scwx-qt/scwx-qt.cmake +++ b/scwx-qt/scwx-qt.cmake @@ -142,6 +142,7 @@ set(SRC_TYPES source/scwx/qt/types/alert_types.cpp set(HDR_UI source/scwx/qt/ui/about_dialog.hpp source/scwx/qt/ui/alert_dialog.hpp source/scwx/qt/ui/alert_dock_widget.hpp + source/scwx/qt/ui/animation_dock_widget.hpp source/scwx/qt/ui/flow_layout.hpp source/scwx/qt/ui/imgui_debug_dialog.hpp source/scwx/qt/ui/imgui_debug_widget.hpp @@ -154,6 +155,7 @@ set(HDR_UI source/scwx/qt/ui/about_dialog.hpp set(SRC_UI source/scwx/qt/ui/about_dialog.cpp source/scwx/qt/ui/alert_dialog.cpp source/scwx/qt/ui/alert_dock_widget.cpp + source/scwx/qt/ui/animation_dock_widget.cpp source/scwx/qt/ui/flow_layout.cpp source/scwx/qt/ui/imgui_debug_dialog.cpp source/scwx/qt/ui/imgui_debug_widget.cpp @@ -166,6 +168,7 @@ set(SRC_UI source/scwx/qt/ui/about_dialog.cpp set(UI_UI source/scwx/qt/ui/about_dialog.ui source/scwx/qt/ui/alert_dialog.ui source/scwx/qt/ui/alert_dock_widget.ui + source/scwx/qt/ui/animation_dock_widget.ui source/scwx/qt/ui/imgui_debug_dialog.ui source/scwx/qt/ui/radar_site_dialog.ui source/scwx/qt/ui/settings_dialog.ui diff --git a/scwx-qt/scwx-qt.qrc b/scwx-qt/scwx-qt.qrc index c708db9e..36618bee 100644 --- a/scwx-qt/scwx-qt.qrc +++ b/scwx-qt/scwx-qt.qrc @@ -24,6 +24,8 @@ res/icons/font-awesome-6/gears-solid.svg res/icons/font-awesome-6/github.svg res/icons/font-awesome-6/palette-solid.svg + res/icons/font-awesome-6/pause-solid.svg + res/icons/font-awesome-6/play-solid.svg res/icons/font-awesome-6/rotate-left-solid.svg res/icons/font-awesome-6/sliders-solid.svg res/icons/font-awesome-6/square-minus-regular.svg diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 452aeeb8..95a9af27 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -62,6 +63,7 @@ public: level2SettingsWidget_ {nullptr}, level3ProductsWidget_ {nullptr}, alertDockWidget_ {nullptr}, + animationDockWidget_ {nullptr}, aboutDialog_ {nullptr}, imGuiDebugDialog_ {nullptr}, radarSiteDialog_ {nullptr}, @@ -138,12 +140,13 @@ public: ui::Level3ProductsWidget* level3ProductsWidget_; - ui::AlertDockWidget* alertDockWidget_; - ui::AboutDialog* aboutDialog_; - ui::ImGuiDebugDialog* imGuiDebugDialog_; - ui::RadarSiteDialog* radarSiteDialog_; - ui::SettingsDialog* settingsDialog_; - ui::UpdateDialog* updateDialog_; + ui::AlertDockWidget* alertDockWidget_; + ui::AnimationDockWidget* animationDockWidget_; + ui::AboutDialog* aboutDialog_; + ui::ImGuiDebugDialog* imGuiDebugDialog_; + ui::RadarSiteDialog* radarSiteDialog_; + ui::SettingsDialog* settingsDialog_; + ui::UpdateDialog* updateDialog_; std::unique_ptr radarProductModel_; std::shared_ptr textEventManager_; @@ -182,12 +185,23 @@ MainWindow::MainWindow(QWidget* parent) : p->alertDockWidget_->setVisible(false); addDockWidget(Qt::BottomDockWidgetArea, p->alertDockWidget_); + // Animation Dock Widget + p->animationDockWidget_ = new ui::AnimationDockWidget(this); + p->animationDockWidget_->setVisible(true); + addDockWidget(Qt::LeftDockWidgetArea, p->animationDockWidget_); + // Configure Menu ui->menuView->insertAction(ui->actionRadarToolbox, ui->radarToolboxDock->toggleViewAction()); ui->radarToolboxDock->toggleViewAction()->setText(tr("Radar &Toolbox")); ui->actionRadarToolbox->setVisible(false); + ui->menuView->insertAction(ui->actionAnimationToolbox, + p->animationDockWidget_->toggleViewAction()); + p->animationDockWidget_->toggleViewAction()->setText( + tr("A&nimation Toolbox")); + ui->actionAnimationToolbox->setVisible(false); + ui->menuView->insertAction(ui->actionResourceExplorer, ui->resourceExplorerDock->toggleViewAction()); ui->resourceExplorerDock->toggleViewAction()->setText( @@ -273,7 +287,7 @@ void MainWindow::showEvent(QShowEvent* event) { QMainWindow::showEvent(event); - resizeDocks({ui->radarToolboxDock}, {150}, Qt::Horizontal); + resizeDocks({ui->radarToolboxDock}, {188}, Qt::Horizontal); } void MainWindow::on_actionOpenNexrad_triggered() diff --git a/scwx-qt/source/scwx/qt/main/main_window.ui b/scwx-qt/source/scwx/qt/main/main_window.ui index 0d5c5489..33cf502f 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.ui +++ b/scwx-qt/source/scwx/qt/main/main_window.ui @@ -76,6 +76,7 @@ &View + @@ -359,7 +360,7 @@ - Radar Toolbox + Radar &Toolbox @@ -429,6 +430,11 @@ &Check for Updates + + + A&nimation Toolbox + + diff --git a/scwx-qt/source/scwx/qt/ui/animation_dock_widget.cpp b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.cpp new file mode 100644 index 00000000..395fca29 --- /dev/null +++ b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.cpp @@ -0,0 +1,38 @@ +#include "animation_dock_widget.hpp" +#include "ui_animation_dock_widget.h" + +#include + +namespace scwx +{ +namespace qt +{ +namespace ui +{ + +static const std::string logPrefix_ = "scwx::qt::ui::animation_dock_widget"; +static const auto logger_ = scwx::util::Logger::Create(logPrefix_); + +class AnimationDockWidgetImpl +{ +public: + explicit AnimationDockWidgetImpl() = default; + ~AnimationDockWidgetImpl() = default; +}; + +AnimationDockWidget::AnimationDockWidget(QWidget* parent) : + QDockWidget(parent), + p {std::make_unique()}, + ui(new Ui::AnimationDockWidget) +{ + ui->setupUi(this); +} + +AnimationDockWidget::~AnimationDockWidget() +{ + delete ui; +} + +} // namespace ui +} // namespace qt +} // namespace scwx diff --git a/scwx-qt/source/scwx/qt/ui/animation_dock_widget.hpp b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.hpp new file mode 100644 index 00000000..c8b33d5a --- /dev/null +++ b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.hpp @@ -0,0 +1,35 @@ +#pragma once + +#include + +namespace Ui +{ +class AnimationDockWidget; +} + +namespace scwx +{ +namespace qt +{ +namespace ui +{ + +class AnimationDockWidgetImpl; + +class AnimationDockWidget : public QDockWidget +{ + Q_OBJECT + +public: + explicit AnimationDockWidget(QWidget* parent = nullptr); + ~AnimationDockWidget(); + +private: + friend class AnimationDockWidgetImpl; + std::unique_ptr p; + Ui::AnimationDockWidget* ui; +}; + +} // namespace ui +} // namespace qt +} // namespace scwx diff --git a/scwx-qt/source/scwx/qt/ui/animation_dock_widget.ui b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.ui new file mode 100644 index 00000000..b81177b1 --- /dev/null +++ b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.ui @@ -0,0 +1,201 @@ + + + AnimationDockWidget + + + + 0 + 0 + 200 + 335 + + + + Animation Toolbox + + + + + + + Timeline + + + + + + Live View + + + true + + + + + + + Archive View + + + + + + + + 0 + 0 + 0 + 1991 + 9 + 14 + + + + yyyy-MM-dd + + + true + + + + + + + HH:mm t + + + + + + + Loop Time (Minutes) + + + + + + + 30 + + + + + + + Loop Speed + + + + + + + 1.000000000000000 + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ... + + + + :/res/icons/font-awesome-6/backward-step-solid.svg:/res/icons/font-awesome-6/backward-step-solid.svg + + + + + + + ... + + + + :/res/icons/font-awesome-6/angle-left-solid.svg:/res/icons/font-awesome-6/angle-left-solid.svg + + + + + + + ... + + + + :/res/icons/font-awesome-6/play-solid.svg:/res/icons/font-awesome-6/play-solid.svg + + + + + + + ... + + + + :/res/icons/font-awesome-6/angle-right-solid.svg:/res/icons/font-awesome-6/angle-right-solid.svg + + + + + + + ... + + + + :/res/icons/font-awesome-6/forward-step-solid.svg:/res/icons/font-awesome-6/forward-step-solid.svg + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + +