void Importer::finalizeImport() { KIO::Job* job = KIO::del(d->mTempImportDir, KIO::HideProgressInfo); if (job->ui()) { job->ui()->setWindow(d->mAuthWindow); } importFinished(); }
void SatellitesComponent::updateTLEs() { int i = 0; QProgressDialog progressDlg( i18n( "Update TLEs..." ), i18n( "Abort" ), 0, m_groups.count() ); progressDlg.setWindowModality( Qt::WindowModal ); progressDlg.setValue( 0 ); foreach ( SatelliteGroup *group, m_groups ) { if ( progressDlg.wasCanceled() ) return; if( group->tleUrl().isEmpty() ) continue; progressDlg.setLabelText( i18n( "Update %1 satellites", group->name() ) ); KIO::Job* getJob = KIO::file_copy( group->tleUrl(), group->tleFilename(), -1, KIO::Overwrite | KIO::HideProgressInfo ); if( KIO::NetAccess::synchronousRun( getJob, 0 ) ) { group->readTLE(); group->updateSatellitesPos(); progressDlg.setValue( ++i ); } else { getJob->ui()->showErrorMessage(); } } }
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 importNext() { if (mUrlList.empty()) { q->finalizeImport(); return; } mCurrentUrl = mUrlList.takeFirst(); KUrl dst = mTempImportDir; dst.addPath(mCurrentUrl.fileName()); KIO::Job* job = KIO::copy(mCurrentUrl, dst, KIO::HideProgressInfo); if (job->ui()) { job->ui()->setWindow(mAuthWindow); } QObject::connect(job, SIGNAL(result(KJob*)), q, SLOT(slotCopyDone(KJob*))); QObject::connect(job, SIGNAL(percent(KJob*,ulong)), q, SLOT(slotPercent(KJob*,ulong))); }
void KNewFileMenuPrivate::executeStrategy() { m_tempFileToDelete = m_copyData.tempFileToDelete(); const QString src = m_copyData.sourceFileToCopy(); QString chosenFileName = expandTilde(m_copyData.chosenFileName(), true); if (src.isEmpty()) return; KUrl uSrc(src); if (uSrc.isLocalFile()) { // In case the templates/.source directory contains symlinks, resolve // them to the target files. Fixes bug #149628. KFileItem item(uSrc, QString(), KFileItem::Unknown); if (item.isLink()) uSrc.setPath(item.linkDest()); if (!m_copyData.m_isSymlink) { // If the file is not going to be detected as a desktop file, due to a // known extension (e.g. ".pl"), append ".desktop". #224142. QFile srcFile(uSrc.toLocalFile()); if (srcFile.open(QIODevice::ReadOnly)) { KMimeType::Ptr wantedMime = KMimeType::findByUrl(uSrc); KMimeType::Ptr mime = KMimeType::findByNameAndContent(m_copyData.m_chosenFileName, srcFile.read(1024)); //kDebug() << "mime=" << mime->name() << "wantedMime=" << wantedMime->name(); if (!mime->is(wantedMime->name())) chosenFileName += wantedMime->mainExtension(); } } } // The template is not a desktop file [or it's a URL one] // Copy it. KUrl::List::const_iterator it = m_popupFiles.constBegin(); for (; it != m_popupFiles.constEnd(); ++it) { KUrl dest(*it); dest.addPath(KIO::encodeFileName(chosenFileName)); KUrl::List lstSrc; lstSrc.append(uSrc); KIO::Job* kjob; if (m_copyData.m_isSymlink) { kjob = KIO::symlink(src, dest); // This doesn't work, FileUndoManager registers new links in copyingLinkDone, // which KIO::symlink obviously doesn't emit... Needs code in FileUndoManager. //KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Link, lstSrc, dest, kjob); } else { //kDebug(1203) << "KIO::copyAs(" << uSrc.url() << "," << dest.url() << ")"; KIO::CopyJob * job = KIO::copyAs(uSrc, dest); job->setDefaultPermissions(true); kjob = job; KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Copy, lstSrc, dest, job); } kjob->ui()->setWindow(m_parentWidget); QObject::connect(kjob, SIGNAL(result(KJob*)), q, SLOT(slotResult(KJob*))); } }
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 } }
bool NetAccess::delInternal( const KUrl & url, QWidget* window ) { d->bJobOK = true; // success unless further error occurs KIO::Job * job = KIO::del( url ); job->ui()->setWindow (window); connect( job, SIGNAL( result (KJob *) ), this, SLOT( slotResult (KJob *) ) ); enter_loop(); return d->bJobOK; }
static bool downloadResource (const KUrl& srcUrl, const QString& suggestedName = QString(), QWidget* parent = 0, const KIO::MetaData& metaData = KIO::MetaData()) { const KUrl& destUrl = promptUser(parent, srcUrl, suggestedName); if (!destUrl.isValid()) return false; KIO::Job *job = KIO::file_copy(srcUrl, destUrl); if (!metaData.isEmpty()) job->setMetaData(metaData); job->addMetaData(QL1S("MaxCacheSize"), QL1S("0")); // Don't store in http cache. job->addMetaData(QL1S("cache"), QL1S("cache")); // Use entry from cache if available. job->ui()->setWindow((parent ? parent->window() : 0)); job->ui()->setAutoErrorHandlingEnabled(true); return true; }
static bool downloadResource (const KUrl& srcUrl, const QString& suggestedName = QString(), QWidget* parent = 0, const KIO::MetaData& metaData = KIO::MetaData()) { const QString fileName = suggestedName.isEmpty() ? srcUrl.fileName() : suggestedName; // convert filename to URL using fromPath to avoid trouble with ':' in filenames (#184202) KUrl destUrl = KFileDialog::getSaveFileName(KUrl::fromPath(fileName), QString(), parent); if (!destUrl.isValid()) return false; // Using KIO::copy rather than file_copy, to benefit from "dest already exists" dialogs. KIO::Job *job = KIO::copy(srcUrl, destUrl); if (!metaData.isEmpty()) job->setMetaData(metaData); job->addMetaData(QL1S("MaxCacheSize"), QL1S("0")); // Don't store in http cache. job->addMetaData(QL1S("cache"), QL1S("cache")); // Use entry from cache if available. job->ui()->setWindow((parent ? parent->window() : 0)); job->ui()->setAutoErrorHandlingEnabled(true); return true; }
QString NetAccess::mimetypeInternal( const KUrl & url, QWidget* window ) { d->bJobOK = true; // success unless further error occurs d->m_mimetype = QLatin1String("unknown"); KIO::Job * job = KIO::mimetype( url ); job->ui()->setWindow (window); connect( job, SIGNAL( result (KJob *) ), this, SLOT( slotResult (KJob *) ) ); connect( job, SIGNAL( mimetype (KIO::Job *, const QString &) ), this, SLOT( slotMimetype (KIO::Job *, const QString &) ) ); enter_loop(); return d->m_mimetype; }
void KonqOperations::_del( Operation method, const KUrl::List & _selectedUrls, ConfirmationType confirmation ) { KUrl::List selectedUrls; for (KUrl::List::ConstIterator it = _selectedUrls.begin(); it != _selectedUrls.end(); ++it) if (KProtocolManager::supportsDeleting(*it)) selectedUrls.append(*it); if (selectedUrls.isEmpty()) { delete this; // this one is ok, _del is always called directly return; } if ( confirmation == SKIP_CONFIRMATION || askDeleteConfirmation( selectedUrls, method, confirmation, parentWidget() ) ) { //m_srcUrls = selectedUrls; KIO::Job *job; m_method = method; switch( method ) { case TRASH: { job = KIO::trash( selectedUrls ); KIO::FileUndoManager::self()->recordJob( KIO::FileUndoManager::Trash, selectedUrls, KUrl("trash:/"), job ); break; } case EMPTYTRASH: { // Same as in ktrash --empty QByteArray packedArgs; QDataStream stream( &packedArgs, QIODevice::WriteOnly ); stream << (int)1; job = KIO::special( KUrl("trash:/"), packedArgs ); KNotification::event("Trash: emptied", QString() , QPixmap() , 0l, KNotification::DefaultEvent ); break; } case DEL: job = KIO::del( selectedUrls ); break; default: kWarning() << "Unknown operation: " << method ; delete this; // this one is ok, _del is always called directly return; } job->ui()->setWindow(parentWidget()); connect( job, SIGNAL(result(KJob*)), SLOT(slotResult(KJob*)) ); } else { delete this; // this one is ok, _del is always called directly } }
bool NetAccess::dircopyInternal(const KUrl::List& src, const KUrl& target, QWidget* window, bool move) { d->bJobOK = true; // success unless further error occurs KIO::Job * job = move ? KIO::move( src, target ) : KIO::copy( src, target ); job->ui()->setWindow (window); connect( job, SIGNAL( result (KJob *) ), this, SLOT( slotResult (KJob *) ) ); enter_loop(); return d->bJobOK; }
bool NetAccess::filecopyInternal(const KUrl& src, const KUrl& target, int permissions, KIO::JobFlags flags, QWidget* window, bool move) { d->bJobOK = true; // success unless further error occurs KIO::Scheduler::checkSlaveOnHold(true); KIO::Job * job = move ? KIO::file_move( src, target, permissions, flags ) : KIO::file_copy( src, target, permissions, flags ); job->ui()->setWindow (window); connect( job, SIGNAL( result (KJob *) ), this, SLOT( slotResult (KJob *) ) ); enter_loop(); return d->bJobOK; }
void KNewFileMenuPrivate::executeStrategy() { m_tempFileToDelete = m_strategy.tempFileToDelete(); const QString src = m_strategy.sourceFileToCopy(); QString chosenFileName = expandTilde(m_strategy.chosenFileName(), true); if (src.isEmpty()) return; KUrl uSrc(src); if (uSrc.isLocalFile()) { // In case the templates/.source directory contains symlinks, resolve // them to the target files. Fixes bug #149628. KFileItem item(uSrc, QString(), KFileItem::Unknown); if (item.isLink()) uSrc.setPath(item.linkDest()); } // The template is not a desktop file [or it's a URL one] // Copy it. KUrl::List::const_iterator it = m_popupFiles.constBegin(); for (; it != m_popupFiles.constEnd(); ++it) { KUrl dest(*it); dest.addPath(KIO::encodeFileName(chosenFileName)); KUrl::List lstSrc; lstSrc.append(uSrc); KIO::Job* kjob; if (m_strategy.m_isSymlink) { kjob = KIO::symlink(src, dest); // This doesn't work, FileUndoManager registers new links in copyingLinkDone, // which KIO::symlink obviously doesn't emit... Needs code in FileUndoManager. //KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Link, lstSrc, dest, kjob); } else { //kDebug(1203) << "KIO::copyAs(" << uSrc.url() << "," << dest.url() << ")"; KIO::CopyJob * job = KIO::copyAs(uSrc, dest); job->setDefaultPermissions(true); kjob = job; KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Copy, lstSrc, dest, job); } kjob->ui()->setWindow(m_parentWidget); QObject::connect(kjob, SIGNAL(result(KJob*)), q, SLOT(slotResult(KJob*))); } }
void FoldersPanel::slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value) { if (role == "text") { const KFileItem item = m_model->fileItem(index); const QString newName = value.toString(); if (!newName.isEmpty() && newName != item.text() && newName != QLatin1String(".") && newName != QLatin1String("..")) { const QUrl oldUrl = item.url(); QUrl newUrl = oldUrl.adjusted(QUrl::RemoveFilename); newUrl.setPath(newUrl.path() + KIO::encodeFileName(newName)); KIO::Job* job = KIO::moveAs(oldUrl, newUrl); KJobWidgets::setWindow(job, this); KIO::FileUndoManager::self()->recordJob(KIO::FileUndoManager::Rename, {oldUrl}, newUrl, job); job->ui()->setAutoErrorHandlingEnabled(true); } } }
QString NetAccess::fish_executeInternal(const KUrl & url, const QString &command, QWidget* window) { QString target, remoteTempFileName, resultData; KUrl tempPathUrl; KTemporaryFile tmpFile; tmpFile.open(); if( url.protocol() == "fish" ) { // construct remote temp filename tempPathUrl = url; remoteTempFileName = tmpFile.fileName(); // only need the filename KTempFile adds some KDE specific dirs // that probably does not exist on the remote side int pos = remoteTempFileName.lastIndexOf('/'); remoteTempFileName = "/tmp/fishexec_" + remoteTempFileName.mid(pos + 1); tempPathUrl.setPath( remoteTempFileName ); d->bJobOK = true; // success unless further error occurs QByteArray packedArgs; QDataStream stream( &packedArgs, QIODevice::WriteOnly ); stream << int('X') << tempPathUrl << command; KIO::Job * job = KIO::special( tempPathUrl, packedArgs ); job->ui()->setWindow( window ); connect( job, SIGNAL( result (KJob *) ), this, SLOT( slotResult (KJob *) ) ); enter_loop(); // since the KIO::special does not provide feedback we need to download the result if( NetAccess::download( tempPathUrl, target, window ) ) { QFile resultFile( target ); if (resultFile.open( QIODevice::ReadOnly )) { QTextStream ts( &resultFile ); // default encoding is Locale resultData = ts.readAll(); resultFile.close(); NetAccess::del( tempPathUrl, window ); } } }
void SmugTalker::slotResult(KJob* kjob) { m_job = 0; KIO::Job* job = static_cast<KIO::Job*>(kjob); if (job->error()) { if (m_state == SMUG_LOGIN) { m_sessionID.clear(); m_user.clear(); emit signalBusy(false); emit signalLoginDone(job->error(), job->errorText()); } else if (m_state == SMUG_ADDPHOTO) { emit signalBusy(false); emit signalAddPhotoDone(job->error(), job->errorText()); } else if (m_state == SMUG_GETPHOTO) { emit signalBusy(false); emit signalGetPhotoDone(job->error(), job->errorText(), QByteArray()); } else { emit signalBusy(false); job->ui()->setWindow(m_parent); job->ui()->showErrorMessage(); } return; } switch(m_state) { case(SMUG_LOGIN): parseResponseLogin(m_buffer); break; case(SMUG_LOGOUT): parseResponseLogout(m_buffer); break; case(SMUG_LISTALBUMS): parseResponseListAlbums(m_buffer); break; case(SMUG_LISTPHOTOS): parseResponseListPhotos(m_buffer); break; case(SMUG_LISTALBUMTEMPLATES): parseResponseListAlbumTmpl(m_buffer); break; case(SMUG_LISTCATEGORIES): parseResponseListCategories(m_buffer); break; case(SMUG_LISTSUBCATEGORIES): parseResponseListSubCategories(m_buffer); break; case(SMUG_CREATEALBUM): parseResponseCreateAlbum(m_buffer); break; case(SMUG_ADDPHOTO): parseResponseAddPhoto(m_buffer); break; case(SMUG_GETPHOTO): // all we get is data of the image emit signalBusy(false); emit signalGetPhotoDone(0, QString(), m_buffer); break; } }
void PiwigoTalker::slotResult(KJob* job) { KIO::Job* tempjob = static_cast<KIO::Job*>(job); State state = m_state; // Can change in the treatment itself // so we cache it if (tempjob->error()) { if (state == GE_LOGIN) { emit signalLoginFailed(tempjob->errorString()); kDebug() << tempjob->errorString(); } else if (state == GE_GETVERSION) { kDebug() << tempjob->errorString(); // Version isn't mandatory and errors can be ignored // As login succeeded, albums can be listed listAlbums(); } else if (state == GE_CHECKPHOTOEXIST || state == GE_GETINFO || state == GE_SETINFO || state == GE_ADDPHOTOCHUNK || state == GE_ADDPHOTOSUMMARY || state == GE_OLD_ADDPHOTOCHUNK || state == GE_OLD_ADDTHUMB || state == GE_OLD_ADDHQ || state == GE_OLD_ADDPHOTOSUMMARY) { emit signalAddPhotoFailed(tempjob->errorString()); } else { tempjob->ui()->setWindow(m_parent); tempjob->ui()->showErrorMessage(); } emit signalBusy(false); return; } switch (state) { case(GE_LOGIN): parseResponseLogin(m_talker_buffer); break; case(GE_GETVERSION): parseResponseGetVersion(m_talker_buffer); break; case(GE_LISTALBUMS): parseResponseListAlbums(m_talker_buffer); break; case(GE_CHECKPHOTOEXIST): parseResponseDoesPhotoExist(m_talker_buffer); break; case(GE_GETINFO): parseResponseGetInfo(m_talker_buffer); break; case(GE_SETINFO): parseResponseSetInfo(m_talker_buffer); break; // Support for Web API >= 2.4 case(GE_ADDPHOTOCHUNK): parseResponseAddPhotoChunk(m_talker_buffer); break; case(GE_ADDPHOTOSUMMARY): parseResponseAddPhotoSummary(m_talker_buffer); break; // Support for Web API < 2.4 case(GE_OLD_ADDPHOTOCHUNK): parseResponseOldAddPhoto(m_talker_buffer); break; case(GE_OLD_ADDTHUMB): parseResponseOldAddThumbnail(m_talker_buffer); break; case(GE_OLD_ADDHQ): parseResponseOldAddHQPhoto(m_talker_buffer); break; case(GE_OLD_ADDPHOTOSUMMARY): parseResponseOldAddPhotoSummary(m_talker_buffer); break; } tempjob->kill(); m_job = 0; if (state == GE_GETVERSION && m_loggedIn) { listAlbums(); } emit signalBusy(false); }
void FlickrTalker::slotResult(KJob* kjob) { m_job = 0; emit signalBusy(false); KIO::Job* job = static_cast<KIO::Job*>(kjob); if (job->error()) { if (m_state == FE_ADDPHOTO) { emit signalAddPhotoFailed(job->errorString()); } else { job->ui()->setWindow(m_parent); job->ui()->showErrorMessage(); } return; } switch (m_state) { case (FE_LOGIN): //parseResponseLogin(m_buffer); break; case (FE_LISTPHOTOSETS): parseResponseListPhotoSets(m_buffer); break; case (FE_GETFROB): parseResponseGetFrob(m_buffer); break; case (FE_GETTOKEN): parseResponseGetToken(m_buffer); break; case (FE_CHECKTOKEN): parseResponseCheckToken(m_buffer); break; case (FE_GETAUTHORIZED): //parseResponseGetToken(m_buffer); break; case (FE_LISTPHOTOS): parseResponseListPhotos(m_buffer); break; case (FE_GETPHOTOPROPERTY): parseResponsePhotoProperty(m_buffer); break; case (FE_ADDPHOTO): parseResponseAddPhoto(m_buffer); break; case (FE_ADDPHOTOTOPHOTOSET): parseResponseAddPhotoToPhotoSet(m_buffer); break; case (FE_CREATEPHOTOSET): parseResponseCreatePhotoSet(m_buffer); break; } }
bool KWebPage::handleReply(QNetworkReply* reply, QString* contentType, KIO::MetaData* metaData) { // Reply url... const KUrl replyUrl (reply->url()); // Get suggested file name... const KIO::MetaData& data = reply->attribute(static_cast<QNetworkRequest::Attribute>(KIO::AccessManager::MetaData)).toMap(); const QString suggestedFileName = data.value(QL1S("content-disposition-filename")); if (metaData) { *metaData = data; } // Get the mime-type... QString mimeType; extractMimeType(reply, mimeType); if (contentType) { *contentType = mimeType; } // Let the calling function deal with handling empty or inode/* mimetypes... if (mimeType.isEmpty() || mimeType.startsWith(QL1S("inode/"), Qt::CaseInsensitive)) { return false; } // Convert executable text files to plain text... if (KParts::BrowserRun::isTextExecutable(mimeType)) mimeType = QL1S("text/plain"); //kDebug(800) << "Content-disposition:" << suggestedFileName; //kDebug(800) << "Got unsupported content of type:" << mimeType << "URL:" << replyUrl; //kDebug(800) << "Error code:" << reply->error() << reply->errorString(); if (isReplyStatusOk(reply)) { while (true) { KParts::BrowserOpenOrSaveQuestion::Result result; KParts::BrowserOpenOrSaveQuestion dlg(d->windowWidget(), replyUrl, mimeType); dlg.setSuggestedFileName(suggestedFileName); dlg.setFeatures(KParts::BrowserOpenOrSaveQuestion::ServiceSelection); result = dlg.askOpenOrSave(); switch (result) { case KParts::BrowserOpenOrSaveQuestion::Open: // Handle Post operations that return content... if (reply->operation() == QNetworkAccessManager::PostOperation) { d->mimeType = mimeType; QFileInfo finfo (suggestedFileName.isEmpty() ? replyUrl.fileName() : suggestedFileName); KTemporaryFile tempFile; tempFile.setSuffix(QL1C('.') + finfo.suffix()); tempFile.setAutoRemove(false); tempFile.open(); KUrl destUrl; destUrl.setPath(tempFile.fileName()); KIO::Job *job = KIO::file_copy(replyUrl, destUrl, 0600, KIO::Overwrite); job->ui()->setWindow(d->windowWidget()); job->ui()->setAutoErrorHandlingEnabled(true); connect(job, SIGNAL(result(KJob*)), this, SLOT(_k_copyResultToTempFile(KJob*))); return true; } // Ask before running any executables... if (KParts::BrowserRun::allowExecution(mimeType, replyUrl)) { KService::Ptr offer = dlg.selectedService(); // HACK: The check below is necessary to break an infinite // recursion that occurs whenever this function is called as a result // of receiving content that can be rendered by the app using this engine. // For example a text/html header that containing a content-disposition // header is received by the app using this class. if (isMimeTypeAssociatedWithSelf(offer)) { reloadRequestWithoutDisposition(reply); } else { KUrl::List list; list.append(replyUrl); bool success = false; // kDebug(800) << "Suggested file name:" << suggestedFileName; if (offer) { success = KRun::run(*offer, list, d->windowWidget() , false, suggestedFileName); } else { success = KRun::displayOpenWithDialog(list, d->windowWidget(), false, suggestedFileName); if (!success) break; } // For non KIO apps and cancelled Open With dialog, remove slave on hold. if (!success || (offer && !offer->categories().contains(QL1S("KDE")))) { KIO::SimpleJob::removeOnHold(); // Remove any slave-on-hold... } } return true; } // TODO: Instead of silently failing when allowExecution fails, notify // the user why the requested action cannot be fulfilled... return false; case KParts::BrowserOpenOrSaveQuestion::Save: // Do not download local files... if (!replyUrl.isLocalFile()) { QString downloadCmd (reply->property("DownloadManagerExe").toString()); if (!downloadCmd.isEmpty()) { downloadCmd += QLatin1Char(' '); downloadCmd += KShell::quoteArg(replyUrl.url()); if (!suggestedFileName.isEmpty()) { downloadCmd += QLatin1Char(' '); downloadCmd += KShell::quoteArg(suggestedFileName); } // kDebug(800) << "download command:" << downloadCmd; if (KRun::runCommand(downloadCmd, view())) return true; } if (!downloadResource(replyUrl, suggestedFileName, d->windowWidget())) break; } return true; case KParts::BrowserOpenOrSaveQuestion::Cancel: default: KIO::SimpleJob::removeOnHold(); // Remove any slave-on-hold... return true; } } } else {
void WebPage::handleUnsupportedContent(QNetworkReply *reply) { Q_ASSERT(reply); // Put the job on hold... #if KDE_IS_VERSION( 4, 5, 96) kDebug() << "PUT REPLY ON HOLD..."; KIO::Integration::AccessManager::putReplyOnHold(reply); #else reply->abort(); #endif // This is probably needed just in ONE stupid case.. if (_protHandler.postHandling(reply->request(), mainFrame())) { kDebug() << "POST HANDLING the unsupported..."; return; } if (reply->error() != QNetworkReply::NoError) return; // get reply url... KUrl replyUrl = reply->url(); bool isLocal = replyUrl.isLocalFile(); if(isLocal && KProtocolInfo::isKnownProtocol(replyUrl)) { kDebug() << "WARNING: launching a new app..."; new KRun(replyUrl, rApp->mainWindow()); // No need to delete KRun, it autodeletes itself return; } // Get suggested file name... extractSuggestedFileName(reply, _suggestedFileName); // Get mimeType... extractMimeType(reply, _mimeType); // Convert executable text files to plain text... if (KParts::BrowserRun::isTextExecutable(_mimeType)) _mimeType = QL1S("text/plain"); kDebug() << "Detected MimeType = " << _mimeType; kDebug() << "Suggested File Name = " << _suggestedFileName; // ------------------------------------------------ KService::Ptr appService = KMimeTypeTrader::self()->preferredService(_mimeType); if (appService.isNull()) // no service can handle this. We can just download it.. { kDebug() << "no service can handle this. We can just download it.."; isLocal ? KMessageBox::sorry(view(), i18n("No service can handle this file.")) : downloadReply(reply, _suggestedFileName); return; } if (!isLocal) { KParts::BrowserOpenOrSaveQuestion dlg(rApp->mainWindow(), replyUrl, _mimeType); if (!_suggestedFileName.isEmpty()) dlg.setSuggestedFileName(_suggestedFileName); switch (dlg.askEmbedOrSave()) { case KParts::BrowserOpenOrSaveQuestion::Save: kDebug() << "user choice: no services, just download!"; downloadReply(reply, _suggestedFileName); return; case KParts::BrowserOpenOrSaveQuestion::Cancel: return; default: // non extant case break; } } // Handle Post operations that return content... if (reply->operation() == QNetworkAccessManager::PostOperation) { kDebug() << "POST OPERATION: downloading file..."; QFileInfo finfo(_suggestedFileName.isEmpty() ? _loadingUrl.fileName() : _suggestedFileName); KTemporaryFile tempFile; tempFile.setSuffix(QL1C('.') + finfo.suffix()); tempFile.setAutoRemove(false); tempFile.open(); KUrl destUrl; destUrl.setPath(tempFile.fileName()); kDebug() << "First save content to" << destUrl; KIO::Job *job = KIO::file_copy(_loadingUrl, destUrl, 0600, KIO::Overwrite); job->ui()->setWindow(rApp->mainWindow()); connect(job, SIGNAL(result(KJob *)), this, SLOT(copyToTempFileResult(KJob*))); return; }
void FbTalker::slotResult(KJob* kjob) { m_job = 0; KIO::Job* job = static_cast<KIO::Job*>(kjob); if (job->error()) { if (m_loginInProgress) { authenticationDone(job->error(), job->errorText()); } else if (m_state == FB_ADDPHOTO) { emit signalBusy(false); emit signalAddPhotoDone(job->error(), job->errorText()); } else if (m_state == FB_GETPHOTO) { emit signalBusy(false); emit signalGetPhotoDone(job->error(), job->errorText(), QByteArray()); } else { emit signalBusy(false); job->ui()->setWindow(m_parent); job->ui()->showErrorMessage(); } return; } switch(m_state) { case(FB_EXCHANGESESSION): parseExchangeSession(m_buffer); break; case(FB_GETLOGGEDINUSER): parseResponseGetLoggedInUser(m_buffer); break; case(FB_GETUSERINFO): case(FB_GETUSERINFO_FRIENDS): parseResponseGetUserInfo(m_buffer); break; case(FB_GETUPLOADPERM): parseResponseGetUploadPermission(m_buffer); break; case(FB_LOGOUT): parseResponseLogout(m_buffer); break; case(FB_LISTFRIENDS): parseResponseListFriends(m_buffer); break; case(FB_LISTALBUMS): parseResponseListAlbums(m_buffer); break; case(FB_LISTPHOTOS): parseResponseListPhotos(m_buffer); break; case(FB_CREATEALBUM): parseResponseCreateAlbum(m_buffer); break; case(FB_ADDPHOTO): parseResponseAddPhoto(m_buffer); break; case(FB_GETPHOTO): // all we get is data of the image emit signalBusy(false); emit signalGetPhotoDone(0, QString(), m_buffer); break; } }
void GalleryTalker::slotResult(KJob *job) { KIO::Job *tempjob = static_cast<KIO::Job*>(job); if (tempjob->error()) { if (m_state == GE_LOGIN) { emit signalLoginFailed(tempjob->errorString()); } else { if (m_state == GE_ADDPHOTO) { emit signalAddPhotoFailed(tempjob->errorString()); } else { tempjob->ui()->setWindow(m_parent); tempjob->ui()->showErrorMessage(); } } emit signalBusy(false); return; } switch (m_state) { case(GE_LOGIN): parseResponseLogin(m_talker_buffer); break; case(GE_LISTALBUMS): parseResponseListAlbums(m_talker_buffer); break; case(GE_LISTPHOTOS): parseResponseListPhotos(m_talker_buffer); break; case(GE_CREATEALBUM): parseResponseCreateAlbum(m_talker_buffer); break; case(GE_ADDPHOTO): parseResponseAddPhoto(m_talker_buffer); break; } if (m_state == GE_LOGIN && m_loggedIn) { const QStringList cookielist = (tempjob->queryMetaData("setcookies")).split('\n'); m_cookie = "Cookie:"; if(!cookielist.isEmpty()) { QRegExp rx("^GALLERYSID=.+"); QString app; foreach(const QString &str, cookielist) { if(str.contains("Set-Cookie: ")) { const QStringList cl = str.split(' '); int n = cl.lastIndexOf(rx); if(n!= -1) { app = cl.at(n); } } } m_cookie += app; } tempjob->kill(); listAlbums(); }