QString copyfile(const QString &filename) { kdDebug(500) << "Copying file " << filename << endl; QString result; QFile f(filename); if(f.open(IO_ReadOnly)) { KTempFile temp; temp.setAutoDelete(false); QFile *tf = temp.file(); if(tf) { char buffer[0xFFFF]; int b = 0; while((b = f.readBlock(buffer, 0xFFFF)) > 0) { if(tf->writeBlock(buffer, b) != b) break; } tf->close(); if(b > 0) temp.setAutoDelete(true); else { kdDebug(500) << "File copied to " << temp.name() << endl; result = temp.name(); } } else temp.setAutoDelete(true); f.close(); } return result; }
void KJumpingCube::saveGame(bool saveAs) { if(saveAs || gameURL.isEmpty()) { int result=0; KURL url; do { url = KFileDialog::getSaveURL(gameURL.url(),"*.kjc",this,0); if(url.isEmpty()) return; // check filename QRegExp pattern("*.kjc",true,true); if(!pattern.exactMatch(url.filename())) { url.setFileName( url.filename()+".kjc" ); } if(KIO::NetAccess::exists(url,false,this)) { QString mes=i18n("The file %1 exists.\n" "Do you want to overwrite it?").arg(url.url()); result = KMessageBox::warningContinueCancel(this, mes, QString::null, i18n("Overwrite")); if(result==KMessageBox::Cancel) return; } } while(result==KMessageBox::No); gameURL=url; } KTempFile tempFile; tempFile.setAutoDelete(true); KSimpleConfig config(tempFile.name()); config.setGroup("KJumpingCube"); config.writeEntry("Version",KJC_VERSION); config.setGroup("Game"); view->saveGame(&config); config.sync(); if(KIO::NetAccess::upload( tempFile.name(),gameURL,this )) { QString s=i18n("game saved as %1"); s=s.arg(gameURL.url()); statusBar()->message(s,MESSAGE_TIME); } else { KMessageBox::sorry(this,i18n("There was an error in saving file\n%1").arg(gameURL.url())); } }
void RulesDialog::slotUser2() { KURL kurl = KFileDialog::getSaveURL(0, i18n("*.sh|Shell Scripts (*.sh)"), this); if (kurl.path() == "") return; KTempFile temp; QString fileName = kurl.path(); if (fileName == "") return; if (!kurl.isLocalFile()) { fileName = temp.name(); } QFile file(fileName); file.open(IO_WriteOnly); QTextStream stream(&file); stream << mRules->text(); file.close(); if (!kurl.isLocalFile()) { if (!KIO::NetAccess::upload(fileName, kurl, this)) KMessageBox::error(this, i18n("Failed to upload file.")); } temp.unlink(); }
bool GMXXXPort::exportContacts( const KABC::AddresseeList &list, const QString& ) { KURL url = KFileDialog::getSaveURL( ":xxport_gmx", GMX_FILESELECTION_STRING ); if ( url.isEmpty() ) return true; if ( !url.isLocalFile() ) { KTempFile tmpFile; if ( tmpFile.status() != 0 ) { QString txt = i18n( "<qt>Unable to open file <b>%1</b>.%2.</qt>" ); KMessageBox::error( parentWidget(), txt.arg( url.url() ) .arg( strerror( tmpFile.status() ) ) ); return false; } doExport( tmpFile.file(), list ); tmpFile.close(); return KIO::NetAccess::upload( tmpFile.name(), url, parentWidget() ); } else { QString filename = url.path(); QFile file( filename ); if ( !file.open( IO_WriteOnly ) ) { QString txt = i18n( "<qt>Unable to open file <b>%1</b>.</qt>" ); KMessageBox::error( parentWidget(), txt.arg( filename ) ); return false; } doExport( &file, list ); file.close(); return true; } }
void BaseTreeView::slotCreateFile() { bool ok; QString fileName = KInputDialog::getText(i18n("Create New File"), i18n("File name:"), "", &ok, this); if (ok) { KURL url = currentURL(); if (currentKFileTreeViewItem()->isDir()) url.setPath(url.path() + "/" + fileName); else url.setPath(url.directory() + "/" + fileName); if (QExtFileInfo::exists(url, false, this)) { KMessageBox::error(this, i18n("<qt>Cannot create file, because a file named <b>%1</b> already exists.</qt>").arg(fileName), i18n("Error Creating File")); return; } KTempFile *tempFile = new KTempFile(tmpDir); tempFile->setAutoDelete(true); tempFile->close(); if (QuantaNetAccess::copy(KURL::fromPathOrURL(tempFile->name()), url, this)) { emit openFile(url); } delete tempFile; } }
void K3bIsoImager::writePathSpecForFile( K3bFileItem* item, QTextStream& stream ) { stream << escapeGraftPoint( item->writtenPath() ) << "="; if( m_doc->bootImages().containsRef( dynamic_cast<K3bBootItem*>(item) ) ) { // boot-image-backup-hack // create temp file KTempFile temp; QString tempPath = temp.name(); temp.unlink(); if( !KIO::NetAccess::copy( KURL(item->localPath()), KURL::fromPathOrURL(tempPath) ) ) { emit infoMessage( i18n("Failed to backup boot image file %1").arg(item->localPath()), ERROR ); return; } static_cast<K3bBootItem*>(item)->setTempPath( tempPath ); m_tempFiles.append(tempPath); stream << escapeGraftPoint( tempPath ) << "\n"; } else if( item->isSymLink() && d->usedLinkHandling == Private::FOLLOW ) stream << escapeGraftPoint( K3b::resolveLink( item->localPath() ) ) << "\n"; else stream << escapeGraftPoint( item->localPath() ) << "\n"; }
/****************************************************************************** * Load the calendar file. */ bool ADCalendar::loadFile(bool reset) { if(reset) clearEventsHandled(); if(!mTempFileName.isNull()) { // Don't try to load the file if already downloading it kdError(5900) << "ADCalendar::loadFile(): already downloading another file\n"; return false; } mLoaded = false; KURL url(mUrlString); if(url.isLocalFile()) { // It's a local file loadLocalFile(url.path()); emit loaded(this, mLoaded); } else { // It's a remote file. Download to a temporary file before loading it KTempFile tempFile; mTempFileName = tempFile.name(); KURL dest; dest.setPath(mTempFileName); KIO::FileCopyJob *job = KIO::file_copy(url, dest, -1, true); connect(job, SIGNAL(result(KIO::Job *)), SLOT(slotDownloadJobResult(KIO::Job *))); } return true; }
void KMoneyThingMainWidget::slotSave() { KTempFile temp; QString fileName = mCurrentFile->kurl().path(); if (fileName == "") { slotSaveAs(); return; } if (!mCurrentFile->kurl().isLocalFile()) { fileName = temp.name(); } emit(setStatus(i18n("Saving file..."))); QByteArray dump = qCompress(mCurrentFile->dump()); QFile file(fileName); file.open(IO_WriteOnly); QDataStream stream(&file); stream << (QString) "KMoneyThingFile" << dump; file.close(); if (!mCurrentFile->kurl().isLocalFile()) { emit(setStatus(i18n("Uploading file..."))); if (!KIO::NetAccess::upload(fileName, mCurrentFile->kurl(), this)) KMessageBox::error(this, i18n("Failed to upload file.")); } temp.unlink(); emit(setStatus(i18n("Ready."))); }
void KPrWebPresentation::createMainPage( KProgress *progressBar ) { QTextCodec *codec = KGlobal::charsets()->codecForName( m_encoding ); KTempFile tmp; QString dest = QString( "%1/index.html" ).arg( path ); QFile file( tmp.name() ); file.open( IO_WriteOnly ); QTextStream streamOut( &file ); streamOut.setCodec( codec ); writeStartOfHeader( streamOut, codec, i18n("Table of Contents"), QString() ); streamOut << "</head>\n"; streamOut << "<body bgcolor=\"" << backColor.name() << "\" text=\"" << textColor.name() << "\">\n"; streamOut << "<h1 align=\"center\"><font color=\"" << titleColor.name() << "\">" << title << "</font></h1>"; streamOut << "<p align=\"center\"><a href=\"html/slide_1.html\">"; streamOut << i18n("Click here to start the Slideshow"); streamOut << "</a></p>\n"; streamOut << "<p><b>" << i18n("Table of Contents") << "</b></p>\n"; // create list of slides (with proper link) streamOut << "<ol>\n"; for ( unsigned int i = 0; i < slideInfos.count(); i++ ) streamOut << " <li><a href=\"html/slide_" << i+1 << ".html\">" << slideInfos[ i ].slideTitle << "</a></li>\n"; streamOut << "</ol>\n"; // footer: author name, e-mail QString htmlAuthor = email.isEmpty() ? escapeHtmlText( codec, author ) : QString("<a href=\"mailto:%1\">%2</a>").arg( escapeHtmlText( codec, email )).arg( escapeHtmlText( codec, author )); streamOut << EscapeEncodingOnly ( codec, i18n( "Created on %1 by <i>%2</i> with <a href=\"http://www.koffice.org/kpresenter\">KPresenter</a>" ) .arg( KGlobal::locale()->formatDate ( QDate::currentDate() ) ).arg( htmlAuthor ) ); streamOut << "</body>\n</html>\n"; file.close(); KIO::NetAccess::file_move( tmp.name(), dest, -1, true /*overwrite*/); progressBar->setProgress( progressBar->totalSteps() ); kapp->processEvents(); }
void KgpgApp::slotFileSave() { TQString filn=Docname.path(); if (filn.isEmpty()) { slotFileSaveAs(); return; } TQTextCodec*cod=TQTextCodec::codecForName (textEncoding.ascii()); // slotStatusMsg(i18n("Saving file...")); if (!checkEncoding(cod)) { KMessageBox::sorry(this,i18n("The document could not been saved, as the selected encoding cannot encode every unicode character in it.")); return; } KTempFile tmpfile; if (Docname.isLocalFile()) { TQFile f(filn); if ( !f.open( IO_WriteOnly ) ) { KMessageBox::sorry(this,i18n("The document could not be saved, please check your permissions and disk space.")); return; } TQTextStream t( &f ); t.setCodec(cod); //t.setEncoding( TQTextStream::Latin1 ); t << view->editor->text();//.utf8(); f.close(); } else { /*FIXME use following code: TQFile f( fName ); 00983 if ( !f.open( IO_ReadOnly ) ) 00984 return; 00985 TQFileInfo info ( f ); 00986 smModificationTime = new TQTime( info.lastModified().time() ); 00987 TQTextStream t(&f); 00988 t.setEncoding( TQTextStream::Latin1 ); 00989 TQString s = t.readLine(); 00990 f.close(); */ TQTextStream *stream = tmpfile.textStream(); stream->setCodec(cod); *stream << view->editor->text();//.utf8(); tmpfile.close(); if(!TDEIO::NetAccess::upload(tmpfile.name(), Docname,this)) { KMessageBox::sorry(this,i18n("The document could not be saved, please check your permissions and disk space.")); tmpfile.unlink(); return; } tmpfile.unlink(); } fileSave->setEnabled(false); setCaption(Docname.fileName(),false); }
// The finaly step: write _data to tempfile and move it to neW_url static KIO::CopyJob *pasteDataAsyncTo(const KURL &new_url, const QByteArray &_data) { KTempFile tempFile; tempFile.dataStream()->writeRawBytes(_data.data(), _data.size()); tempFile.close(); KURL orig_url; orig_url.setPath(tempFile.name()); return KIO::move(orig_url, new_url); }
void KOrganizerPlugin::processDropEvent( QDropEvent *event ) { QString text; KABC::VCardConverter converter; if ( KVCardDrag::canDecode( event ) && KVCardDrag::decode( event, text ) ) { KABC::Addressee::List contacts = converter.parseVCards( text ); KABC::Addressee::List::Iterator it; QStringList attendees; for ( it = contacts.begin(); it != contacts.end(); ++it ) { QString email = (*it).fullEmail(); if ( email.isEmpty() ) attendees.append( (*it).realName() + "<>" ); else attendees.append( email ); } interface()->openEventEditor( i18n( "Meeting" ), QString::null, QString::null, attendees ); return; } if ( QTextDrag::decode( event, text ) ) { kdDebug(5602) << "DROP:" << text << endl; interface()->openEventEditor( text ); return; } KPIM::MailList mails; if ( KPIM::MailListDrag::decode( event, mails ) ) { if ( mails.count() != 1 ) { KMessageBox::sorry( core(), i18n("Drops of multiple mails are not supported." ) ); } else { KPIM::MailSummary mail = mails.first(); QString txt = i18n("From: %1\nTo: %2\nSubject: %3").arg( mail.from() ) .arg( mail.to() ).arg( mail.subject() ); KTempFile tf; tf.setAutoDelete( true ); QString uri = QString::fromLatin1("kmail:") + QString::number( mail.serialNumber() ); tf.file()->writeBlock( event->encodedData( "message/rfc822" ) ); tf.close(); interface()->openEventEditor( i18n("Mail: %1").arg( mail.subject() ), txt, uri, tf.name(), QStringList(), "message/rfc822" ); } return; } KMessageBox::sorry( core(), i18n("Cannot handle drop events of type '%1'.") .arg( event->format() ) ); }
void SVNHandler::processDiff( QString output ) { output.remove( QRegExp( "\\[ .* \\]$" )); output.remove( QRegExp( "^" + i18n("[ Starting command ]" ).replace("[","\\[").replace("]","\\]"))); KTempFile tmpFile; *(tmpFile.textStream()) << output; tmpFile.close(); QString error; if ( KApplication::startServiceByName( "Kompare", tmpFile.name(), &error ) ) KMessageBox::error( 0, error ); }
bool VCardXXPort::doExport( const KURL &url, const QString &data ) { KTempFile tmpFile; tmpFile.setAutoDelete( true ); QTextStream stream( tmpFile.file() ); stream.setEncoding( QTextStream::UnicodeUTF8 ); stream << data; tmpFile.close(); return KIO::NetAccess::upload( tmpFile.name(), url, parentWidget() ); }
void KPrWebPresentation::createSlidesPictures( KProgress *progressBar ) { if ( slideInfos.isEmpty() ) return; QPixmap pix( 10, 10 ); QString filename; int p; for ( unsigned int i = 0; i < slideInfos.count(); i++ ) { int pgNum = slideInfos[i].pageNumber; view->getCanvas()->drawPageInPix( pix, pgNum, zoom, true /*force real variable value*/ ); filename = QString( "%1/pics/slide_%2.png" ).arg( path ).arg( i + 1 ); KTempFile tmp; pix.save( tmp.name(), "PNG" ); KIO::NetAccess::file_move( tmp.name(), filename, -1, true /*overwrite*/); p = progressBar->progress(); progressBar->setProgress( ++p ); kapp->processEvents(); } }
void KPrMSPresentation::createSlidesPictures( KProgress *progressBar ) { if ( slideInfos.isEmpty() ) return; QString filename; int p; for ( unsigned int i = 0; i < slideInfos.count(); i++ ) { int pgNum = slideInfos[i].pageNumber; filename.sprintf("/SPJP%04i.JPG", i+3); KTempFile tmp; view->getCanvas()->exportPage( pgNum, 1023, 767, tmp.name(), "JPEG" ); KIO::NetAccess::file_move( tmp.name(), ( path + slidePath + filename ), -1, true /*overwrite*/); p = progressBar->progress(); progressBar->setProgress( ++p ); kapp->processEvents(); } }
KIO_EXPORT void KIO::pasteData(const KURL &u, const QByteArray &_data) { KURL new_url = getNewFileName(u, QString::null); // We could use KIO::put here, but that would require a class // for the slotData call. With NetAccess, we can do a synchronous call. if(new_url.isEmpty()) return; KTempFile tempFile; tempFile.setAutoDelete(true); tempFile.dataStream()->writeRawBytes(_data.data(), _data.size()); tempFile.close(); (void)KIO::NetAccess::upload(tempFile.name(), new_url, 0); }
bool KSnapshot::save( const KURL& url ) { if ( KIO::NetAccess::exists( url, false, this ) ) { const QString title = i18n( "File Exists" ); const QString text = i18n( "<qt>Do you really want to overwrite <b>%1</b>?</qt>" ).arg(url.prettyURL()); if (KMessageBox::Continue != KMessageBox::warningContinueCancel( this, text, title, i18n("Overwrite") ) ) { return false; } } QString type( KImageIO::type(url.path()) ); if ( type.isNull() ) type = "PNG"; bool ok = false; if ( url.isLocalFile() ) { KSaveFile saveFile( url.path() ); if ( saveFile.status() == 0 ) { if ( snapshot.save( saveFile.file(), type.latin1() ) ) ok = saveFile.close(); } } else { KTempFile tmpFile; tmpFile.setAutoDelete( true ); if ( tmpFile.status() == 0 ) { if ( snapshot.save( tmpFile.file(), type.latin1() ) ) { if ( tmpFile.close() ) ok = KIO::NetAccess::upload( tmpFile.name(), url, this ); } } } QApplication::restoreOverrideCursor(); if ( !ok ) { kdWarning() << "KSnapshot was unable to save the snapshot" << endl; QString caption = i18n("Unable to save image"); QString text = i18n("KSnapshot was unable to save the image to\n%1.") .arg(url.prettyURL()); KMessageBox::error(this, text, caption); } return ok; }
TarArch::TarArch( ArkWidget *_gui, const QString & _filename, const QString & _openAsMimeType) : Arch( _gui, _filename), m_tmpDir( 0 ), createTmpInProgress(false), updateInProgress(false), deleteInProgress(false), fd(0), m_pTmpProc( 0 ), m_pTmpProc2( 0 ), failed( false ), m_dotslash( false ), m_listingThread( 0 ) { m_filesToAdd = m_filesToRemove = QStringList(); m_archiver_program = m_unarchiver_program = ArkSettings::tarExe(); verifyCompressUtilityIsAvailable( m_archiver_program ); verifyUncompressUtilityIsAvailable( m_unarchiver_program ); m_fileMimeType = _openAsMimeType; if ( m_fileMimeType.isNull() ) m_fileMimeType = KMimeType::findByPath( _filename )->name(); kdDebug(1601) << "TarArch::TarArch: mimetype is " << m_fileMimeType << endl; if ( m_fileMimeType == "application/x-tbz2" ) { // ark treats .tar.bz2 as x-tbz, instead of duplicating the mimetype // let's just alias it to the one we already handle. m_fileMimeType = "application/x-tbz"; } if ( m_fileMimeType == "application/x-tar" ) { compressed = false; } else { compressed = true; m_tmpDir = new KTempDir( _gui->tmpDir() + QString::fromLatin1( "temp_tar" ) ); m_tmpDir->setAutoDelete( true ); m_tmpDir->qDir()->cd( m_tmpDir->name() ); // build the temp file name KTempFile *pTempFile = new KTempFile( m_tmpDir->name(), QString::fromLatin1(".tar") ); tmpfile = pTempFile->name(); delete pTempFile; kdDebug(1601) << "Tmpfile will be " << tmpfile << "\n" << endl; } }
bool SambaFile::load() { if (path.isNull() || path.isEmpty()) return false; kdDebug(FILESHARE_DEBUG) << "SambaFile::load: path=" << path << endl; KURL url(path); if (!url.isLocalFile()) { KTempFile tempFile; localPath = tempFile.name(); KURL destURL; destURL.setPath( localPath ); KIO::FileCopyJob * job = KIO::file_copy( url, destURL, 0600, true, false, true ); // emit started( d->m_job ); connect( job, SIGNAL( result( KIO::Job * ) ), this, SLOT( slotJobFinished ( KIO::Job * ) ) ); return true; } else {
bool KMiniEdit::saveFile(KURL newurl) { if (newurl.isEmpty()) newurl = KFileDialog::getSaveURL(); if (newurl.isEmpty()) return false; if (newurl.isMalformed()) { QString text = i18n("<b>THe URL %1 is not correct!</b>"); KMessageBox::sorry(this, text.arg(newurl.prettyURL())); return false; } if (newurl.isLocalFile()) { QFile file(newurl.path()); file.open(IO_WriteOnly); saveToLocalFile(&file); } else { KTempFile tempfile; saveToLocalFile(tempfile.file()); if (!KIO::NetAccess::upload(tempfile.name(), newurl)) { QString text = i18n("<b>Error uploading %1!</b>"); KMessageBox::sorry(this, text.arg(newurl.prettyURL())); tempfile.unlink(); return false; } tempfile.unlink(); } url = newurl; addURLtoRecent(); resetEdited(); return true; }
void ImageLabel::setValue(QString fn) { // use the first line QStringList sList = QStringList::split( "\n", fn ); QString fileName = *sList.begin(); KURL url(fileName); QRegExp rx("^[a-zA-Z]{1,5}:/",false); bool protocol = (rx.search(fileName)!=-1)?true:false; QPixmap pm; if(protocol && url.isLocalFile() == false) { KTempFile tmpFile; KIO::FileCopyJob* copy = KIO::file_copy(fileName, tmpFile.name(), 0600, true, false, false); connect(copy, SIGNAL(result(KIO::Job*)), this, SLOT(slotCopyResult(KIO::Job*))); return; }
void PreviewJob::getOrCreateThumbnail() { // We still need to load the orig file ! (This is getting tedious) :) const KFileItem* item = d->currentItem.item; const TQString localPath = item->localPath(); if ( !localPath.isEmpty() ) createThumbnail( localPath ); else { d->state = PreviewJobPrivate::STATE_GETORIG; KTempFile localFile; KURL localURL; localURL.setPath( d->tempName = localFile.name() ); const KURL currentURL = item->url(); TDEIO::Job * job = TDEIO::file_copy( currentURL, localURL, -1, true, false, false /* No GUI */ ); job->addMetaData("thumbnail","1"); addSubjob(job); } }
bool KSnapshot::save( const KURL& url ) { QString type( KImageIO::type(url.path()) ); if ( type.isNull() ) type = "PNG"; bool ok = false; if ( url.isLocalFile() ) { KSaveFile saveFile( url.path() ); if ( saveFile.status() == 0 ) { if ( snapshot.save( saveFile.file(), type.latin1() ) ) ok = saveFile.close(); } } else { KTempFile tmpFile; tmpFile.setAutoDelete( true ); if ( tmpFile.status() == 0 ) { if ( snapshot.save( tmpFile.file(), type.latin1() ) ) { if ( tmpFile.close() ) ok = KIO::NetAccess::upload( tmpFile.name(), url, this ); } } } QApplication::restoreOverrideCursor(); if ( !ok ) { kdWarning() << "KSnapshot was unable to save the snapshot" << endl; QString caption = i18n("Unable to Save Image"); QString text = i18n("KSnapshot was unable to save the image to\n%1.") .arg(url.prettyURL()); KMessageBox::error(this, text, caption); } return ok; }
bool Q3DGraph::save(const KURL& url) { if ( KIO::NetAccess::exists( url, false, this ) ) //The file already exist return false; QString type(KImageIO::type(url.path())); if (type.isNull()) type = "PNG"; bool ok = false; if(url.isLocalFile()) { KSaveFile saveFile(url.path()); if ( saveFile.status() == 0 ) { if (toPixmap().save( saveFile.file(), type.latin1() ) ) ok = saveFile.close(); } } else { KTempFile tmpFile; tmpFile.setAutoDelete(true); if(tmpFile.status()==0) { if(toPixmap().save( tmpFile.file(), type.latin1())) { if(tmpFile.close()) ok = KIO::NetAccess::upload( tmpFile.name(), url, this ); } } } // QApplication::restoreOverrideCursor(); if (!ok) { qDebug("Was unable to save it"); } return ok; }
void EventArchiver::archiveIncidences( Calendar* calendar, const QDate& /*limitDate*/, QWidget* widget, const Incidence::List& incidences, bool /*withGUI*/) { FileStorage storage( calendar ); // Save current calendar to disk KTempFile tmpFile; tmpFile.setAutoDelete(true); storage.setFileName( tmpFile.name() ); if ( !storage.save() ) { kdDebug(5850) << "EventArchiver::archiveEvents(): Can't save calendar to temp file" << endl; return; } // Duplicate current calendar by loading in new calendar object CalendarLocal archiveCalendar( KOPrefs::instance()->mTimeZoneId ); FileStorage archiveStore( &archiveCalendar ); archiveStore.setFileName( tmpFile.name() ); if (!archiveStore.load()) { kdDebug(5850) << "EventArchiver::archiveEvents(): Can't load calendar from temp file" << endl; return; } // Strip active events from calendar so that only events to be archived // remain. This is not really efficient, but there is no other easy way. QStringList uids; Incidence::List allIncidences = archiveCalendar.rawIncidences(); Incidence::List::ConstIterator it; for( it = incidences.begin(); it != incidences.end(); ++it ) { uids << (*it)->uid(); } for( it = allIncidences.begin(); it != allIncidences.end(); ++it ) { if ( !uids.contains( (*it)->uid() ) ) { archiveCalendar.deleteIncidence( *it ); } } // Get or create the archive file KURL archiveURL( KOPrefs::instance()->mArchiveFile ); QString archiveFile; if ( KIO::NetAccess::exists( archiveURL, true, widget ) ) { if( !KIO::NetAccess::download( archiveURL, archiveFile, widget ) ) { kdDebug(5850) << "EventArchiver::archiveEvents(): Can't download archive file" << endl; return; } // Merge with events to be archived. archiveStore.setFileName( archiveFile ); if ( !archiveStore.load() ) { kdDebug(5850) << "EventArchiver::archiveEvents(): Can't merge with archive file" << endl; return; } } else { archiveFile = tmpFile.name(); } // Save archive calendar if ( !archiveStore.save() ) { KMessageBox::error(widget,i18n("Cannot write archive file %1.").arg( archiveStore.fileName() )); return; } // Upload if necessary KURL srcUrl; srcUrl.setPath(archiveFile); if (srcUrl != archiveURL) { if ( !KIO::NetAccess::upload( archiveFile, archiveURL, widget ) ) { KMessageBox::error(widget,i18n("Cannot write archive to final destination.")); return; } } KIO::NetAccess::removeTempFile(archiveFile); // Delete archived events from calendar for( it = incidences.begin(); it != incidences.end(); ++it ) { calendar->deleteIncidence( *it ); } emit eventsDeleted(); }
void KSANEOCR::startOCRAD( ) { ocradDialog *ocrDia = static_cast<ocradDialog*>(m_ocrProcessDia); m_ocrResultImage = ocrDia->orfUrl(); const QString cmd = ocrDia->getOCRCmd(); // if( m_ocrResultImage.isEmpty() ) { /* The url is empty. Start the program to fill up a temp file */ m_ocrResultImage = ImgSaver::tempSaveImage( m_img, "BMP", 8 ); // m_tmpFile->name(); kdDebug(28000) << "The new image name is <" << m_ocrResultImage << ">" << endl; } m_ocrImagePBM = ImgSaver::tempSaveImage( m_img, "PBM", 1 ); /* temporar file for orf result */ KTempFile *tmpOrf = new KTempFile( QString(), ".orf" ); tmpOrf->setAutoDelete( false ); tmpOrf->close(); m_tmpOrfName = QFile::encodeName(tmpOrf->name()); if( daemon ) { delete( daemon ); daemon = 0; } daemon = new KProcess; Q_CHECK_PTR(daemon); *daemon << cmd; *daemon << QString("-x"); *daemon << m_tmpOrfName; // the orf result file *daemon << QFile::encodeName( m_ocrImagePBM ); // The name of the image *daemon << QString("-l"); *daemon << QString::number( ocrDia->layoutDetectionMode()); KConfig *konf = KGlobal::config (); KConfigGroupSaver( konf, CFG_GROUP_OCRAD ); QString format = konf->readEntry( CFG_OCRAD_FORMAT, "utf8"); *daemon << QString("-F"); *daemon << format; QString charset = konf->readEntry( CFG_OCRAD_CHARSET, "iso-8859-15"); *daemon << QString("-c"); *daemon << charset; QString addArgs = konf->readEntry( CFG_OCRAD_EXTRA_ARGUMENTS, QString() ); if( !addArgs.isEmpty() ) { kdDebug(28000) << "Setting additional args from config for ocrad: " << addArgs << endl; *daemon << addArgs; } m_ocrResultText = ""; connect(daemon, SIGNAL(processExited(KProcess *)), this, SLOT( ocradExited(KProcess*))); connect(daemon, SIGNAL(receivedStdout(KProcess *, char*, int)), this, SLOT( ocradStdIn(KProcess*, char*, int))); connect(daemon, SIGNAL(receivedStderr(KProcess *, char*, int)), this, SLOT( ocradStdErr(KProcess*, char*, int))); if (!daemon->start(KProcess::NotifyOnExit, KProcess::All)) { kdDebug(28000) << "Error starting ocrad-daemon!" << endl; } else { kdDebug(28000) << "Start OK" << endl; } delete tmpOrf; }
KdeSudo::KdeSudo(QWidget *parent, const char *name,const QString& icon, const QString& generic, bool withIgnoreButton) : KPasswordDialog(KPasswordDialog::Password, false, (withIgnoreButton ? User1: false), icon, parent, name) { KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); QString defaultComment = i18n("<b>%1</b> needs administrative privileges. Please enter your password for verification."); p=NULL; bError=false; m_pCookie = new KCookie; // Set vars bool newDcop = args->isSet("newdcop"); bool realtime = args->isSet("r"); bool priority = args->isSet("p"); bool showCommand = (!args->isSet("d")); bool changeUID = true; bool noExec = false; keepPwd = (!args->isSet("n")); emptyPwd = args->isSet("s"); QString runas = args->getOption("u"); QString cmd; if (!args->isSet("c") && !args->count() && (!args->isSet("s"))) { KMessageBox::information(NULL, i18n("No command arguments supplied!\nUsage: kdesudo [-u <runas>] <command>\nKdeSudo will now exit...")); noExec = true; } p = new KProcess; p->clearArguments(); // Parsins args /* Get the comment out of cli args */ QByteArray commentBytes = args->getOption("comment"); QTextCodec* tCodecConv = QTextCodec::codecForLocale(); QString comment = tCodecConv->toUnicode(commentBytes, commentBytes.size()); if (args->isSet("f")) { // If file is writeable, do not change uid QString filename = QFile::decodeName(args->getOption("f")); QString file = filename; if (!file.isEmpty()) { if (file.at(0) != '/') { KStandardDirs dirs; dirs.addKDEDefaults(); file = dirs.findResource("config", file); if (file.isEmpty()) { kdError(1206) << "Config file not found: " << file << "\n"; exit(1); } } QFileInfo fi(file); if (!fi.exists()) { kdError(1206) << "File does not exist: " << file << "\n"; exit(1); } if (fi.isWritable()) { changeUID = false; } } } if (withIgnoreButton) { setButtonText(User1, i18n("&Ignore")); } // Apologies for the C code, taken from kdelibs/kdesu/kdesu_stub.c // KControl and other places need to use the user's existing DCOP server // For that we set DCOPSERVER. Create a file in /tmp and use iceauth to add magic cookies // from the existing server and set ICEAUTHORITY to point to the file if (!newDcop) { dcopServer = m_pCookie->dcopServer(); QCString dcopAuth = m_pCookie->dcopAuth(); QCString iceAuth = m_pCookie->iceAuth(); FILE *fout; char iceauthority[200]; char *host, *auth; host = qstrdup(dcopServer); auth = qstrdup(iceAuth); int tempfile; int oldumask = umask(077); strcpy(iceauthority, "/tmp/iceauth.XXXXXXXXXX"); tempfile = mkstemp(iceauthority); umask(oldumask); if (tempfile == -1) { kdError() << "error in kdesudo mkstemp" << endl; exit(1); } else { // close(tempfile); //FIXME why does this make the connect() call later crash? } iceauthorityFile = iceauthority; //FIXME we should change owner of iceauthority file, but don't have permissions setenv("ICEAUTHORITY", iceauthorityFile, 1); fout = popen("iceauth >/dev/null 2>&1", "w"); if (!fout) { kdError() << "error in kdesudo running iceauth" << endl; exit(1); } fprintf(fout, "add ICE \"\" %s %s\n", host, auth); auth = qstrdup(dcopAuth); //auth = xstrsep(params[P_DCOP_AUTH].value); fprintf(fout, "add DCOP \"\" %s %s\n", host, auth); unsetenv("ICEAUTHORITY"); pclose(fout); } connect( p, SIGNAL(receivedStdout(KProcess*, char*, int)), this, SLOT(receivedOut(KProcess*, char*, int)) ); connect( p, SIGNAL(receivedStderr(KProcess*, char*, int)), this, SLOT(receivedOut(KProcess*, char*, int)) ); connect( p, SIGNAL(processExited (KProcess *)), this, SLOT(procExited(KProcess*))); QString xauthenv = QString(getenv("HOME")) + "/.Xauthority"; p->setEnvironment("XAUTHORITY", xauthenv); // Generate the xauth cookie and put it in a tempfile // set the environment variables to reflect that. // Default cookie-timeout is 60 sec. . // 'man xauth' for more info on xauth cookies. KTempFile temp = KTempFile("/tmp/kdesudo-","-xauth"); m_tmpname = temp.name(); FILE *f; char buf[1024]; QCString disp = m_pCookie->display(); // command: xauth -q -f m_tmpname generate $DISPLAy . trusted timeout 60 QString c = "/usr/bin/xauth -q -f " + m_tmpname + " generate " + QString::fromLocal8Bit(disp) + " . trusted timeout 60"; blockSigChild(); // pclose uses waitpid() if (!(f = popen(c, "r"))) { kdWarning() << k_lineinfo << "Cannot run: " << c << "\n"; unblockSigChild(); return; } // non root users need to be able to read the xauth file. // the xauth file is deleted when kdesudo exits. security? QFile tf(m_tmpname); if (!runas.isEmpty() && runas != "root" && tf.exists()) chmod(m_tmpname.ascii(),0644); QCStringList output; while (fgets(buf, 1024, f) > 0) output += buf; if (pclose(f) < 0) { kdError() << k_lineinfo << "Could not run xauth.\n"; unblockSigChild(); return; } unblockSigChild(); p->setEnvironment("DISPLAY", disp); p->setEnvironment("XAUTHORITY", m_tmpname); if (emptyPwd) *p << "sudo" << "-k"; else { if (changeUID) { *p << "sudo" << "-H" << "-S" << "-p" << "passprompt"; if (!runas.isEmpty()) *p << "-u" << runas; } if (!dcopServer.isEmpty()) *p << "DCOPSERVER=" + dcopServer; if (!iceauthorityFile.isEmpty()) *p << "ICEAUTHORITY=" + iceauthorityFile; if (realtime) { *p << "nice" << "-n" << "10"; addLine(i18n("Priority:"), i18n("realtime:") + QChar(' ') + QString("50/100")); } else if (priority) { QString n = args->getOption("p"); int intn = atoi(n); intn = (intn * 40 / 100) - (20 + 0.5); QString strn; strn.sprintf("%d",intn); *p << "nice" << "-n" << strn; addLine(i18n("Priority:"), n + QString("/100")); } *p << "--"; if (args->isSet("c")) { QString command = args->getOption("c"); QStringList commandSplit = QStringList::split(" ", command); for (int i = 0; i < commandSplit.count(); i++) { QString toto = validArg(commandSplit[i]); *p << toto; cmd += validArg(commandSplit[i]) + QChar(' '); } } else if (args->count()) { for (int i = 0; i < args->count(); i++) { if (i==0) { QStringList argsSplit = QStringList::split(" ", args->arg(i)); for (int i = 0; i < argsSplit.count(); i++) { *p << validArg(argsSplit[i]); cmd += validArg(argsSplit[i]) + QChar(' '); } } else { *p << validArg(args->arg(i)); cmd += validArg(args->arg(i)) + QChar(' '); } } } // strcmd needs to be defined if (showCommand && !cmd.isEmpty()) addLine(i18n("Command:"), cmd); } if (comment.isEmpty()) { if (!generic.isEmpty()) setPrompt(defaultComment.arg(generic)); else setPrompt(defaultComment.arg(cmd)); } else setPrompt(comment); if (noExec) exit(0); else p->start( KProcess::NotifyOnExit, KProcess::All ); }
const KstTimezones::ZoneMap KstTimezones::allZones() { // Have we already done all the hard work? If not, create the cache. if (m_zones) return *m_zones; m_zones = new ZoneMap(); // Go read the database. // // On Windows, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones // is the place to look. The TZI binary value is the TIME_ZONE_INFORMATION structure. // // For Unix its all easy except knowing where to look. Try the LSB location first. QFile f; m_zoneinfoDir = "/usr/share/zoneinfo"; f.setName(m_zoneinfoDir + "/zone.tab"); if (!f.open(IO_ReadOnly)) { m_zoneinfoDir = "/usr/lib/zoneinfo"; f.setName(m_zoneinfoDir + "/zone.tab"); if (!f.open(IO_ReadOnly)) { m_zoneinfoDir = ::getenv("TZDIR"); f.setName(m_zoneinfoDir + "/zone.tab"); if (m_zoneinfoDir.isEmpty() || !f.open(IO_ReadOnly)) { // Solaris support. Synthesise something that looks like a zone.tab. // // /bin/grep -h ^Zone /usr/share/lib/zoneinfo/src/* | /bin/awk '{print "??\t+9999+99999\t" $2}' // // where the country code is set to "??" and the lattitude/longitude // values are dummies. m_zoneinfoDir = "/usr/share/lib/zoneinfo"; KTempFile temp; KShellProcess reader; reader << "/bin/grep" << "-h" << "^Zone" << m_zoneinfoDir << "/src/*" << temp.name() << "|" << "/bin/awk" << "'{print \"??\\t+9999+99999\\t\" $2}'"; // Note the use of blocking here...it is a trivial amount of data! temp.close(); reader.start(KProcess::Block); f.setName(temp.name()); if (!temp.status() || !f.open(IO_ReadOnly)) { return *m_zones; } } } } // Parse the zone.tab. QTextStream str(&f); QRegExp lineSeparator("[ \t]"); QRegExp ordinateSeparator("[+-]"); KSharedPtr<KstTimezoneSource> db(new KstTimezoneSource(m_zoneinfoDir)); while (!str.atEnd()) { QString line = str.readLine(); if (line.isEmpty() || '#' == line[0]) continue; QStringList tokens = KStringHandler::perlSplit(lineSeparator, line, 4); if (tokens.count() < 3) { continue; } // Got three tokens. Now check for two ordinates plus first one is "". QStringList ordinates = KStringHandler::perlSplit(ordinateSeparator, tokens[1], 2); if (ordinates.count() < 2) { continue; } float latitude = convertCoordinate(ordinates[1]); float longitude = convertCoordinate(ordinates[2]); // Add entry to list. if (tokens[0] == "??") tokens[0] = ""; KstTimezone *timezone = new KstTimezone(db, tokens[2], tokens[0], latitude, longitude, tokens[3]); add(timezone); } f.close(); return *m_zones; }
void KPrMSPresentation::initCreation( KProgress *progressBar ) { int p; // the title images, and the subsequent real images need to // be in a file under DCIM/, and they start at 101MSPJP, so // we create the DCIM file, and then iterate through looking // for the next "available" directory slot KURL str( path + "/DCIM" ); KIO::NetAccess::mkdir( str,( QWidget* )0L ); p = progressBar->progress(); progressBar->setProgress( ++p ); kapp->processEvents(); for (int dirNum = 101; dirNum < 999; dirNum++) { slidePath = QString("/DCIM/%1MSPJP").arg(dirNum); if (! KIO::NetAccess::exists(( path + slidePath), true, ( QWidget* )0L) ) break; } p = progressBar->progress(); progressBar->setProgress( ++p ); kapp->processEvents(); str = ( path + slidePath ); KIO::NetAccess::mkdir( str,( QWidget* )0L ); p = progressBar->progress(); progressBar->setProgress( ++p ); kapp->processEvents(); // now do the SPP file directory str = ( path + "/MSSONY" ); KIO::NetAccess::mkdir( str,( QWidget* )0L ); p = progressBar->progress(); progressBar->setProgress( ++p ); kapp->processEvents(); str = ( path + "/MSSONY/PJ" ); KIO::NetAccess::mkdir( str,( QWidget* )0L ); p = progressBar->progress(); progressBar->setProgress( ++p ); kapp->processEvents(); // create the title slides QPixmap titleSlide( 1024, 768 ); titleSlide.fill( backColour ); QPainter painter( &titleSlide ); //the second title is just blank, so create that now KTempFile tmp; QString filename = path + slidePath + "/SPJT0002.JPG"; titleSlide.save( tmp.name(), "JPEG" ); KIO::NetAccess::file_move( tmp.name(), filename, -1, true /*overwrite*/); p = progressBar->progress(); progressBar->setProgress( ++p ); kapp->processEvents(); // and put the specified title string on the first slide QFont textFont( "SansSerif", 96 ); painter.setFont( textFont ); painter.setPen( textColour ); painter.drawText( titleSlide.rect(), Qt::AlignCenter | Qt::WordBreak, title ); filename = path + slidePath + "/SPJT0001.JPG"; KTempFile tmp2; titleSlide.save( tmp2.name(), "JPEG" ); KIO::NetAccess::file_move( tmp2.name(), filename, -1, true /*overwrite*/); p = progressBar->progress(); progressBar->setProgress( ++p ); kapp->processEvents(); }