#include "StdInc.h" #include "mainwindow.h" #include "ui_mainwindow.h" #include <QProcess> #include <QDir> #include "../lib/CConfigHandler.h" #include "../lib/VCMIDirs.h" #include "../lib/filesystem/Filesystem.h" #include "../lib/logging/CBasicLogConfigurator.h" void MainWindow::load() { console = new CConsoleHandler; CBasicLogConfigurator logConfig(VCMIDirs::get().userCachePath() + "/VCMI_Launcher_log.txt", console); logConfig.configureDefault(); CResourceHandler::initialize(); CResourceHandler::loadMainFileSystem("config/filesystem.json"); for (auto & string : VCMIDirs::get().dataPaths()) QDir::addSearchPath("icons", QString::fromUtf8(string.c_str()) + "/launcher/icons"); QDir::addSearchPath("icons", QString::fromUtf8(VCMIDirs::get().userDataPath().c_str()) + "/launcher/icons"); settings.init(); } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { load(); // load FS before UI ui->setupUi(this); ui->tabListWidget->setCurrentIndex(0); connect(ui->tabSelectList, SIGNAL(currentRowChanged(int)), ui->tabListWidget, SLOT(setCurrentIndex(int))); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_startGameButon_clicked() { #if defined(Q_OS_WIN) QString clientName = "VCMI_Client.exe"; #else // TODO: Right now launcher will only start vcmi from system-default locations QString clientName = "vcmiclient"; #endif startExecutable(clientName); } void MainWindow::startExecutable(QString name) { QProcess process; // Start the executable if (process.startDetached(name)) { close(); // exit launcher } else { QMessageBox::critical(this, "Error starting executable", "Failed to start " + name + ": " + process.errorString(), QMessageBox::Ok, QMessageBox::Ok); return; } }