コード例 #1
0
ファイル: FileDialog.cpp プロジェクト: Krabi/idkaart_public
bool FileDialog::folderIsWritable( const QString &folder )
{
#ifdef Q_OS_WIN
	return QTemporaryFile( folder + "/.XXXXXX" ).open();
#else
	return QFileInfo( folder ).isWritable();
#endif
}
コード例 #2
0
ファイル: Common.cpp プロジェクト: Krabi/idkaart_public
bool Common::canWrite( const QString &filename )
{
#ifdef Q_OS_WIN32
	return QTemporaryFile( QFileInfo( filename ).absolutePath().append( "/XXXXXX" ) ).open();
#else
	QFileInfo file( filename );
	return file.isFile() ? file.isWritable() : QFileInfo( file.absolutePath() ).isWritable();
#endif
}
コード例 #3
0
ファイル: iofactory.cpp プロジェクト: martinrotter/rssguard
bool IOFactory::isFolderWritable(const QString& folder) {
  QString real_file = folder;

  if (!real_file.endsWith(QDir::separator())) {
    real_file += QDir::separator();
  }

  real_file += "test-permissions-file";
  return QTemporaryFile(real_file).open();
}
コード例 #4
0
ファイル: FileDialog.cpp プロジェクト: Krabi/idkaart_public
bool FileDialog::canWrite( const QString &filename )
{
	QFileInfo i( filename );
	if( i.isFile() )
		return QFile( filename ).open( QFile::WriteOnly|QFile::Append );
#ifdef Q_OS_WIN
	return QTemporaryFile( i.absolutePath().append( "/.XXXXXX" ) ).open();
#else
	return QFileInfo( i.absolutePath() ).isWritable();
#endif
}
コード例 #5
0
ファイル: config.cpp プロジェクト: Fale/qtmoko
/*!
 */
QString Config::findFile(const Location& location,
                         const QStringList& files,
                         const QStringList& dirs,
                         const QString& fileName,
                         QString& userFriendlyFilePath)
{
    if (fileName.isEmpty() || fileName.startsWith(QLatin1Char('/'))) {
        userFriendlyFilePath = fileName;
        return fileName;
    }

    QFileInfo fileInfo;
    QStringList components = fileName.split(QLatin1Char('?'));
    QString firstComponent = components.first();

    QStringList::ConstIterator f = files.begin();
    while (f != files.end()) {
	if (*f == firstComponent ||
            (*f).endsWith(QLatin1Char('/') + firstComponent)) {
	    fileInfo.setFile(*f);
	    if (!fileInfo.exists())
		location.fatal(tr("File '%1' does not exist").arg(*f));
	    break;
	}
	++f;
    }

    if (fileInfo.fileName().isEmpty()) {
	QStringList::ConstIterator d = dirs.begin();
	while (d != dirs.end()) {
	    fileInfo.setFile(QDir(*d), firstComponent);
	    if (fileInfo.exists()) {
		break;
            }
	    ++d;
	}
    }

    userFriendlyFilePath = QString();
    if (!fileInfo.exists())
	    return QString();

    QStringList::ConstIterator c = components.begin();
    for (;;) {
	bool isArchive = (c != components.end() - 1);
	ArchiveExtractor *extractor = 0;
	QString userFriendly = *c;

	if (isArchive) {
	    extractor = ArchiveExtractor::extractorForFileName(userFriendly);
        }

	if (extractor == 0) {
	    Uncompressor *uncompressor =
		    Uncompressor::uncompressorForFileName(userFriendly);
	    if (uncompressor != 0) {
		QString fileNameWithCorrectExtension =
			uncompressor->uncompressedFilePath(
				fileInfo.filePath());
		QString uncompressed = uncompressedFiles[fileInfo.filePath()];
		if (uncompressed.isEmpty()) {
		    uncompressed =
                        QTemporaryFile(fileInfo.filePath()).fileName();
		    uncompressor->uncompressFile(location,
                                                 fileInfo.filePath(),
                                                 uncompressed);
		    uncompressedFiles[fileInfo.filePath()] = uncompressed;
		}
		fileInfo.setFile(uncompressed);

		if (isArchive) {
		    extractor = ArchiveExtractor::extractorForFileName(
					fileNameWithCorrectExtension);
		}
                else {
		    userFriendly = fileNameWithCorrectExtension;
		}
	    }
	}
	userFriendlyFilePath += userFriendly;

	if (isArchive) {
	    if (extractor == 0)
		location.fatal(tr("Unknown archive type '%1'")
				.arg(userFriendlyFilePath));
	    QString extracted = extractedDirs[fileInfo.filePath()];
	    if (extracted.isEmpty()) {
		extracted = QTemporaryFile(fileInfo.filePath()).fileName();
		if (!QDir().mkdir(extracted))
		    location.fatal(tr("Cannot create temporary directory '%1'")
				    .arg(extracted));
		extractor->extractArchive(location, fileInfo.filePath(),
					   extracted);
		extractedDirs[fileInfo.filePath()] = extracted;
	    }
	    ++c;
	    fileInfo.setFile(QDir(extracted), *c);
	}
        else {
	    break;
	}
	userFriendlyFilePath += "?";
    }
    return fileInfo.filePath();
}
コード例 #6
0
ファイル: gpsimprocessor.cpp プロジェクト: appillai/ktechlab
QString GpsimProcessor::generateSymbolFile( const QString &fileName, QObject *receiver, const char *successMember, const char * failMember )
{
	if ( !isValidProgramFile(fileName) )
		return QString::null;

	QString extension = fileName.right(
        fileName.length() - fileName.lastIndexOf('.') - 1
        ).toLower();

	if ( extension == "cod" )
	{
		QTimer::singleShot( 0, receiver, successMember );
		return fileName;
	}
	if ( extension == "hex" )
	{
		QTimer::singleShot( 0, receiver, successMember );
		// We've already checked for the existance of the ".cod" file in GpsimProcessor::isValidProgramFile
		return QString(fileName).replace(".hex",".cod");
	}

	else if ( extension == "basic" || extension == "microbe" )
	{
		compileMicrobe( fileName, receiver, successMember, failMember );
		return QString(fileName).replace( "."+extension, ".cod" );
	}
	else if ( extension == "flowcode" )
	{
		const QString hexFile = QTemporaryFile( "tmpXXXXXX.hex" ).fileName();

		ProcessOptions o;
		o.b_addToProject = false;
		o.setTargetFile( hexFile );
		o.setInputFiles( QStringList(fileName) );
		o.setMethod( ProcessOptions::Method::Forget );
		o.setProcessPath( ProcessOptions::ProcessPath::FlowCode_Program );

		ProcessChain * pc = new ProcessChain(o);
		if (receiver)
		{
			if (successMember)
				connect( pc, SIGNAL(successful()), receiver, successMember );
			if (failMember)
				connect( pc, SIGNAL(failed()), receiver, failMember );
		}

		return QString(hexFile).replace( ".hex", ".cod" );
	}
	else if ( extension == "asm" )
	{
		ProcessOptions o;
		o.b_addToProject = false;
		o.setTargetFile( QString(fileName).replace(".asm",".hex"));
		o.setInputFiles(QStringList(fileName));
		o.setMethod( ProcessOptions::Method::Forget );
		o.setProcessPath( ProcessOptions::ProcessPath::path( ProcessOptions::guessMediaType(fileName), ProcessOptions::ProcessPath::Program ) );

		ProcessChain *pc = new ProcessChain(o);
		if (receiver)
		{
			if (successMember)
				connect( pc, SIGNAL(successful()), receiver, successMember );
			if (failMember)
				connect( pc, SIGNAL(failed()), receiver, failMember );
		}

		return QString(fileName).replace(".asm",".cod");
	}
	else if ( extension == "c" )
	{
		ProcessOptions o;
		o.b_addToProject = false;
		o.setTargetFile( QString(fileName).replace(".c",".hex"));
		o.setInputFiles(QStringList(fileName));
		o.setMethod( ProcessOptions::Method::Forget );
		o.setProcessPath( ProcessOptions::ProcessPath::C_Program );

		ProcessChain *pc = new ProcessChain(o);
		if (receiver)
		{
			if (successMember)
				connect( pc, SIGNAL(successful()), receiver, successMember );
			if (failMember)
				connect( pc, SIGNAL(failed()), receiver, failMember );
		}

		return QString(fileName).replace(".c",".cod");
	}

	if ( failMember )
		QTimer::singleShot( 0, receiver, failMember );
	return QString::null;
}