[Pkg-owncloud-commits] [owncloud-client] 03/38: cfg migration: Add a account migrator class.

Sandro Knauß hefee-guest at moszumanska.debian.org
Fri Sep 5 20:20:53 UTC 2014


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch sid
in repository owncloud-client.

commit e795d04f30e80d49971bcfe76c8ca7d1ce5f13e8
Author: Klaas Freitag <freitag at owncloud.com>
Date:   Thu Jun 12 16:45:21 2014 +0200

    cfg migration: Add a account migrator class.
---
 src/CMakeLists.txt             |  1 +
 src/mirall/accountmigrator.cpp | 86 ++++++++++++++++++++++++++++++++++++++++++
 src/mirall/accountmigrator.h   | 39 +++++++++++++++++++
 3 files changed, 126 insertions(+)

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 669854f..e07325d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -105,6 +105,7 @@ set(libsync_SRCS
     mirall/clientproxy.cpp
     mirall/syncrunfilelog.cpp
     mirall/cookiejar.cpp
+    mirall/accountmigrator.cpp
     creds/dummycredentials.cpp
     creds/abstractcredentials.cpp
     creds/credentialsfactory.cpp
diff --git a/src/mirall/accountmigrator.cpp b/src/mirall/accountmigrator.cpp
new file mode 100644
index 0000000..c9af1b7
--- /dev/null
+++ b/src/mirall/accountmigrator.cpp
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) by Klaas Freitag <freitag at owncloud.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+#include "mirall/accountmigrator.h"
+#include "mirall/mirallconfigfile.h"
+#include "mirall/folderman.h"
+#include "mirall/theme.h"
+
+
+#include <QSettings>
+#include <QStringList>
+#include <QDir>
+#include <QFileInfo>
+
+namespace Mirall {
+
+// The purpose of this class is to migrate an existing account that
+// was set up with an unbranded client to an branded one.
+// The usecase is: Usually people try first with the community client,
+// later they maybe switch to a branded client. When they install the
+// branded client first, it should automatically pick the information
+// from the already configured account.
+
+AccountMigrator::AccountMigrator(QObject *parent) :
+    QObject(parent)
+{
+
+}
+
+// the list of folder definitions which are files in the directory "folders"
+// underneath the ownCloud configPath (with ownCloud as a last segment)
+// need to be copied to the themed path and adjusted.
+
+QStringList AccountMigrator::migrateFolderDefinitons()
+{
+    MirallConfigFile cfg;
+    QStringList re;
+
+    QString themePath = cfg.configPath();
+    // create the original ownCloud config path out of the theme path
+    // by removing the theme folder and append ownCloud.
+    QString oCPath = themePath;
+    if( oCPath.endsWith(QLatin1Char('/')) ) {
+        oCPath.truncate( oCPath.length()-1 );
+    }
+    oCPath = oCPath.left( oCPath.lastIndexOf('/'));
+
+    themePath += QLatin1String( "folders");
+    oCPath += QLatin1String( "ownCloud/folders" );
+
+    // get a dir listing of the ownCloud folder definitions and copy
+    // them over to the theme dir
+    QDir oCDir(oCPath);
+    oCDir.setFilter( QDir::Files );
+    QStringList files = oCDir.entryList();
+
+    foreach( const QString& file, files ) {
+        QString escapedAlias = FolderMan::instance()->escapeAlias(file);
+        QString themeFile = themePath + QDir::separator() + file;
+        QString oCFile = oCPath+QDir::separator()+file;
+        if( QFile::copy( oCFile, themeFile ) ) {
+            re.append(file);
+
+            // fix the connection entry of the folder definition
+            QSettings settings(themeFile, QSettings::IniFormat);
+            settings.beginGroup( escapedAlias );
+            settings.setValue(QLatin1String("connection"),  Theme::instance()->appName());
+            settings.sync();
+        }
+    }
+
+    return re;
+
+}
+
+}
diff --git a/src/mirall/accountmigrator.h b/src/mirall/accountmigrator.h
new file mode 100644
index 0000000..1d3e971
--- /dev/null
+++ b/src/mirall/accountmigrator.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) by Klaas Freitag <freitag at owncloud.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+#ifndef ACCOUNTMIGRATOR_H
+#define ACCOUNTMIGRATOR_H
+
+#include <QObject>
+
+namespace Mirall {
+
+class AccountMigrator : public QObject
+{
+    Q_OBJECT
+public:
+    explicit AccountMigrator(QObject *parent = 0);
+
+    /**
+     * @brief migrateFolderDefinitons - migrate the folder definition files
+     * @return the list of migrated folder definitions
+     */
+    QStringList migrateFolderDefinitons();
+signals:
+
+public slots:
+
+};
+}
+
+#endif // ACCOUNTMIGRATOR_H

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list