feat: add --import command-line option

When specified, opens the "Import from zip" dialog as soon as the main
window is shown, with the URL field prefilled with the argument given to
the option.

Closes #2998
This commit is contained in:
OverMighty 2020-02-05 00:29:23 +01:00
parent bc98181ec2
commit bc04d89c32
3 changed files with 16 additions and 2 deletions

View File

@ -57,6 +57,8 @@ public:
void checkInstancePathForProblems(); void checkInstancePathForProblems();
void updatesAllowedChanged(bool allowed); void updatesAllowedChanged(bool allowed);
void droppedURLs(QList<QUrl> urls);
signals: signals:
void isClosing(); void isClosing();
@ -180,8 +182,6 @@ private slots:
*/ */
void downloadUpdates(GoUpdate::Status status); void downloadUpdates(GoUpdate::Status status);
void droppedURLs(QList<QUrl> urls);
void konamiTriggered(); void konamiTriggered();
void globalSettingsClosed(); void globalSettingsClosed();

View File

@ -34,6 +34,7 @@
#include <QNetworkAccessManager> #include <QNetworkAccessManager>
#include <QTranslator> #include <QTranslator>
#include <QLibraryInfo> #include <QLibraryInfo>
#include <QList>
#include <QStringList> #include <QStringList>
#include <QDebug> #include <QDebug>
#include <QStyleFactory> #include <QStyleFactory>
@ -174,6 +175,10 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv)
parser.addSwitch("alive"); parser.addSwitch("alive");
parser.addDocumentation("alive", "Write a small '" + liveCheckFile + "' file after MultiMC starts"); parser.addDocumentation("alive", "Write a small '" + liveCheckFile + "' file after MultiMC starts");
parser.addOption("import");
parser.addShortOpt("import", 'I');
parser.addDocumentation("import", "Import instance from specified zip (local path or URL)");
// parse the arguments // parse the arguments
try try
{ {
@ -207,6 +212,7 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv)
} }
m_instanceIdToLaunch = args["launch"].toString(); m_instanceIdToLaunch = args["launch"].toString();
m_liveCheck = args["alive"].toBool(); m_liveCheck = args["alive"].toBool();
m_zipToImport = args["import"].toUrl();
QString origcwdPath = QDir::currentPath(); QString origcwdPath = QDir::currentPath();
QString binPath = applicationDirPath(); QString binPath = applicationDirPath();
@ -812,6 +818,12 @@ void MultiMC::performMainStartupAction()
showMainWindow(false); showMainWindow(false);
qDebug() << "<> Main window shown."; qDebug() << "<> Main window shown.";
} }
if (!m_zipToImport.isEmpty()) {
qDebug() << "<> Importing instance from zip:" << m_zipToImport.toString();
QList<QUrl> urls = { m_zipToImport };
m_mainWindow->droppedURLs(urls);
}
} }
void MultiMC::showFatalErrorMessage(const QString& title, const QString& content) void MultiMC::showFatalErrorMessage(const QString& title, const QString& content)

View File

@ -6,6 +6,7 @@
#include <QFlag> #include <QFlag>
#include <QIcon> #include <QIcon>
#include <QDateTime> #include <QDateTime>
#include <QUrl>
#include <updater/GoUpdate.h> #include <updater/GoUpdate.h>
#include <BaseInstance.h> #include <BaseInstance.h>
@ -221,5 +222,6 @@ private:
public: public:
QString m_instanceIdToLaunch; QString m_instanceIdToLaunch;
bool m_liveCheck = false; bool m_liveCheck = false;
QUrl m_zipToImport;
std::unique_ptr<QFile> logFile; std::unique_ptr<QFile> logFile;
}; };