summaryrefslogtreecommitdiff
path: root/src/util/migrationutil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/migrationutil.cpp')
-rw-r--r--src/util/migrationutil.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/util/migrationutil.cpp b/src/util/migrationutil.cpp
new file mode 100644
index 0000000..072b750
--- /dev/null
+++ b/src/util/migrationutil.cpp
@@ -0,0 +1,92 @@
+/*********
+*
+* This file is part of BibleTime's source code, http://www.bibletime.info/.
+*
+* Copyright 1999-2008 by the BibleTime developers.
+* The BibleTime source code is licensed under the GNU General Public License version 2.0.
+*
+**********/
+
+#include "migrationutil.h"
+#include "directoryutil.h"
+#include "backend/config/cbtconfig.h"
+
+#include "swversion.h"
+
+#include <QMessageBox>
+#include <QSettings>
+
+
+using namespace util::filesystem;
+
+namespace util{
+
+void MigrationUtil::checkMigration(){
+ if (CBTConfig::get(CBTConfig::bibletimeVersion) != BT_VERSION)
+ {
+ sword::SWVersion lastVersion(CBTConfig::get(CBTConfig::bibletimeVersion).toUtf8());
+ //lastVersion will be 0.0, if it was an old KDE install,
+ //because the config could not be found yet
+ if (lastVersion < sword::SWVersion("1.7.0") )
+ {
+ tryMigrationFromKDE3(); //
+ }
+ }
+}
+
+//Migration code for KDE 4 port, moves from old config dir to ~/.bibletime/
+void MigrationUtil::tryMigrationFromKDE3(){
+ //List of potential old KDE directories to load data from.
+ QStringList searchDirs;
+ searchDirs << "/.kde" << "/.kde3" << "/.kde3.5";
+ searchDirs << "/.kde3.4" << "/.kde3.3" << "/.kde3.2";
+ searchDirs << "/.kde3.1" << "/.kde3.0";
+
+ foreach (QString searchDir, searchDirs){
+ QString currSearch = QDir::homePath() + searchDir;
+ QDir searchHome(currSearch);
+ QFile oldRc(currSearch + "/share/config/bibletimerc");
+ //Copy our old bibletimerc into the new KDE4 directory.
+ QString newRcLoc = DirectoryUtil::getUserBaseDir().absolutePath() + "/bibletimerc";
+ QFile newRc(newRcLoc);
+
+ //Migrate only if the old config exists and the new doesn't
+ if (oldRc.exists() && !newRc.exists()){
+ QMessageBox msg (QMessageBox::Question, QObject::tr("Settings Migration"),
+ QObject::tr("It appears you have a BibleTime configuration from KDE 3 stored in %1, and you have not migrated it to this version. Would you like to import it?").arg(currSearch), QMessageBox::Yes | QMessageBox::No);
+ int result = msg.exec();
+ if (result != QMessageBox::Yes){
+ break;
+ }
+ oldRc.copy(newRcLoc);
+ QFile oldBookmarks(currSearch + "/share/apps/bibletime/bookmarks.xml");
+ if (oldBookmarks.exists()){
+ QString newBookmarksLoc = DirectoryUtil::getUserBaseDir().absolutePath() + "/" + "bookmarks.xml";
+ QFile newBookmarks(newBookmarksLoc);
+ newBookmarks.remove();
+ oldBookmarks.copy(newBookmarksLoc);
+ }
+ QDir sessionDir(currSearch + "/share/apps/bibletime/sessions");
+ if (sessionDir.exists()){
+ DirectoryUtil::copyRecursive(
+ sessionDir.absolutePath(),
+ DirectoryUtil::getUserSessionsDir().absolutePath());
+ }
+ else{
+ QDir oldSessionDir(currSearch + "/share/apps/bibletime/profiles");
+ if (oldSessionDir.exists()){
+ DirectoryUtil::copyRecursive(
+ oldSessionDir.absolutePath(),
+ DirectoryUtil::getUserSessionsDir().absolutePath());
+ }
+ }
+ //We found at least a config file, so we are done
+ //searching for migration data.
+ break;
+ }
+ }
+ CBTConfig::syncConfig();
+}
+
+}
+