diff options
author | Camila San <hello@camila.codes> | 2018-03-26 22:02:03 +0300 |
---|---|---|
committer | Camila San <hello@camila.codes> | 2018-07-07 14:17:50 +0300 |
commit | 3ada8419c41c4be01d172c4a97ac5756cd4b4e5e (patch) | |
tree | 781ba6e1e6233fe25a68a2d2df9227e718674fa1 | |
parent | a89756e96f66287ef25552ea8c8a6496a31b1088 (diff) |
Adds one activity widget for each user.
Signed-off-by: Camila San <hello@camila.codes>
-rw-r--r-- | src/gui/activitywidget.cpp | 46 | ||||
-rw-r--r-- | src/gui/activitywidget.h | 13 | ||||
-rw-r--r-- | src/gui/owncloudgui.cpp | 2 | ||||
-rw-r--r-- | src/gui/settingsdialog.cpp | 73 | ||||
-rw-r--r-- | src/gui/settingsdialog.h | 5 |
5 files changed, 77 insertions, 62 deletions
diff --git a/src/gui/activitywidget.cpp b/src/gui/activitywidget.cpp index 0ba79956d..0d4a9cf1c 100644 --- a/src/gui/activitywidget.cpp +++ b/src/gui/activitywidget.cpp @@ -49,10 +49,11 @@ namespace OCC { -ActivityWidget::ActivityWidget(QWidget *parent) +ActivityWidget::ActivityWidget(QWidget *parent, AccountState *account) : QWidget(parent) , _ui(new Ui::ActivityWidget) , _notificationRequestsRunning(0) + , _account(account) { _ui->setupUi(this); @@ -497,8 +498,9 @@ void ActivityWidget::slotCheckToCleanWidgets() /* ==================================================================== */ -ActivitySettings::ActivitySettings(QWidget *parent) +ActivitySettings::ActivitySettings(QWidget *parent, AccountState *account) : QWidget(parent) + , _account(account) { QHBoxLayout *hbox = new QHBoxLayout(this); setLayout(hbox); @@ -506,24 +508,24 @@ ActivitySettings::ActivitySettings(QWidget *parent) // create a tab widget for the three activity views _tab = new QTabWidget(this); hbox->addWidget(_tab); - _activityWidget = new ActivityWidget(this); + _activityWidget = new ActivityWidget(this, _account); _activityTabId = _tab->addTab(_activityWidget, Theme::instance()->applicationIcon(), tr("Server Activity")); connect(_activityWidget, &ActivityWidget::copyToClipboard, this, &ActivitySettings::slotCopyToClipboard); connect(_activityWidget, &ActivityWidget::hideActivityTab, this, &ActivitySettings::setActivityTabHidden); connect(_activityWidget, &ActivityWidget::guiLog, this, &ActivitySettings::guiLog); connect(_activityWidget, &ActivityWidget::newNotification, this, &ActivitySettings::slotShowActivityTab); - _protocolWidget = new ProtocolWidget(this); - _protocolTabId = _tab->addTab(_protocolWidget, Theme::instance()->syncStateIcon(SyncResult::Success), tr("Sync Protocol")); - connect(_protocolWidget, &ProtocolWidget::copyToClipboard, this, &ActivitySettings::slotCopyToClipboard); +// _protocolWidget = new ProtocolWidget(this); +// _protocolTabId = _tab->addTab(_protocolWidget, Theme::instance()->syncStateIcon(SyncResult::Success), tr("Sync Protocol")); +// connect(_protocolWidget, &ProtocolWidget::copyToClipboard, this, &ActivitySettings::slotCopyToClipboard); - _issuesWidget = new IssuesWidget(this); - _syncIssueTabId = _tab->addTab(_issuesWidget, Theme::instance()->syncStateIcon(SyncResult::Problem), QString()); - slotShowIssueItemCount(0); // to display the label. - connect(_issuesWidget, &IssuesWidget::issueCountUpdated, - this, &ActivitySettings::slotShowIssueItemCount); - connect(_issuesWidget, &IssuesWidget::copyToClipboard, - this, &ActivitySettings::slotCopyToClipboard); +// _issuesWidget = new IssuesWidget(this); +// _syncIssueTabId = _tab->addTab(_issuesWidget, Theme::instance()->syncStateIcon(SyncResult::Problem), QString()); +// slotShowIssueItemCount(0); // to display the label. +// connect(_issuesWidget, &IssuesWidget::issueCountUpdated, +// this, &ActivitySettings::slotShowIssueItemCount); +// connect(_issuesWidget, &IssuesWidget::copyToClipboard, +// this, &ActivitySettings::slotCopyToClipboard); // Add a progress indicator to spin if the acitivity list is updated. _progressIndicator = new QProgressIndicator(this); @@ -578,14 +580,14 @@ void ActivitySettings::slotShowActivityTab() } } -void ActivitySettings::slotShowIssuesTab(const QString &folderAlias) -{ - if (_syncIssueTabId == -1) - return; - _tab->setCurrentIndex(_syncIssueTabId); +//void ActivitySettings::slotShowIssuesTab(const QString &folderAlias) +//{ +// if (_syncIssueTabId == -1) +// return; +// _tab->setCurrentIndex(_syncIssueTabId); - _issuesWidget->showFolderErrors(folderAlias); -} +// _issuesWidget->showFolderErrors(folderAlias); +//} void ActivitySettings::slotCopyToClipboard() { @@ -601,12 +603,12 @@ void ActivitySettings::slotCopyToClipboard() message = tr("The server activity list has been copied to the clipboard."); } else if (idx == _protocolTabId) { // the protocol widget - _protocolWidget->storeSyncActivity(ts); + //_protocolWidget->storeSyncActivity(ts); message = tr("The sync activity list has been copied to the clipboard."); } else if (idx == _syncIssueTabId) { // issues Widget message = tr("The list of unsynced items has been copied to the clipboard."); - _issuesWidget->storeSyncIssues(ts); + //_issuesWidget->storeSyncIssues(ts); } QApplication::clipboard()->setText(text); diff --git a/src/gui/activitywidget.h b/src/gui/activitywidget.h index b1e899ed9..4e77110d9 100644 --- a/src/gui/activitywidget.h +++ b/src/gui/activitywidget.h @@ -25,6 +25,7 @@ #include "owncloudgui.h" #include "account.h" #include "activitydata.h" +#include "accountmanager.h" #include "ui_activitywidget.h" @@ -58,7 +59,8 @@ class ActivityWidget : public QWidget { Q_OBJECT public: - explicit ActivityWidget(QWidget *parent = 0); + explicit ActivityWidget(QWidget *parent = 0, + AccountState *account = AccountManager::instance()->accounts().first().data()); ~ActivityWidget(); QSize sizeHint() const Q_DECL_OVERRIDE { return ownCloudGui::settingsDialogSize(); } void storeActivityList(QTextStream &ts); @@ -117,6 +119,8 @@ private: ActivityListModel *_model; QVBoxLayout *_notificationsLayout; + + AccountState *_account; }; @@ -131,7 +135,8 @@ class ActivitySettings : public QWidget { Q_OBJECT public: - explicit ActivitySettings(QWidget *parent = 0); + explicit ActivitySettings(QWidget *parent = 0, + AccountState *account = AccountManager::instance()->accounts().first().data()); ~ActivitySettings(); QSize sizeHint() const Q_DECL_OVERRIDE { return ownCloudGui::settingsDialogSize(); } @@ -141,7 +146,7 @@ public slots: void setNotificationRefreshInterval(std::chrono::milliseconds interval); - void slotShowIssuesTab(const QString &folderAlias); + //void slotShowIssuesTab(const QString &folderAlias); private slots: void slotCopyToClipboard(); @@ -167,6 +172,8 @@ private: QProgressIndicator *_progressIndicator; QTimer _notificationCheckTimer; QHash<AccountState *, QElapsedTimer> _timeSinceLastCheck; + + AccountState *_account; }; } #endif // ActivityWIDGET_H diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp index d626814a2..1643dcf16 100644 --- a/src/gui/owncloudgui.cpp +++ b/src/gui/owncloudgui.cpp @@ -1040,7 +1040,7 @@ void ownCloudGui::slotShowSettings() void ownCloudGui::slotShowSyncProtocol() { slotShowSettings(); - _settingsDialog->showActivityPage(); + //_settingsDialog->showActivityPage(); } diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index d1f7c767a..01746c2c5 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -84,19 +84,35 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) setObjectName("Settings"); // required as group for saveGeometry call setWindowTitle(Theme::instance()->appNameGUI()); + connect(AccountManager::instance(), &AccountManager::accountAdded, + this, &SettingsDialog::accountAdded); + connect(AccountManager::instance(), &AccountManager::accountRemoved, + this, &SettingsDialog::accountRemoved); + _actionGroup = new QActionGroup(this); _actionGroup->setExclusive(true); - // 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(QLatin1String(":/client/resources/activity.png"), tr("Activity")); - _actionGroup->addAction(_activityAction); - _toolBar->addAction(_activityAction); - _activitySettings = new ActivitySettings; - _ui->stack->addWidget(_activitySettings); - connect(_activitySettings, &ActivitySettings::guiLog, _gui, - &ownCloudGui::slotShowOptionalTrayMessage); - _activitySettings->setNotificationRefreshInterval(cfg.notificationRefreshInterval()); + foreach (auto ai, AccountManager::instance()->accounts()) { + accountAdded(ai.data()); + + _activitySettings[ai] = new ActivitySettings(this, ai.data()); + _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); + + slotRefreshActivity(ai.data()); + } QAction *generalAction = createColorAwareAction(QLatin1String(":/client/resources/settings.png"), tr("General")); _actionGroup->addAction(generalAction); @@ -110,20 +126,11 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) NetworkSettings *networkSettings = new NetworkSettings; _ui->stack->addWidget(networkSettings); - _actionGroupWidgets.insert(_activityAction, _activitySettings); _actionGroupWidgets.insert(generalAction, generalSettings); _actionGroupWidgets.insert(networkAction, networkSettings); connect(_actionGroup, &QActionGroup::triggered, this, &SettingsDialog::slotSwitchPage); - connect(AccountManager::instance(), &AccountManager::accountAdded, - this, &SettingsDialog::accountAdded); - connect(AccountManager::instance(), &AccountManager::accountRemoved, - this, &SettingsDialog::accountRemoved); - foreach (auto ai, AccountManager::instance()->accounts()) { - accountAdded(ai.data()); - } - QTimer::singleShot(1, this, &SettingsDialog::showFirstPage); QPushButton *closeButton = _ui->buttonBox->button(QDialogButtonBox::Close); @@ -189,18 +196,18 @@ void SettingsDialog::showFirstPage() void SettingsDialog::showActivityPage() { - if (_activityAction) { - _activityAction->trigger(); + if (auto account = qvariant_cast<AccountStatePtr>(sender()->property("account"))) { + _activitySettings[account]->show(); } } -void SettingsDialog::showIssuesList(const QString &folderAlias) -{ - if (!_activityAction) - return; - _activityAction->trigger(); - _activitySettings->slotShowIssuesTab(folderAlias); -} +//void SettingsDialog::showIssuesList(const QString &folderAlias) +//{ +// if (!_activityAction) +// return; +// _activityAction->trigger(); +// _activitySettings->slotShowIssuesTab(folderAlias); +//} void SettingsDialog::accountAdded(AccountState *s) { @@ -223,7 +230,7 @@ void SettingsDialog::accountAdded(AccountState *s) accountAction->setToolTip(s->account()->displayName()); accountAction->setIconText(SettingsDialogCommon::shortDisplayNameForSettings(s->account().data(), height * buttonSizeRatio)); } - _toolBar->insertAction(_toolBar->actions().at(0), accountAction); + _toolBar->addAction(accountAction); auto accountSettings = new AccountSettings(s, this); _ui->stack->insertWidget(0, accountSettings); _actionGroup->addAction(accountAction); @@ -233,14 +240,14 @@ void SettingsDialog::accountAdded(AccountState *s) connect(accountSettings, &AccountSettings::folderChanged, _gui, &ownCloudGui::slotFoldersChanged); connect(accountSettings, &AccountSettings::openFolderAlias, _gui, &ownCloudGui::slotFolderOpenAction); - connect(accountSettings, &AccountSettings::showIssuesList, this, &SettingsDialog::showIssuesList); + //connect(accountSettings, &AccountSettings::showIssuesList, this, &SettingsDialog::showIssuesList); connect(s->account().data(), &Account::accountChangedAvatar, this, &SettingsDialog::slotAccountAvatarChanged); connect(s->account().data(), &Account::accountChangedDisplayName, this, &SettingsDialog::slotAccountDisplayNameChanged); // Refresh immediatly when getting online connect(s, &AccountState::isConnectedChanged, this, &SettingsDialog::slotRefreshActivityAccountStateSender); - slotRefreshActivity(s); + //slotRefreshActivity(s); } void SettingsDialog::slotAccountAvatarChanged() @@ -295,7 +302,7 @@ void SettingsDialog::accountRemoved(AccountState *s) if (_actionForAccount.contains(s->account().data())) { _actionForAccount.remove(s->account().data()); } - _activitySettings->slotRemoveAccount(s); + _activitySettings[AccountManager::instance()->account(s->account()->displayName())]->slotRemoveAccount(s); // 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 @@ -390,7 +397,7 @@ void SettingsDialog::slotRefreshActivityAccountStateSender() void SettingsDialog::slotRefreshActivity(AccountState *accountState) { if (accountState) { - _activitySettings->slotRefresh(accountState); + _activitySettings[AccountManager::instance()->account(accountState->account()->displayName())]->slotRefresh(accountState); } } diff --git a/src/gui/settingsdialog.h b/src/gui/settingsdialog.h index 37ff29da8..22352fc6f 100644 --- a/src/gui/settingsdialog.h +++ b/src/gui/settingsdialog.h @@ -56,7 +56,7 @@ public: public slots: void showFirstPage(); void showActivityPage(); - void showIssuesList(const QString &folderAlias); +// void showIssuesList(const QString &folderAlias); void slotSwitchPage(QAction *action); void slotRefreshActivity(AccountState *accountState); void slotRefreshActivityAccountStateSender(); @@ -91,9 +91,8 @@ private: QToolBar *_toolBar; - ActivitySettings *_activitySettings; + QMap<AccountStatePtr, ActivitySettings *> _activitySettings; - QAction *_activityAction; ownCloudGui *_gui; }; } |