summaryrefslogtreecommitdiff
path: root/gameView/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gameView/main.cpp')
-rw-r--r--gameView/main.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/gameView/main.cpp b/gameView/main.cpp
index bc8664f..0450c04 100644
--- a/gameView/main.cpp
+++ b/gameView/main.cpp
@@ -1,6 +1,8 @@
#include <QVBoxLayout>
#include <QtWidgets>
-#include <iostream>
+#include <format>
+#include <fstream>
+#include <nlohmann/json.hpp>
#include <qapplication.h>
#include <qboxlayout.h>
#include <qgridlayout.h>
@@ -22,6 +24,17 @@ class MainWindowMediator {
}
std::shared_ptr<QWidget> getListOfCardsWidget() { return _listOfCardsWidget; }
std::shared_ptr<QWidget> getMainWindow() { return _mainWindow; }
+ MainWindowMediator &fillListOfCards(const std::string &iCardsJsonPath) {
+ std::ifstream aCardsJsonFile{iCardsJsonPath};
+ uint64_t aCardIndex{0};
+ for (auto &aCard : nlohmann::json::parse(aCardsJsonFile)) {
+ _listOfCardsWidget->insertItem(aCardIndex++,
+ std::format("{} ({})", aCard["name"].get<std::string>(),
+ aCard["id"].get<uint64_t>())
+ .c_str());
+ }
+ return *this;
+ }
private:
std::shared_ptr<QListWidget> _listOfCardsWidget;
@@ -30,7 +43,7 @@ class MainWindowMediator {
void configureMainMenuBar(QMenuBar &iMenuBar, MainWindowMediator &iMainWindowMediator) {
QMenu *aOpenMenu = iMenuBar.addMenu("File");
- aOpenMenu->addAction("Open JSON file", [] {
+ aOpenMenu->addAction("Open JSON file", [&iMainWindowMediator] {
QFileDialog aFileDialog;
aFileDialog.setWindowTitle("Choose JSON file");
QDir aCurrentDir{QDir::currentPath()};
@@ -41,7 +54,7 @@ void configureMainMenuBar(QMenuBar &iMenuBar, MainWindowMediator &iMainWindowMed
aFileDialog.exec();
const QStringList kFilePaths{aFileDialog.selectedFiles()};
if (kFilePaths.size() > 0) {
- std::cout << kFilePaths[0].toStdString() << '\n';
+ iMainWindowMediator.fillListOfCards(kFilePaths[0].toStdString());
}
});
aOpenMenu->addAction("Quit",
@@ -66,10 +79,6 @@ int main(int argc, char *argv[]) {
aMainWindowMediator.setMainWindow(aWindow);
configureMainMenuBar(aMenuBar, aMainWindowMediator);
- aListOfCards->insertItem(0, "first card");
- aListOfCards->insertItem(1, "second card");
- aListOfCards->insertItem(2, "third card");
-
aWindow->show();
aWindow->setWindowTitle("Hearthstone simulator");
return aApplication.exec();