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
+
+
+
+
+
+
+
+
+
+
+
+