KJotsBook* KnowItImporter::importFromUrl( KUrl url ) { KJotsBook *book = new KJotsBook(); buildNoteTree(url); // foreach () // kDebug(); buildDomDocument(); KTemporaryFile file; file.setPrefix( KStandardDirs::locateLocal( "data", "kjots/" ) ); file.setSuffix( ".book" ); file.setAutoRemove( false ); if ( file.open() ) { file.write( "<?xml version='1.0' encoding='UTF-8' ?>\n<!DOCTYPE KJots>\n<KJots>\n" ); file.write( m_domDoc.toByteArray() ); file.write( "</KJots>\n" ); kDebug() << file.fileName(); QString newFileName = file.fileName(); file.close(); book->openBook( newFileName ); } return book; }
// All the simple tests for findByPath are in testFindByPathUsingFileName_data. // In here we do the tests that need some content in a temporary file. void KMimeTypeTest::testFindByPathWithContent() { KMimeType::Ptr mime; // Test a real PDF file. // If we find x-matlab because it starts with '%' then we are not ordering by priority. KTemporaryFile tempFile; QVERIFY(tempFile.open()); QString tempFileName = tempFile.fileName(); tempFile.write("%PDF-"); tempFile.close(); mime = KMimeType::findByPath( tempFileName ); QVERIFY( mime ); QCOMPARE( mime->name(), QString::fromLatin1( "application/pdf" ) ); // fast mode cannot find the mimetype mime = KMimeType::findByPath( tempFileName, 0, true ); QVERIFY( mime ); QCOMPARE(mime->name(), QString::fromLatin1("application/octet-stream")); // Test the case where the extension doesn't match the contents: extension wins { KTemporaryFile txtTempFile; txtTempFile.setSuffix(".txt"); QVERIFY(txtTempFile.open()); txtTempFile.write("%PDF-"); QString txtTempFileName = txtTempFile.fileName(); txtTempFile.close(); mime = KMimeType::findByPath( txtTempFileName ); QVERIFY( mime ); QCOMPARE( mime->name(), QString::fromLatin1( "text/plain" ) ); // fast mode finds the same mime = KMimeType::findByPath( txtTempFileName, 0, true ); QVERIFY( mime ); QCOMPARE( mime->name(), QString::fromLatin1( "text/plain" ) ); } // Now the case where extension differs from contents, but contents has >80 magic rule // XDG spec says: contents wins. But we can't sniff all files... { KTemporaryFile txtTempFile; txtTempFile.setSuffix(".txt"); QVERIFY(txtTempFile.open()); txtTempFile.write("<smil"); QString txtTempFileName = txtTempFile.fileName(); txtTempFile.close(); mime = KMimeType::findByPath( txtTempFileName ); QVERIFY( mime ); QCOMPARE( mime->name(), QString::fromLatin1( "text/plain" ) ); } }
void KTNEFMain::slotShowMessageText() { if ( !mParser->message() ) { return; } QString rtf = mParser->message()->rtfString(); if ( !rtf.isEmpty() ) { KTemporaryFile *tmpFile = new KTemporaryFile(); tmpFile->setPrefix( KGlobal::dirs()->localkdedir() + "/share/apps/ktnef/tmp/" ); tmpFile->setSuffix( QLatin1String( ".rtf" ) ); tmpFile->open(); tmpFile->setPermissions( QFile::ReadUser ); tmpFile->write( rtf.toLocal8Bit() ); tmpFile->close(); KRun::runUrl( KUrl( tmpFile->fileName() ), "text/rtf", this, true ); delete tmpFile; } else { KMessageBox::error( this, i18nc( "@info", "The message does not contain any Rich Text data." ) ); } }
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"; }
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; }
KUrl tempFileForAttachment( KCal::Attachment *attachment ) { if ( mTempFiles.contains( attachment ) ) { return mTempFiles.value( attachment ); } KTemporaryFile *file = new KTemporaryFile(); file->setParent( this ); QStringList patterns = KMimeType::mimeType( attachment->mimeType() )->patterns(); if ( !patterns.empty() ) { file->setSuffix( QString( patterns.first() ).remove( '*' ) ); } file->setAutoRemove( true ); file->open(); // read-only not to give the idea that it could be written to file->setPermissions( QFile::ReadUser ); file->write( QByteArray::fromBase64( attachment->data() ) ); mTempFiles.insert( attachment, file->fileName() ); file->close(); return mTempFiles.value( attachment ); }
bool KDevelop::createFile(const KUrl& file) { if (KIO::NetAccess::exists( file, KIO::NetAccess::DestinationSide, QApplication::activeWindow() )) { KMessageBox::error( QApplication::activeWindow(), i18n( "The file <i>%1</i> exists already.", file.pathOrUrl() ) ); return false; } { KTemporaryFile temp; if ( !temp.open() || temp.write("\n") == -1 ) { KMessageBox::error( QApplication::activeWindow(), i18n( "Cannot create temporary file to create <i>%1</i>.", file.pathOrUrl() ) ); return false; } if ( !KIO::NetAccess::upload( temp.fileName(), file, QApplication::activeWindow() ) ) { KMessageBox::error( QApplication::activeWindow(), i18n( "Cannot create file <i>%1</i>.", file.pathOrUrl() ) ); return false; } } return true; }
void TodoPlugin::processDropEvent( QDropEvent *event ) { const QMimeData *md = event->mimeData(); if ( KABC::VCardDrag::canDecode( md ) ) { KABC::Addressee::List contacts; KABC::VCardDrag::fromMimeData( md, contacts ); 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()->openTodoEditor( i18nc( "@item", "Meeting" ), QString(), QStringList(), attendees ); return; } if ( KCalUtils::ICalDrag::canDecode( event->mimeData() ) ) { KCalCore::MemoryCalendar::Ptr cal( new KCalCore::MemoryCalendar( KSystemTimeZones::local() ) ); if ( KCalUtils::ICalDrag::fromMimeData( event->mimeData(), cal ) ) { KCalCore::Incidence::List incidences = cal->incidences(); Q_ASSERT( incidences.count() ); if ( !incidences.isEmpty() ) { event->accept(); KCalCore::Incidence::Ptr i = incidences.first(); QString summary; if ( i->type() == KCalCore::Incidence::TypeJournal ) { summary = i18nc( "@item", "Note: %1", i->summary() ); } else { summary = i->summary(); } interface()->openTodoEditor( summary, i->description(), QStringList() ); return; } // else fall through to text decoding } } if ( md->hasText() ) { QString text = md->text(); interface()->openTodoEditor( text ); return; } if ( KPIM::MailList::canDecode( md ) ) { KPIM::MailList mails = KPIM::MailList::fromMimeData( md ); event->accept(); if ( mails.count() != 1 ) { KMessageBox::sorry( core(), i18nc( "@info", "Dropping multiple mails is not supported." ) ); } else { KPIM::MailSummary mail = mails.first(); QString txt = i18nc( "@item", "From: %1\nTo: %2\nSubject: %3", mail.from(), mail.to(), mail.subject() ); QString uri = QLatin1String( "kmail:" ) + QString::number( mail.serialNumber() ) + '/' + mail.messageId(); KTemporaryFile tf; tf.setAutoRemove( true ); tf.write( event->encodedData( "message/rfc822" ) ); interface()->openTodoEditor( i18nc( "@item", "Mail: %1", mail.subject() ), txt, uri, tf.fileName(), QStringList(), "message/rfc822" ); tf.close(); } return; } kWarning() << QString( "Cannot handle drop events of type '%1'." ).arg( event->format() ); }
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 ); } } }