[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:04:55 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=c847b52
The following commit has been merged in the master branch:
commit c847b5275135763b3ece54d4696ad756d99962b9
Author: Daniele E. Domenichelli <daniele.domenichelli at gmail.com>
Date: Thu Feb 2 21:27:20 2012 +0100
Refactor ContactGridWidget and update it according to AccountsFilterModel changes
Also use size from style options in delegate and add a method to change icon size
---
KTp/Widgets/contact-grid-widget.cpp | 96 ++++++++++++++++++++++++++-----------
KTp/Widgets/contact-grid-widget.h | 48 ++++++++++++++-----
2 files changed, 103 insertions(+), 41 deletions(-)
diff --git a/KTp/Widgets/contact-grid-widget.cpp b/KTp/Widgets/contact-grid-widget.cpp
index fe15aaf..b0f4624 100644
--- a/KTp/Widgets/contact-grid-widget.cpp
+++ b/KTp/Widgets/contact-grid-widget.cpp
@@ -74,12 +74,10 @@ void KTp::ContactGridDelegate::paint(QPainter *painter, const QStyleOptionViewIt
QPixmap avatar = index.data(Qt::DecorationRole).value<QPixmap>();
if (avatar.isNull()) {
- avatar = KIcon(QLatin1String("im-user-online")).pixmap(QSize(70, 70));
- }
-
- //resize larger avatars
- if (avatar.width() > 80 || avatar.height() > 80) {
- avatar = avatar.scaled(QSize(80, 80), Qt::KeepAspectRatio);
+ avatar = KIcon(QLatin1String("im-user-online")).pixmap(option.decorationSize);
+ } else if (avatar.width() > option.decorationSize.width() || avatar.height() > option.decorationSize.height()) {
+ //resize larger avatars if required
+ avatar = avatar.scaled(option.decorationSize, Qt::KeepAspectRatio);
//draw leaving paddings on smaller (or non square) avatars
}
style->drawItemPixmap(painter, avatarRect, Qt::AlignCenter, avatar);
@@ -96,7 +94,7 @@ QSize KTp::ContactGridDelegate::sizeHint(const QStyleOptionViewItem &option, con
{
Q_UNUSED(index);
int textHeight = option.fontMetrics.height() * 2;
- return QSize(84, 80 + textHeight + 3);
+ return QSize(option.decorationSize.width() + 4, option.decorationSize.height() + textHeight + 3);
}
// -----------------------------------------------------------------------------
@@ -140,7 +138,6 @@ void KTp::ContactGridWidget::Private::_k_onSelectionChanged(QItemSelection newSe
return;
}
- kDebug() << "Emitting selectionChanged" << q->selectedAccount()->displayName() << q->selectedContact()->alias();
Q_EMIT q->selectionChanged(q->selectedAccount(), q->selectedContact());
}
@@ -160,6 +157,7 @@ KTp::ContactGridWidget::ContactGridWidget(AccountsModel* model, QWidget *parent)
d->contactGridView->setResizeMode(QListView::Adjust);
d->contactGridView->setSpacing(5);
d->contactGridView->setViewMode(QListView::IconMode);
+ d->contactGridView->setIconSize(QSize(80, 80));
d->contactFilterLineEdit->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
d->contactFilterLineEdit->setClearButtonShown(true);
@@ -170,7 +168,7 @@ KTp::ContactGridWidget::ContactGridWidget(AccountsModel* model, QWidget *parent)
setLayout(d->layout);
d->contactGridView->setModel(d->flatProxyModel);
- d->contactGridView->setItemDelegate(new ContactGridDelegate(this));
+ d->contactGridView->setItemDelegate(new ContactGridDelegate(d->contactGridView));
connect(d->contactGridView->selectionModel(),
SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
@@ -179,7 +177,7 @@ KTp::ContactGridWidget::ContactGridWidget(AccountsModel* model, QWidget *parent)
connect(d->contactFilterLineEdit,
SIGNAL(textChanged(QString)),
d->filterModel,
- SLOT(setFilterString(QString)));
+ SLOT(setDisplayNameFilterString(QString)));
}
KTp::ContactGridWidget::~ContactGridWidget()
@@ -187,50 +185,90 @@ KTp::ContactGridWidget::~ContactGridWidget()
delete d;
}
-bool KTp::ContactGridWidget::hasSelection() const
+bool KTp::ContactGridWidget::isDisplayNameFilterBarShown() const
{
- return d->contactGridView->selectionModel()->hasSelection();
+ return !d->contactFilterLineEdit->isHidden();
}
-Tp::AccountPtr KTp::ContactGridWidget::selectedAccount() const
+bool KTp::ContactGridWidget::isDisplayNameFilterBarHidden() const
{
- return d->accountsModel->accountForContactItem(d->contactGridView->currentIndex().data(AccountsModel::ItemRole).value<ContactModelItem*>());
+ return !isDisplayNameFilterBarShown();
}
-Tp::ContactPtr KTp::ContactGridWidget::selectedContact() const
+void KTp::ContactGridWidget::setDisplayNameFilterBarShown(bool displayNameFilterBarShown)
{
- return d->contactGridView->currentIndex().data(AccountsModel::ItemRole).value<ContactModelItem*>()->contact();
+ if (displayNameFilterBarShown != isDisplayNameFilterBarShown()) {
+ clearDisplayNameFilter();
+ d->contactFilterLineEdit->setShown(displayNameFilterBarShown);
+ Q_EMIT displayNameFilterBarShownChanged(displayNameFilterBarShown);
+ }
}
-void KTp::ContactGridWidget::setShowOfflineUsers(bool showOfflineUsers)
+void KTp::ContactGridWidget::setDisplayNameFilterBarHidden(bool displayNameFilterBarHidden)
{
- d->filterModel->setShowOfflineUsers(showOfflineUsers);
+ setDisplayNameFilterBarShown(!displayNameFilterBarHidden);
}
-void KTp::ContactGridWidget::setFilterByFileTransferCapability(bool filterByFileTransferCapability)
+void KTp::ContactGridWidget::showDisplayNameFilterBar()
{
- d->filterModel->setFilterByFileTransferCapability(filterByFileTransferCapability);
+ setDisplayNameFilterBarShown(true);
}
-void KTp::ContactGridWidget::setNameFilterBarShown(bool nameFilterBarShown)
+void KTp::ContactGridWidget::hideDisplayNameFilterBar()
{
- d->contactFilterLineEdit->clear();
- d->contactFilterLineEdit->setShown(nameFilterBarShown);
+ setDisplayNameFilterBarShown(false);
}
-void KTp::ContactGridWidget::showNameFilterBar()
+QString KTp::ContactGridWidget::displayNameFilter() const
{
- setNameFilterBarShown(true);
+ return d->contactFilterLineEdit->text();
}
-void KTp::ContactGridWidget::hideNameFilterBar()
+void KTp::ContactGridWidget::clearDisplayNameFilter()
{
- setNameFilterBarShown(false);
+ setDisplayNameFilter(QString());
+}
+
+void KTp::ContactGridWidget::setDisplayNameFilter(const QString& displayNameFilter)
+{
+ if (displayNameFilter != d->contactFilterLineEdit->text()) {
+ d->contactFilterLineEdit->setText(displayNameFilter);
+ Q_EMIT displayNameFilterChanged(displayNameFilter);
+ }
+}
+
+QSize KTp::ContactGridWidget::iconSize() const
+{
+ return d->contactGridView->iconSize();
+}
+
+void KTp::ContactGridWidget::setIconSize(const QSize& iconSize)
+{
+ kDebug();
+ if (iconSize != d->contactGridView->iconSize()) {
+ d->contactGridView->setIconSize(iconSize);
+ Q_EMIT iconSizeChanged(iconSize);
+ }
+}
+
+bool KTp::ContactGridWidget::hasSelection() const
+{
+ return d->contactGridView->selectionModel()->hasSelection();
+}
+
+Tp::AccountPtr KTp::ContactGridWidget::selectedAccount() const
+{
+ return d->accountsModel->accountForContactItem(d->contactGridView->currentIndex().data(AccountsModel::ItemRole).value<ContactModelItem*>());
+}
+
+Tp::ContactPtr KTp::ContactGridWidget::selectedContact() const
+{
+ return d->contactGridView->currentIndex().data(AccountsModel::ItemRole).value<ContactModelItem*>()->contact();
}
-void KTp::ContactGridWidget::setNameFilter(const QString& nameFilter)
+AccountsFilterModel* KTp::ContactGridWidget::filter() const
{
- d->contactFilterLineEdit->setText(nameFilter);
+ return d->filterModel;
}
diff --git a/KTp/Widgets/contact-grid-widget.h b/KTp/Widgets/contact-grid-widget.h
index 1e42119..bb4a4a4 100644
--- a/KTp/Widgets/contact-grid-widget.h
+++ b/KTp/Widgets/contact-grid-widget.h
@@ -27,10 +27,10 @@
#include <KTp/ktp-export.h>
class AccountsModel;
+class AccountsFilterModel;
namespace KTp
{
-
class ContactGridDelegate : public QAbstractItemDelegate
{
Q_OBJECT
@@ -54,24 +54,46 @@ class KTP_EXPORT ContactGridWidget : public QWidget
Q_OBJECT
Q_DISABLE_COPY(ContactGridWidget)
- Q_PRIVATE_SLOT(d, void _k_onSelectionChanged(QItemSelection,QItemSelection));
+ Q_PROPERTY(bool displayNameFilterBarShown
+ READ isDisplayNameFilterBarShown
+ WRITE setDisplayNameFilterBarShown
+ NOTIFY displayNameFilterBarShownChanged)
+ Q_PROPERTY(QString displayNameFilter
+ READ displayNameFilter
+ RESET clearDisplayNameFilter
+ WRITE setDisplayNameFilter)
+ Q_PROPERTY(QSize iconSize
+ READ iconSize
+ WRITE setIconSize
+ NOTIFY iconSizeChanged)
public:
- explicit ContactGridWidget(AccountsModel *model, QWidget *parent = 0);
- virtual ~ContactGridWidget();
+ explicit ContactGridWidget(AccountsModel *model, QWidget *parent = 0);
+ virtual ~ContactGridWidget();
+
+ virtual bool isDisplayNameFilterBarShown() const;
+ virtual bool isDisplayNameFilterBarHidden() const;
+ Q_SLOT virtual void setDisplayNameFilterBarShown(bool displayNameFilterBarShown);
+ Q_SLOT virtual void setDisplayNameFilterBarHidden(bool displayNameFilterBarHidden);
+ Q_SLOT virtual void showDisplayNameFilterBar();
+ Q_SLOT virtual void hideDisplayNameFilterBar();
+ Q_SIGNAL void displayNameFilterBarShownChanged(bool displayNameFilterBarShown);
+
+ virtual QString displayNameFilter() const;
+ Q_SLOT virtual void clearDisplayNameFilter();
+ Q_SLOT virtual void setDisplayNameFilter(const QString &displayNameFilter);
+ Q_SIGNAL void displayNameFilterChanged(const QString &displayNameFilter);
+
+ virtual QSize iconSize() const;
+ Q_SLOT virtual void setIconSize(const QSize &iconSize);
+ Q_SIGNAL void iconSizeChanged(const QSize &iconSize);
+
+ virtual AccountsFilterModel* filter() const;
virtual bool hasSelection() const;
virtual Tp::AccountPtr selectedAccount() const;
virtual Tp::ContactPtr selectedContact() const;
- virtual void setShowOfflineUsers(bool showOfflineUsers);
- virtual void setFilterByFileTransferCapability(bool filterByFileTransferCapability);
-
- virtual void showNameFilterBar();
- virtual void hideNameFilterBar();
- virtual void setNameFilterBarShown(bool filterbarShown);
- virtual void setNameFilter(const QString &nameFilter);
-
Q_SIGNALS:
void selectionChanged(Tp::AccountPtr selectedAccount, Tp::ContactPtr selectedContact);
@@ -79,6 +101,8 @@ private:
class Private;
Private * const d;
+ Q_PRIVATE_SLOT(d, void _k_onSelectionChanged(QItemSelection,QItemSelection));
+
}; // class ContactGridWidget
} // namespace KTp
--
ktp-common-internals packaging
More information about the pkg-kde-commits
mailing list