void TransfersContentsWidget::showContextMenu(const QPoint &point) { TransferInformation *transfer = getTransfer(m_ui->transfersView->indexAt(point)); QMenu menu(this); if (transfer) { menu.addAction(tr("Open"), this, SLOT(openTransfer())); menu.addAction(tr("Open Folder"), this, SLOT(openTransferFolder())); menu.addSeparator(); menu.addAction(((transfer->state == ErrorTransfer) ? tr("Resume") : tr("Stop")), this, SLOT(stopResumeTransfer()))->setEnabled(transfer->state == RunningTransfer || transfer->state == ErrorTransfer); menu.addAction("Redownload", this, SLOT(redownloadTransfer())); menu.addSeparator(); menu.addAction(tr("Copy Transfer Information"), this, SLOT(copyTransferInformation())); menu.addSeparator(); menu.addAction(tr("Remove"), this, SLOT(removeTransfer())); } const QList<TransferInformation*> transfers = TransfersManager::getTransfers(); int finishedTransfers = 0; for (int i = 0; i < transfers.count(); ++i) { if (transfers.at(i)->state == FinishedTransfer) { ++finishedTransfers; } } menu.addAction(tr("Clear Finished Transfers"), this, SLOT(clearFinishedTransfers()))->setEnabled(finishedTransfers > 0); menu.exec(m_ui->transfersView->mapToGlobal(point)); }
TransfersContentsWidget::TransfersContentsWidget(Window *window) : ContentsWidget(window), m_model(new QStandardItemModel(this)), m_isLoading(false), m_ui(new Ui::TransfersContentsWidget) { m_ui->setupUi(this); QStringList labels; labels << QString() << tr("Filename") << tr("Size") << tr("Progress") << tr("Time") << tr("Speed") << tr("Started") << tr("Finished"); m_model->setHorizontalHeaderLabels(labels); m_ui->transfersViewWidget->setModel(m_model); m_ui->transfersViewWidget->header()->setTextElideMode(Qt::ElideRight); m_ui->transfersViewWidget->header()->resizeSection(0, 30); m_ui->transfersViewWidget->header()->setSectionResizeMode(0, QHeaderView::Fixed); m_ui->transfersViewWidget->header()->setSectionResizeMode(1, QHeaderView::Stretch); m_ui->transfersViewWidget->setItemDelegate(new ItemDelegate(this)); m_ui->transfersViewWidget->setItemDelegateForColumn(3, new ProgressBarDelegate(this)); m_ui->transfersViewWidget->installEventFilter(this); m_ui->stopResumeButton->setIcon(Utils::getIcon(QLatin1String("task-ongoing"))); m_ui->redownloadButton->setIcon(Utils::getIcon(QLatin1String("view-refresh"))); m_ui->downloadLineEdit->installEventFilter(this); const QList<Transfer*> transfers = TransfersManager::getTransfers(); for (int i = 0; i < transfers.count(); ++i) { addTransfer(transfers.at(i)); } if (!window) { m_ui->detailsWidget->hide(); } connect(TransfersManager::getInstance(), SIGNAL(transferStarted(Transfer*)), this, SLOT(addTransfer(Transfer*))); connect(TransfersManager::getInstance(), SIGNAL(transferRemoved(Transfer*)), this, SLOT(removeTransfer(Transfer*))); connect(TransfersManager::getInstance(), SIGNAL(transferChanged(Transfer*)), this, SLOT(updateTransfer(Transfer*))); connect(m_model, SIGNAL(modelReset()), this, SLOT(updateActions())); connect(m_ui->transfersViewWidget, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(openTransfer(QModelIndex))); connect(m_ui->transfersViewWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint))); connect(m_ui->transfersViewWidget, SIGNAL(needsActionsUpdate()), this, SLOT(updateActions())); connect(m_ui->downloadLineEdit, SIGNAL(returnPressed()), this, SLOT(startQuickTransfer())); connect(m_ui->stopResumeButton, SIGNAL(clicked()), this, SLOT(stopResumeTransfer())); connect(m_ui->redownloadButton, SIGNAL(clicked()), this, SLOT(redownloadTransfer())); }
void TransfersContentsWidget::showContextMenu(const QPoint &point) { Transfer *transfer = getTransfer(m_ui->transfersViewWidget->indexAt(point)); QMenu menu(this); if (transfer) { menu.addAction(tr("Open"), this, SLOT(openTransfer())); const QList<ApplicationInformation> applications = Utils::getApplicationsForMimeType(transfer->getMimeType()); if (applications.count() > 1) { QMenu *applicationsMenu = menu.addMenu(tr("Open With")); for (int i = 0; i < applications.count(); ++i) { applicationsMenu->addAction(applications.at(i).icon, ((applications.at(i).name.isEmpty()) ? tr("Unknown") : applications.at(i).name))->setData(applications.at(i).command); if (i == 0) { applicationsMenu->addSeparator(); } } connect(applicationsMenu, SIGNAL(triggered(QAction*)), this, SLOT(openTransfer(QAction*))); } menu.addAction(tr("Open Folder"), this, SLOT(openTransferFolder())); menu.addSeparator(); menu.addAction(((transfer->getState() == Transfer::ErrorState) ? tr("Resume") : tr("Stop")), this, SLOT(stopResumeTransfer()))->setEnabled(transfer->getState() == Transfer::RunningState || transfer->getState() == Transfer::ErrorState); menu.addAction(tr("Redownload"), this, SLOT(redownloadTransfer())); menu.addSeparator(); menu.addAction(tr("Copy Transfer Information"), this, SLOT(copyTransferInformation())); menu.addSeparator(); menu.addAction(tr("Remove"), this, SLOT(removeTransfer())); }