[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