diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 01deafe..2c033ff 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -5,10 +5,12 @@ add_library(novus-common STATIC) target_sources(novus-common PRIVATE include/aboutdata.h include/filecache.h + include/novusmainwindow.h include/settings.h include/utility.h src/aboutdata.cpp src/filecache.cpp + src/novusmainwindow.cpp src/settings.cpp src/utility.cpp) target_include_directories(novus-common PUBLIC diff --git a/common/include/novusmainwindow.h b/common/include/novusmainwindow.h new file mode 100644 index 0000000..e5993b2 --- /dev/null +++ b/common/include/novusmainwindow.h @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2023 Joshua Goins +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include + +class NovusMainWindow : public QMainWindow +{ +public: + explicit NovusMainWindow(); +}; \ No newline at end of file diff --git a/common/src/novusmainwindow.cpp b/common/src/novusmainwindow.cpp new file mode 100644 index 0000000..0e4ead3 --- /dev/null +++ b/common/src/novusmainwindow.cpp @@ -0,0 +1,42 @@ +// SPDX-FileCopyrightText: 2023 Joshua Goins +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "novusmainwindow.h" + +#include +#include +#include +#include +#include + +NovusMainWindow::NovusMainWindow() +{ + setWindowTitle(KAboutData::applicationData().displayName()); + + auto fileMenu = menuBar()->addMenu(QStringLiteral("File")); + + auto quitAction = fileMenu->addAction(QStringLiteral("Quit")); + quitAction->setIcon(QIcon::fromTheme(QStringLiteral("gtk-quit"))); + connect(quitAction, &QAction::triggered, qApp, &QCoreApplication::quit); + + auto helpMenu = menuBar()->addMenu(QStringLiteral("Help")); + + auto donateAction = helpMenu->addAction(QStringLiteral("Donate")); + connect(donateAction, &QAction::triggered, this, [] { + QDesktopServices::openUrl(QUrl(QStringLiteral("https://redstrate.com/fund"))); + }); + donateAction->setIcon(QIcon::fromTheme(QStringLiteral("help-donate"))); + + helpMenu->addSeparator(); + + auto aboutNovusAction = helpMenu->addAction(QStringLiteral("About %1").arg(KAboutData::applicationData().displayName())); + aboutNovusAction->setIcon(QIcon::fromTheme(QStringLiteral("help-about"))); + connect(aboutNovusAction, &QAction::triggered, this, [this] { + auto window = new KAboutApplicationDialog(KAboutData::applicationData(), this); + window->show(); + }); + + auto aboutQtAction = helpMenu->addAction(QStringLiteral("About Qt")); + aboutQtAction->setIcon(QIcon(QStringLiteral(":/qt-project.org/qmessagebox/images/qtlogo-64.png"))); + connect(aboutQtAction, &QAction::triggered, QApplication::instance(), &QApplication::aboutQt); +}