{
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")) {
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...");
_localDirPath.clear();
_isVfsEnabled = true;
}
-
-QString AccountSetupCommandLineManager::_appPassword;
-QString AccountSetupCommandLineManager::_userId;
-QUrl AccountSetupCommandLineManager::_serverUrl;
-QString AccountSetupCommandLineManager::_remoteDirPath;
-QString AccountSetupCommandLineManager::_localDirPath;
-bool AccountSetupCommandLineManager::_isVfsEnabled = true;
}
#include <QUrl>
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;
};
}
handleEditLocallyFromOptions();
- if (AccountSetupCommandLineManager::isCommandLineParsed()) {
- AccountSetupCommandLineManager::setupAccountFromCommandLine(this);
+ if (AccountSetupCommandLineManager::instance()->isCommandLineParsed()) {
+ AccountSetupCommandLineManager::instance()->setupAccountFromCommandLine();
}
+ AccountSetupCommandLineManager::destroy();
}
Application::~Application()
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";
}
else {
QString errorMessage;
- if (!AccountSetupCommandLineManager::parseCommandlineOption(option, it, errorMessage)) {
+ if (!AccountSetupCommandLineManager::instance()->parseCommandlineOption(option, it, errorMessage)) {
if (!errorMessage.isEmpty()) {
showHint(errorMessage.toStdString());
return;