void RepoTreeView::onItemDoubleClicked(const QModelIndex& index) { QStandardItem *item = getRepoItem(index); if (!item) { return; } if (item->type() == REPO_ITEM_TYPE) { RepoItem *it = (RepoItem *)item; const LocalRepo& local_repo = it->localRepo(); if (local_repo.isValid()) { // open local folder for downloaded repo QDesktopServices::openUrl(QUrl::fromLocalFile(local_repo.worktree)); } else { // open seahub repo page for not downloaded repo // if (seafApplet->isPro()) { FileBrowserDialog* dialog = new FileBrowserDialog(it->repo(), this); const QRect screen = QApplication::desktop()->screenGeometry(); dialog->setAttribute(Qt::WA_DeleteOnClose, true); dialog->show(); dialog->move(screen.center() - dialog->rect().center()); dialog->raise(); // } else { // const Account& account = seafApplet->accountManager()->accounts()[0]; // if (account.isValid()) { // QUrl url = account.getAbsoluteUrl("repo/" + it->repo().id); // QDesktopServices::openUrl(url); // } // } } } }
void RepoTreeView::onItemDoubleClicked(const QModelIndex& index) { QStandardItem *item = getRepoItem(index); if (!item) { return; } if (item->type() == REPO_ITEM_TYPE) { RepoItem *it = (RepoItem *)item; const LocalRepo& local_repo = it->localRepo(); if (local_repo.isValid()) { QDesktopServices::openUrl(QUrl::fromLocalFile(local_repo.worktree)); } } }
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())); }