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


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

The following commit has been merged in the master branch:
commit 57b6ee1dc87739ee04b0f998318b76dbd0603d46
Author: Martin Klapetek <mklapetek at kde.org>
Date:   Thu Feb 5 11:36:00 2015 +0100

    Make the testing application little bit more useful
    
    Adds a simple custom delegate similar to the contact list so the
    displayed data is at least somewhat useful. Simple sorting proxy on top
    only.
---
 tests/model-view.cpp | 75 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 72 insertions(+), 3 deletions(-)

diff --git a/tests/model-view.cpp b/tests/model-view.cpp
index 1d98310..521fe11 100644
--- a/tests/model-view.cpp
+++ b/tests/model-view.cpp
@@ -23,7 +23,76 @@
 
 #include "roles-proxy-model.h"
 #include <QSortFilterProxyModel>
+#include <QStyledItemDelegate>
+#include <QPainter>
+#include <QFontDatabase>
+#include <KTp/types.h>
 
+class SimpleDelegate : public QStyledItemDelegate {
+    virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
+    virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
+};
+
+QSize SimpleDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const
+{
+    return QSize(24, 24);
+}
+
+void SimpleDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
+{
+    QStyleOptionViewItemV4 optV4 = option;
+    initStyleOption(&optV4, index);
+    painter->save();
+
+    painter->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing);
+    painter->setClipRect(optV4.rect);
+
+    QStyle *style = QApplication::style();
+    style->drawPrimitive(QStyle::PE_PanelItemViewItem, &optV4, painter);
+
+    QRect iconRect = optV4.rect;
+    iconRect.setSize(QSize(22, 22));
+    iconRect.moveTo(QPoint(iconRect.x() + 8, iconRect.y() + 8));
+
+    QPixmap avatar(qvariant_cast<QPixmap>(index.data(KTp::ContactAvatarPixmapRole)));
+
+    if (!avatar.isNull()) {
+        style->drawItemPixmap(painter, iconRect, Qt::AlignCenter, avatar.scaled(iconRect.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation));
+    }
+
+    QPixmap icon = QIcon::fromTheme(index.data(KTp::ContactPresenceIconRole).toString()).pixmap(22);
+
+    QRect statusIconRect = optV4.rect;
+    statusIconRect.setSize(QSize(22, 22));
+    statusIconRect.moveTo(QPoint(optV4.rect.right() - 24,
+                                 optV4.rect.top() + (optV4.rect.height() - 22) / 2));
+
+    painter->drawPixmap(statusIconRect, icon);
+
+    QFont nameFont = QFontDatabase::systemFont(QFontDatabase::GeneralFont);
+
+    const QFontMetrics nameFontMetrics(nameFont);
+
+    if (option.state & QStyle::State_Selected) {
+        painter->setPen(option.palette.color(QPalette::Active, QPalette::HighlightedText));
+    } else {
+        painter->setPen(option.palette.color(QPalette::Active, QPalette::Text));
+    }
+
+    painter->setFont(nameFont);
+
+    QRect userNameRect = optV4.rect;
+    userNameRect.setX(iconRect.x() + iconRect.width() + 18);
+    userNameRect.setY(userNameRect.y() + (userNameRect.height()/2 - nameFontMetrics.height()/2));
+    userNameRect.setWidth(userNameRect.width() - 22);
+
+    QString nameText = index.data(Qt::DisplayRole).toString();
+
+    painter->drawText(userNameRect,
+                      nameFontMetrics.elidedText(nameText, Qt::ElideRight, userNameRect.width()));
+
+    painter->restore();
+}
 
 
 ModelView::ModelView(QAbstractItemModel *model, QWidget *parent)
@@ -31,15 +100,15 @@ ModelView::ModelView(QAbstractItemModel *model, QWidget *parent)
 {
     setupUi(this);
 
-//     RolesProxyModel *proxyModel = new RolesProxyModel(this);
-//     proxyModel->setSourceModel(model);
-
     QSortFilterProxyModel *proxy = new QSortFilterProxyModel(this);
     proxy->setDynamicSortFilter(true);
     proxy->setSourceModel(model);
     proxy->setSortRole(Qt::DisplayRole);
+    proxy->sort(0);
 
     TreeView->setModel(proxy);
+    TreeView->setUniformRowHeights(true);
+    TreeView->setItemDelegate(new SimpleDelegate());
 }
 
 ModelView::~ModelView()

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list