UI: Implement a command line option to boot NAND title

This commit is contained in:
Léo Lam
2017-10-02 00:09:07 +02:00
parent 8e0869aff6
commit 4b4a9a6486
8 changed files with 69 additions and 26 deletions

View File

@ -10,6 +10,7 @@
#include "Common/MsgHandler.h"
#include "Core/Analytics.h"
#include "Core/Boot/Boot.h"
#include "Core/BootManager.h"
#include "Core/Core.h"
#include "DolphinQt2/Host.h"
@ -84,6 +85,21 @@ int main(int argc, char* argv[])
QObject::connect(QAbstractEventDispatcher::instance(), &QAbstractEventDispatcher::aboutToBlock,
&app, &Core::HostDispatchJobs);
std::unique_ptr<BootParameters> boot;
if (options.is_set("nand_title"))
{
const std::string hex_string = static_cast<const char*>(options.get("nand_title"));
if (hex_string.length() == 16)
{
const u64 title_id = std::stoull(hex_string, nullptr, 16);
boot = std::make_unique<BootParameters>(BootParameters::NANDTitle{title_id});
}
else
{
QMessageBox::critical(nullptr, QObject::tr("Error"), QObject::tr("Invalid title ID."));
}
}
int retval = 0;
if (SConfig::GetInstance().m_show_development_warning)
@ -95,7 +111,7 @@ int main(int argc, char* argv[])
{
DolphinAnalytics::Instance()->ReportDolphinStart("qt");
MainWindow win;
MainWindow win{std::move(boot)};
win.show();
#if defined(USE_ANALYTICS) && USE_ANALYTICS

View File

@ -65,7 +65,7 @@
#include "UICommon/X11Utils.h"
#endif
MainWindow::MainWindow() : QMainWindow(nullptr)
MainWindow::MainWindow(std::unique_ptr<BootParameters> boot_parameters) : QMainWindow(nullptr)
{
setWindowTitle(QString::fromStdString(Common::scm_rev_str));
setWindowIcon(QIcon(Resources::GetMisc(Resources::LOGO_SMALL)));
@ -84,6 +84,9 @@ MainWindow::MainWindow() : QMainWindow(nullptr)
InitCoreCallbacks();
NetPlayInit();
if (boot_parameters)
StartGame(std::move(boot_parameters));
}
MainWindow::~MainWindow()

View File

@ -35,7 +35,7 @@ class MainWindow final : public QMainWindow
Q_OBJECT
public:
explicit MainWindow();
explicit MainWindow(std::unique_ptr<BootParameters> boot_parameters);
~MainWindow();
bool eventFilter(QObject* object, QEvent* event) override;