void DolphinContextMenu::openTrashContextMenu() { Q_ASSERT(m_context & TrashContext); QAction* emptyTrashAction = new QAction(QIcon::fromTheme(QStringLiteral("trash-empty")), i18nc("@action:inmenu", "Empty Trash"), this); KConfig trashConfig(QStringLiteral("trashrc"), KConfig::SimpleConfig); emptyTrashAction->setEnabled(!trashConfig.group("Status").readEntry("Empty", true)); addAction(emptyTrashAction); addCustomActions(); QAction* propertiesAction = m_mainWindow->actionCollection()->action(QStringLiteral("properties")); addAction(propertiesAction); addShowMenuBarAction(); if (exec(m_pos) == emptyTrashAction) { KIO::JobUiDelegate uiDelegate; uiDelegate.setWindow(m_mainWindow); if (uiDelegate.askDeleteConfirmation(QList<QUrl>(), KIO::JobUiDelegate::EmptyTrash, KIO::JobUiDelegate::DefaultConfirmation)) { KIO::Job* job = KIO::emptyTrash(); KJobWidgets::setWindow(job, m_mainWindow); job->ui()->setAutoErrorHandlingEnabled(true); } } }
void KrTrashHandler::restoreTrashedFiles(const QList<QUrl> &urls) { KonqMultiRestoreJob* job = new KonqMultiRestoreJob(urls); KIO::JobUiDelegate *ui = static_cast<KIO::JobUiDelegate*>(job->uiDelegate()); ui->setWindow(krMainWindow); KIO::getJobTracker()->registerJob(job); QObject::connect(job, SIGNAL(result(KJob *)), ACTIVE_PANEL->func, SLOT(refresh())); }
void KonqPopupMenuPrivate::slotPopupEmptyTrashBin() { KIO::JobUiDelegate uiDelegate; uiDelegate.setWindow(m_parentWidget); if (uiDelegate.askDeleteConfirmation(QList<QUrl>(), KIO::JobUiDelegate::EmptyTrash, KIO::JobUiDelegate::DefaultConfirmation)) { KIO::Job *job = KIO::emptyTrash(); KJobWidgets::setWindow(job, m_parentWidget); job->ui()->setAutoErrorHandlingEnabled(true); // or connect to the result signal } }
void KrTrashHandler::emptyTrash() { QByteArray packedArgs; QDataStream stream(&packedArgs, QIODevice::WriteOnly); stream << (int)1; KIO::Job *job = KIO::special(QUrl(QStringLiteral("trash:/")), packedArgs); KNotification::event("Trash: emptied", QString() , QPixmap() , 0l, KNotification::DefaultEvent); KIO::JobUiDelegate *ui = static_cast<KIO::JobUiDelegate*>(job->uiDelegate()); ui->setWindow(krMainWindow); QObject::connect(job, SIGNAL(result(KJob *)), ACTIVE_PANEL->func, SLOT(refresh())); }
bool ftp_vfs::populateVfsList(const QUrl &origin, bool showHidden) { QString errorMsg; if (!origin.isValid()) errorMsg = i18n("Malformed URL:\n%1", origin.url()); if (!KProtocolManager::supportsListing(origin)) { if (origin.scheme() == "ftp" && KProtocolManager::supportsReading(origin)) errorMsg = i18n("Krusader does not support FTP access via HTTP.\nIf it is not the case, please check and change the proxy settings in the System Settings."); else errorMsg = i18n("Protocol not supported by Krusader:\n%1", origin.url()); } if (!errorMsg.isEmpty()) { printf("error\n"); if (!quietMode) emit error(errorMsg); return false; } busy = true; vfs_origin = origin.adjusted(QUrl::StripTrailingSlash); //QTimer::singleShot( 0,this,SLOT(startLister()) ); listError = false; // Open the directory marked by origin KIO::Job *job = KIO::listDir(vfs_origin, KIO::HideProgressInfo, showHidden); connect(job, SIGNAL(entries(KIO::Job*, const KIO::UDSEntryList&)), this, SLOT(slotAddFiles(KIO::Job*, const KIO::UDSEntryList&))); connect(job, SIGNAL(redirection(KIO::Job*, const QUrl&)), this, SLOT(slotRedirection(KIO::Job*, const QUrl&))); connect(job, SIGNAL(permanentRedirection(KIO::Job*, const QUrl&, const QUrl&)), this, SLOT(slotPermanentRedirection(KIO::Job*, const QUrl&, const QUrl&))); connect(job, SIGNAL(result(KJob*)), this, SLOT(slotListResult(KJob*))); if(!parentWindow.isNull()) { KIO::JobUiDelegate *ui = static_cast<KIO::JobUiDelegate*>(job->uiDelegate()); ui->setWindow(parentWindow); } if (!quietMode) { emit startJob(job); } while (busy && vfs_processEvents()); if (listError) return false; return true; }
bool KonqOperations::askDeleteConfirmation( const KUrl::List & selectedUrls, int method, ConfirmationType confirmation, QWidget* widget ) { KIO::JobUiDelegate::DeletionType deletionType; switch (method) { case EMPTYTRASH: deletionType = KIO::JobUiDelegate::EmptyTrash; break; case DEL: deletionType = KIO::JobUiDelegate::Delete; break; default: deletionType = KIO::JobUiDelegate::Trash; break; } KIO::JobUiDelegate::ConfirmationType confirmationType = confirmation == FORCE_CONFIRMATION ? KIO::JobUiDelegate::ForceConfirmation : KIO::JobUiDelegate::DefaultConfirmation; KIO::JobUiDelegate uiDelegate; uiDelegate.setWindow(widget); return uiDelegate.askDeleteConfirmation(selectedUrls, deletionType, confirmationType); }
void RadialMap::Widget::mousePressEvent(QMouseEvent *e) { //m_tip is hidden already by event filter //m_focus is set correctly (I've been strict, I assure you it is correct!) if (m_focus && !m_focus->isFake()) { const QUrl url = Widget::url(m_focus->file()); const bool isDir = m_focus->file()->isDir(); if (e->button() == Qt::RightButton) { QMenu popup; popup.setTitle(m_focus->file()->fullPath(m_tree)); QAction * actKonq = 0, * actKonsole = 0, *actViewMag = 0, * actFileOpen = 0, * actEditDel = 0; if (isDir) { actKonq = popup.addAction(QIcon::fromTheme("system-file-manager"), i18n("Open File Manager Here")); if (url.scheme() == "file") actKonsole = popup.addAction(QIcon::fromTheme("utilities-terminal"), i18n("Open Terminal Here")); if (m_focus->file() != m_tree) { popup.addSeparator(); actViewMag = popup.addAction(QIcon::fromTheme("zoom-original"), i18n("&Center Map Here")); } } else actFileOpen = popup.addAction(QIcon::fromTheme("document-open"), i18n("&Open")); popup.addSeparator(); actEditDel = popup.addAction(QIcon::fromTheme("edit-delete"), i18n("&Delete")); QAction * result = popup.exec(e->globalPos()); if (result == 0) result = (QAction *) - 1; // sanity if (result == actKonq) //KRun::runCommand will show an error message if there was trouble KRun::runCommand(QString("kfmclient openURL '%1'").arg(url.url()), this); else if (result == actKonsole) KRun::runCommand(QString("konsole --workdir '%1'").arg(url.url()), this); else if (result == actViewMag || result == actFileOpen) goto sectionTwo; else if (result == actEditDel) { const QUrl url = Widget::url(m_focus->file()); const QString message = (m_focus->file()->isDir() ? i18n("<qt>The folder at <i>'%1'</i> will be <b>recursively</b> and <b>permanently</b> deleted.</qt>", url.toDisplayString()) : i18n("<qt><i>'%1'</i> will be <b>permanently</b> deleted.</qt>", url.toDisplayString())); const int userIntention = KMessageBox::warningContinueCancel(this, message, QString(), KGuiItem(i18n("&Delete"), "edit-delete")); if (userIntention == KMessageBox::Continue) { KIO::Job *job = KIO::del(url); KIO::JobUiDelegate *ui = static_cast<KIO::JobUiDelegate*>(job->uiDelegate()); ui->setWindow(this); connect(job, SIGNAL(result(KJob*)), SLOT(deleteJobFinished(KJob*))); QApplication::setOverrideCursor(Qt::BusyCursor); } } else //ensure m_focus is set for new mouse position sendFakeMouseEvent(); } else { sectionTwo: const QRect rect(e->x() - 20, e->y() - 20, 40, 40); m_tip.hide(); //user expects this if (!isDir || e->button() == Qt::MidButton) { #if 0 // TODO: PORTME KIconEffect::visualActivate(this, rect); #endif new KRun(url, this, true); //FIXME see above } else if (m_focus->file() != m_tree) { //is left mouse button #if 0 // TODO: PORTME KIconEffect::visualActivate(this, rect); #endif emit activated(url); //activate first, this will cause UI to prepare itself if (m_focus) createFromCache((Directory *)m_focus->file()); } } } }