[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9

Maximiliano Curia maxy at moszumanska.debian.org
Mon May 9 09:08:09 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=47b8df5

The following commit has been merged in the master branch:
commit 47b8df5323cfbf285681aae9ef6886641ac00771
Author: Siddhartha Sahu <sh.siddhartha at gmail.com>
Date:   Thu Mar 20 21:10:53 2014 +0530

    Add PresenceManager for use from QML
    
    This adds a PresenceManager class to Declarative that can be used
    from QML to get and set global presence.
    
    REVIEW: 116880
---
 KTp/Declarative/qml-plugins.cpp |  5 ++-
 KTp/global-presence.cpp         | 82 +++++++++++++++++++++++++++++++++++++++++
 KTp/global-presence.h           | 29 +++++++++++++++
 3 files changed, 114 insertions(+), 2 deletions(-)

diff --git a/KTp/Declarative/qml-plugins.cpp b/KTp/Declarative/qml-plugins.cpp
index bc134e0..f074cd4 100644
--- a/KTp/Declarative/qml-plugins.cpp
+++ b/KTp/Declarative/qml-plugins.cpp
@@ -18,14 +18,12 @@
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-
 #include "qml-plugins.h"
 
 #include <QtDeclarative/QDeclarativeItem>
 #include <QtDeclarative/QDeclarativeEngine>
 #include <QtDeclarative/QDeclarativeContext>
 
-
 #include "conversation.h"
 #include "conversations-model.h"
 #include "hide-window-component.h"
@@ -36,6 +34,7 @@
 #include "telepathy-manager.h"
 
 #include "KTp/types.h"
+#include "KTp/global-presence.h"
 #include "KTp/Models/contacts-filter-model.h"
 #include "KTp/Models/contacts-model.h"
 #include "KTp/Models/accounts-list-model.h"
@@ -63,6 +62,8 @@ void QmlPlugins::registerTypes(const char *uri)
     qmlRegisterUncreatableType<MessagesModel> (uri, 0, 1, "MessagesModel",
         QLatin1String("It will be created once the conversation is created"));
 
+    qmlRegisterType<KTp::GlobalPresence> (uri, 0, 1, "PresenceManager");
+
     qmlRegisterType<TelepathyManager>();
     qmlRegisterType<ConversationsModel>();
     qRegisterMetaType<Tp::AccountManagerPtr>();
diff --git a/KTp/global-presence.cpp b/KTp/global-presence.cpp
index 0f08509..f7f1c95 100644
--- a/KTp/global-presence.cpp
+++ b/KTp/global-presence.cpp
@@ -24,6 +24,7 @@
 
 #include <TelepathyQt/AccountSet>
 #include <TelepathyQt/Account>
+#include <TelepathyQt/PendingReady>
 
 #include <KDebug>
 
@@ -63,6 +64,34 @@ void GlobalPresence::setAccountManager(const Tp::AccountManagerPtr &accountManag
     connect(m_enabledAccounts.data(), SIGNAL(accountAdded(Tp::AccountPtr)), SLOT(onAccountAdded(Tp::AccountPtr)));
 }
 
+void GlobalPresence::addAccountManager(const Tp::AccountManagerPtr &accountManager)
+{
+    m_accountManager = accountManager;
+    connect(m_accountManager->becomeReady(), SIGNAL(finished(Tp::PendingOperation*)),
+            this, SLOT(onAccountManagerReady(Tp::PendingOperation*)));
+}
+
+Tp::AccountManagerPtr GlobalPresence::accountManager() const
+{
+    return m_accountManager;
+}
+
+void GlobalPresence::onAccountManagerReady(Tp::PendingOperation* op)
+{
+    if (op->isError()) {
+        kDebug() << op->errorName();
+        kDebug() << op->errorMessage();
+
+        //TODO: Create signal to send to client
+        kDebug() << "Something unexpected happened to the core part of your Instant Messaging system "
+                 << "and it couldn't be initialized. Try restarting the client.";
+
+        return;
+    }
+
+    setAccountManager(m_accountManager);
+    Q_EMIT(accountManagerReady());
+}
 
 Tp::ConnectionStatus GlobalPresence::connectionStatus() const
 {
@@ -74,6 +103,33 @@ Presence GlobalPresence::currentPresence() const
     return m_currentPresence;
 }
 
+QString GlobalPresence::currentPresenceMessage() const
+{
+    KTp::Presence p = currentPresence();
+    return p.statusMessage();
+}
+
+GlobalPresence::ConnectionPresenceType GlobalPresence::currentPresenceType() const
+{
+    KTp::Presence p = currentPresence();
+    switch(p.type()) {
+        case Tp::ConnectionPresenceTypeAvailable:
+            return GlobalPresence::Available;
+        case Tp::ConnectionPresenceTypeBusy:
+            return GlobalPresence::Busy;
+        case Tp::ConnectionPresenceTypeAway:
+            return GlobalPresence::Away;
+        case Tp::ConnectionPresenceTypeExtendedAway:
+            return GlobalPresence::ExtendedAway;
+        case Tp::ConnectionPresenceTypeHidden:
+            return GlobalPresence::Hidden;
+        case Tp::ConnectionPresenceTypeOffline:
+            return GlobalPresence::Offline;
+        default:
+            return GlobalPresence::Unknown;
+    }
+}
+
 Presence GlobalPresence::requestedPresence() const
 {
     return m_requestedPresence;
@@ -96,6 +152,32 @@ void GlobalPresence::setPresence(const Tp::Presence &presence)
     }
 }
 
+void GlobalPresence::setPresence(GlobalPresence::ConnectionPresenceType p, QString message)
+{
+    switch (p) {
+    case GlobalPresence::Available:
+        setPresence(Tp::Presence::available(message));
+        break;
+    case GlobalPresence::Busy:
+        setPresence(Tp::Presence::busy(message));
+        break;
+    case GlobalPresence::Away:
+        setPresence(Tp::Presence::away(message));
+        break;
+    case GlobalPresence::ExtendedAway:
+        setPresence(Tp::Presence::xa(message));
+        break;
+    case GlobalPresence::Hidden:
+        setPresence(Tp::Presence::hidden(message));
+        break;
+    case GlobalPresence::Offline:
+        setPresence(Tp::Presence::offline(message));
+        break;
+    default:
+        kDebug() << "You should not be here!";
+    }
+}
+
 void GlobalPresence::onAccountAdded(const Tp::AccountPtr &account)
 {
     connect(account.data(), SIGNAL(connectionStatusChanged(Tp::ConnectionStatus)), SLOT(onConnectionStatusChanged()));
diff --git a/KTp/global-presence.h b/KTp/global-presence.h
index 1bba3fc..226bed1 100644
--- a/KTp/global-presence.h
+++ b/KTp/global-presence.h
@@ -22,10 +22,13 @@
 #define GLOBALPRESENCE_H
 
 #include <QObject>
+
 #include <TelepathyQt/AccountManager>
 #include <TelepathyQt/AccountSet>
+#include <TelepathyQt/Constants>
 
 #include <KTp/ktp-export.h>
+#include <KTp/types.h>
 #include "presence.h"
 
 namespace KTp
@@ -38,19 +41,40 @@ namespace KTp
 class KTP_EXPORT GlobalPresence : public QObject
 {
     Q_OBJECT
+    Q_ENUMS(ConnectionPresenceType)
+    Q_PROPERTY(QString presenceMessage READ currentPresenceMessage CONSTANT)
+    Q_PROPERTY(ConnectionPresenceType presenceType READ currentPresenceType CONSTANT)
+    Q_PROPERTY(Tp::AccountManagerPtr accountManager READ accountManager WRITE addAccountManager)
 public:
     explicit GlobalPresence(QObject *parent = 0);
 
+    enum ConnectionPresenceType
+    {
+        Offline = Tp::ConnectionPresenceTypeOffline,
+        Available = Tp::ConnectionPresenceTypeAvailable,
+        Away = Tp::ConnectionPresenceTypeAway,
+        ExtendedAway = Tp::ConnectionPresenceTypeExtendedAway,
+        Hidden = Tp::ConnectionPresenceTypeHidden,
+        Busy = Tp::ConnectionPresenceTypeBusy,
+        Unknown = Tp::ConnectionPresenceTypeUnknown,
+        Error = Tp::ConnectionPresenceTypeError
+    };
+
     /** Set the account manager to use
       * @param accountManager should be ready.
       */
     void setAccountManager(const Tp::AccountManagerPtr &accountManager);
 
+    void addAccountManager(const Tp::AccountManagerPtr &accountManager);
+    Tp::AccountManagerPtr accountManager() const;
+
     /** Returns connecting if any account is connecting, else connected if at least one account is connected, disconnected otherwise*/
     Tp::ConnectionStatus connectionStatus() const;
 
     /** The most online presence of any account*/
     Presence currentPresence() const;
+    QString currentPresenceMessage() const;
+    ConnectionPresenceType currentPresenceType() const;
 
     /** The most online presence requested for any account if any of the accounts are changing state.
       otherwise returns current presence*/
@@ -69,10 +93,12 @@ Q_SIGNALS:
     void currentPresenceChanged(const KTp::Presence &presence);
     void changingPresence(bool isChanging);
     void connectionStatusChanged(Tp::ConnectionStatus);
+    void accountManagerReady();
 
 public Q_SLOTS:
     /** Set all enabled accounts to the specified presence*/
     void setPresence(const Tp::Presence &presence);
+    void setPresence(ConnectionPresenceType p, QString message);
 
     /**Saves the current presence to memory*/
     void saveCurrentPresence();
@@ -86,8 +112,11 @@ private Q_SLOTS:
     void onConnectionStatusChanged();
 
     void onAccountAdded(const Tp::AccountPtr &account);
+    void onAccountManagerReady(Tp::PendingOperation* op);
 
 private:
+    Tp::AccountManagerPtr m_accountManager;
+
     Tp::AccountSetPtr m_enabledAccounts;
     Tp::AccountSetPtr m_onlineAccounts;
 

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list