From 3d55191573e39962422f629c7df35f01c501c052 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Thu, 16 Jul 2015 14:07:05 +0200 Subject: [PATCH] OS X: Fix settings dialog after multi-account introduction For #3459 #3386 #3401 --- src/3rdparty/qtmacgoodies | 2 +- src/gui/settingsdialogmac.cpp | 14 +++++++------- src/gui/settingsdialogmac.h | 3 +-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/3rdparty/qtmacgoodies b/src/3rdparty/qtmacgoodies index 10621d46b..8828099fd 160000 --- a/src/3rdparty/qtmacgoodies +++ b/src/3rdparty/qtmacgoodies @@ -1 +1 @@ -Subproject commit 10621d46b5973ccc3d4b41d7d81046dd051feeaa +Subproject commit 8828099fd05b191cedf4d52f62f2405de6471415 diff --git a/src/gui/settingsdialogmac.cpp b/src/gui/settingsdialogmac.cpp index e6a04d516..7d15c54c4 100644 --- a/src/gui/settingsdialogmac.cpp +++ b/src/gui/settingsdialogmac.cpp @@ -76,7 +76,7 @@ SettingsDialogMac::SettingsDialogMac(ownCloudGui *gui, QWidget *parent) QIcon protocolIcon(QLatin1String(":/client/resources/activity.png")); _protocolWidget = new ProtocolWidget; - _protocolIdx = addPreferencesPanel(protocolIcon, tr("Activity"), _protocolWidget); + addPreferencesPanel(protocolIcon, tr("Activity"), _protocolWidget); QIcon generalIcon = MacStandardIcon::icon(MacStandardIcon::PreferencesGeneral); GeneralSettings *generalSettings = new GeneralSettings; @@ -104,15 +104,16 @@ void SettingsDialogMac::closeEvent(QCloseEvent *event) void SettingsDialogMac::showActivityPage() { - setCurrentPanelIndex(_protocolIdx); + // Count backwards (0-based) from the last panel (multiple accounts can be on the left) + setCurrentPanelIndex(preferencePanelCount() - 1 - 2); } void SettingsDialogMac::accountAdded(AccountState *s) { QIcon accountIcon = MacStandardIcon::icon(MacStandardIcon::UserAccounts); auto accountSettings = new AccountSettings(s, this); - //FIXME: add at the begining: (and don(t foget to adjust for _protocolIdx) - addPreferencesPanel(accountIcon, s->account()->displayName(), accountSettings); + + insertPreferencesPanel(0, accountIcon, s->account()->displayName(), accountSettings); connect( accountSettings, &AccountSettings::folderChanged, _gui, &ownCloudGui::slotFoldersChanged); connect( accountSettings, &AccountSettings::openFolderAlias, _gui, &ownCloudGui::slotFolderOpenAction); @@ -120,11 +121,10 @@ void SettingsDialogMac::accountAdded(AccountState *s) void SettingsDialogMac::accountRemoved(AccountState *s) { - // FIXME: is it the correct way to remove a panel? - auto list = findChildren(QString(), Qt::FindDirectChildrenOnly); + auto list = findChildren(QString()); foreach(auto p, list) { if (p->accountsState() == s) { - p->deleteLater(); + removePreferencesPanel(p); } } } diff --git a/src/gui/settingsdialogmac.h b/src/gui/settingsdialogmac.h index 69c8ffce5..fc7ea705a 100644 --- a/src/gui/settingsdialogmac.h +++ b/src/gui/settingsdialogmac.h @@ -52,8 +52,7 @@ private slots: private: void closeEvent(QCloseEvent *event); - QListWidgetItem *_accountItem; - ProtocolWidget *_protocolWidget; + ProtocolWidget *_protocolWidget; // this is actually the activityPage ownCloudGui *_gui; int _protocolIdx;