Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamila San <hello@camila.codes>2018-04-02 18:46:26 +0300
committerCamila San <hello@camila.codes>2018-07-07 14:17:51 +0300
commitb32afba3ba0d06644eb513f83ab43fe8fe93dea1 (patch)
tree504556a8ab7d6e509d2e8318f5bc25161c739b5b
parent586c44cae0895e4f70c0ca67b59b826f6b8826ac (diff)
Fixes widget stack visibility when switching actions.
Signed-off-by: Camila San <hello@camila.codes>
-rw-r--r--src/gui/settingsdialog.cpp84
-rw-r--r--src/gui/settingsdialog.h4
2 files changed, 47 insertions, 41 deletions
diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp
index d7827b26b..2e758e2b8 100644
--- a/src/gui/settingsdialog.cpp
+++ b/src/gui/settingsdialog.cpp
@@ -92,46 +92,12 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent)
_actionGroup = new QActionGroup(this);
_actionGroup->setExclusive(true);
- foreach (auto ai, AccountManager::instance()->accounts()) {
- accountAdded(ai.data());
-
- _activitySettings[ai] = new ActivitySettings(ai.data(), this);
- _ui->stack->addWidget(_activitySettings[ai]);
- connect(_activitySettings[ai], &ActivitySettings::guiLog, _gui,
- &ownCloudGui::slotShowOptionalTrayMessage);
- _activitySettings[ai]->setNotificationRefreshInterval(cfg.notificationRefreshInterval());
-
- // 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
- QAction *action = createColorAwareAction(QLatin1String(":/client/resources/activity.png"), tr("Activity"));
- action->setProperty("account", QVariant::fromValue(ai));
- _actionGroup->addAction(action);
- _toolBar->addSeparator();
- _toolBar->addAction(action);
- _actionGroupWidgets.insert(action, _activitySettings[ai]);
- connect(action, &QAction::triggered, this, &SettingsDialog::showActivityPage);
-
- // Adds space
- if(AccountManager::instance()->accounts().last() != ai){
- QWidget* spacer = new QWidget();
- spacer->setMinimumWidth(30);
- spacer->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
- _toolBar->addWidget(spacer);
- }
-
- slotRefreshActivity(ai.data());
- }
-
- // Adds space
- QWidget* spacer = new QWidget();
- spacer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
- _toolBar->addWidget(spacer);
-
QAction *generalAction = createColorAwareAction(QLatin1String(":/client/resources/settings.png"), tr("General"));
_actionGroup->addAction(generalAction);
_toolBar->addAction(generalAction);
GeneralSettings *generalSettings = new GeneralSettings;
_ui->stack->addWidget(generalSettings);
+ _actionBefore = generalAction;
QAction *networkAction = createColorAwareAction(QLatin1String(":/client/resources/network.png"), tr("Network"));
_actionGroup->addAction(networkAction);
@@ -142,6 +108,15 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent)
_actionGroupWidgets.insert(generalAction, generalSettings);
_actionGroupWidgets.insert(networkAction, networkSettings);
+ foreach (auto ai, AccountManager::instance()->accounts()) {
+ accountAdded(ai.data());
+ }
+
+ // Adds space
+ QWidget* spacer = new QWidget();
+ spacer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
+ _toolBar->insertWidget(_actionBefore, spacer);
+
connect(_actionGroup, &QActionGroup::triggered, this, &SettingsDialog::slotSwitchPage);
QTimer::singleShot(1, this, &SettingsDialog::showFirstPage);
@@ -209,8 +184,9 @@ void SettingsDialog::showFirstPage()
void SettingsDialog::showActivityPage()
{
- if (auto account = qvariant_cast<AccountStatePtr>(sender()->property("account"))) {
+ if (auto account = qvariant_cast<AccountState*>(sender()->property("account"))) {
_activitySettings[account]->show();
+ _ui->stack->setCurrentWidget(_activitySettings[account]);
}
}
@@ -222,6 +198,26 @@ void SettingsDialog::showActivityPage()
// _activitySettings->slotShowIssuesTab(folderAlias);
//}
+void SettingsDialog::activityAdded(AccountState *s){
+ _activitySettings[s] = new ActivitySettings(s, this);
+ _ui->stack->addWidget(_activitySettings[s]);
+ connect(_activitySettings[s], &ActivitySettings::guiLog, _gui,
+ &ownCloudGui::slotShowOptionalTrayMessage);
+
+ ConfigFile cfg;
+ _activitySettings[s]->setNotificationRefreshInterval(cfg.notificationRefreshInterval());
+
+ // 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
+ QAction *action = createColorAwareAction(QLatin1String(":/client/resources/activity.png"), tr("Activity"));
+ action->setProperty("account", QVariant::fromValue(s));
+ _toolBar->insertSeparator(_actionBefore);
+ _toolBar->insertAction(_actionBefore, action);
+ _actionGroup->addAction(action);
+ _actionGroupWidgets.insert(action, _activitySettings[s]);
+ connect(action, &QAction::triggered, this, &SettingsDialog::showActivityPage);
+}
+
void SettingsDialog::accountAdded(AccountState *s)
{
auto height = _toolBar->sizeHint().height();
@@ -243,7 +239,8 @@ void SettingsDialog::accountAdded(AccountState *s)
accountAction->setToolTip(s->account()->displayName());
accountAction->setIconText(SettingsDialogCommon::shortDisplayNameForSettings(s->account().data(), height * buttonSizeRatio));
}
- _toolBar->addAction(accountAction);
+
+ _toolBar->insertAction(_actionBefore, accountAction);
auto accountSettings = new AccountSettings(s, this);
_ui->stack->insertWidget(0, accountSettings);
_actionGroup->addAction(accountAction);
@@ -258,9 +255,16 @@ void SettingsDialog::accountAdded(AccountState *s)
connect(s->account().data(), &Account::accountChangedDisplayName, this, &SettingsDialog::slotAccountDisplayNameChanged);
// Refresh immediatly when getting online
- connect(s, &AccountState::isConnectedChanged, this, &SettingsDialog::slotRefreshActivityAccountStateSender);
+ //connect(s, &AccountState::isConnectedChanged, this, &SettingsDialog::slotRefreshActivityAccountStateSender);
//slotRefreshActivity(s);
+
+ activityAdded(s);
+ QWidget* spacer = new QWidget();
+ spacer->setMinimumWidth(30);
+ spacer->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+ _toolBar->insertWidget(_actionBefore, spacer);
+ slotRefreshActivity(s);
}
void SettingsDialog::slotAccountAvatarChanged()
@@ -315,7 +319,7 @@ void SettingsDialog::accountRemoved(AccountState *s)
if (_actionForAccount.contains(s->account().data())) {
_actionForAccount.remove(s->account().data());
}
- _activitySettings[AccountManager::instance()->account(s->account()->displayName())]->slotRemoveAccount();
+ _activitySettings[s]->slotRemoveAccount();
// Hide when the last account is deleted. We want to enter the same
// state we'd be in the client was started up without an account
@@ -411,7 +415,7 @@ void SettingsDialog::slotRefreshActivity(AccountState *accountState)
{
if (accountState->isConnected()) {
qDebug() << "!! Fetching activities and notifications for" << accountState->account()->displayName();
- _activitySettings[AccountManager::instance()->account(accountState->account()->displayName())]->slotRefresh();
+ _activitySettings[accountState]->slotRefresh();
}
}
diff --git a/src/gui/settingsdialog.h b/src/gui/settingsdialog.h
index 0aaa5fdbc..c64796ce0 100644
--- a/src/gui/settingsdialog.h
+++ b/src/gui/settingsdialog.h
@@ -74,6 +74,7 @@ private slots:
private:
void customizeStyle();
+ void activityAdded(AccountState *);
QIcon createColorAwareIcon(const QString &name);
QAction *createColorAwareAction(const QString &iconName, const QString &fileName);
@@ -82,6 +83,7 @@ private:
Ui::SettingsDialog *const _ui;
QActionGroup *_actionGroup;
+ QAction *_actionBefore;
// Maps the actions from the action group to the corresponding widgets
QHash<QAction *, QWidget *> _actionGroupWidgets;
@@ -90,7 +92,7 @@ private:
QHash<Account *, QAction *> _actionForAccount;
QToolBar *_toolBar;
- QMap<AccountStatePtr, ActivitySettings *> _activitySettings;
+ QMap<AccountState *, ActivitySettings *> _activitySettings;
ownCloudGui *_gui;
};