You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.6 KiB
67 lines
1.6 KiB
13 years ago
|
/*! @file
|
||
|
|
||
|
@id $Id$
|
||
|
*/
|
||
|
// 1 2 3 4 5 6 7 8
|
||
|
// 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
||
|
|
||
|
#ifndef __TEMPORARYFILE_HXX__
|
||
|
#define __TEMPORARYFILE_HXX__
|
||
|
|
||
|
#include <QtCore/QTemporaryFile>
|
||
|
#include <QtCore/QRegExp>
|
||
|
|
||
|
#include <QtCore/QDebug>
|
||
|
|
||
|
class TemporaryFile: public QFile {
|
||
|
Q_OBJECT;
|
||
|
|
||
|
public:
|
||
|
|
||
|
TemporaryFile(QString filename): _autoRemove(false) {
|
||
|
if (exists(filename)) {
|
||
|
QString prefix(filename);
|
||
|
QString suffix(filename);
|
||
|
prefix.remove(QRegExp("\\.[^.]*$"));
|
||
|
suffix.remove(QRegExp("^.*\\."));
|
||
|
qDebug()<<"filename"<<filename
|
||
|
<<"prefix"<<prefix
|
||
|
<<"suffix"<<suffix;
|
||
|
if (prefix==suffix) suffix.clear();
|
||
|
for (unsigned long i(0); i<10000; ++i)
|
||
|
if (!exists(filename =
|
||
|
QString("%1_%2.%3")
|
||
|
.arg(prefix)
|
||
|
.arg(i, 4, 10, QChar('0'))
|
||
|
.arg(suffix))) break;
|
||
|
}
|
||
|
qDebug()<<"filename"<<filename;
|
||
|
setFileName(filename);
|
||
|
}
|
||
|
|
||
|
bool open() {
|
||
|
return QFile::open(QIODevice::ReadWrite);
|
||
|
}
|
||
|
|
||
|
void setAutoRemove(bool flag) {
|
||
|
_autoRemove = flag;
|
||
|
}
|
||
|
|
||
|
~TemporaryFile() {
|
||
|
qDebug()<<"_autoRemove"<<_autoRemove
|
||
|
<<"exists()"<<exists();
|
||
|
if (_autoRemove && exists()) {
|
||
|
qDebug()<<"Remove: "<<fileName();
|
||
|
remove();
|
||
|
} else {
|
||
|
qDebug()<<"Don't remove: "<<fileName();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
|
||
|
bool _autoRemove;
|
||
|
};
|
||
|
|
||
|
#endif
|