diff --git a/scwx-qt/res/icons/scwx-256.png b/scwx-qt/res/icons/scwx-256.png
new file mode 100644
index 00000000..97727ede
Binary files /dev/null and b/scwx-qt/res/icons/scwx-256.png differ
diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake
index df12dfab..3088aaa8 100644
--- a/scwx-qt/scwx-qt.cmake
+++ b/scwx-qt/scwx-qt.cmake
@@ -125,12 +125,14 @@ set(SRC_SETTINGS source/scwx/qt/settings/general_settings.cpp
source/scwx/qt/settings/settings_interface_base.cpp
source/scwx/qt/settings/settings_variable.cpp
source/scwx/qt/settings/settings_variable_base.cpp)
-set(HDR_TYPES source/scwx/qt/types/qt_types.hpp
+set(HDR_TYPES source/scwx/qt/types/font_types.hpp
+ source/scwx/qt/types/qt_types.hpp
source/scwx/qt/types/radar_product_record.hpp
source/scwx/qt/types/text_event_key.hpp)
set(SRC_TYPES source/scwx/qt/types/radar_product_record.cpp
source/scwx/qt/types/text_event_key.cpp)
-set(HDR_UI source/scwx/qt/ui/alert_dialog.hpp
+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/flow_layout.hpp
source/scwx/qt/ui/imgui_debug_dialog.hpp
@@ -140,7 +142,8 @@ set(HDR_UI source/scwx/qt/ui/alert_dialog.hpp
source/scwx/qt/ui/level3_products_widget.hpp
source/scwx/qt/ui/radar_site_dialog.hpp
source/scwx/qt/ui/settings_dialog.hpp)
-set(SRC_UI source/scwx/qt/ui/alert_dialog.cpp
+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/flow_layout.cpp
source/scwx/qt/ui/imgui_debug_dialog.cpp
@@ -150,7 +153,8 @@ set(SRC_UI source/scwx/qt/ui/alert_dialog.cpp
source/scwx/qt/ui/level3_products_widget.cpp
source/scwx/qt/ui/radar_site_dialog.cpp
source/scwx/qt/ui/settings_dialog.cpp)
-set(UI_UI source/scwx/qt/ui/alert_dialog.ui
+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/imgui_debug_dialog.ui
source/scwx/qt/ui/radar_site_dialog.ui
diff --git a/scwx-qt/scwx-qt.qrc b/scwx-qt/scwx-qt.qrc
index 1e12a195..c708db9e 100644
--- a/scwx-qt/scwx-qt.qrc
+++ b/scwx-qt/scwx-qt.qrc
@@ -14,6 +14,7 @@
res/fonts/din1451alt.ttf
res/fonts/din1451alt_g.ttf
res/icons/scwx-256.ico
+ res/icons/scwx-256.png
res/icons/font-awesome-6/angle-left-solid.svg
res/icons/font-awesome-6/angle-right-solid.svg
res/icons/font-awesome-6/backward-step-solid.svg
diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp
index c4fe8afb..c1fcca6a 100644
--- a/scwx-qt/source/scwx/qt/main/main_window.cpp
+++ b/scwx-qt/source/scwx/qt/main/main_window.cpp
@@ -11,6 +11,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -52,6 +53,7 @@ public:
level2SettingsWidget_ {nullptr},
level3ProductsWidget_ {nullptr},
alertDockWidget_ {nullptr},
+ aboutDialog_ {nullptr},
imGuiDebugDialog_ {nullptr},
radarSiteDialog_ {nullptr},
settingsDialog_ {nullptr},
@@ -116,6 +118,7 @@ public:
ui::Level3ProductsWidget* level3ProductsWidget_;
ui::AlertDockWidget* alertDockWidget_;
+ ui::AboutDialog* aboutDialog_;
ui::ImGuiDebugDialog* imGuiDebugDialog_;
ui::RadarSiteDialog* radarSiteDialog_;
ui::SettingsDialog* settingsDialog_;
@@ -213,6 +216,9 @@ MainWindow::MainWindow(QWidget* parent) :
// ImGui Debug Dialog
p->imGuiDebugDialog_ = new ui::ImGuiDebugDialog(this);
+ // About Dialog
+ p->aboutDialog_ = new ui::AboutDialog(this);
+
auto& mapSettings = manager::SettingsManager::map_settings();
for (size_t i = 0; i < p->maps_.size(); i++)
{
@@ -366,7 +372,10 @@ void MainWindow::on_actionGitHubRepository_triggered()
QDesktopServices::openUrl(QUrl {"https://github.com/dpaulat/supercell-wx"});
}
-void MainWindow::on_actionAboutSupercellWx_triggered() {}
+void MainWindow::on_actionAboutSupercellWx_triggered()
+{
+ p->aboutDialog_->show();
+}
void MainWindow::on_radarSiteSelectButton_clicked()
{
diff --git a/scwx-qt/source/scwx/qt/manager/resource_manager.cpp b/scwx-qt/source/scwx/qt/manager/resource_manager.cpp
index 839e07ea..c6f8106e 100644
--- a/scwx-qt/source/scwx/qt/manager/resource_manager.cpp
+++ b/scwx-qt/source/scwx/qt/manager/resource_manager.cpp
@@ -7,6 +7,8 @@
#include
+#include
+
namespace scwx
{
namespace qt
@@ -15,12 +17,19 @@ namespace manager
{
namespace ResourceManager
{
+
static const std::string logPrefix_ = "scwx::qt::manager::resource_manager";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static void LoadFonts();
static void LoadTextures();
+static const std::unordered_map fontNames_ {
+ {types::Font::din1451alt, ":/res/fonts/din1451alt.ttf"},
+ {types::Font::din1451alt_g, ":/res/fonts/din1451alt_g.ttf"}};
+
+static std::unordered_map fontIds_ {};
+
void Initialize()
{
config::CountyDatabase::Initialize();
@@ -31,10 +40,26 @@ void Initialize()
void Shutdown() {}
+int FontId(types::Font font)
+{
+ auto it = fontIds_.find(font);
+ if (it != fontIds_.cend())
+ {
+ return it->second;
+ }
+ return -1;
+}
+
static void LoadFonts()
{
- util::Font::Create(":/res/fonts/din1451alt.ttf");
- util::Font::Create(":/res/fonts/din1451alt_g.ttf");
+ for (auto& fontName : fontNames_)
+ {
+ int fontId = QFontDatabase::addApplicationFont(
+ QString::fromStdString(fontName.second));
+ fontIds_.emplace(fontName.first, fontId);
+
+ util::Font::Create(fontName.second);
+ }
ImFontAtlas* fontAtlas = model::ImGuiContextModel::Instance().font_atlas();
fontAtlas->AddFontDefault();
diff --git a/scwx-qt/source/scwx/qt/manager/resource_manager.hpp b/scwx-qt/source/scwx/qt/manager/resource_manager.hpp
index 797779d2..a6ff13e1 100644
--- a/scwx-qt/source/scwx/qt/manager/resource_manager.hpp
+++ b/scwx-qt/source/scwx/qt/manager/resource_manager.hpp
@@ -1,5 +1,7 @@
#pragma once
+#include
+
namespace scwx
{
namespace qt
@@ -8,8 +10,12 @@ namespace manager
{
namespace ResourceManager
{
+
void Initialize();
void Shutdown();
+
+int FontId(types::Font font);
+
} // namespace ResourceManager
} // namespace manager
} // namespace qt
diff --git a/scwx-qt/source/scwx/qt/types/font_types.hpp b/scwx-qt/source/scwx/qt/types/font_types.hpp
new file mode 100644
index 00000000..95a62469
--- /dev/null
+++ b/scwx-qt/source/scwx/qt/types/font_types.hpp
@@ -0,0 +1,18 @@
+#pragma once
+
+namespace scwx
+{
+namespace qt
+{
+namespace types
+{
+
+enum class Font
+{
+ din1451alt,
+ din1451alt_g
+};
+
+} // namespace types
+} // namespace qt
+} // namespace scwx
diff --git a/scwx-qt/source/scwx/qt/ui/about_dialog.cpp b/scwx-qt/source/scwx/qt/ui/about_dialog.cpp
new file mode 100644
index 00000000..6e7be3e1
--- /dev/null
+++ b/scwx-qt/source/scwx/qt/ui/about_dialog.cpp
@@ -0,0 +1,43 @@
+#include "about_dialog.hpp"
+#include "ui_about_dialog.h"
+#include
+
+#include
+
+namespace scwx
+{
+namespace qt
+{
+namespace ui
+{
+
+class AboutDialogImpl
+{
+public:
+ explicit AboutDialogImpl() = default;
+ ~AboutDialogImpl() = default;
+};
+
+AboutDialog::AboutDialog(QWidget* parent) :
+ QDialog(parent),
+ p {std::make_unique()},
+ ui(new Ui::AboutDialog)
+{
+ ui->setupUi(this);
+
+ int titleFontId =
+ manager::ResourceManager::FontId(types::Font::din1451alt_g);
+ QString titleFontFamily =
+ QFontDatabase::applicationFontFamilies(titleFontId).at(0);
+ QFont titleFont(titleFontFamily, 14);
+ ui->titleLabel->setFont(titleFont);
+}
+
+AboutDialog::~AboutDialog()
+{
+ delete ui;
+}
+
+} // namespace ui
+} // namespace qt
+} // namespace scwx
diff --git a/scwx-qt/source/scwx/qt/ui/about_dialog.hpp b/scwx-qt/source/scwx/qt/ui/about_dialog.hpp
new file mode 100644
index 00000000..a84f09b8
--- /dev/null
+++ b/scwx-qt/source/scwx/qt/ui/about_dialog.hpp
@@ -0,0 +1,38 @@
+#pragma once
+
+#include
+
+namespace Ui
+{
+class AboutDialog;
+}
+
+namespace scwx
+{
+namespace qt
+{
+namespace ui
+{
+
+class AboutDialogImpl;
+
+class AboutDialog : public QDialog
+{
+ Q_OBJECT
+
+private:
+ Q_DISABLE_COPY(AboutDialog)
+
+public:
+ explicit AboutDialog(QWidget* parent = nullptr);
+ ~AboutDialog();
+
+private:
+ friend AboutDialogImpl;
+ std::unique_ptr p;
+ Ui::AboutDialog* ui;
+};
+
+} // namespace ui
+} // namespace qt
+} // namespace scwx
diff --git a/scwx-qt/source/scwx/qt/ui/about_dialog.ui b/scwx-qt/source/scwx/qt/ui/about_dialog.ui
new file mode 100644
index 00000000..64e8ed46
--- /dev/null
+++ b/scwx-qt/source/scwx/qt/ui/about_dialog.ui
@@ -0,0 +1,143 @@
+
+
+ AboutDialog
+
+
+
+ 0
+ 0
+ 276
+ 404
+
+
+
+ About Supercell Wx
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+
+
+ :/res/icons/scwx-256.png
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Supercell Wx
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Version X.Y.Z
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Git Revision 0000000000
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Copyright © 2021-YYYY Dan Paulat
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Ok
+
+
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ AboutDialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ AboutDialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+