void KonqMultiRestoreJob::slotStart() { if (m_urlsIterator == m_urls.begin()) // first time: emit total setTotalAmount(KJob::Files, m_urls.count()); if (m_urlsIterator != m_urls.end()) { const QUrl &url = *m_urlsIterator; QUrl new_url = url; if (new_url.scheme() == QStringLiteral("system") && new_url.path().startsWith(QLatin1String("/trash"))) { QString path = new_url.path(); path.remove(0, 6); new_url.setScheme(QStringLiteral("trash")); new_url.setPath(path); } Q_ASSERT(new_url.scheme() == QStringLiteral("trash")); QByteArray packedArgs; QDataStream stream(&packedArgs, QIODevice::WriteOnly); stream << (int)3 << new_url; KIO::Job* job = KIO::special(new_url, packedArgs, KIO::HideProgressInfo); addSubjob(job); setProcessedAmount(KJob::Files, processedAmount(KJob::Files) + 1); } else { // done! emitResult(); } }
void KSecretChangeAuthenticationCollectionJob::start() { CollectionUnlockInfo unlockInfo( peer() ); UnlockCollectionJob *unlockJob = collection()->createUnlockJob( unlockInfo ); connect( unlockJob, SIGNAL(finished(KJob*)), this, SLOT(slotUnlockResult(KJob*)) ); if (addSubjob( unlockJob )) { unlockJob->start(); } else { qDebug() << "Failed to add unlock subjob"; setError(BackendErrorOther, i18n("Cannot start secret collection unlocking")); } }
void KSecretCreateCollectionJob::newPasswordJobResult(KJob *job) { AbstractNewPasswordJob *npj = qobject_cast<AbstractNewPasswordJob*>(job); Q_ASSERT(npj); if(npj->cancelled()) { setCollection(0); setError(BackendErrorOther, i18n("Creating the secret collection was cancelled by the user.")); dismiss(); // this will also emitResult() return; } // TODO: collection needs authentication methods, filenames, ... QString errorMessage; QString collId = createId(); manager()->creatingCollection( collId ); KSecretCollection *coll = KSecretCollection::create(collId, npj->password(), manager(), errorMessage); if(!coll) { setCollection(0); setError(BackendErrorOther, errorMessage); dismiss(); // this will also emitResult() return; } coll->setLabel(label()); // NOTE: coll has to be added to m_collections before serializing it for the // first time, so when slotDirectoryChanged is called, the collection // is already known. m_manager->addCollection(coll); if(locked()) { coll->lock(); } setCollection(coll); // not yet time for emitResult(); // let the ACL dialog to pop before AbstractUiManager *uiManager = BackendMaster::instance()->uiManager(); AbstractAskAclPrefsJob *aclSubjob = uiManager->createAskAclPrefsJob(createCollectionInfo()); if ( addSubjob( aclSubjob ) ) { connect(aclSubjob, SIGNAL(result(KJob*)), SLOT(askAclPrefsJobResult(KJob*))); aclSubjob->start(); } else { qDebug() << "Cannot add aclSubjob"; setErrorText( i18n("Cannot launch ACL preferences job") ); emitResult(); } }
void KSecretCreateCollectionJob::start() { // start a job for getting a new password for the collection from the user. AbstractUiManager *uiManager = BackendMaster::instance()->uiManager(); AbstractNewPasswordJob *subJob = uiManager->createNewPasswordJob(label()); if ( addSubjob( subJob ) ) { connect(subJob, SIGNAL(result(KJob*)), SLOT(newPasswordJobResult(KJob*))); subJob->start(); } else { qDebug() << "Cannot start password subJob"; setErrorText( i18n("Cannot change password due to an internal error.") ); emitResult(); } }
void BatchExtract::addExtraction(const QUrl& url) { QString destination = destinationFolder(); auto job = Kerfuffle::Archive::batchExtract(url.toLocalFile(), destination, autoSubfolder(), preservePaths()); qCDebug(ARK) << QString(QStringLiteral("Registering job from archive %1, to %2, preservePaths %3")).arg(url.toLocalFile(), destination, QString::number(preservePaths())); addSubjob(job); m_fileNames[job] = qMakePair(url.toLocalFile(), destination); connect(job, SIGNAL(percent(KJob*,ulong)), this, SLOT(forwardProgress(KJob*,ulong))); connect(job, &Kerfuffle::BatchExtractJob::userQuery, this, &BatchExtract::slotUserQuery); }
void KSecretUnlockCollectionJob::askPasswordJobResult(KJob *job) { AbstractAskPasswordJob *apj = qobject_cast<AbstractAskPasswordJob*>(job); Q_ASSERT(apj); if(apj->cancelled()) { setResult(false); setError(BackendErrorOther, i18n("Unlocking the secret collection was canceled by the user.")); emitResult(); return; } KSecretCollection *ksecretColl = dynamic_cast< KSecretCollection* >(collection()); BackendReturn<bool> rc = ksecretColl->tryUnlockPassword(apj->password()); if(rc.isError()) { setResult(false); setError(rc.error(), rc.errorMessage()); emitResult(); } else if(!rc.value()) { // try again the password createAskPasswordJob(); } else { m_passwordAsked = true; m_collectionPerm = collection()->applicationPermission( unlockInfo().m_peer.exePath() ); if ( m_collectionPerm == PermissionUndefined ) { // ask for the ACL preference if the application is unknown by this collection AbstractUiManager *uiManager = BackendMaster::instance()->uiManager(); AbstractAskAclPrefsJob* askAclPrefsJob = uiManager->createAskAclPrefsJob(unlockInfo()); connect(askAclPrefsJob, SIGNAL(result(KJob*)), SLOT(askAclPrefsJobResult(KJob*))); if ( addSubjob( askAclPrefsJob ) ) { askAclPrefsJob->start(); } else { setResult(false); emitResult(); } } else { setResult(true); emitResult(); } } }
ApplyViewPropsJob::ApplyViewPropsJob(const QUrl& dir, const ViewProperties& viewProps) : KIO::Job(), m_viewProps(0), m_progress(0), m_dir(dir) { m_viewProps = new ViewProperties(dir); m_viewProps->setViewMode(viewProps.viewMode()); m_viewProps->setPreviewsShown(viewProps.previewsShown()); m_viewProps->setHiddenFilesShown(viewProps.hiddenFilesShown()); m_viewProps->setSortRole(viewProps.sortRole()); m_viewProps->setSortOrder(viewProps.sortOrder()); KIO::ListJob* listJob = KIO::listRecursive(dir, KIO::HideProgressInfo); connect(listJob, &KIO::ListJob::entries, this, &ApplyViewPropsJob::slotEntries); addSubjob(listJob); }
void KSecretUnlockCollectionJob::createAskPasswordJob() { if ( !m_passwordAsked ) { AbstractUiManager *uiManager = BackendMaster::instance()->uiManager(); // start a job for getting the password for the collection from the user. AbstractAskPasswordJob *subJob = uiManager->createAskPasswordJob(collection()->label().value(), !m_firstTry); if ( addSubjob( subJob ) ) { connect(subJob, SIGNAL(result(KJob*)), SLOT(askPasswordJobResult(KJob*))); // TODO: handle severaly retries subJob->start(); m_firstTry = false; } else { qDebug() << "Cannot add subJob"; setErrorText(i18n("Cannot launch asking password job")); emitResult(); } } }
void CreateCollectionMasterJob::start() { if(m_master->managers().count() == 0) { setError(BackendErrorOther, i18n("No backend to create the collection was found.")); emitResult(); } else if(m_master->managers().count() == 1) { Q_ASSERT(!m_subJob); m_subJob = m_master->managers().first()->createCreateCollectionJob(m_createCollectionInfo); connect(m_subJob, SIGNAL(result(KJob*)), SLOT(createCollectionJobFinished(KJob*))); if (addSubjob(m_subJob)) { m_subJob->start(); } else { setError(BackendErrorOther, i18n("Cannot start subjob.")); emitResult(); } } else { setError(BackendErrorOther, i18n("Not implemented.")); emitResult(); } }