1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-23 04:27:45 +00:00

Reload models when importing via Penumbra HTTP API

This commit is contained in:
Joshua Goins 2023-12-10 11:11:01 -05:00
parent e9b02d53f1
commit 020216b13d
7 changed files with 47 additions and 3 deletions

View file

@ -11,6 +11,7 @@ target_sources(novus-armoury
include/gearlistwidget.h
include/gearview.h
include/mainwindow.h
include/penumbraapi.h
include/settingswindow.h
include/singlegearview.h
@ -22,6 +23,7 @@ target_sources(novus-armoury
src/gearview.cpp
src/main.cpp
src/mainwindow.cpp
src/penumbraapi.cpp
src/settingswindow.cpp
src/singlegearview.cpp)
target_include_directories(novus-armoury
@ -40,6 +42,7 @@ target_link_libraries(novus-armoury
imgui
Qt6::Core
Qt6::Widgets
Qt6::Concurrent)
Qt6::Concurrent
Qt6::Network)
install(TARGETS novus-armoury ${KF${QT_MAJOR_VERSION}_INSTALL_TARGETS_DEFAULT_ARGS})

View file

@ -14,6 +14,7 @@
struct GameData;
class FileCache;
class PenumbraApi;
class MainWindow : public NovusMainWindow
{
@ -31,4 +32,5 @@ private:
GameData &data;
FileCache cache;
PenumbraApi *m_api = nullptr;
};

View file

@ -0,0 +1,18 @@
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <QNetworkAccessManager>
class PenumbraApi : public QObject
{
public:
explicit PenumbraApi(QObject *parent = nullptr);
public Q_SLOTS:
void redrawAll();
private:
QNetworkAccessManager *m_mgr = nullptr;
};

View file

@ -29,6 +29,7 @@ Q_SIGNALS:
void levelOfDetailChanged();
void addToFullModelViewer(GearInfo &info);
void importedModel();
public Q_SLOTS:
void clear();

View file

@ -18,12 +18,14 @@
#include "cmpeditor.h"
#include "filecache.h"
#include "gearlistwidget.h"
#include "penumbraapi.h"
#include "settingswindow.h"
MainWindow::MainWindow(GameData *in_data)
: NovusMainWindow()
, data(*in_data)
, cache(FileCache{*in_data})
, m_api(new PenumbraApi(this))
{
setMinimumSize(QSize(800, 600));
setupMenubar();
@ -45,6 +47,7 @@ MainWindow::MainWindow(GameData *in_data)
connect(gearView, &SingleGearView::addToFullModelViewer, this, [this](GearInfo &info) {
fullModelViewer->addGear(info);
});
connect(gearView, &SingleGearView::importedModel, m_api, &PenumbraApi::redrawAll);
auto tabWidget = new QTabWidget();
tabWidget->addTab(gearView, QStringLiteral("Models"));

View file

@ -0,0 +1,15 @@
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
// SPDX-License-Identifier: GPL-3.0-or-later
#include "penumbraapi.h"
PenumbraApi::PenumbraApi(QObject *parent)
: QObject(parent)
, m_mgr(new QNetworkAccessManager(this))
{
}
void PenumbraApi::redrawAll()
{
m_mgr->post(QNetworkRequest(QUrl(QStringLiteral("http://localhost:42069/api/redrawAll"))), QByteArray{});
}

View file

@ -102,8 +102,9 @@ SingleGearView::SingleGearView(GameData *data, FileCache &cache, QWidget *parent
tr("Import Model"),
QStringLiteral("%1.glb").arg(sanitizeMdlPath(gearView->getLoadedGearPath())),
tr("glTF Binary File (*.glb)"));
importModel(fileName);
if (!fileName.isEmpty()) {
importModel(fileName);
}
}
});
topControlLayout->addWidget(importButton);
@ -334,6 +335,7 @@ void SingleGearView::importModel(const QString &filename)
file.close();
qInfo() << "Successfully imported model!";
Q_EMIT importedModel();
}
#include "moc_singlegearview.cpp"