[Telepathy-commits] [telepathy-qt4/master] AbstractInterface: allow invalidation

Simon McVittie simon.mcvittie at collabora.co.uk
Thu Jan 22 05:41:44 PST 2009


---
 TelepathyQt4/Client/abstract-interface.cpp |   41 +++++++++++++++++++++++++++-
 TelepathyQt4/Client/abstract-interface.h   |   10 +++++++
 2 files changed, 50 insertions(+), 1 deletions(-)

diff --git a/TelepathyQt4/Client/abstract-interface.cpp b/TelepathyQt4/Client/abstract-interface.cpp
index e541bca..8d62661 100644
--- a/TelepathyQt4/Client/abstract-interface.cpp
+++ b/TelepathyQt4/Client/abstract-interface.cpp
@@ -28,16 +28,55 @@ namespace Telepathy
 namespace Client
 {
 
+struct AbstractInterface::Private
+{
+    Private();
+    QString mError;
+    QString mMessage;
+};
+
+AbstractInterface::Private::Private()
+    : mError(), mMessage()
+{
+}
+
 AbstractInterface::AbstractInterface(const QString &busName,
         const QString &path, const char *interface,
         const QDBusConnection &dbusConnection, QObject *parent)
     : QDBusAbstractInterface(busName, path, interface, dbusConnection, parent),
-      mPriv(0)
+      mPriv(new Private)
 {
 }
 
 AbstractInterface::~AbstractInterface()
 {
+    delete mPriv;
+}
+
+bool AbstractInterface::isValid() const
+{
+    return QDBusAbstractInterface::isValid() && mPriv->mError.isEmpty();
+}
+
+QString AbstractInterface::invalidationReason() const
+{
+    return mPriv->mError;
+}
+
+QString AbstractInterface::invalidationMessage() const
+{
+    return mPriv->mMessage;
+}
+
+void AbstractInterface::invalidate(Telepathy::Client::DBusProxy *proxy,
+        QString error, QString message)
+{
+    Q_ASSERT(!error.isEmpty());
+
+    if (mPriv->mError.isEmpty()) {
+        mPriv->mError = error;
+        mPriv->mMessage = message;
+    }
 }
 
 } // Client
diff --git a/TelepathyQt4/Client/abstract-interface.h b/TelepathyQt4/Client/abstract-interface.h
index de45eec..0102afb 100644
--- a/TelepathyQt4/Client/abstract-interface.h
+++ b/TelepathyQt4/Client/abstract-interface.h
@@ -32,6 +32,8 @@ namespace Telepathy
 namespace Client
 {
 
+class DBusProxy;
+
 class AbstractInterface : public QDBusAbstractInterface
 {
     Q_OBJECT
@@ -39,6 +41,14 @@ class AbstractInterface : public QDBusAbstractInterface
 public:
     virtual ~AbstractInterface();
 
+    bool isValid() const;
+    QString invalidationReason() const;
+    QString invalidationMessage() const;
+
+public Q_SLOTS:
+    void invalidate(Telepathy::Client::DBusProxy *proxy, QString error,
+            QString message);
+
 protected:
     AbstractInterface(const QString &busName, const QString &path,
             const char *interface, const QDBusConnection &connection,
-- 
1.5.6.5




More information about the Telepathy-commits mailing list