1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-24 13:07:44 +00:00
novus/launcher/src/mainwindow.cpp

70 lines
2.3 KiB
C++
Raw Normal View History

2023-08-31 14:21:19 +02:00
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
// SPDX-License-Identifier: GPL-3.0-or-later
2023-08-31 14:18:50 +02:00
#include "mainwindow.h"
#include <KConfig>
#include <KConfigGroup>
#include <QComboBox>
#include <QDebug>
#include <QFormLayout>
2023-08-31 14:18:50 +02:00
#include <QListWidget>
#include <QProcess>
#include <QVBoxLayout>
static QMap<QString, QString> applications = {{QStringLiteral("Armoury - View and export gear"), QStringLiteral("novus-armoury")},
{QStringLiteral("Karuku - Read Excel sheets"), QStringLiteral("novus-karuku")},
{QStringLiteral("Sagasu - Explore data archives"), QStringLiteral("novus-sagasu")},
{QStringLiteral("Model Viewer - Preview MDL files"), QStringLiteral("novus-mdlviewer")}};
2023-08-31 14:18:50 +02:00
2023-10-10 18:02:13 -04:00
MainWindow::MainWindow()
2023-10-10 18:09:14 -04:00
: NovusMainWindow()
2023-10-10 18:02:13 -04:00
{
setupMenubar();
2023-08-31 14:18:50 +02:00
auto appList = new QListWidget();
auto applicationHeader = new QListWidgetItem();
2023-09-26 00:37:55 -04:00
applicationHeader->setText(QStringLiteral("Applications"));
2023-08-31 14:18:50 +02:00
applicationHeader->setFlags(Qt::NoItemFlags);
appList->addItem(applicationHeader);
2023-10-10 18:02:13 -04:00
for (const auto &name : applications.keys()) {
2023-08-31 14:18:50 +02:00
appList->addItem(name);
}
2023-09-26 00:37:55 -04:00
connect(appList, &QListWidget::itemClicked, [this](QListWidgetItem *item) {
const QString exec = QStringLiteral("./") + applications[item->text()];
2023-08-31 14:18:50 +02:00
qDebug() << "Launching" << exec;
QProcess::startDetached(exec, QStringList());
});
auto appListLayout = new QVBoxLayout();
appListLayout->addWidget(appList);
auto centralFrame = new QFrame();
centralFrame->setLayout(appListLayout);
auto formLayout = new QFormLayout();
2023-09-26 00:37:55 -04:00
KConfig config(QStringLiteral("novusrc"));
2023-12-09 22:35:59 -05:00
KConfigGroup game = config.group(QStringLiteral("Game"));
2023-08-31 14:18:50 +02:00
auto gameCombo = new QComboBox();
2023-09-26 00:37:55 -04:00
formLayout->addRow(QStringLiteral("Current Game"), gameCombo);
2023-08-31 14:18:50 +02:00
formLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
gameCombo->addItem(game.readEntry("GameDir"));
2023-08-31 14:18:50 +02:00
auto mainLayout = new QVBoxLayout();
mainLayout->addWidget(centralFrame);
mainLayout->addLayout(formLayout);
auto centralWidget = new QWidget();
centralWidget->setLayout(mainLayout);
setCentralWidget(centralWidget);
}
#include "moc_mainwindow.cpp"