[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