24 #include <QtCore/QLatin1Char>
25 #include <QtCore/QCoreApplication>
31 class KAutoSaveFilePrivate
34 KAutoSaveFilePrivate()
36 managedFileNameChanged(false)
42 static const int padding;
43 bool managedFileNameChanged;
46 const int KAutoSaveFilePrivate::padding = 8;
48 QString KAutoSaveFilePrivate::tempFileName()
50 static const int maxNameLength = FILENAME_MAX;
53 QString protocol(managedFile.protocol());
54 QString path(managedFile.directory());
55 QString name(managedFile.fileName());
60 path = path.left(maxNameLength - padding - name.size() - protocol.size() - 9);
65 name += junk.right(3) + protocol + QLatin1Char(
'_');
68 return QString::fromLatin1(KUrl::toPercentEncoding(name));
73 d(new KAutoSaveFilePrivate)
81 d(new KAutoSaveFilePrivate)
94 return d->managedFile;
101 d->managedFile = filename;
102 d->managedFileNameChanged =
true;
107 if (d->lock && d->lock->isLocked()) {
109 if (!fileName().isEmpty()) {
117 if (d->managedFile ==
KUrl()) {
122 if (d->managedFileNameChanged) {
124 QCoreApplication::instance()->applicationName()
125 + QChar::fromLatin1(
'/')
129 tempFile = fileName();
132 d->managedFileNameChanged =
false;
134 setFileName(tempFile);
138 d->lock =
new KLockFile(tempFile + QString::fromLatin1(
".lock"));
139 if (d->lock->isLocked()) {
144 d->lock->setStaleTime(60);
160 QString appName(applicationName);
161 if (appName.isEmpty()) {
162 appName = QCoreApplication::instance()->applicationName();
168 return QList<KAutoSaveFile *>();
173 appName + QChar::fromLatin1(
'/') +
174 url + QChar::fromLatin1(
'*'),
177 QList<KAutoSaveFile *> list;
181 foreach(
const QString &file, files) {
182 if (file.endsWith(QLatin1String(
".lock")))
186 asFile->setFileName(file);
188 asFile->d->managedFileNameChanged =
false;
199 QString appName(applicationName);
200 if (appName.isEmpty()) {
201 appName = QCoreApplication::instance()->applicationName();
207 QList<KAutoSaveFile *> list;
211 if (file.endsWith(QLatin1String(
".lock")))
213 const QString sep = file.right(3);
214 file.chop(KAutoSaveFilePrivate::padding);
216 int sepPos = file.indexOf(sep);
217 int pathPos = file.indexOf(QChar::fromLatin1(
'_'), sepPos);
219 name.
setProtocol(file.mid(sepPos + 3, pathPos - sep.size() - 3));
220 name.
setPath(KUrl::fromPercentEncoding(file.right(pathPos - 1).toLatin1()));
221 name.
addPath(KUrl::fromPercentEncoding(file.left(sepPos).toLatin1()));
225 asFile->setFileName(file);
227 asFile->d->managedFileNameChanged =
false;
234 #include "kautosavefile.moc"