diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp index 0c86f16a05fc3..f27d2742703a7 100644 --- a/src/gui/accountmanager.cpp +++ b/src/gui/accountmanager.cpp @@ -123,7 +123,7 @@ AccountManager::AccountsRestoreResult AccountManager::restore(const bool alsoRes if (const auto acc = loadAccountHelper(*settings)) { acc->_id = accountId; const auto accState = new AccountState(acc); - const auto jar = qobject_cast(acc->_am->cookieJar()); + const auto jar = qobject_cast(acc->_networkAccessManager->cookieJar()); Q_ASSERT(jar); if (jar) { jar->restore(acc->cookieJarPath()); @@ -305,12 +305,12 @@ void AccountManager::save(bool saveCredentials) qCInfo(lcAccountManager) << "Saved all account settings, status:" << settings->status(); } -void AccountManager::saveAccount(Account *a) +void AccountManager::saveAccount(Account *newAccountData) { - qCDebug(lcAccountManager) << "Saving account" << a->url().toString(); + qCDebug(lcAccountManager) << "Saving account" << newAccountData->url().toString(); const auto settings = ConfigFile::settingsWithGroup(QLatin1String(accountsC)); - settings->beginGroup(a->id()); - saveAccountHelper(a, *settings, false); // don't save credentials they might not have been loaded yet + settings->beginGroup(newAccountData->id()); + saveAccountHelper(newAccountData, *settings, false); // don't save credentials they might not have been loaded yet settings->endGroup(); settings->sync(); @@ -328,36 +328,36 @@ void AccountManager::saveAccountState(AccountState *a) qCDebug(lcAccountManager) << "Saved account state settings, status:" << settings->status(); } -void AccountManager::saveAccountHelper(Account *acc, QSettings &settings, bool saveCredentials) +void AccountManager::saveAccountHelper(Account *account, QSettings &settings, bool saveCredentials) { qCDebug(lcAccountManager) << "Saving settings to" << settings.fileName(); settings.setValue(QLatin1String(versionC), maxAccountVersion); - settings.setValue(QLatin1String(urlC), acc->_url.toString()); - settings.setValue(QLatin1String(davUserC), acc->_davUser); - settings.setValue(QLatin1String(displayNameC), acc->_displayName); - settings.setValue(QLatin1String(serverVersionC), acc->_serverVersion); - settings.setValue(QLatin1String(serverColorC), acc->_serverColor); - settings.setValue(QLatin1String(serverTextColorC), acc->_serverTextColor); - settings.setValue(QLatin1String(serverHasValidSubscriptionC), acc->serverHasValidSubscription()); - - if (!acc->_skipE2eeMetadataChecksumValidation) { + settings.setValue(QLatin1String(urlC), account->_url.toString()); + settings.setValue(QLatin1String(davUserC), account->_davUser); + settings.setValue(QLatin1String(displayNameC), account->davDisplayName()); + settings.setValue(QLatin1String(serverVersionC), account->_serverVersion); + settings.setValue(QLatin1String(serverColorC), account->_serverColor); + settings.setValue(QLatin1String(serverTextColorC), account->_serverTextColor); + settings.setValue(QLatin1String(serverHasValidSubscriptionC), account->serverHasValidSubscription()); + + if (!account->_skipE2eeMetadataChecksumValidation) { settings.remove(QLatin1String(skipE2eeMetadataChecksumValidationC)); } else { - settings.setValue(QLatin1String(skipE2eeMetadataChecksumValidationC), acc->_skipE2eeMetadataChecksumValidation); + settings.setValue(QLatin1String(skipE2eeMetadataChecksumValidationC), account->_skipE2eeMetadataChecksumValidation); } - settings.setValue(networkProxySettingC, static_cast>(acc->networkProxySetting())); - settings.setValue(networkProxyTypeC, acc->proxyType()); - settings.setValue(networkProxyHostNameC, acc->proxyHostName()); - settings.setValue(networkProxyPortC, acc->proxyPort()); - settings.setValue(networkProxyNeedsAuthC, acc->proxyNeedsAuth()); - settings.setValue(networkProxyUserC, acc->proxyUser()); - settings.setValue(networkUploadLimitSettingC, static_cast>(acc->uploadLimitSetting())); - settings.setValue(networkDownloadLimitSettingC, static_cast>(acc->downloadLimitSetting())); - settings.setValue(networkUploadLimitC, acc->uploadLimit()); - settings.setValue(networkDownloadLimitC, acc->downloadLimit()); - - const auto proxyPasswordKey = QString(acc->userIdAtHostWithPort() + networkProxyPasswordKeychainKeySuffixC); - if (const auto proxyPassword = acc->proxyPassword(); proxyPassword.isEmpty()) { + settings.setValue(networkProxySettingC, static_cast>(account->networkProxySetting())); + settings.setValue(networkProxyTypeC, account->proxyType()); + settings.setValue(networkProxyHostNameC, account->proxyHostName()); + settings.setValue(networkProxyPortC, account->proxyPort()); + settings.setValue(networkProxyNeedsAuthC, account->proxyNeedsAuth()); + settings.setValue(networkProxyUserC, account->proxyUser()); + settings.setValue(networkUploadLimitSettingC, static_cast>(account->uploadLimitSetting())); + settings.setValue(networkDownloadLimitSettingC, static_cast>(account->downloadLimitSetting())); + settings.setValue(networkUploadLimitC, account->uploadLimit()); + settings.setValue(networkDownloadLimitC, account->downloadLimit()); + + const auto proxyPasswordKey = QString(account->userIdAtHostWithPort() + networkProxyPasswordKeychainKeySuffixC); + if (const auto proxyPassword = account->proxyPassword(); proxyPassword.isEmpty()) { const auto job = new QKeychain::DeletePasswordJob(Theme::instance()->appName(), this); job->setKey(proxyPasswordKey); connect(job, &QKeychain::Job::finished, this, [](const QKeychain::Job *const incomingJob) { @@ -384,27 +384,27 @@ void AccountManager::saveAccountHelper(Account *acc, QSettings &settings, bool s job->start(); } - if (acc->_credentials) { + if (account->_credentials) { if (saveCredentials) { // Only persist the credentials if the parameter is set, on migration from 1.8.x // we want to save the accounts but not overwrite the credentials // (This is easier than asynchronously fetching the credentials from keychain and then // re-persisting them) - acc->_credentials->persist(); + account->_credentials->persist(); } - const auto settingsMapKeys = acc->_settingsMap.keys(); + const auto settingsMapKeys = account->_settingsMap.keys(); for (const auto &key : settingsMapKeys) { - if (!acc->_settingsMap.value(key).isValid()) { + if (!account->_settingsMap.value(key).isValid()) { continue; } - settings.setValue(key, acc->_settingsMap.value(key)); + settings.setValue(key, account->_settingsMap.value(key)); } - settings.setValue(QLatin1String(authTypeC), acc->_credentials->authType()); + settings.setValue(QLatin1String(authTypeC), account->_credentials->authType()); // HACK: Save http_user also as user - const auto settingsMap = acc->_settingsMap; + const auto settingsMap = account->_settingsMap; if (settingsMap.contains(httpUserC) && settingsMap.value(httpUserC).isValid()) { settings.setValue(userC, settingsMap.value(httpUserC)); } @@ -412,9 +412,9 @@ void AccountManager::saveAccountHelper(Account *acc, QSettings &settings, bool s // Save accepted certificates. settings.beginGroup(QLatin1String(generalC)); - qCInfo(lcAccountManager) << "Saving " << acc->approvedCerts().count() << " unknown certs."; + qCInfo(lcAccountManager) << "Saving " << account->approvedCerts().count() << " unknown certs."; QByteArray certs; - const auto approvedCerts = acc->approvedCerts(); + const auto approvedCerts = account->approvedCerts(); for (const auto &cert : approvedCerts) { certs += cert.toPem() + '\n'; } @@ -424,13 +424,13 @@ void AccountManager::saveAccountHelper(Account *acc, QSettings &settings, bool s settings.endGroup(); // Save cookies. - if (acc->_am) { - auto *jar = qobject_cast(acc->_am->cookieJar()); + if (account->_networkAccessManager) { + const auto jar = qobject_cast(account->_networkAccessManager->cookieJar()); if (jar) { - qCInfo(lcAccountManager) << "Saving cookies." << acc->cookieJarPath(); - if (!jar->save(acc->cookieJarPath())) + qCInfo(lcAccountManager) << "Saving cookies." << account->cookieJarPath(); + if (!jar->save(account->cookieJarPath())) { - qCWarning(lcAccountManager) << "Failed to save cookies to" << acc->cookieJarPath(); + qCWarning(lcAccountManager) << "Failed to save cookies to" << account->cookieJarPath(); } } } @@ -498,7 +498,7 @@ AccountPtr AccountManager::loadAccountHelper(QSettings &settings) acc->_davUser = settings.value(QLatin1String(davUserC)).toString(); acc->_settingsMap.insert(QLatin1String(userC), settings.value(userC)); - acc->_displayName = settings.value(QLatin1String(displayNameC), "").toString(); + acc->setDavDisplayName(settings.value(QLatin1String(displayNameC), "").toString()); const QString authTypePrefix = authType + "_"; const auto settingsChildKeys = settings.childKeys(); for (const auto &key : settingsChildKeys) { diff --git a/src/gui/accountmanager.h b/src/gui/accountmanager.h index 85a244ced4fb5..ceb357f09a96a 100644 --- a/src/gui/accountmanager.h +++ b/src/gui/accountmanager.h @@ -91,8 +91,8 @@ class AccountManager : public QObject static void backwardMigrationSettingsKeys(QStringList *deleteKeys, QStringList *ignoreKeys); public slots: - /// Saves account data, not including the credentials - void saveAccount(OCC::Account *a); + /// Saves account data when adding user, when updating e.g. dav user, not including the credentials + void saveAccount(OCC::Account *newAccountData); /// Saves account state data, not including the account void saveAccountState(OCC::AccountState *a); diff --git a/src/gui/accountstate.cpp b/src/gui/accountstate.cpp index e2fb2779413bd..d167f76f87ec3 100644 --- a/src/gui/accountstate.cpp +++ b/src/gui/accountstate.cpp @@ -202,8 +202,10 @@ void AccountState::signOutByUi() void AccountState::freshConnectionAttempt() { - if (isConnected()) + if (isConnected()) { setState(Disconnected); + } + checkConnectivity(); } diff --git a/src/gui/application.cpp b/src/gui/application.cpp index fb34647618350..ebcaa25fc0aa8 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -365,7 +365,7 @@ Application::Application(int &argc, char **argv) } _theme->setSystrayUseMonoIcons(ConfigFile().monoIcons()); - connect(_theme, &Theme::systrayUseMonoIconsChanged, this, &Application::slotUseMonoIconsChanged); + connect(_theme, &Theme::systrayUseMonoIconsChanged, _gui, &ownCloudGui::slotComputeOverallSyncStatus); connect(this, &Application::systemPaletteChanged, _theme, &Theme::systemPaletteHasChanged); @@ -589,7 +589,7 @@ void Application::slotAccountStateRemoved(AccountState *accountState) { if (_gui) { disconnect(accountState, &AccountState::stateChanged, - _gui.data(), &ownCloudGui::slotAccountStateChanged); + _gui.data(), &ownCloudGui::slotComputeOverallSyncStatus); disconnect(accountState->account().data(), &Account::serverVersionChanged, _gui.data(), &ownCloudGui::slotTrayMessageIfServerUnsupported); } @@ -611,7 +611,7 @@ void Application::slotAccountStateRemoved(AccountState *accountState) void Application::slotAccountStateAdded(AccountState *accountState) { connect(accountState, &AccountState::stateChanged, - _gui.data(), &ownCloudGui::slotAccountStateChanged); + _gui.data(), &ownCloudGui::slotComputeOverallSyncStatus); connect(accountState->account().data(), &Account::serverVersionChanged, _gui.data(), &ownCloudGui::slotTrayMessageIfServerUnsupported); connect(accountState, &AccountState::termsOfServiceChanged, @@ -716,11 +716,6 @@ void Application::setupLogging() qCInfo(lcApplication) << "Arguments:" << qApp->arguments(); } -void Application::slotUseMonoIconsChanged(bool) -{ - _gui->slotComputeOverallSyncStatus(); -} - void Application::slotParseMessage(const QString &msg, QObject *) { if (msg.startsWith(QLatin1String("MSG_PARSEOPTIONS:"))) { diff --git a/src/gui/application.h b/src/gui/application.h index f2c41fe453768..c3936da43a45e 100644 --- a/src/gui/application.h +++ b/src/gui/application.h @@ -101,7 +101,6 @@ public slots: protected slots: void slotParseMessage(const QString &, QObject *); void slotCheckConnection(); - void slotUseMonoIconsChanged(bool); void slotCleanup(); void slotAccountStateAdded(OCC::AccountState *accountState); void slotAccountStateRemoved(OCC::AccountState *accountState); diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp index 52536d77add50..dccdcc3a8c7f9 100644 --- a/src/gui/owncloudgui.cpp +++ b/src/gui/owncloudgui.cpp @@ -118,6 +118,8 @@ ownCloudGui::ownCloudGui(Application *parent) FolderMan *folderMan = FolderMan::instance(); connect(folderMan, &FolderMan::folderSyncStateChange, this, &ownCloudGui::slotSyncStateChange); + connect(folderMan, &FolderMan::folderSyncStateChange, this, &ownCloudGui::slotComputeOverallSyncStatus); + #ifdef BUILD_FILE_PROVIDER_MODULE connect(Mac::FileProvider::instance()->socketServer(), &Mac::FileProviderSocketServer::syncStateChanged, this, &ownCloudGui::slotComputeOverallSyncStatus); @@ -240,8 +242,6 @@ void ownCloudGui::slotTrayClicked(QSystemTrayIcon::ActivationReason reason) void ownCloudGui::slotSyncStateChange(Folder *folder) { - slotComputeOverallSyncStatus(); - if (!folder) { return; // Valid, just a general GUI redraw was needed. } @@ -258,21 +258,11 @@ void ownCloudGui::slotSyncStateChange(Folder *folder) } } -void ownCloudGui::slotFoldersChanged() -{ - slotComputeOverallSyncStatus(); -} - void ownCloudGui::slotOpenPath(const QString &path) { showInFileManager(path); } -void ownCloudGui::slotAccountStateChanged() -{ - slotComputeOverallSyncStatus(); -} - void ownCloudGui::slotTrayMessageIfServerUnsupported(Account *account) { if (account->serverVersionUnsupported()) { @@ -371,7 +361,7 @@ void ownCloudGui::slotComputeOverallSyncStatus() #else QStringList messages; messages.append(tr("Disconnected from accounts:")); - for (const auto &accountState : problemAccounts) { + for (const auto &accountState : qAsConst(problemAccounts)) { QString message = tr("Account %1: %2").arg(accountState->account()->displayName(), accountState->stateString(accountState->state())); if (!accountState->connectionErrors().empty()) { message += QLatin1String("\n"); diff --git a/src/gui/owncloudgui.h b/src/gui/owncloudgui.h index 2370d9d3f5614..446b58a9c19be 100644 --- a/src/gui/owncloudgui.h +++ b/src/gui/owncloudgui.h @@ -79,7 +79,6 @@ public slots: void slotFolderOpenAction(const QString &alias); void slotUpdateProgress(const QString &folder, const OCC::ProgressInfo &progress); void slotShowGuiMessage(const QString &title, const QString &message); - void slotFoldersChanged(); void slotShowSettings(); void slotShowSyncProtocol(); void slotShutdown(); @@ -92,7 +91,6 @@ public slots: void slotSettingsDialogActivated(); void slotHelp(); void slotOpenPath(const QString &path); - void slotAccountStateChanged(); void slotTrayMessageIfServerUnsupported(OCC::Account *account); void slotNeedToAcceptTermsOfService(OCC::AccountPtr account, OCC::AccountState::State state); diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 09102f62429fc..58a6d613f0475 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -66,7 +66,7 @@ OwncloudSetupWizard::~OwncloudSetupWizard() _ocWizard->deleteLater(); } -static QPointer wiz = nullptr; +static QPointer owncloudSetupWizard = nullptr; void OwncloudSetupWizard::runWizard(QObject *obj, const char *amember, QWidget *parent) { @@ -78,25 +78,26 @@ void OwncloudSetupWizard::runWizard(QObject *obj, const char *amember, QWidget * Theme::instance()->setStartLoginFlowAutomatically(true); } - if (!wiz.isNull()) { + if (!owncloudSetupWizard.isNull()) { bringWizardToFrontIfVisible(); return; } - wiz = new OwncloudSetupWizard(parent); - connect(wiz, SIGNAL(ownCloudWizardDone(int)), obj, amember); - connect(wiz->_ocWizard, &OwncloudWizard::wizardClosed, obj, [] { wiz.clear(); }); + owncloudSetupWizard = new OwncloudSetupWizard(parent); + connect(owncloudSetupWizard, SIGNAL(ownCloudWizardDone(int)), obj, amember); + connect(owncloudSetupWizard->_ocWizard, &OwncloudWizard::wizardClosed, obj, [] { owncloudSetupWizard.clear(); }); + FolderMan::instance()->setSyncEnabled(false); - wiz->startWizard(); + owncloudSetupWizard->startWizard(); } bool OwncloudSetupWizard::bringWizardToFrontIfVisible() { - if (wiz.isNull()) { + if (owncloudSetupWizard.isNull()) { return false; } - ownCloudGui::raiseDialog(wiz->_ocWizard); + ownCloudGui::raiseDialog(owncloudSetupWizard->_ocWizard); return true; } @@ -700,7 +701,7 @@ void OwncloudSetupWizard::slotAssistantFinished(int result) } // notify others. - _ocWizard->done(QWizard::Accepted); + _ocWizard->done(result); emit ownCloudWizardDone(result); } @@ -710,7 +711,10 @@ void OwncloudSetupWizard::slotSkipFolderConfiguration() disconnect(_ocWizard, &OwncloudWizard::basicSetupFinished, this, &OwncloudSetupWizard::slotAssistantFinished); - _ocWizard->close(); + + _ocWizard->done(QDialog::Rejected); + + // Accept to check connectivity, only skip folder setup emit ownCloudWizardDone(QDialog::Accepted); } @@ -727,7 +731,7 @@ AccountState *OwncloudSetupWizard::applyAccountChanges() auto manager = AccountManager::instance(); auto newState = manager->addAccount(newAccount); - manager->save(); + manager->saveAccount(newAccount.data()); return newState; } diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index fc09c0cdce04d..7b4d778946f22 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -261,7 +261,7 @@ void SettingsDialog::accountAdded(AccountState *s) _actionForAccount.insert(s->account().data(), accountAction); accountAction->trigger(); - connect(accountSettings, &AccountSettings::folderChanged, _gui, &ownCloudGui::slotFoldersChanged); + connect(accountSettings, &AccountSettings::folderChanged, _gui, &ownCloudGui::slotComputeOverallSyncStatus); connect(accountSettings, &AccountSettings::openFolderAlias, _gui, &ownCloudGui::slotFolderOpenAction); connect(accountSettings, &AccountSettings::showIssuesList, this, &SettingsDialog::showIssuesList); diff --git a/src/gui/tray/TrayFoldersMenuButton.qml b/src/gui/tray/TrayFoldersMenuButton.qml index 85fa37d098ede..6da6f9ca914cb 100644 --- a/src/gui/tray/TrayFoldersMenuButton.qml +++ b/src/gui/tray/TrayFoldersMenuButton.qml @@ -11,6 +11,7 @@ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */ +pragma NativeMethodBehavior: AcceptThisObject import QtQuick import QtQuick.Controls import QtQuick.Layouts diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 84c68b010db84..0b20a3551bdc9 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -135,9 +135,12 @@ QString Account::davUser() const void Account::setDavUser(const QString &newDavUser) { - if (_davUser == newDavUser) + if (_davUser == newDavUser) { return; + } + _davUser = newDavUser; + emit wantsAccountSaved(this); emit prettyNameChanged(); } @@ -156,13 +159,19 @@ void Account::setAvatar(const QImage &img) QString Account::displayName() const { - QString dn = QString("%1@%2").arg(credentials()->user(), _url.host()); - int port = url().port(); + auto credentialsUser = _davUser; + if (_credentials && !_credentials->user().isEmpty()) { + credentialsUser = _credentials->user(); + } + + auto displayName = QString("%1@%2").arg(credentialsUser, _url.host()); + const auto port = url().port(); if (port > 0 && port != 80 && port != 443) { - dn.append(QLatin1Char(':')); - dn.append(QString::number(port)); + displayName.append(QLatin1Char(':')); + displayName.append(QString::number(port)); } - return dn; + + return displayName; } QString Account::userIdAtHostWithPort() const @@ -178,12 +187,12 @@ QString Account::userIdAtHostWithPort() const QString Account::davDisplayName() const { - return _displayName; + return _davDisplayName; } void Account::setDavDisplayName(const QString &newDisplayName) { - _displayName = newDisplayName; + _davDisplayName = newDisplayName; emit accountChangedDisplayName(); emit prettyNameChanged(); } @@ -243,14 +252,14 @@ void Account::setCredentials(AbstractCredentials *cred) QNetworkCookieJar *jar = nullptr; QNetworkProxy proxy; - if (_am) { - jar = _am->cookieJar(); + if (_networkAccessManager) { + jar = _networkAccessManager->cookieJar(); jar->setParent(nullptr); // Remember proxy (issue #2108) - proxy = _am->proxy(); + proxy = _networkAccessManager->proxy(); - _am = QSharedPointer(); + _networkAccessManager = QSharedPointer(); } // The order for these two is important! Reading the credential's @@ -261,17 +270,17 @@ void Account::setCredentials(AbstractCredentials *cred) // Note: This way the QNAM can outlive the Account and Credentials. // This is necessary to avoid issues with the QNAM being deleted while // processing slotHandleSslErrors(). - _am = QSharedPointer(_credentials->createQNAM(), &QObject::deleteLater); + _networkAccessManager = QSharedPointer(_credentials->createQNAM(), &QObject::deleteLater); if (jar) { - _am->setCookieJar(jar); + _networkAccessManager->setCookieJar(jar); } if (proxy.type() != QNetworkProxy::DefaultProxy) { - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } - connect(_am.data(), &QNetworkAccessManager::sslErrors, + connect(_networkAccessManager.data(), &QNetworkAccessManager::sslErrors, this, &Account::slotHandleSslErrors); - connect(_am.data(), &QNetworkAccessManager::proxyAuthenticationRequired, + connect(_networkAccessManager.data(), &QNetworkAccessManager::proxyAuthenticationRequired, this, &Account::proxyAuthenticationRequired); connect(_credentials.data(), &AbstractCredentials::fetched, this, &Account::slotCredentialsFetched); @@ -358,7 +367,7 @@ QUrl Account::deprecatedPrivateLinkUrl(const QByteArray &numericFileId) const */ void Account::clearCookieJar() { - const auto jar = qobject_cast(_am->cookieJar()); + const auto jar = qobject_cast(_networkAccessManager->cookieJar()); ASSERT(jar); jar->setAllCookies(QList()); } @@ -368,7 +377,7 @@ void Account::clearCookieJar() of not losing its ownership. */ void Account::lendCookieJarTo(QNetworkAccessManager *guest) { - auto jar = _am->cookieJar(); + auto jar = _networkAccessManager->cookieJar(); auto oldParent = jar->parent(); guest->setCookieJar(jar); // takes ownership of our precious cookie jar jar->setParent(oldParent); // takes it back @@ -381,35 +390,35 @@ QString Account::cookieJarPath() void Account::resetNetworkAccessManager() { - if (!_credentials || !_am) { + if (!_credentials || !_networkAccessManager) { return; } qCDebug(lcAccount) << "Resetting QNAM"; - QNetworkCookieJar *jar = _am->cookieJar(); - QNetworkProxy proxy = _am->proxy(); + QNetworkCookieJar *jar = _networkAccessManager->cookieJar(); + QNetworkProxy proxy = _networkAccessManager->proxy(); // Use a QSharedPointer to allow locking the life of the QNAM on the stack. // Make it call deleteLater to make sure that we can return to any QNAM stack frames safely. - _am = QSharedPointer(_credentials->createQNAM(), &QObject::deleteLater); + _networkAccessManager = QSharedPointer(_credentials->createQNAM(), &QObject::deleteLater); - _am->setCookieJar(jar); // takes ownership of the old cookie jar - _am->setProxy(proxy); // Remember proxy (issue #2108) + _networkAccessManager->setCookieJar(jar); // takes ownership of the old cookie jar + _networkAccessManager->setProxy(proxy); // Remember proxy (issue #2108) - connect(_am.data(), &QNetworkAccessManager::sslErrors, + connect(_networkAccessManager.data(), &QNetworkAccessManager::sslErrors, this, &Account::slotHandleSslErrors); - connect(_am.data(), &QNetworkAccessManager::proxyAuthenticationRequired, + connect(_networkAccessManager.data(), &QNetworkAccessManager::proxyAuthenticationRequired, this, &Account::proxyAuthenticationRequired); } QNetworkAccessManager *Account::networkAccessManager() { - return _am.data(); + return _networkAccessManager.data(); } QSharedPointer Account::sharedNetworkAccessManager() { - return _am; + return _networkAccessManager; } QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QIODevice *data) @@ -417,17 +426,17 @@ QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, req.setUrl(url); req.setSslConfiguration(this->getOrCreateSslConfig()); if (verb == "HEAD" && !data) { - return _am->head(req); + return _networkAccessManager->head(req); } else if (verb == "GET" && !data) { - return _am->get(req); + return _networkAccessManager->get(req); } else if (verb == "POST") { - return _am->post(req, data); + return _networkAccessManager->post(req, data); } else if (verb == "PUT") { - return _am->put(req, data); + return _networkAccessManager->put(req, data); } else if (verb == "DELETE" && !data) { - return _am->deleteResource(req); + return _networkAccessManager->deleteResource(req); } - return _am->sendCustomRequest(req, verb, data); + return _networkAccessManager->sendCustomRequest(req, verb, data); } QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, const QByteArray &data) @@ -435,17 +444,17 @@ QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, req.setUrl(url); req.setSslConfiguration(this->getOrCreateSslConfig()); if (verb == "HEAD" && data.isEmpty()) { - return _am->head(req); + return _networkAccessManager->head(req); } else if (verb == "GET" && data.isEmpty()) { - return _am->get(req); + return _networkAccessManager->get(req); } else if (verb == "POST") { - return _am->post(req, data); + return _networkAccessManager->post(req, data); } else if (verb == "PUT") { - return _am->put(req, data); + return _networkAccessManager->put(req, data); } else if (verb == "DELETE" && data.isEmpty()) { - return _am->deleteResource(req); + return _networkAccessManager->deleteResource(req); } - return _am->sendCustomRequest(req, verb, data); + return _networkAccessManager->sendCustomRequest(req, verb, data); } QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QHttpMultiPart *data) @@ -453,11 +462,11 @@ QNetworkReply *Account::sendRawRequest(const QByteArray &verb, const QUrl &url, req.setUrl(url); req.setSslConfiguration(this->getOrCreateSslConfig()); if (verb == "PUT") { - return _am->put(req, data); + return _networkAccessManager->put(req, data); } else if (verb == "POST") { - return _am->post(req, data); + return _networkAccessManager->post(req, data); } - return _am->sendCustomRequest(req, verb, data); + return _networkAccessManager->sendCustomRequest(req, verb, data); } SimpleNetworkJob *Account::sendRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QIODevice *data) @@ -585,7 +594,7 @@ void Account::slotHandleSslErrors(QNetworkReply *reply, QList errors) // the deleteLater() of the QNAM before we have the chance of unwinding our stack. // Keep a ref here on our stackframe to make sure that it doesn't get deleted before // handleErrors returns. - QSharedPointer qnamLock = _am; + QSharedPointer qnamLock = _networkAccessManager; QPointer guard = reply; if (_sslErrorHandler->handleErrors(errors, reply->sslConfiguration(), &approvedCerts, sharedFromThis())) { @@ -661,7 +670,7 @@ void Account::handleInvalidCredentials() void Account::clearQNAMCache() { - _am->clearAccessCache(); + _networkAccessManager->clearAccessCache(); } const Capabilities &Account::capabilities() const @@ -1120,16 +1129,16 @@ void Account::setNetworkProxySetting(const AccountNetworkProxySetting setting) _networkProxySetting = setting; if (setting == AccountNetworkProxySetting::AccountSpecificProxy) { - auto proxy = _am->proxy(); + auto proxy = _networkAccessManager->proxy(); proxy.setType(proxyType()); proxy.setHostName(proxyHostName()); proxy.setPort(proxyPort()); proxy.setUser(proxyUser()); proxy.setPassword(proxyPassword()); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } else { const auto proxy = QNetworkProxy::applicationProxy(); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); setProxyType(proxy.type()); setProxyHostName(proxy.hostName()); setProxyPort(proxy.port()); @@ -1153,9 +1162,9 @@ void Account::setProxyType(QNetworkProxy::ProxyType proxyType) _proxyType = proxyType; if (networkProxySetting() == AccountNetworkProxySetting::AccountSpecificProxy) { - auto proxy = _am->proxy(); + auto proxy = _networkAccessManager->proxy(); proxy.setType(proxyType); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } emit proxyTypeChanged(); @@ -1175,9 +1184,9 @@ void Account::setProxyHostName(const QString &hostName) _proxyHostName = hostName; if (networkProxySetting() == AccountNetworkProxySetting::AccountSpecificProxy) { - auto proxy = _am->proxy(); + auto proxy = _networkAccessManager->proxy(); proxy.setHostName(hostName); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } emit proxyHostNameChanged(); @@ -1197,9 +1206,9 @@ void Account::setProxyPort(const int port) _proxyPort = port; if (networkProxySetting() == AccountNetworkProxySetting::AccountSpecificProxy) { - auto proxy = _am->proxy(); + auto proxy = _networkAccessManager->proxy(); proxy.setPort(port); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } emit proxyPortChanged(); @@ -1234,9 +1243,9 @@ void Account::setProxyUser(const QString &user) _proxyUser = user; if (networkProxySetting() == AccountNetworkProxySetting::AccountSpecificProxy) { - auto proxy = _am->proxy(); + auto proxy = _networkAccessManager->proxy(); proxy.setUser(user); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } emit proxyUserChanged(); @@ -1256,9 +1265,9 @@ void Account::setProxyPassword(const QString &password) _proxyPassword = password; if (networkProxySetting() == AccountNetworkProxySetting::AccountSpecificProxy) { - auto proxy = _am->proxy(); + auto proxy = _networkAccessManager->proxy(); proxy.setPassword(password); - _am->setProxy(proxy); + _networkAccessManager->setProxy(proxy); } emit proxyPasswordChanged(); diff --git a/src/libsync/account.h b/src/libsync/account.h index 6333164add153..28165f05320fd 100644 --- a/src/libsync/account.h +++ b/src/libsync/account.h @@ -86,7 +86,7 @@ class OWNCLOUDSYNC_EXPORT Account : public QObject Q_OBJECT Q_PROPERTY(QString id MEMBER _id) Q_PROPERTY(QString davUser MEMBER _davUser) - Q_PROPERTY(QString displayName MEMBER _displayName) + Q_PROPERTY(QString davDisplayName MEMBER _davDisplayName) Q_PROPERTY(QString prettyName READ prettyName NOTIFY prettyNameChanged) Q_PROPERTY(QUrl url MEMBER _url) Q_PROPERTY(bool e2eEncryptionKeysGenerationAllowed MEMBER _e2eEncryptionKeysGenerationAllowed) @@ -493,6 +493,7 @@ private slots: QWeakPointer _sharedThis; QString _id; QString _davUser; + QString _davDisplayName; QString _displayName; QTimer _pushNotificationsReconnectTimer; #ifndef TOKEN_AUTH_ONLY @@ -517,7 +518,7 @@ private slots: QColor _serverTextColor = QColorConstants::White; bool _skipE2eeMetadataChecksumValidation = false; QScopedPointer _sslErrorHandler; - QSharedPointer _am; + QSharedPointer _networkAccessManager; QScopedPointer _credentials; bool _http2Supported = false;