diff base/TempDirectory.cpp @ 170:b23eea68357e

* flesh out StorageAdviser
author Chris Cannam
date Tue, 26 Sep 2006 12:58:12 +0000
parents 4b2ea82fd0ed
children 1d656dcda8ef
line wrap: on
line diff
--- a/base/TempDirectory.cpp	Mon Sep 25 20:32:44 2006 +0000
+++ b/base/TempDirectory.cpp	Tue Sep 26 12:58:12 2006 +0000
@@ -20,6 +20,7 @@
 #include <QDir>
 #include <QFile>
 #include <QMutexLocker>
+#include <QSettings>
 
 #include <iostream>
 #include <cassert>
@@ -58,16 +59,23 @@
     
     if (m_tmpdir != "") return m_tmpdir;
 
+    QSettings settings;
+    settings.beginGroup("TempDirectory");
+    QString svDirParent = settings.value("create-in", "$HOME").toString();
+    settings.endGroup();
+
+    svDirParent.replace("$HOME", QDir::home().absolutePath());
+
     QString svDirBase = ".sv1";
-    QString svDir = QDir::home().filePath(svDirBase);
+    QString svDir = QDir(svDirParent).filePath(svDirBase);
     if (!QFileInfo(svDir).exists()) {
-        if (!QDir::home().mkdir(svDirBase)) {
-            throw DirectoryCreationFailed(QString("%1 directory in $HOME")
-                                          .arg(svDirBase));
+        if (!QDir(svDirParent).mkdir(svDirBase)) {
+            throw DirectoryCreationFailed(QString("%1 directory in %2")
+                                          .arg(svDirBase).arg(svDirParent));
         }
     } else if (!QFileInfo(svDir).isDir()) {
-        throw DirectoryCreationFailed(QString("$HOME/%1 is not a directory")
-                                      .arg(svDirBase));
+        throw DirectoryCreationFailed(QString("%1/%2 is not a directory")
+                                      .arg(svDirParent).arg(svDirBase));
     }
 
     cleanupAbandonedDirectories(svDir);