[SCM] ktp-accounts-kcm packaging branch, master, updated. debian/15.12.1-1-1157-gc4589c5

Maximiliano Curia maxy at moszumanska.debian.org
Fri May 27 23:58:51 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-accounts-kcm.git;a=commitdiff;h=7a201ae

The following commit has been merged in the master branch:
commit 7a201ae31ab8a6cbeb6ce11998772e6b4c42c6c8
Author: David Edmundson <kde at davidedmundson.co.uk>
Date:   Tue Jan 11 03:09:56 2011 +0000

    Convert item delegate to KWidgetItemDelegate so it can contain a
    checkbox And a big tidy up of the paint() method.
---
 src/accounts-list-delegate.cpp | 71 ++++++++++++++++++++++++++----------------
 src/accounts-list-delegate.h   | 13 ++++++--
 src/kcm-telepathy-accounts.cpp |  4 ++-
 3 files changed, 57 insertions(+), 31 deletions(-)

diff --git a/src/accounts-list-delegate.cpp b/src/accounts-list-delegate.cpp
index 004598f..0779561 100644
--- a/src/accounts-list-delegate.cpp
+++ b/src/accounts-list-delegate.cpp
@@ -4,9 +4,12 @@
 
 #include <QApplication>
 #include <QPainter>
+#include <QCheckBox>
 
-AccountsListDelegate::AccountsListDelegate(QObject *parent) :
-    QAbstractItemDelegate(parent)
+#include <KDebug>
+
+AccountsListDelegate::AccountsListDelegate(QAbstractItemView *itemView, QObject *parent)
+    : KWidgetItemDelegate(itemView, parent)
 {
 }
 
@@ -14,14 +17,36 @@ QSize AccountsListDelegate::sizeHint(const QStyleOptionViewItem &option, const Q
 {
     Q_UNUSED(index);
 
-    int iconHeight = option.decorationSize.height() + (4*2);
+    int iconHeight = option.decorationSize.height() + (m_paddingSize*2);  //icon height + padding either side
+    int textHeight = option.fontMetrics.height()*2 + (m_paddingSize*2);
+
+    return QSize(1,qMax(iconHeight, textHeight)); //any width,the view should give us the whole thing.
+}
+
+QList<QWidget*> AccountsListDelegate::createItemWidgets() const
+{
+    QCheckBox *checkbox = new QCheckBox();
+    return QList<QWidget*>() << checkbox;
+}
+
 
-    return QSize(iconHeight,50); //any width,the view should give us the whole thing.
+void AccountsListDelegate::updateItemWidgets(const QList<QWidget *> widgets, const QStyleOptionViewItem &option, const QPersistentModelIndex &index) const
+{
+    QWidget* checkbox = widgets.at(0);
+    if (checkbox) {
+        int topMargin = (option.rect.height() - checkbox->height()) / 2;
+        checkbox->move(m_paddingSize, topMargin);
+    }
+    else {
+        kDebug() << "checkbox widget pointer is null..";
+    }
 }
 
+
 void AccountsListDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
 {
-    //draws Icon AccountName  ConnectionIcon ConnectionState
+    //draws Checkbox | Icon | AccountName  | ConnectionIcon | ConnectionState
+    //               |      | errorMessage |                |
 
     QStyle *style = QApplication::style();
 
@@ -34,41 +59,33 @@ void AccountsListDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
     QIcon connectionStatusIcon = index.data(AccountsListModel::ConnectionStateIconRole).value<QIcon>();
 
 
-    QRect innerRect = option.rect.adjusted(4,4,-4,-4); //add some padding
-
-    int top = innerRect.top();
-    int bottom = innerRect.bottom();
+    QRect innerRect = option.rect.adjusted(m_paddingSize,m_paddingSize,-m_paddingSize,-m_paddingSize); //add some padding
 
+    QSize checkBoxSize(32,20);
     QSize decorationSize = option.decorationSize;
     QSize statusTextSize = style->itemTextRect(option.fontMetrics, option.rect, Qt::AlignCenter , false , connectionStatusString).size();
-    QSize statusIconSize = QSize(16,16); //a nice small icon
-    QSize statusSize = statusTextSize+statusIconSize;
-    //the main account label size = whatever's left.
+    QSize statusIconSize(16,16); //a nice small icon
 
-    QRect iconRect(innerRect.topLeft(), decorationSize);
-//    QRect statusTextRect(QPoint(top, innerRect.right() - statusTextSize.width()), QPoint(bottom, innerRect.right()));
+    QRect checkBoxRect(0, innerRect.top(), checkBoxSize.width(), innerRect.height());
+    QRect decorationRect(checkBoxRect.right(), innerRect.top(), decorationSize.width(), innerRect.height());
 
+    QRect statusTextRect(option.rect.right() - statusTextSize.width(), innerRect.top(), statusTextSize.width(), innerRect.height());
+    QRect statusIconRect(statusTextRect.left() - statusIconSize.width() -2, innerRect.top(), statusIconSize.width(), innerRect.height());
+    QRect mainTextRect(decorationRect.topRight() + QPoint(m_paddingSize,0), statusIconRect.bottomLeft());
 
-    QRect statusTextRect(QPoint(innerRect.right() - statusSize.width(), innerRect.top()), innerRect.bottomRight());
-    int statusIconTopPadding = (innerRect.height() - statusIconSize.height()) / 2 ;
-    QRect statusIconRect(QPoint(statusTextRect.left() - statusIconSize.width(), top + statusIconTopPadding), statusIconSize);
+    QPixmap iconPixmap = icon.pixmap(decorationSize);
+    QPixmap statusPixmap = connectionStatusIcon.pixmap(statusIconSize);
 
-    QRect textRect(iconRect.topRight() + QPoint(10,0), QPoint(innerRect.right() - statusIconSize.width() - statusTextSize.width(), bottom));
+    painter->drawPixmap(style->itemPixmapRect(decorationRect, Qt::AlignCenter, iconPixmap), iconPixmap);
 
     QFont boldFont = option.font;
     boldFont.setBold(true);
-
-    painter->drawPixmap(iconRect, icon.pixmap(option.decorationSize));
-    painter->drawPixmap(statusIconRect,connectionStatusIcon.pixmap(16,16));
-
-
     painter->setFont(boldFont);
-    painter->drawText(textRect, accountName);
+    painter->drawText(mainTextRect, Qt::AlignTop, accountName);
     painter->setFont(option.font);
+    painter->drawText(mainTextRect, Qt::AlignBottom, connectionErrorString);
 
-    textRect.adjust(0,option.fontMetrics.height()+2,0,0);
-    painter->drawText(textRect, connectionErrorString);
-
+    painter->drawPixmap(style->itemPixmapRect(statusIconRect, Qt::AlignCenter, statusPixmap), statusPixmap);
     painter->drawText(statusTextRect, Qt::AlignCenter, connectionStatusString);
 }
 
diff --git a/src/accounts-list-delegate.h b/src/accounts-list-delegate.h
index fdc2f81..20a7b04 100644
--- a/src/accounts-list-delegate.h
+++ b/src/accounts-list-delegate.h
@@ -1,20 +1,27 @@
 #ifndef ACCOUNTLISTDELEGATE_H
 #define ACCOUNTLISTDELEGATE_H
 
-#include <QAbstractItemDelegate>
+#include <KWidgetItemDelegate>
 
-class AccountsListDelegate : public QAbstractItemDelegate
+class QCheckBox;
+
+class AccountsListDelegate : public KWidgetItemDelegate
 {
     Q_OBJECT
 public:
-    explicit AccountsListDelegate(QObject *parent = 0);
+    explicit AccountsListDelegate(QAbstractItemView *itemView, QObject *parent);
     QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
     void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
 
+    QList<QWidget*> createItemWidgets() const;
+    void updateItemWidgets(const QList<QWidget *> widgets, const QStyleOptionViewItem &option, const QPersistentModelIndex &index) const;
+
 signals:
 
 public slots:
 
+private:
+    static const int m_paddingSize = 7;
 };
 
 #endif // ACCOUNTLISTDELEGATE_H
diff --git a/src/kcm-telepathy-accounts.cpp b/src/kcm-telepathy-accounts.cpp
index 8c915b5..fe85387 100644
--- a/src/kcm-telepathy-accounts.cpp
+++ b/src/kcm-telepathy-accounts.cpp
@@ -76,7 +76,9 @@ KCMTelepathyAccounts::KCMTelepathyAccounts(QWidget *parent, const QVariantList&
     m_ui->addAccountButton->setIcon(KIcon("list-add"));
     m_ui->editAccountButton->setIcon(KIcon("configure"));
     m_ui->removeAccountButton->setIcon(KIcon("edit-delete"));
-    m_ui->accountsListView->setItemDelegate(new AccountsListDelegate(this));
+  
+    AccountsListDelegate* delegate = new AccountsListDelegate(m_accountsListView, this);
+    m_ui->accountsListView->setItemDelegate(delegate);
 
 
     // Connect to useful signals from the UI elements.

-- 
ktp-accounts-kcm packaging



More information about the pkg-kde-commits mailing list