comparison base/TempDirectory.cpp @ 170:b23eea68357e

* flesh out StorageAdviser
author Chris Cannam
date Tue, 26 Sep 2006 12:58:12 +0000
parents 4b2ea82fd0ed
children 1d656dcda8ef
comparison
equal deleted inserted replaced
169:603991c63ff6 170:b23eea68357e
18 #include "Exceptions.h" 18 #include "Exceptions.h"
19 19
20 #include <QDir> 20 #include <QDir>
21 #include <QFile> 21 #include <QFile>
22 #include <QMutexLocker> 22 #include <QMutexLocker>
23 #include <QSettings>
23 24
24 #include <iostream> 25 #include <iostream>
25 #include <cassert> 26 #include <cassert>
26 27
27 TempDirectory * 28 TempDirectory *
56 { 57 {
57 QMutexLocker locker(&m_mutex); 58 QMutexLocker locker(&m_mutex);
58 59
59 if (m_tmpdir != "") return m_tmpdir; 60 if (m_tmpdir != "") return m_tmpdir;
60 61
62 QSettings settings;
63 settings.beginGroup("TempDirectory");
64 QString svDirParent = settings.value("create-in", "$HOME").toString();
65 settings.endGroup();
66
67 svDirParent.replace("$HOME", QDir::home().absolutePath());
68
61 QString svDirBase = ".sv1"; 69 QString svDirBase = ".sv1";
62 QString svDir = QDir::home().filePath(svDirBase); 70 QString svDir = QDir(svDirParent).filePath(svDirBase);
63 if (!QFileInfo(svDir).exists()) { 71 if (!QFileInfo(svDir).exists()) {
64 if (!QDir::home().mkdir(svDirBase)) { 72 if (!QDir(svDirParent).mkdir(svDirBase)) {
65 throw DirectoryCreationFailed(QString("%1 directory in $HOME") 73 throw DirectoryCreationFailed(QString("%1 directory in %2")
66 .arg(svDirBase)); 74 .arg(svDirBase).arg(svDirParent));
67 } 75 }
68 } else if (!QFileInfo(svDir).isDir()) { 76 } else if (!QFileInfo(svDir).isDir()) {
69 throw DirectoryCreationFailed(QString("$HOME/%1 is not a directory") 77 throw DirectoryCreationFailed(QString("%1/%2 is not a directory")
70 .arg(svDirBase)); 78 .arg(svDirParent).arg(svDirBase));
71 } 79 }
72 80
73 cleanupAbandonedDirectories(svDir); 81 cleanupAbandonedDirectories(svDir);
74 82
75 return createTempDirectoryIn(svDir); 83 return createTempDirectoryIn(svDir);