[Pkg-owncloud-commits] [qtkeychain] 83/115: Store enum values as string

Sandro Knauß hefee-guest at moszumanska.debian.org
Sat Mar 15 19:25:47 UTC 2014


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

hefee-guest pushed a commit to branch master
in repository qtkeychain.

commit 29c8a74dcfdb4953a6feb89b47d06379636ed3e6
Author: Frank Osterfeld <osterfeld at kde.org>
Date:   Mon Nov 11 20:01:22 2013 +0100

    Store enum values as string
    
    Do not rely on int value and casting back ints to enum values.
    Also actually set the data type accordingly in ReadPasswordJob.
---
 keychain_dbus.cpp | 41 ++++++++++++++++++++++++++++++++++++-----
 keychain_p.h      |  4 ++++
 2 files changed, 40 insertions(+), 5 deletions(-)

diff --git a/keychain_dbus.cpp b/keychain_dbus.cpp
index f415cd2..db711b7 100644
--- a/keychain_dbus.cpp
+++ b/keychain_dbus.cpp
@@ -251,11 +251,14 @@ void ReadPasswordJobPrivate::fallbackOnError(const QDBusError& err )
 {
     QScopedPointer<QSettings> local( !q->settings() ? new QSettings( q->service() ) : 0 );
     QSettings* actual = q->settings() ? q->settings() : local.data();
-    WritePasswordJobPrivate::Mode mode;
 
     if ( q->insecureFallback() && actual->contains( dataKey( key ) ) ) {
 
-        mode = (WritePasswordJobPrivate::Mode)actual->value( typeKey( key ) ).toInt();
+        const WritePasswordJobPrivate::Mode mode = WritePasswordJobPrivate::stringToMode( actual->value( typeKey( key ) ).toString() );
+        if (mode == WritePasswordJobPrivate::Binary)
+           dataType = Binary;
+        else
+            dataType = Text;
         data = actual->value( dataKey( key ) ).toByteArray();
 
         q->emitFinished();
@@ -273,7 +276,6 @@ void ReadPasswordJobPrivate::kwalletOpenFinished( QDBusPendingCallWatcher* watch
 
     QScopedPointer<QSettings> local( !q->settings() ? new QSettings( q->service() ) : 0 );
     QSettings* actual = q->settings() ? q->settings() : local.data();
-    WritePasswordJobPrivate::Mode mode;
 
     if ( reply.isError() ) {
         fallbackOnError( reply.error() );
@@ -285,7 +287,7 @@ void ReadPasswordJobPrivate::kwalletOpenFinished( QDBusPendingCallWatcher* watch
         // Do the migration
 
         data = actual->value( dataKey( key ) ).toByteArray();
-        mode = (WritePasswordJobPrivate::Mode)actual->value( typeKey( key ) ).toInt();
+        const WritePasswordJobPrivate::Mode mode = WritePasswordJobPrivate::stringToMode( actual->value( typeKey( key ) ).toString() );
         actual->remove( key );
 
         q->emitFinished();
@@ -417,6 +419,35 @@ void WritePasswordJobPrivate::scheduledStart() {
     }
 }
 
+QString WritePasswordJobPrivate::modeToString(Mode m)
+{
+    switch (m) {
+    case Delete:
+        return QLatin1String("Delete");
+    case Text:
+        return QLatin1String("Text");
+    case Binary:
+        return QLatin1String("Binary");
+    }
+
+    Q_ASSERT_X(false, Q_FUNC_INFO, "Unhandled Mode value");
+    return QString();
+}
+
+WritePasswordJobPrivate::Mode WritePasswordJobPrivate::stringToMode(const QString& s)
+{
+    if (s == QLatin1String("Delete") || s == QLatin1String("0"))
+        return Delete;
+    if (s == QLatin1String("Text") || s == QLatin1String("1"))
+        return Text;
+    if (s == QLatin1String("Binary") || s == QLatin1String("2"))
+        return Binary;
+
+    qCritical("Unexpected mode string '%1'", qPrintable(s));
+
+    return Text;
+}
+
 void WritePasswordJobPrivate::fallbackOnError(const QDBusError &err)
 {
     QScopedPointer<QSettings> local( !q->settings() ? new QSettings( q->service() ) : 0 );
@@ -435,7 +466,7 @@ void WritePasswordJobPrivate::fallbackOnError(const QDBusError &err)
         return;
    }
 
-    actual->setValue( QString::fromLatin1( "%1/type" ).arg( key ), (int)mode );
+    actual->setValue( QString::fromLatin1( "%1/type" ).arg( key ), mode );
     if ( mode == Text )
         actual->setValue( QString::fromLatin1( "%1/data" ).arg( key ), textData.toUtf8() );
     else if ( mode == Binary )
diff --git a/keychain_p.h b/keychain_p.h
index 34cc165..95946a0 100644
--- a/keychain_p.h
+++ b/keychain_p.h
@@ -97,6 +97,10 @@ public:
         Text,
         Binary
     };
+
+    static QString modeToString(Mode m);
+    static Mode stringToMode(const QString& s);
+
     WritePasswordJob* const q;
     Mode mode;
     QString key;

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



More information about the Pkg-owncloud-commits mailing list