From cecd24b6c526e087c7cfd2382fea4dc9eb7cba35 Mon Sep 17 00:00:00 2001 From: alex-z Date: Fri, 30 Dec 2022 14:45:47 +0100 Subject: [PATCH] Fix review comments from Claudio III. Signed-off-by: alex-z --- src/gui/accountsetupcommandlinemanager.cpp | 36 ++++++++++++++++------ src/gui/accountsetupcommandlinemanager.h | 32 +++++++++++-------- src/gui/application.cpp | 12 +++++--- 3 files changed, 53 insertions(+), 27 deletions(-) diff --git a/src/gui/accountsetupcommandlinemanager.cpp b/src/gui/accountsetupcommandlinemanager.cpp index 39fe895ca..a604cb53b 100644 --- a/src/gui/accountsetupcommandlinemanager.cpp +++ b/src/gui/accountsetupcommandlinemanager.cpp @@ -19,6 +19,29 @@ namespace OCC { Q_LOGGING_CATEGORY(lcAccountSetupCommandLineManager, "nextcloud.gui.accountsetupcommandlinemanager", QtInfoMsg) +AccountSetupCommandLineManager *AccountSetupCommandLineManager::_instance = nullptr; + +AccountSetupCommandLineManager::AccountSetupCommandLineManager(QObject *parent) + : QObject{parent} +{ +} + +AccountSetupCommandLineManager *AccountSetupCommandLineManager::instance() +{ + if (!_instance) { + _instance = new AccountSetupCommandLineManager(); + } + return _instance; +} + +void AccountSetupCommandLineManager::destroy() +{ + if (_instance) { + _instance->deleteLater(); + _instance = nullptr; + } +} + bool AccountSetupCommandLineManager::parseCommandlineOption(const QString &option, QStringListIterator &optionsIterator, QString &errorMessage) { if (option == QStringLiteral("--apppassword")) { @@ -67,16 +90,16 @@ bool AccountSetupCommandLineManager::parseCommandlineOption(const QString &optio return false; } -bool AccountSetupCommandLineManager::isCommandLineParsed() +bool AccountSetupCommandLineManager::isCommandLineParsed() const { return !_appPassword.isEmpty() && !_userId.isEmpty() && _serverUrl.isValid(); } -void AccountSetupCommandLineManager::setupAccountFromCommandLine(QObject *parent) +void AccountSetupCommandLineManager::setupAccountFromCommandLine() { if (isCommandLineParsed()) { qCInfo(lcAccountSetupCommandLineManager) << QStringLiteral("Command line has been parsed and account setup parameters have been found. Attempting setup a new account %1...").arg(_userId); - const auto accountSetupJob = new AccountSetupFromCommandLineJob(_appPassword, _userId, _serverUrl, _localDirPath, _isVfsEnabled, _remoteDirPath, parent); + const auto accountSetupJob = new AccountSetupFromCommandLineJob(_appPassword, _userId, _serverUrl, _localDirPath, _isVfsEnabled, _remoteDirPath, parent()); accountSetupJob->handleAccountSetupFromCommandLine(); } else { qCInfo(lcAccountSetupCommandLineManager) << QStringLiteral("No account setup parameters have been found, or they are invalid. Proceed with normal startup..."); @@ -88,11 +111,4 @@ void AccountSetupCommandLineManager::setupAccountFromCommandLine(QObject *parent _localDirPath.clear(); _isVfsEnabled = true; } - -QString AccountSetupCommandLineManager::_appPassword; -QString AccountSetupCommandLineManager::_userId; -QUrl AccountSetupCommandLineManager::_serverUrl; -QString AccountSetupCommandLineManager::_remoteDirPath; -QString AccountSetupCommandLineManager::_localDirPath; -bool AccountSetupCommandLineManager::_isVfsEnabled = true; } diff --git a/src/gui/accountsetupcommandlinemanager.h b/src/gui/accountsetupcommandlinemanager.h index f9b1e9279..585627e85 100644 --- a/src/gui/accountsetupcommandlinemanager.h +++ b/src/gui/accountsetupcommandlinemanager.h @@ -20,24 +20,32 @@ #include namespace OCC { -class AccountSetupCommandLineManager +class AccountSetupCommandLineManager : public QObject { + Q_OBJECT + public: - [[nodiscard]] static bool parseCommandlineOption(const QString &option, QStringListIterator &optionsIterator, QString &errorMessage); + [[nodiscard]] static AccountSetupCommandLineManager *instance(); + static void destroy(); + + [[nodiscard]] bool parseCommandlineOption(const QString &option, QStringListIterator &optionsIterator, QString &errorMessage); - [[nodiscard]] static bool isCommandLineParsed(); + [[nodiscard]] bool isCommandLineParsed() const; - static void setupAccountFromCommandLine(QObject *parent = nullptr); +public slots: + void setupAccountFromCommandLine(); private: - explicit AccountSetupCommandLineManager() = delete; - - static QString _appPassword; - static QString _userId; - static QUrl _serverUrl; - static QString _remoteDirPath; - static QString _localDirPath; - static bool _isVfsEnabled; + explicit AccountSetupCommandLineManager(QObject *parent = nullptr); + + static AccountSetupCommandLineManager *_instance; + + QString _appPassword; + QString _userId; + QUrl _serverUrl; + QString _remoteDirPath; + QString _localDirPath; + bool _isVfsEnabled; }; } diff --git a/src/gui/application.cpp b/src/gui/application.cpp index eeaab85da..8af99a7df 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -419,9 +419,10 @@ Application::Application(int &argc, char **argv) handleEditLocallyFromOptions(); - if (AccountSetupCommandLineManager::isCommandLineParsed()) { - AccountSetupCommandLineManager::setupAccountFromCommandLine(this); + if (AccountSetupCommandLineManager::instance()->isCommandLineParsed()) { + AccountSetupCommandLineManager::instance()->setupAccountFromCommandLine(); } + AccountSetupCommandLineManager::destroy(); } Application::~Application() @@ -590,9 +591,10 @@ void Application::slotParseMessage(const QString &msg, QObject *) handleEditLocallyFromOptions(); - if (AccountSetupCommandLineManager::isCommandLineParsed()) { - AccountSetupCommandLineManager::setupAccountFromCommandLine(this); + if (AccountSetupCommandLineManager::instance()->isCommandLineParsed()) { + AccountSetupCommandLineManager::instance()->setupAccountFromCommandLine(); } + AccountSetupCommandLineManager::destroy(); } else if (msg.startsWith(QLatin1String("MSG_SHOWMAINDIALOG"))) { qCInfo(lcApplication) << "Running for" << _startedAt.elapsed() / 1000.0 << "sec"; @@ -681,7 +683,7 @@ void Application::parseOptions(const QStringList &options) } else { QString errorMessage; - if (!AccountSetupCommandLineManager::parseCommandlineOption(option, it, errorMessage)) { + if (!AccountSetupCommandLineManager::instance()->parseCommandlineOption(option, it, errorMessage)) { if (!errorMessage.isEmpty()) { showHint(errorMessage.toStdString()); return; -- 2.30.2