diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2020-08-19 18:53:22 +0300 |
---|---|---|
committer | Hannah von Reth <vonreth@kde.org> | 2020-08-21 16:00:06 +0300 |
commit | 2a6def4523feac6b7a60a134c351c8117e32fab8 (patch) | |
tree | a44c15c95ab680935a943347dbad1746f7fb66ad | |
parent | 115b1b2a3d2f40033db03e590134d0a4cc3555fb (diff) |
Add dedicated button to add accounts
-rw-r--r-- | client.qrc | 1 | ||||
-rw-r--r-- | resources/font-awesome/plus-solid.svg | 1 | ||||
-rw-r--r-- | src/gui/accountsettings.cpp | 25 | ||||
-rw-r--r-- | src/gui/accountsettings.h | 2 | ||||
-rw-r--r-- | src/gui/settingsdialog.cpp | 19 | ||||
-rw-r--r-- | src/gui/settingsdialog.h | 1 |
6 files changed, 19 insertions, 30 deletions
diff --git a/client.qrc b/client.qrc index 2ba51bd65..371f8f439 100644 --- a/client.qrc +++ b/client.qrc @@ -10,5 +10,6 @@ <file alias="resources/delete.svg">resources/font-awesome/trash-solid.svg</file> <file alias="resources/bell.svg">resources/font-awesome/bell-solid.svg</file> <file alias="resources/quit.svg">resources/font-awesome/power-off-solid.svg</file> + <file alias="resources/plus-solid.svg">resources/font-awesome/plus-solid.svg</file> </qresource> </RCC> diff --git a/resources/font-awesome/plus-solid.svg b/resources/font-awesome/plus-solid.svg new file mode 100644 index 000000000..12c277bf1 --- /dev/null +++ b/resources/font-awesome/plus-solid.svg @@ -0,0 +1 @@ +<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="plus" class="svg-inline--fa fa-plus fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="#B5B6BB" d="M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"></path></svg> diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index 69d01b9bf..53d09b250 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -139,8 +139,6 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent) ui->selectiveSyncStatus->hide(); createAccountToolbox(); - connect(AccountManager::instance(), &AccountManager::accountAdded, - this, &AccountSettings::slotAccountAdded); connect(ui->_folderList, &QWidget::customContextMenuRequested, this, &AccountSettings::slotCustomContextMenuRequested); connect(ui->_folderList, &QAbstractItemView::clicked, @@ -197,10 +195,6 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent) void AccountSettings::createAccountToolbox() { QMenu *menu = new QMenu(ui->_accountToolbox); - _addAccountAction = new QAction(tr("Add new"), this); - _addAccountAction->setObjectName("addAccountAction"); - menu->addAction(_addAccountAction); - connect(_addAccountAction, &QAction::triggered, this, &AccountSettings::slotOpenAccountWizard); _toggleSignInOutAction = new QAction(tr("Log out"), this); connect(_toggleSignInOutAction, &QAction::triggered, this, &AccountSettings::slotToggleSignInState); @@ -213,8 +207,6 @@ void AccountSettings::createAccountToolbox() ui->_accountToolbox->setText(tr("Account") + QLatin1Char(' ')); ui->_accountToolbox->setMenu(menu); ui->_accountToolbox->setPopupMode(QToolButton::InstantPopup); - - slotAccountAdded(_accountState); } QString AccountSettings::selectedFolderAlias() const @@ -225,11 +217,6 @@ QString AccountSettings::selectedFolderAlias() const return _model->data(selected, FolderStatusDelegate::FolderAliasRole).toString(); } -void AccountSettings::slotOpenAccountWizard() -{ - ocApp()->gui()->runNewAccountWizard(); -} - void AccountSettings::slotToggleSignInState() { if (_accountState->isSignedOut()) { @@ -1054,18 +1041,6 @@ void AccountSettings::refreshSelectiveSyncStatus() } } -void AccountSettings::slotAccountAdded(AccountState *) -{ - // if the theme is limited to single account, the button must hide if - // there is already one account. - int s = AccountManager::instance()->accounts().size(); - if (s > 0 && !Theme::instance()->multiAccount()) { - _addAccountAction->setVisible(false); - } else { - _addAccountAction->setVisible(true); - } -} - void AccountSettings::slotDeleteAccount() { // Deleting the account potentially deletes 'this', so diff --git a/src/gui/accountsettings.h b/src/gui/accountsettings.h index 74d831dbc..b768d180e 100644 --- a/src/gui/accountsettings.h +++ b/src/gui/accountsettings.h @@ -84,8 +84,6 @@ protected slots: void slotFolderWizardRejected(); void slotDeleteAccount(); void slotToggleSignInState(); - void slotOpenAccountWizard(); - void slotAccountAdded(AccountState *); void refreshSelectiveSyncStatus(); void slotCustomContextMenuRequested(const QPoint &); void slotFolderListClicked(const QModelIndex &indx); diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index 11b2b2434..b30a6ba1c 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -15,6 +15,7 @@ #include "settingsdialog.h" #include "ui_settingsdialog.h" +#include "application.h" #include "folderman.h" #include "theme.h" #include "generalsettings.h" @@ -27,6 +28,7 @@ #include "activitywidget.h" #include "accountmanager.h" #include "protocolwidget.h" +#include "owncloudsetupwizard.h" #include <QLabel> #include <QStandardItemModel> @@ -103,6 +105,17 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) _actionGroup = new QActionGroup(this); _actionGroup->setExclusive(true); + + if (Theme::instance()->multiAccount()) { + _addAccountAction = createColorAwareAction(QStringLiteral(":/client/resources/plus-solid.svg"), tr("Add account")); + _addAccountAction->setCheckable(false); + connect(_addAccountAction, &QAction::triggered, this, []{ + // don't directly connect here, ocApp might not be defined yet + ocApp()->gui()->runNewAccountWizard(); + }); + _ui->toolBar->addAction(_addAccountAction); + } + // Note: all the actions have a '\n' because the account name is in two lines and // all buttons must have the same size in order to keep a good layout _activityAction = createColorAwareAction(QStringLiteral(":/client/resources/activity.svg"), tr("Activity")); @@ -233,9 +246,9 @@ void SettingsDialog::slotSwitchPage(QAction *action) void SettingsDialog::showFirstPage() { - QList<QAction *> actions = _ui->toolBar->actions(); + const QList<QAction *> &actions = _ui->toolBar->actions(); if (!actions.empty()) { - actions.first()->trigger(); + actions.at(_addAccountAction ? 1 : 0)->trigger(); } } @@ -273,7 +286,7 @@ void SettingsDialog::accountAdded(AccountState *s) accountAction->setToolTip(s->account()->displayName()); accountAction->setIconText(shortDisplayNameForSettings(s->account().data())); } - _ui->toolBar->insertAction(_ui->toolBar->actions().at(0), accountAction); + _ui->toolBar->insertAction(_addAccountAction ? _ui->toolBar->actions().at(1) : _ui->toolBar->actions().at(0), accountAction); auto accountSettings = new AccountSettings(s, this); QString objectName = QLatin1String("accountSettings_"); objectName += s->account()->displayName(); diff --git a/src/gui/settingsdialog.h b/src/gui/settingsdialog.h index 414069529..079f91df2 100644 --- a/src/gui/settingsdialog.h +++ b/src/gui/settingsdialog.h @@ -93,6 +93,7 @@ private: ActivitySettings *_activitySettings; QAction *_activityAction; + QAction *_addAccountAction = nullptr; ownCloudGui *_gui; }; |