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