void TransfersContentsWidget::stopResumeTransfer() { Transfer *transfer = getTransfer(m_ui->transfersViewWidget->selectionModel()->hasSelection() ? m_ui->transfersViewWidget->selectionModel()->currentIndex() : QModelIndex()); if (transfer) { if (transfer->getState() == Transfer::RunningState) { transfer->stop(); } else if (transfer->getState() == Transfer::ErrorState) { transfer->resume(); } updateActions(); } }
void TransfersManager::transferStarted() { Transfer *transfer = qobject_cast<Transfer*>(sender()); if (transfer && transfer->getState() != Transfer::CancelledState) { emit transferStarted(transfer); scheduleSave(); } }
void Updater::transferFinished() { Transfer *transfer = qobject_cast<Transfer*>(sender()); if (transfer) { const QString path = transfer->getTarget(); if ((transfer->getState() == Transfer::FinishedState) && QFile::exists(path)) { if (QFileInfo(path).suffix() == QLatin1String("xml")) { QFile file(SessionsManager::getWritableDataPath(QLatin1String("update.txt"))); if (file.open(QIODevice::ReadWrite | QIODevice::Text)) { QTextStream stream(&file); stream << path; file.close(); } } } else { Console::addMessage(QCoreApplication::translate("main", "Unable to download update: %1\nError: %2").arg(transfer->getSource().url()).arg(transfer->getState()), OtherMessageCategory, ErrorMessageLevel); m_transfersSuccessful = false; } transfer->deleteLater(); } else { m_transfersSuccessful = false; } ++m_transfersCount; if (m_transfersCount == 2) { if (!m_transfersSuccessful) { clearUpdate(); } emit finished(m_transfersSuccessful); deleteLater(); } }
Transfer* TransfersManager::startTransfer(QNetworkReply *reply, const QString &target, Transfer::TransferOptions options) { Transfer *transfer = new Transfer(reply, target, options, m_instance); if (transfer->getState() == Transfer::CancelledState) { transfer->deleteLater(); return NULL; } addTransfer(transfer); return transfer; }
Transfer* TransfersManager::startTransfer(const QUrl &source, const QString &target, Transfer::TransferOptions options) { Transfer *transfer = new Transfer(source, target, options, m_instance); if (transfer->getState() == Transfer::CancelledState) { transfer->deleteLater(); return NULL; } addTransfer(transfer); return transfer; }
void TransfersContentsWidget::removeTransfer() { Transfer *transfer = getTransfer(m_ui->transfersViewWidget->currentIndex()); if (transfer) { if (transfer->getState() == Transfer::RunningState && QMessageBox::warning(this, tr("Warning"), tr("This transfer is still running.\nDo you really want to remove it?"), (QMessageBox::Yes | QMessageBox::Cancel)) == QMessageBox::Cancel) { return; } m_speeds.remove(transfer); m_model->removeRow(m_ui->transfersViewWidget->currentIndex().row()); TransfersManager::removeTransfer(transfer); } }
void TransfersManager::transferFinished() { Transfer *transfer = qobject_cast<Transfer*>(sender()); if (transfer) { if (transfer->getState() == Transfer::FinishedState) { connect(NotificationsManager::createNotification(NotificationsManager::TransferCompletedEvent, tr("Transfer completed:\n%1").arg(QFileInfo(transfer->getTarget()).fileName()), Notification::InformationLevel, this), SIGNAL(clicked()), transfer, SLOT(openTarget())); } emit transferFinished(transfer); if (!m_privateTransfers.contains(transfer)) { scheduleSave(); } } }
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())); }