[SCM] ktp-contact-list packaging branch, master, updated. debian/15.12.1-2-1070-g6c56f91
Maximiliano Curia
maxy at moszumanska.debian.org
Sat May 28 00:07:45 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-contact-list.git;a=commitdiff;h=4459826
The following commit has been merged in the master branch:
commit 4459826bd8b5e49f274c78b3a12752b1d7887cd9
Author: David Edmundson <kde at davidedmundson.co.uk>
Date: Thu Oct 6 12:08:06 2011 +0100
start of presence model
---
CMakeLists.txt | 2 ++
kpresence.cpp | 27 +++++++++++++++
kpresence.h | 16 +++++++++
presence-model.cpp | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++
presence-model.h | 45 ++++++++++++++++++++++++
5 files changed, 190 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9ea3bb9..0891bee 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -62,6 +62,8 @@ set (contactlist_SRCS
common/models/groups-model.cpp
common/models/proxy-tree-node.cpp
common/service-availability-checker.cpp
+ presence-model.cpp
+ kpresence.cpp
)
diff --git a/kpresence.cpp b/kpresence.cpp
new file mode 100644
index 0000000..ed2dd73
--- /dev/null
+++ b/kpresence.cpp
@@ -0,0 +1,27 @@
+#include "kpresence.h"
+
+KPresence::KPresence(const Tp::Presence &presence) :
+ Tp::Presence(presence)
+{
+}
+
+KIcon KPresence::icon()
+{
+ switch (type()) {
+ case Tp::ConnectionPresenceTypeAvailable:
+ return KIcon(QLatin1String("user-online"));
+ case Tp::ConnectionPresenceTypeBusy:
+ return KIcon("user-busy");
+ case Tp::ConnectionPresenceTypeAway:
+ return KIcon("user-away");
+ case Tp::ConnectionPresenceTypeExtendedAway:
+ return KIcon("user-away-extended");
+ case Tp::ConnectionPresenceTypeHidden:
+ return KIcon("user-invisible");
+ case Tp::ConnectionPresenceTypeOffline:
+ return KIcon("user-offline");
+ default:
+ return KIcon();
+ }
+}
+
diff --git a/kpresence.h b/kpresence.h
new file mode 100644
index 0000000..f047ebd
--- /dev/null
+++ b/kpresence.h
@@ -0,0 +1,16 @@
+#ifndef KPRESENCE_H
+#define KPRESENCE_H
+
+#include <TelepathyQt4/Presence>
+
+#include <KIcon>
+
+
+class KPresence : public Tp::Presence
+{
+public:
+ KPresence(const Tp::Presence &presence);
+ KIcon icon();
+};
+
+#endif // KPRESENCE_H
diff --git a/presence-model.cpp b/presence-model.cpp
new file mode 100644
index 0000000..a3b979e
--- /dev/null
+++ b/presence-model.cpp
@@ -0,0 +1,100 @@
+#include "presence-model.h"
+
+#include <QFont>
+
+#include <KIcon>
+#include <KLocalizedString>
+
+PresenceModel::PresenceModel(QObject *parent) :
+ QAbstractListModel(parent)
+{
+ loadDefaultPresences();
+}
+
+QVariant PresenceModel::data(const QModelIndex &index, int role) const
+{
+ Tp::Presence presence = m_presences[index.row()];
+ switch (role) {
+ case Qt::DisplayRole:
+ if (presence.statusMessage().isEmpty()) {
+ switch (presence.type()) {
+ case Tp::ConnectionPresenceTypeAvailable:
+ return i18n("Available");
+ case Tp::ConnectionPresenceTypeBusy:
+ return i18n("Busy");
+ case Tp::ConnectionPresenceTypeAway:
+ return i18n("Away");
+ case Tp::ConnectionPresenceTypeExtendedAway:
+ return i18n("Extended Away");
+ case Tp::ConnectionPresenceTypeHidden:
+ return i18n("Invisible");
+ case Tp::ConnectionPresenceTypeOffline:
+ return i18n("Offline");
+ default:
+ return i18n("Unknown");
+ }
+ } else {
+ return presence.statusMessage();
+ }
+
+ case Qt::DecorationRole:
+ switch (presence.type()) {
+ case Tp::ConnectionPresenceTypeAvailable:
+ return KIcon("user-online");
+ case Tp::ConnectionPresenceTypeBusy:
+ return KIcon("user-busy");
+ case Tp::ConnectionPresenceTypeAway:
+ return KIcon("user-away");
+ case Tp::ConnectionPresenceTypeExtendedAway:
+ return KIcon("user-away-extended");
+ case Tp::ConnectionPresenceTypeHidden:
+ return KIcon("user-invisible");
+ case Tp::ConnectionPresenceTypeOffline:
+ return KIcon("user-offline");
+ default:
+ return KIcon("");
+ }
+
+ case Qt::FontRole:
+ if (presence.statusMessage().isEmpty()) {
+ QFont font;
+ font.setBold(true);
+ return font;
+ }
+
+ case PresenceModel::PresenceRole:
+ return QVariant::fromValue(presence);
+
+ }
+
+ return QVariant();
+}
+
+int PresenceModel::rowCount(const QModelIndex &parent) const
+{
+ return m_presences.size();
+}
+
+void PresenceModel::loadDefaultPresences()
+{
+ addPresence(Tp::Presence::available());
+ addPresence(Tp::Presence::busy());
+ addPresence(Tp::Presence::away());
+ addPresence(Tp::Presence::away("Back Soon!"));
+ addPresence(Tp::Presence::away("Off to eat some cheese"));
+ addPresence(Tp::Presence::xa());
+ addPresence(Tp::Presence::xa("Abducted by aliens, back later"));
+ addPresence(Tp::Presence::hidden());
+ addPresence(Tp::Presence::offline());
+
+ addPresence(Tp::Presence::available("Configure Custom Messages..."));
+}
+
+QModelIndex PresenceModel::addPresence(const Tp::Presence &presence)
+{
+ beginInsertRows(QModelIndex(), m_presences.size(), m_presences.size());
+ m_presences.append(presence);
+ endInsertRows();
+
+ return createIndex(m_presences.size(), 0);
+}
diff --git a/presence-model.h b/presence-model.h
new file mode 100644
index 0000000..5f6fc60
--- /dev/null
+++ b/presence-model.h
@@ -0,0 +1,45 @@
+#ifndef PRESENCEMODEL_H
+#define PRESENCEMODEL_H
+
+#include <QAbstractListModel>
+
+#include <TelepathyQt4/Presence>
+
+class PresenceModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ explicit PresenceModel(QObject *parent = 0);
+
+ enum Roles {
+ //Also supplies Qt::DisplayRole and Qt::DecorationRole
+ PresenceRole = Qt::UserRole
+ };
+
+ /** Adds a custom presence to the model, and write value to config file.
+ @return the newly added item
+ */
+ QModelIndex addPresence(const Tp::Presence &presence);
+
+ /** Returns the index of a given presence, adding it if needed*/
+ QModelIndex indexOf(const Tp::Presence &presence);
+
+protected:
+ virtual QVariant data(const QModelIndex &index, int role) const;
+ virtual int rowCount(const QModelIndex &parent) const;
+
+signals:
+
+public slots:
+
+private:
+ QList<Tp::Presence> m_presences;
+
+ /** Loads standard presences (online, away etc) into */
+ void loadDefaultPresences();
+
+ /** Loads any user custom presences into the model*/
+ void loadCustomPresences();
+};
+
+#endif // PRESENCEMODEL_H
--
ktp-contact-list packaging
More information about the pkg-kde-commits
mailing list