void RepoTreeView::updateRepoActions() { RepoItem *item = NULL; QItemSelection selected = selectionModel()->selection(); QModelIndexList indexes = selected.indexes(); if (indexes.size() != 0) { const QModelIndex& index = indexes.at(0); QSortFilterProxyModel *proxy = (QSortFilterProxyModel *)model(); RepoTreeModel *tree_model = (RepoTreeModel *)(proxy->sourceModel()); QStandardItem *it = tree_model->itemFromIndex(proxy->mapToSource(index)); if (it && it->type() == REPO_ITEM_TYPE) { item = (RepoItem *)it; } } if (!item) { // No repo item is selected download_action_->setEnabled(false); download_toolbar_action_->setEnabled(false); sync_now_action_->setEnabled(false); open_local_folder_action_->setEnabled(false); open_local_folder_toolbar_action_->setEnabled(false); unsync_action_->setEnabled(false); resync_action_->setEnabled(false); toggle_auto_sync_action_->setEnabled(false); view_on_web_action_->setEnabled(false); show_detail_action_->setEnabled(false); return; } LocalRepo r; seafApplet->rpcClient()->getLocalRepo(item->repo().id, &r); item->setLocalRepo(r); if (item->localRepo().isValid()) { const LocalRepo& local_repo = item->localRepo(); download_action_->setEnabled(false); download_toolbar_action_->setEnabled(false); sync_now_action_->setEnabled(true); sync_now_action_->setData(QVariant::fromValue(local_repo)); open_local_folder_action_->setData(QVariant::fromValue(local_repo)); open_local_folder_action_->setEnabled(true); open_local_folder_toolbar_action_->setData(QVariant::fromValue(local_repo)); open_local_folder_toolbar_action_->setEnabled(true); unsync_action_->setData(QVariant::fromValue(local_repo)); unsync_action_->setEnabled(true); resync_action_->setData(QVariant::fromValue(local_repo)); resync_action_->setEnabled(true); toggle_auto_sync_action_->setData(QVariant::fromValue(local_repo)); toggle_auto_sync_action_->setEnabled(true); QIcon q_pause = ::getMenuIconSet(":/images/pause-gray.png"); QIcon q_play = ::getMenuIconSet(":/images/play-gray.png"); if (local_repo.auto_sync) { toggle_auto_sync_action_->setText(tr("Disable auto sync")); toggle_auto_sync_action_->setToolTip(tr("Disable auto sync")); toggle_auto_sync_action_->setIcon(q_pause); } else { toggle_auto_sync_action_->setText(tr("Enable auto sync")); toggle_auto_sync_action_->setToolTip(tr("Enable auto sync")); toggle_auto_sync_action_->setIcon(q_play); } } else { if (item->repoDownloadable()) { download_action_->setEnabled(true); download_toolbar_action_->setEnabled(true); download_action_->setData(QVariant::fromValue(item->repo())); download_toolbar_action_->setData(QVariant::fromValue(item->repo())); } else { download_action_->setEnabled(false); download_toolbar_action_->setEnabled(false); } sync_now_action_->setEnabled(false); open_local_folder_action_->setEnabled(false); open_local_folder_toolbar_action_->setEnabled(false); unsync_action_->setEnabled(false); resync_action_->setEnabled(false); toggle_auto_sync_action_->setEnabled(false); } view_on_web_action_->setEnabled(true); view_on_web_action_->setData(item->repo().id); show_detail_action_->setEnabled(true); show_detail_action_->setData(QVariant::fromValue(item->repo())); if (item->cloneTask().isCancelable()) { cancel_download_action_->setEnabled(true); cancel_download_action_->setData(QVariant::fromValue(item->repo())); } else { cancel_download_action_->setEnabled(false); } emit dataChanged(indexes.at(0), indexes.at(0)); }
void RepoTreeView::updateRepoActions() { RepoItem *item = NULL; QItemSelection selected = selectionModel()->selection(); QModelIndexList indexes = selected.indexes(); if (indexes.size() != 0) { const QModelIndex& index = indexes.at(0); QStandardItem *it = ((RepoTreeModel *)model())->itemFromIndex(index); if (it && it->type() == REPO_ITEM_TYPE) { item = (RepoItem *)it; } } if (!item) { // No repo item is selected download_action_->setEnabled(false); open_local_folder_action_->setEnabled(false); unsync_action_->setEnabled(false); toggle_auto_sync_action_->setEnabled(false); view_on_web_action_->setEnabled(false); show_detail_action_->setEnabled(false); return; } LocalRepo r; seafApplet->rpcClient()->getLocalRepo(item->repo().id, &r); item->setLocalRepo(r); if (item->localRepo().isValid()) { const LocalRepo& local_repo = item->localRepo(); download_action_->setEnabled(false); open_local_folder_action_->setData(QVariant::fromValue(local_repo)); open_local_folder_action_->setEnabled(true); unsync_action_->setData(QVariant::fromValue(local_repo)); unsync_action_->setEnabled(true); toggle_auto_sync_action_->setData(QVariant::fromValue(local_repo)); toggle_auto_sync_action_->setEnabled(true); if (local_repo.auto_sync) { toggle_auto_sync_action_->setText(tr("Disable auto sync")); toggle_auto_sync_action_->setToolTip(tr("Disable auto sync")); toggle_auto_sync_action_->setIcon(QIcon(":/images/pause.png")); } else { toggle_auto_sync_action_->setText(tr("Enable auto sync")); toggle_auto_sync_action_->setToolTip(tr("Enable auto sync")); toggle_auto_sync_action_->setIcon(QIcon(":/images/play.png")); } } else { download_action_->setEnabled(true); download_action_->setData(QVariant::fromValue(item->repo())); open_local_folder_action_->setEnabled(false); unsync_action_->setEnabled(false); toggle_auto_sync_action_->setEnabled(false); } view_on_web_action_->setEnabled(true); view_on_web_action_->setData(item->repo().id); show_detail_action_->setEnabled(true); show_detail_action_->setData(QVariant::fromValue(item->repo())); }