[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 ¶mName);
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