bool ResourceNet::save( Ticket *ticket ) { Q_UNUSED( ticket ); kDebug(); if ( d->mIsSaving ) { abortAsyncSaving(); } KTemporaryFile tempFile; bool ok = tempFile.open(); if ( ok ) { saveToFile( &tempFile ); tempFile.flush(); } if ( !ok ) { addressBook()->error( i18n( "Unable to save file '%1'.", tempFile.fileName() ) ); return false; } ok = KIO::NetAccess::upload( tempFile.fileName(), mUrl, 0 ); if ( !ok ) { addressBook()->error( i18n( "Unable to upload to '%1'.", mUrl.prettyUrl() ) ); } return ok; }
bool Kleo::SymCryptRunProcessBase::launch( const QByteArray & input, bool block ) { connect( this, SIGNAL(readyReadStandardOutput()), this, SLOT(slotReadyReadStandardOutput()) ); connect( this, SIGNAL(readyReadStandardError()), this, SLOT(slotReadyReadStandardError()) ); if ( block ) { KTemporaryFile tempfile; if ( tempfile.open() ) tempfile.write( input ); else return false; tempfile.flush(); *this << "--input" << tempfile.fileName(); addOptions(); if(KProcess::execute() == -2) return false; } else { addOptions(); KProcess::start(); const bool ok = waitForStarted(); if ( !ok ) return ok; mInput = input; write( mInput ); closeWriteChannel(); } return true; }
void BinaryWidget::setData( const QByteArray &data ) { delete mMainWidget; QString mimetype; KMimeType::Ptr mime = KMimeType::findByContent( data ); if ( mime && !mime->isDefault() ) mimetype = mime->name(); if ( !mimetype.isEmpty() ) { KParts::ReadOnlyPart *part = KParts::ComponentFactory::createPartInstanceFromQuery<KParts::ReadOnlyPart>( mimetype, QString(), this, this ); if ( part ) { KTemporaryFile file; file.setAutoRemove(false); file.open(); file.write( data ); file.flush(); part->openUrl( KUrl( file.fileName() ) ); mMainWidget = part->widget(); } else { mMainWidget = new QLabel( i18n( "No part found for visualization of mimetype %1", mimetype ), this ); } mData = data; mSaveButton->setEnabled( true ); } else { mMainWidget = new QLabel( i18n( "Got data of unknown mimetype" ), this ); } mLayout->addWidget( mMainWidget, 0, 0, 3, 1); mMainWidget->show(); }
static KTemporaryFile *generateTestFile(const QString &content) { KTemporaryFile *file = new KTemporaryFile; Q_ASSERT(file->open()); file->write(content.toUtf8()); file->flush(); return file; }
void BinaryWidget::save() { KUrl url = KFileDialog::getSaveUrl( QString(), QString(), this ); if ( url.isEmpty() ) return; KTemporaryFile tempFile; tempFile.open(); tempFile.write( mData ); tempFile.flush(); if ( !KIO::NetAccess::upload( tempFile.fileName(), url, this ) ) KMessageBox::error( this, KIO::NetAccess::lastErrorString() ); }
Rules::Rules(const QString& str, bool temporary) : temporary_state(temporary ? 2 : 0) { KTemporaryFile file; if (file.open()) { QByteArray s = str.toUtf8(); file.write(s.data(), s.length()); } file.flush(); KConfig cfg(file.fileName(), KConfig::SimpleConfig); readFromCfg(cfg.group(QString())); if (description.isEmpty()) description = "temporary"; }
bool SSMLConvert::transform(const QString &text, const QString &xsltFilename) { m_xsltFilename = xsltFilename; /// Write @param text to a temporary file. KTemporaryFile inFile; inFile.setPrefix(QLatin1String( "kttsd-" )); inFile.setSuffix(QLatin1String( ".ssml" )); inFile.setAutoRemove(false); inFile.open(); m_inFilename = inFile.fileName(); QTextStream wstream (&inFile); // TODO: Is encoding an issue here? // TODO: It would be nice if we detected whether the XML is properly formed // with the required xml processing instruction and encoding attribute. If // not wrap it in such. But maybe this should be handled by SpeechData::setText()? wstream << text; inFile.flush(); // Get a temporary output file name. KTemporaryFile outFile; outFile.setPrefix(QLatin1String( "kttsd-" )); outFile.setSuffix(QLatin1String( ".output" )); outFile.setAutoRemove(false); outFile.open(); m_outFilename = outFile.fileName(); /// Spawn an xsltproc process to apply our stylesheet to our SSML file. QStringList args; m_xsltProc = new QProcess; args << QLatin1String( "-o" ) << m_outFilename << QLatin1String( "--novalid" ) << m_xsltFilename << m_inFilename; // Warning: This won't compile under KDE 3.2. See FreeTTS::argsToStringList(). // kDebug() << "SSMLConvert::transform: executing command: " << // m_xsltProc->args() << endl; connect(m_xsltProc, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(slotProcessExited())); if (!m_xsltProc->execute(QLatin1String("xsltproc"), args)) { kDebug() << "SSMLConvert::transform: Error starting xsltproc"; return false; } m_state = tsTransforming; return true; }
QString KNArticleManager::saveContentToTemp(KMime::Content *c) { QString path; KTemporaryFile* tmpFile; KMime::Headers::Base *pathHdr=c->headerByType("X-KNode-Tempfile"); // check for existing temp file if(pathHdr) { path = pathHdr->asUnicodeString(); bool found=false; // lets see if the tempfile-path is still valid... for ( QList<KTemporaryFile*>::Iterator it = mTempFiles.begin(); it != mTempFiles.end(); ++it ) { if ( (*it)->fileName() == path ) { found = true; break; } } if (found) return path; else c->removeHeader("X-KNode-Tempfile"); } tmpFile=new KTemporaryFile(); if (!tmpFile->open()) { KNHelper::displayTempFileError(); delete tmpFile; return QString(); } mTempFiles.append(tmpFile); QByteArray data=c->decodedContent(); tmpFile->write(data.data(), data.size()); tmpFile->flush(); path=tmpFile->fileName(); pathHdr=new KMime::Headers::Generic("X-KNode-Tempfile", c, path, "UTF-8"); c->setHeader(pathHdr); return path; }
bool CSVXXPort::exportContacts( const KABC::AddresseeList &list, const QString& ) { KUrl url = KFileDialog::getSaveUrl( KUrl("addressbook.csv") ); if ( url.isEmpty() ) return true; if( QFileInfo( url.isLocalFile() ? url.toLocalFile() : url.path() ).exists() ) { if(KMessageBox::questionYesNo( parentWidget(), i18n("Do you want to overwrite file \"%1\"", url.isLocalFile() ? url.toLocalFile() : url.path()) ) == KMessageBox::No) return true; } if ( !url.isLocalFile() ) { KTemporaryFile tmpFile; if ( !tmpFile.open() ) { QString txt = i18n("<qt>Unable to open file <b>%1</b></qt>", url.url()); KMessageBox::error( parentWidget(), txt ); return false; } doExport( &tmpFile, list ); tmpFile.flush(); return KIO::NetAccess::upload( tmpFile.fileName(), url, parentWidget() ); } else { QFile file( url.toLocalFile() ); if ( !file.open( QIODevice::WriteOnly ) ) { QString txt = i18n( "<qt>Unable to open file <b>%1</b>.</qt>", url.toLocalFile() ); KMessageBox::error( parentWidget(), txt ); return false; } doExport( &file, list ); file.close(); KMessageBox::information( parentWidget(), i18n( "The contacts have been exported successfully." ) ); return true; } }
void runRdb( uint flags ) { // Obtain the application palette that is about to be set. bool exportColors = flags & KRdbExportColors; bool exportQtColors = flags & KRdbExportQtColors; bool exportQtSettings = flags & KRdbExportQtSettings; bool exportXftSettings = flags & KRdbExportXftSettings; bool exportGtkTheme = flags & KRdbExportGtkTheme; KSharedConfigPtr kglobalcfg = KSharedConfig::openConfig( "kdeglobals" ); KConfigGroup kglobals(kglobalcfg, "KDE"); QPalette newPal = KGlobalSettings::createApplicationPalette(kglobalcfg); KTemporaryFile tmpFile; if (!tmpFile.open()) { kDebug() << "Couldn't open temp file"; exit(0); } KConfigGroup generalCfgGroup(kglobalcfg, "General"); QString gtkTheme; if (generalCfgGroup.hasKey("widgetStyle")) gtkTheme = generalCfgGroup.readEntry("widgetStyle"); else gtkTheme = "oxygen"; createGtkrc( exportColors, newPal, exportGtkTheme, gtkTheme, 1 ); createGtkrc( exportColors, newPal, exportGtkTheme, gtkTheme, 2 ); // Export colors to non-(KDE/Qt) apps (e.g. Motif, GTK+ apps) if (exportColors) { KGlobal::dirs()->addResourceType("appdefaults", "data", "kdisplay/app-defaults/"); QString preproc; QColor backCol = newPal.color( QPalette::Active, QPalette::Background ); addColorDef(preproc, "FOREGROUND" , newPal.color( QPalette::Active, QPalette::Foreground ) ); addColorDef(preproc, "BACKGROUND" , backCol); addColorDef(preproc, "HIGHLIGHT" , backCol.light(100+(2*KGlobalSettings::contrast()+4)*16/1)); addColorDef(preproc, "LOWLIGHT" , backCol.dark(100+(2*KGlobalSettings::contrast()+4)*10)); addColorDef(preproc, "SELECT_BACKGROUND" , newPal.color( QPalette::Active, QPalette::Highlight)); addColorDef(preproc, "SELECT_FOREGROUND" , newPal.color( QPalette::Active, QPalette::HighlightedText)); addColorDef(preproc, "WINDOW_BACKGROUND" , newPal.color( QPalette::Active, QPalette::Base ) ); addColorDef(preproc, "WINDOW_FOREGROUND" , newPal.color( QPalette::Active, QPalette::Foreground ) ); addColorDef(preproc, "INACTIVE_BACKGROUND", KGlobalSettings::inactiveTitleColor()); addColorDef(preproc, "INACTIVE_FOREGROUND", KGlobalSettings::inactiveTitleColor()); addColorDef(preproc, "ACTIVE_BACKGROUND" , KGlobalSettings::activeTitleColor()); addColorDef(preproc, "ACTIVE_FOREGROUND" , KGlobalSettings::activeTitleColor()); //--------------------------------------------------------------- tmpFile.write( preproc.toLatin1(), preproc.length() ); QStringList list; const QStringList adPaths = KGlobal::dirs()->findDirs("appdefaults", ""); for (QStringList::ConstIterator it = adPaths.constBegin(); it != adPaths.constEnd(); ++it) { QDir dSys( *it ); if ( dSys.exists() ) { dSys.setFilter( QDir::Files ); dSys.setSorting( QDir::Name ); dSys.setNameFilters(QStringList("*.ad")); list += dSys.entryList(); } } for (QStringList::ConstIterator it = list.constBegin(); it != list.constEnd(); ++it) copyFile(tmpFile, KStandardDirs::locate("appdefaults", *it ), true); } // Merge ~/.Xresources or fallback to ~/.Xdefaults QString homeDir = QDir::homePath(); QString xResources = homeDir + "/.Xresources"; // very primitive support for ~/.Xresources by appending it if ( QFile::exists( xResources ) ) copyFile(tmpFile, xResources, true); else copyFile(tmpFile, homeDir + "/.Xdefaults", true); // Export the Xcursor theme & size settings KConfigGroup mousecfg(KSharedConfig::openConfig( "kcminputrc" ), "Mouse" ); QString theme = mousecfg.readEntry("cursorTheme", QString()); QString size = mousecfg.readEntry("cursorSize", QString()); QString contents; if (!theme.isNull()) contents = "Xcursor.theme: " + theme + '\n'; if (!size.isNull()) contents += "Xcursor.size: " + size + '\n'; if (exportXftSettings) { if (generalCfgGroup.hasKey("XftAntialias")) { contents += "Xft.antialias: "; if(generalCfgGroup.readEntry("XftAntialias", true)) contents += "1\n"; else contents += "0\n"; } if (generalCfgGroup.hasKey("XftHintStyle")) { QString hintStyle = generalCfgGroup.readEntry("XftHintStyle", "hintmedium"); contents += "Xft.hinting: "; if(hintStyle.isEmpty()) contents += "-1\n"; else { if(hintStyle!="hintnone") contents += "1\n"; else contents += "0\n"; contents += "Xft.hintstyle: " + hintStyle + '\n'; } } if (generalCfgGroup.hasKey("XftSubPixel")) { QString subPixel = generalCfgGroup.readEntry("XftSubPixel"); if(!subPixel.isEmpty()) contents += "Xft.rgba: " + subPixel + '\n'; } KConfig _cfgfonts( "kcmfonts" ); KConfigGroup cfgfonts(&_cfgfonts, "General"); if( cfgfonts.readEntry( "forceFontDPI", 0 ) != 0 ) contents += "Xft.dpi: " + cfgfonts.readEntry( "forceFontDPI" ) + '\n'; else { KProcess proc; proc << "xrdb" << "-quiet" << "-remove" << "-nocpp"; proc.start(); if (proc.waitForStarted()) { proc.write( QByteArray( "Xft.dpi\n" ) ); proc.closeWriteChannel(); proc.waitForFinished(); } } } if (contents.length() > 0) tmpFile.write( contents.toLatin1(), contents.length() ); tmpFile.flush(); KProcess proc; #ifndef NDEBUG proc << "xrdb" << "-merge" << tmpFile.fileName(); #else proc << "xrdb" << "-quiet" << "-merge" << tmpFile.fileName(); #endif proc.execute(); applyGtkStyles(exportColors, 1); applyGtkStyles(exportColors, 2); /* Qt exports */ if ( exportQtColors || exportQtSettings ) { QSettings* settings = new QSettings(QLatin1String("Trolltech")); if ( exportQtColors ) applyQtColors( kglobalcfg, *settings, newPal ); // For kcmcolors if ( exportQtSettings ) applyQtSettings( kglobalcfg, *settings ); // For kcmstyle delete settings; QApplication::flush(); #if HAVE_X11 if (qApp->platformName() == QStringLiteral("xcb")) { // We let KIPC take care of ourselves, as we are in a KDE app with // QApp::setDesktopSettingsAware(false); // Instead of calling QApp::x11_apply_settings() directly, we instead // modify the timestamp which propagates the settings changes onto // Qt-only apps without adversely affecting ourselves. // Cheat and use the current timestamp, since we just saved to qtrc. QDateTime settingsstamp = QDateTime::currentDateTime(); static Atom qt_settings_timestamp = 0; if (!qt_settings_timestamp) { QString atomname("_QT_SETTINGS_TIMESTAMP_"); atomname += XDisplayName( 0 ); // Use the $DISPLAY envvar. qt_settings_timestamp = XInternAtom( QX11Info::display(), atomname.toLatin1(), False); } QBuffer stamp; QDataStream s(&stamp.buffer(), QIODevice::WriteOnly); s << settingsstamp; XChangeProperty( QX11Info::display(), QX11Info::appRootWindow(), qt_settings_timestamp, qt_settings_timestamp, 8, PropModeReplace, (unsigned char*) stamp.buffer().data(), stamp.buffer().size() ); QApplication::flush(); } #endif } }
void QGpgMECryptoConfigComponent::sync( bool runtime ) { KTemporaryFile tmpFile; tmpFile.open(); QList<QGpgMECryptoConfigEntry *> dirtyEntries; // Collect all dirty entries const QList<QString> keylist = mGroupsByName.uniqueKeys(); Q_FOREACH (const QString & key, keylist) { const QHash<QString,QGpgMECryptoConfigEntry*> entry = mGroupsByName[key]->mEntriesByName; const QList<QString> keylistentry = entry.uniqueKeys(); Q_FOREACH (const QString & keyentry, keylistentry) { if(entry[keyentry]->isDirty()) { // OK, we can set it.currentKey() to it.current()->outputString() QString line = keyentry; if ( entry[keyentry]->isSet() ) { // set option line += ":0:"; line += entry[keyentry]->outputString(); } else { // unset option line += ":16:"; } #ifdef Q_OS_WIN line += '\r'; #endif line += '\n'; const QByteArray line8bit = line.toUtf8(); // encode with utf8, and K3ProcIO uses utf8 when reading. tmpFile.write( line8bit ); dirtyEntries.append( entry[keyentry] ); } } } tmpFile.flush(); if ( dirtyEntries.isEmpty() ) return; // Call gpgconf --change-options <component> const QString gpgconf = QGpgMECryptoConfig::gpgConfPath(); QString commandLine = gpgconf.isEmpty() ? QString::fromLatin1( "gpgconf" ) : KShell::quoteArg( gpgconf ) ; if ( runtime ) commandLine += " --runtime"; commandLine += " --change-options "; commandLine += KShell::quoteArg( mName ); commandLine += " < "; commandLine += KShell::quoteArg( tmpFile.fileName() ); //kDebug(5150) << commandLine; //system( QCString( "cat " ) + tmpFile.name().toLatin1() ); // DEBUG KProcess proc; proc.setShellCommand( commandLine ); // run the process: int rc = proc.execute(); if ( rc == -2 ) { QString wmsg = i18n( "Could not start gpgconf.\nCheck that gpgconf is in the PATH and that it can be started." ); kWarning(5150) << wmsg; KMessageBox::error(0, wmsg); } else if( rc != 0 ) // Happens due to bugs in gpgconf (e.g. issues 104/115) { QString wmsg = i18n( "Error from gpgconf while saving configuration: %1", QString::fromLocal8Bit( strerror( rc ) ) ); kWarning(5150) <<":" << strerror( rc ); KMessageBox::error(0, wmsg); } else { QList<QGpgMECryptoConfigEntry *>::const_iterator it = dirtyEntries.constBegin(); for( ; it != dirtyEntries.constEnd(); ++it ) { (*it)->setDirty( false ); } } }