mirror of
https://github.com/redstrate/Novus.git
synced 2025-04-24 13:07:44 +00:00
common: Introduce NovusMainWindow
This consolidates the bunch of duplicated code we have in a bunch of SDK applications. It sets up standard stuff like the menu bar, etc.
This commit is contained in:
parent
8070d36b2a
commit
90ab618a36
3 changed files with 56 additions and 0 deletions
|
@ -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
|
||||
|
|
12
common/include/novusmainwindow.h
Normal file
12
common/include/novusmainwindow.h
Normal file
|
@ -0,0 +1,12 @@
|
|||
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
class NovusMainWindow : public QMainWindow
|
||||
{
|
||||
public:
|
||||
explicit NovusMainWindow();
|
||||
};
|
42
common/src/novusmainwindow.cpp
Normal file
42
common/src/novusmainwindow.cpp
Normal file
|
@ -0,0 +1,42 @@
|
|||
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#include "novusmainwindow.h"
|
||||
|
||||
#include <KAboutApplicationDialog>
|
||||
#include <KAboutData>
|
||||
#include <QApplication>
|
||||
#include <QDesktopServices>
|
||||
#include <QMenuBar>
|
||||
|
||||
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);
|
||||
}
|
Loading…
Add table
Reference in a new issue