Skip to content

Commit

Permalink
Fix review comments from Claudio III.
Browse files Browse the repository at this point in the history
Signed-off-by: alex-z <blackslayer4@gmail.com>
  • Loading branch information
allexzander committed Dec 30, 2022
1 parent 57fa421 commit a43aa54
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 27 deletions.
36 changes: 26 additions & 10 deletions src/gui/accountsetupcommandlinemanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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")) {
Expand Down Expand Up @@ -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...");
Expand All @@ -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;
}
32 changes: 20 additions & 12 deletions src/gui/accountsetupcommandlinemanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,32 @@
#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;
};

}
12 changes: 7 additions & 5 deletions src/gui/application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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";
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit a43aa54

Please sign in to comment.