[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