[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:04:28 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-contact-list.git;a=commitdiff;h=921732a

The following commit has been merged in the master branch:
commit 921732a8846889c44bf003fab26417c087762e7f
Author: George Goldberg <grundleborg at googlemail.com>
Date:   Mon Feb 22 21:07:00 2010 +0000

    Change the model/view to use QTreeView because QListView/Model is crap. Also get sorting of the contact list as a bonus.
    
    svn path=/trunk/playground/network/telepathy-contactlist/; revision=1094492
---
 contacts-list-model.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++---
 contacts-list-model.h   | 14 +++++++++---
 main-widget.cpp         |  8 +++++--
 main-widget.h           |  5 ++++-
 main-widget.ui          |  2 +-
 5 files changed, 76 insertions(+), 10 deletions(-)

diff --git a/contacts-list-model.cpp b/contacts-list-model.cpp
index 5e37b51..d368acd 100644
--- a/contacts-list-model.cpp
+++ b/contacts-list-model.cpp
@@ -77,10 +77,18 @@ ContactsListModel::~ContactsListModel()
     kDebug();
 }
 
-int ContactsListModel::rowCount(const QModelIndex &index) const
+int ContactsListModel::columnCount(const QModelIndex &parent) const
+{
+    Q_UNUSED(parent);
+
+    // List view, so all items have the same number of columns
+    return 1;
+}
+
+int ContactsListModel::rowCount(const QModelIndex &parent) const
 {
     // If the index is the root item, then return the row count.
-    if (index == QModelIndex()) {
+    if (parent == QModelIndex()) {
        return m_contactItems.size();
     }
 
@@ -91,8 +99,11 @@ int ContactsListModel::rowCount(const QModelIndex &index) const
 
 QVariant ContactsListModel::data(const QModelIndex &index, int role) const
 {
-    QVariant data;
+    if (index.column() != 0) {
+        return QVariant();
+    }
 
+    QVariant data;
     switch(role)
     {
     case Qt::DisplayRole:
@@ -110,6 +121,46 @@ Qt::ItemFlags ContactsListModel::flags(const QModelIndex &index) const
     return QAbstractItemModel::flags(index);
 }
 
+QModelIndex ContactsListModel::parent(const QModelIndex &index) const
+{
+    Q_UNUSED(index);
+
+    // This is a list model, so all items are children of the root item.
+    return QModelIndex();
+}
+
+QModelIndex ContactsListModel::index(int row, int column, const QModelIndex &parent) const
+{
+    // List view, so all items are children of the root item.
+    if (parent.isValid()) {
+        return QModelIndex();
+    }
+
+    // Only 1 column
+    if (column != 0) {
+        return QModelIndex();
+    }
+
+    // Check the row is within the range of the list.
+    if (row >= m_contactItems.size()) {
+        return QModelIndex();
+    }
+
+    // Return the index to the item.
+    return createIndex(row, column, 0);
+}
+
+QVariant ContactsListModel::headerData(int section, Qt::Orientation orientation, int role) const
+{
+    Q_UNUSED(section);
+
+    if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
+        return QVariant("Contact Name");
+    }
+
+    return QVariant();
+}
+
 
 #include "contacts-list-model.moc"
 
diff --git a/contacts-list-model.h b/contacts-list-model.h
index 0ca8f99..9ee4af6 100644
--- a/contacts-list-model.h
+++ b/contacts-list-model.h
@@ -34,9 +34,17 @@ public:
     explicit ContactsListModel(QObject *parent = 0);
     virtual ~ContactsListModel();
 
-    virtual int rowCount(const QModelIndex &index) const;
-    virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
-    virtual Qt::ItemFlags flags(const QModelIndex &index) const;
+     virtual QVariant data(const QModelIndex &index, int role) const;
+     virtual Qt::ItemFlags flags(const QModelIndex &index) const;
+     virtual QVariant headerData(int section,
+                                 Qt::Orientation orientation,
+                                 int role = Qt::DisplayRole) const;
+     virtual QModelIndex index(int row,
+                               int column,
+                               const QModelIndex &parent = QModelIndex()) const;
+     virtual QModelIndex parent(const QModelIndex &index) const;
+     virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
+     virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
 
 private:
     Q_DISABLE_COPY(ContactsListModel);
diff --git a/main-widget.cpp b/main-widget.cpp
index 1290fcb..02745fb 100644
--- a/main-widget.cpp
+++ b/main-widget.cpp
@@ -24,6 +24,7 @@
 #include "contacts-list-model.h"
 
 #include <KDebug>
+#include <QtGui/QSortFilterProxyModel>
 
 MainWidget::MainWidget(QWidget *parent)
  : QWidget(parent),
@@ -32,9 +33,12 @@ MainWidget::MainWidget(QWidget *parent)
     kDebug();
 
     setupUi(this);
-    
+
     m_model = new ContactsListModel(this);
-    m_contactsListView->setModel(m_model);
+    m_sortFilterProxyModel = new QSortFilterProxyModel(this);
+    m_sortFilterProxyModel->setSourceModel(m_model);
+    m_contactsListView->setSortingEnabled(true);
+    m_contactsListView->setModel(m_sortFilterProxyModel);
 }
 
 MainWidget::~MainWidget()
diff --git a/main-widget.h b/main-widget.h
index 61571a9..a6ae326 100644
--- a/main-widget.h
+++ b/main-widget.h
@@ -27,6 +27,7 @@
 #include <QtGui/QWidget>
 
 class ContactsListModel;
+class QSortFilterProxyModel;
 
 class MainWidget : public QWidget, Ui::MainWidget
 {
@@ -35,9 +36,11 @@ class MainWidget : public QWidget, Ui::MainWidget
 public:
     MainWidget(QWidget *parent = 0);
     ~MainWidget();
-    
+
 private:
     ContactsListModel *m_model;
+    QSortFilterProxyModel *m_sortFilterProxyModel;
+
 };
 
 
diff --git a/main-widget.ui b/main-widget.ui
index 8c83761..2c0b3c1 100644
--- a/main-widget.ui
+++ b/main-widget.ui
@@ -15,7 +15,7 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <widget class="QListView" name="m_contactsListView"/>
+    <widget class="QTreeView" name="m_contactsListView"/>
    </item>
   </layout>
  </widget>

-- 
ktp-contact-list packaging



More information about the pkg-kde-commits mailing list