diff --git a/scwx-qt/res/icons/font-awesome-6/angle-down-solid.svg b/scwx-qt/res/icons/font-awesome-6/angle-down-solid.svg
new file mode 100644
index 00000000..c877d491
--- /dev/null
+++ b/scwx-qt/res/icons/font-awesome-6/angle-down-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/scwx-qt/res/icons/font-awesome-6/angle-up-solid.svg b/scwx-qt/res/icons/font-awesome-6/angle-up-solid.svg
new file mode 100644
index 00000000..da43225c
--- /dev/null
+++ b/scwx-qt/res/icons/font-awesome-6/angle-up-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/scwx-qt/res/icons/font-awesome-6/angles-down-solid.svg b/scwx-qt/res/icons/font-awesome-6/angles-down-solid.svg
new file mode 100644
index 00000000..68671b02
--- /dev/null
+++ b/scwx-qt/res/icons/font-awesome-6/angles-down-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/scwx-qt/res/icons/font-awesome-6/angles-up-solid.svg b/scwx-qt/res/icons/font-awesome-6/angles-up-solid.svg
new file mode 100644
index 00000000..74692e85
--- /dev/null
+++ b/scwx-qt/res/icons/font-awesome-6/angles-up-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 60e9a87f..0e0f2091 100644
--- a/scwx-qt/scwx-qt.cmake
+++ b/scwx-qt/scwx-qt.cmake
@@ -181,6 +181,7 @@ set(HDR_UI source/scwx/qt/ui/about_dialog.hpp
source/scwx/qt/ui/flow_layout.hpp
source/scwx/qt/ui/imgui_debug_dialog.hpp
source/scwx/qt/ui/imgui_debug_widget.hpp
+ source/scwx/qt/ui/layer_dialog.hpp
source/scwx/qt/ui/left_elided_item_delegate.hpp
source/scwx/qt/ui/level2_products_widget.hpp
source/scwx/qt/ui/level2_settings_widget.hpp
@@ -199,6 +200,7 @@ set(SRC_UI source/scwx/qt/ui/about_dialog.cpp
source/scwx/qt/ui/flow_layout.cpp
source/scwx/qt/ui/imgui_debug_dialog.cpp
source/scwx/qt/ui/imgui_debug_widget.cpp
+ source/scwx/qt/ui/layer_dialog.cpp
source/scwx/qt/ui/left_elided_item_delegate.cpp
source/scwx/qt/ui/level2_products_widget.cpp
source/scwx/qt/ui/level2_settings_widget.cpp
@@ -215,6 +217,7 @@ set(UI_UI source/scwx/qt/ui/about_dialog.ui
source/scwx/qt/ui/animation_dock_widget.ui
source/scwx/qt/ui/collapsible_group.ui
source/scwx/qt/ui/imgui_debug_dialog.ui
+ source/scwx/qt/ui/layer_dialog.ui
source/scwx/qt/ui/open_url_dialog.ui
source/scwx/qt/ui/placefile_dialog.ui
source/scwx/qt/ui/placefile_settings_widget.ui
diff --git a/scwx-qt/scwx-qt.qrc b/scwx-qt/scwx-qt.qrc
index 4f914f25..10d8b0a2 100644
--- a/scwx-qt/scwx-qt.qrc
+++ b/scwx-qt/scwx-qt.qrc
@@ -20,8 +20,12 @@
res/fonts/Inconsolata-Regular.ttf
res/icons/scwx-256.ico
res/icons/scwx-256.png
+ res/icons/font-awesome-6/angle-down-solid.svg
res/icons/font-awesome-6/angle-left-solid.svg
res/icons/font-awesome-6/angle-right-solid.svg
+ res/icons/font-awesome-6/angle-up-solid.svg
+ res/icons/font-awesome-6/angles-down-solid.svg
+ res/icons/font-awesome-6/angles-up-solid.svg
res/icons/font-awesome-6/backward-step-solid.svg
res/icons/font-awesome-6/book-solid.svg
res/icons/font-awesome-6/discord.svg
diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp
index b3aa618f..267da846 100644
--- a/scwx-qt/source/scwx/qt/main/main_window.cpp
+++ b/scwx-qt/source/scwx/qt/main/main_window.cpp
@@ -22,6 +22,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -78,6 +79,7 @@ public:
animationDockWidget_ {nullptr},
aboutDialog_ {nullptr},
imGuiDebugDialog_ {nullptr},
+ layerDialog_ {nullptr},
placefileDialog_ {nullptr},
radarSiteDialog_ {nullptr},
settingsDialog_ {nullptr},
@@ -167,6 +169,7 @@ public:
ui::AnimationDockWidget* animationDockWidget_;
ui::AboutDialog* aboutDialog_;
ui::ImGuiDebugDialog* imGuiDebugDialog_;
+ ui::LayerDialog* layerDialog_;
ui::PlacefileDialog* placefileDialog_;
ui::RadarSiteDialog* radarSiteDialog_;
ui::SettingsDialog* settingsDialog_;
@@ -249,6 +252,9 @@ MainWindow::MainWindow(QWidget* parent) :
// Placefile Manager Dialog
p->placefileDialog_ = new ui::PlacefileDialog(this);
+ // Layer Dialog
+ p->layerDialog_ = new ui::LayerDialog(this);
+
// Settings Dialog
p->settingsDialog_ = new ui::SettingsDialog(this);
@@ -454,6 +460,11 @@ void MainWindow::on_actionPlacefileManager_triggered()
p->placefileDialog_->show();
}
+void MainWindow::on_actionLayerManager_triggered()
+{
+ p->layerDialog_->show();
+}
+
void MainWindow::on_actionImGuiDebug_triggered()
{
p->imGuiDebugDialog_->show();
diff --git a/scwx-qt/source/scwx/qt/main/main_window.hpp b/scwx-qt/source/scwx/qt/main/main_window.hpp
index 2657abea..19fddd79 100644
--- a/scwx-qt/source/scwx/qt/main/main_window.hpp
+++ b/scwx-qt/source/scwx/qt/main/main_window.hpp
@@ -37,6 +37,7 @@ private slots:
void on_actionSettings_triggered();
void on_actionExit_triggered();
void on_actionPlacefileManager_triggered();
+ void on_actionLayerManager_triggered();
void on_actionImGuiDebug_triggered();
void on_actionDumpRadarProductRecords_triggered();
void on_actionUserManual_triggered();
diff --git a/scwx-qt/source/scwx/qt/ui/layer_dialog.cpp b/scwx-qt/source/scwx/qt/ui/layer_dialog.cpp
new file mode 100644
index 00000000..b5d535dc
--- /dev/null
+++ b/scwx-qt/source/scwx/qt/ui/layer_dialog.cpp
@@ -0,0 +1,38 @@
+#include "layer_dialog.hpp"
+#include "ui_layer_dialog.h"
+
+#include
+
+namespace scwx
+{
+namespace qt
+{
+namespace ui
+{
+
+static const std::string logPrefix_ = "scwx::qt::ui::layer_dialog";
+static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
+
+class LayerDialogImpl
+{
+public:
+ explicit LayerDialogImpl() {}
+ ~LayerDialogImpl() = default;
+};
+
+LayerDialog::LayerDialog(QWidget* parent) :
+ QDialog(parent),
+ p {std::make_unique()},
+ ui(new Ui::LayerDialog)
+{
+ ui->setupUi(this);
+}
+
+LayerDialog::~LayerDialog()
+{
+ delete ui;
+}
+
+} // namespace ui
+} // namespace qt
+} // namespace scwx
diff --git a/scwx-qt/source/scwx/qt/ui/layer_dialog.hpp b/scwx-qt/source/scwx/qt/ui/layer_dialog.hpp
new file mode 100644
index 00000000..738befe4
--- /dev/null
+++ b/scwx-qt/source/scwx/qt/ui/layer_dialog.hpp
@@ -0,0 +1,35 @@
+#pragma once
+
+#include
+
+namespace Ui
+{
+class LayerDialog;
+}
+
+namespace scwx
+{
+namespace qt
+{
+namespace ui
+{
+
+class LayerDialogImpl;
+
+class LayerDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit LayerDialog(QWidget* parent = nullptr);
+ ~LayerDialog();
+
+private:
+ friend class LayerDialogImpl;
+ std::unique_ptr p;
+ Ui::LayerDialog* ui;
+};
+
+} // namespace ui
+} // namespace qt
+} // namespace scwx
diff --git a/scwx-qt/source/scwx/qt/ui/layer_dialog.ui b/scwx-qt/source/scwx/qt/ui/layer_dialog.ui
new file mode 100644
index 00000000..8d2c4ed4
--- /dev/null
+++ b/scwx-qt/source/scwx/qt/ui/layer_dialog.ui
@@ -0,0 +1,187 @@
+
+
+ LayerDialog
+
+
+
+ 0
+ 0
+ 400
+ 300
+
+
+
+ Layer Manager
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ ...
+
+
+
+ :/res/icons/font-awesome-6/angles-up-solid.svg:/res/icons/font-awesome-6/angles-up-solid.svg
+
+
+
+ -
+
+
+ ...
+
+
+
+ :/res/icons/font-awesome-6/angle-up-solid.svg:/res/icons/font-awesome-6/angle-up-solid.svg
+
+
+
+ -
+
+
+ ...
+
+
+
+ :/res/icons/font-awesome-6/angle-down-solid.svg:/res/icons/font-awesome-6/angle-down-solid.svg
+
+
+
+ -
+
+
+ ...
+
+
+
+ :/res/icons/font-awesome-6/angles-down-solid.svg:/res/icons/font-awesome-6/angles-down-solid.svg
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 60
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Close
+
+
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ LayerDialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ LayerDialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+