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