CloudView::CloudView(QWidget *parent) : QWidget(parent), in_refresh_(false), list_repo_req_(NULL), clone_task_dialog_(NULL) { setupUi(this); // seahub_messages_monitor_ = new SeahubMessagesMonitor(this); mSeahubMessagesBtn->setVisible(false); setupHeader(); createRepoModelView(); createLoadingView(); createLoadingFailedView(); mStack->insertWidget(INDEX_LOADING_VIEW, loading_view_); mStack->insertWidget(INDEX_LOADING_FAILED_VIEW, loading_failed_view_); mStack->insertWidget(INDEX_REPOS_VIEW, repos_tree_); createToolBar(); updateAccountInfoDisplay(); prepareAccountButtonMenu(); setupDropArea(); setupFooter(); mDropArea->setVisible(false); //disk42 resizer_ = new QSizeGrip(this); resizer_->resize(resizer_->sizeHint()); refresh_status_bar_timer_ = new QTimer(this); connect(refresh_status_bar_timer_, SIGNAL(timeout()), this, SLOT(refreshStatusBar())); refresh_timer_ = new QTimer(this); connect(refresh_timer_, SIGNAL(timeout()), this, SLOT(refreshRepos())); connect(seafApplet->accountManager(), SIGNAL(accountAdded(const Account&)), this, SLOT(setCurrentAccount(const Account&))); connect(seafApplet->accountManager(), SIGNAL(accountAdded(const Account&)), this, SLOT(updateAccountMenu())); connect(seafApplet->accountManager(), SIGNAL(accountRemoved(const Account&)), this, SLOT(updateAccountMenu())); #ifdef Q_WS_MAC mHeader->setVisible(false); #endif }
void CloudView::setCurrentAccount(const Account& account) { if (current_account_ != account) { current_account_ = account; in_refresh_ = false; repos_model_->clear(); showLoadingView(); refreshRepos(); // seahub_messages_monitor_->refresh(); updateAccountInfoDisplay(); if (account.isValid()) { seafApplet->accountManager()->updateAccountLastVisited(account); } qDebug("switch to account %s\n", account.username.toUtf8().data()); } refresh_action_->setEnabled(account.isValid()); }
/** * Update the account menu when accounts changed */ void AccountView::onAccountChanged() { const std::vector<Account>& accounts = seafApplet->accountManager()->accounts(); // Remove all menu items account_menu_->clear(); if (!accounts.empty()) { for (size_t i = 0, n = accounts.size(); i < n; i++) { const Account &account = accounts[i]; QString text = account.username + "(" + account.serverUrl.host() + ")"; if (!account.isValid()) { text += ", " + tr("not logged in"); } QMenu *submenu = new QMenu(text, account_menu_); if (i == 0) { submenu->setIcon(QIcon(":/images/account-checked.png")); } else { submenu->setIcon(QIcon(":/images/account-else.png")); } QAction *submenu_action = submenu->menuAction(); submenu_action->setData(QVariant::fromValue(account)); connect(submenu_action, SIGNAL(triggered()), this, SLOT(onAccountItemClicked())); QAction *action = new QAction(tr("Choose"), submenu); action->setIcon(QIcon(":/images/account-checked.png")); action->setIconVisibleInMenu(true); action->setData(QVariant::fromValue(account)); connect(action, SIGNAL(triggered()), this, SLOT(onAccountItemClicked())); submenu->addAction(action); submenu->setDefaultAction(action); QAction *account_settings_action = new QAction(tr("Account settings"), this); account_settings_action->setIcon(QIcon(":/images/account-settings.png")); account_settings_action->setIconVisibleInMenu(true); account_settings_action->setData(QVariant::fromValue(account)); connect(account_settings_action, SIGNAL(triggered()), this, SLOT(editAccountSettings())); submenu->addAction(account_settings_action); QAction *toggle_action = new QAction(this); toggle_action->setIcon(QIcon(":/images/logout.png")); toggle_action->setIconVisibleInMenu(true); toggle_action->setData(QVariant::fromValue(account)); connect(toggle_action, SIGNAL(triggered()), this, SLOT(toggleAccount())); if (account.isValid()) toggle_action->setText(tr("Logout")); else toggle_action->setText(tr("Login")); submenu->addAction(toggle_action); QAction *delete_account_action = new QAction(tr("Delete"), this); delete_account_action->setIcon(QIcon(":/images/delete-account.png")); delete_account_action->setIconVisibleInMenu(true); delete_account_action->setData(QVariant::fromValue(account)); connect(delete_account_action, SIGNAL(triggered()), this, SLOT(deleteAccount())); submenu->addAction(delete_account_action); account_menu_->addMenu(submenu); } account_menu_->addSeparator(); } add_account_action_ = new QAction(tr("Add an account"), this); add_account_action_->setIcon(QIcon(":/images/add-account.png")); add_account_action_->setIconVisibleInMenu(true); connect(add_account_action_, SIGNAL(triggered()), this, SLOT(showAddAccountDialog())); account_menu_->addAction(add_account_action_); updateAccountInfoDisplay(); }