[Telepathy-commits] [telepathy-qt4/master] Moved ManagerFile::variantFromDBusSignature to ManagerFile::variantTypeFromDBusSignature.

Andre Moreira Magalhaes (andrunko) andre.magalhaes at collabora.co.uk
Tue Jan 6 05:03:19 PST 2009


Note: This method should be moved to an utils class of some sort.
---
 TelepathyQt4/Client/connection-manager.cpp |    2 +-
 TelepathyQt4/Client/connection-manager.h   |    4 +-
 TelepathyQt4/manager-file.cpp              |  134 +++++++++++++++-------------
 TelepathyQt4/manager-file.h                |    3 +-
 4 files changed, 75 insertions(+), 68 deletions(-)

diff --git a/TelepathyQt4/Client/connection-manager.cpp b/TelepathyQt4/Client/connection-manager.cpp
index 487ac4c..7fc98ff 100644
--- a/TelepathyQt4/Client/connection-manager.cpp
+++ b/TelepathyQt4/Client/connection-manager.cpp
@@ -48,7 +48,7 @@ ProtocolParameter::ProtocolParameter(const QString &name,
                                      Telepathy::ConnMgrParamFlag flags)
     : mName(name),
       mDBusSignature(dbusSignature),
-      mType(ManagerFile::variantFromDBusSignature("", dbusSignature.signature())),
+      mType(ManagerFile::variantTypeFromDBusSignature(dbusSignature.signature())),
       mDefaultValue(defaultValue),
       mFlags(flags)
 {
diff --git a/TelepathyQt4/Client/connection-manager.h b/TelepathyQt4/Client/connection-manager.h
index e1ce22a..a7ea653 100644
--- a/TelepathyQt4/Client/connection-manager.h
+++ b/TelepathyQt4/Client/connection-manager.h
@@ -74,7 +74,7 @@ public:
 
     QString name() const { return mName; }
     QDBusSignature dbusSignature() const { return mDBusSignature; }
-    QVariant type() const { return mType; }
+    QVariant::Type type() const { return mType; }
     QVariant defaultValue() const { return mDefaultValue; }
 
     bool isRequired() const;
@@ -92,7 +92,7 @@ private:
     Private *mPriv;
     QString mName;
     QDBusSignature mDBusSignature;
-    QVariant mType;
+    QVariant::Type mType;
     QVariant mDefaultValue;
     Telepathy::ConnMgrParamFlag mFlags;
 };
diff --git a/TelepathyQt4/manager-file.cpp b/TelepathyQt4/manager-file.cpp
index 9414da7..7ded867 100644
--- a/TelepathyQt4/manager-file.cpp
+++ b/TelepathyQt4/manager-file.cpp
@@ -52,6 +52,8 @@ struct ManagerFile::Private
     ParamSpec *getParameter(const QString &protocol, const QString &paramName);
     QStringList protocols() const;
     ParamSpecList parameters(const QString &protocol) const;
+
+    QVariant valueForKey(const QString &value, const QString &signature);
 };
 
 ManagerFile::Private::Private(const QString &cmName)
@@ -160,8 +162,7 @@ bool ManagerFile::Private::parse(const QString &fileName)
 
                     /* map based on the param dbus signature, otherwise use
                      * QString */
-                    QVariant value = ManagerFile::variantFromDBusSignature(keyFile.value(param),
-                                                                           spec->signature);
+                    QVariant value = valueForKey(keyFile.value(param), spec->signature);
                     spec->defaultValue = QDBusVariant(value);
                 }
             }
@@ -211,6 +212,71 @@ ParamSpecList ManagerFile::Private::parameters(const QString &protocol) const
     return protocolParams.value(protocol);
 }
 
+QVariant ManagerFile::Private::valueForKey(const QString &value,
+                                           const QString &signature)
+{
+    QVariant::Type type = ManagerFile::variantTypeFromDBusSignature(signature);
+
+    if (type == QVariant::Invalid) {
+        return QVariant(type);
+    }
+
+    switch (type) {
+        case QVariant::Bool:
+            if (value.toLower() == "true" || value == "1") {
+                return QVariant(true);
+            }
+            else {
+                return QVariant(false);
+            }
+            break;
+        case QVariant::Int:
+            return QVariant(value.toInt());
+        case QVariant::UInt:
+            return QVariant(value.toUInt());
+        case QVariant::LongLong:
+            return QVariant(value.toLongLong());
+        case QVariant::ULongLong:
+            return QVariant(value.toULongLong());
+        case QVariant::Double:
+            return QVariant(value.toDouble());
+        case QVariant::StringList:
+            {
+                // split string in a list of strings escaping \; to ;
+                QStringList result;
+                QString v;
+                int i = 0;
+                int len = value.length();
+                QChar lastch, ch;
+                while (i < len) {
+                    ch = value.at(i++);
+                    if (ch == ';') {
+                        if (lastch == '\\') {
+                            v += ';';
+                        }
+                        else {
+                            result << v;
+                            v = QString();
+                        }
+                    }
+                    else if (ch != '\\') {
+                        v += ch;
+                    }
+                    lastch = ch;
+                }
+
+                if (ch != ';') {
+                    result << v;
+                }
+
+                return QVariant(result);
+            }
+        default:
+            break;
+    }
+    return QVariant(value);
+}
+
 
 /**
  * \class ManagerFile
@@ -271,8 +337,7 @@ ParamSpecList ManagerFile::parameters(const QString &protocol) const
     return mPriv->parameters(protocol);
 }
 
-QVariant ManagerFile::variantFromDBusSignature(const QString &value,
-                                               const QString &signature)
+QVariant::Type ManagerFile::variantTypeFromDBusSignature(const QString &signature)
 {
     QVariant::Type type;
     if (signature == "b")
@@ -292,66 +357,9 @@ QVariant ManagerFile::variantFromDBusSignature(const QString &value,
     else if (signature == "s" || signature == "o")
         type = QVariant::String;
     else
-        return QVariant(QVariant::Invalid);
-
-    if (value.isEmpty()) {
-        return QVariant(type);
-    }
+        type = QVariant::Invalid;
 
-    switch (type) {
-        case QVariant::Bool:
-            if (value.toLower() == "true" || value == "1") {
-                return QVariant(true);
-            }
-            else {
-                return QVariant(false);
-            }
-            break;
-        case QVariant::Int:
-            return QVariant(value.toInt());
-        case QVariant::UInt:
-            return QVariant(value.toUInt());
-        case QVariant::LongLong:
-            return QVariant(value.toLongLong());
-        case QVariant::ULongLong:
-            return QVariant(value.toULongLong());
-        case QVariant::Double:
-            return QVariant(value.toDouble());
-        case QVariant::StringList:
-            {
-                // split string in a list of strings escaping \; to ;
-                QStringList result;
-                QString v;
-                int i = 0;
-                int len = value.length();
-                QChar lastch, ch;
-                while (i < len) {
-                    ch = value.at(i++);
-                    if (ch == ';') {
-                        if (lastch == '\\') {
-                            v += ';';
-                        }
-                        else {
-                            result << v;
-                            v = QString();
-                        }
-                    }
-                    else if (ch != '\\') {
-                        v += ch;
-                    }
-                    lastch = ch;
-                }
-
-                if (ch != ';') {
-                    result << v;
-                }
-
-                return QVariant(result);
-            }
-        default:
-            break;
-    }
-    return QVariant(value);
+    return type;
 }
 
 }
diff --git a/TelepathyQt4/manager-file.h b/TelepathyQt4/manager-file.h
index 9669fdd..1057db3 100644
--- a/TelepathyQt4/manager-file.h
+++ b/TelepathyQt4/manager-file.h
@@ -43,8 +43,7 @@ public:
     QStringList protocols() const;
     ParamSpecList parameters(const QString &protocol) const;
 
-    static QVariant variantFromDBusSignature(const QString &value,
-                                             const QString &signature);
+    static QVariant::Type variantTypeFromDBusSignature(const QString &signature);
 
 private:
     Q_DISABLE_COPY(ManagerFile);
-- 
1.5.6.5




More information about the Telepathy-commits mailing list