[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kfile
From: Kevin Ottens <ervin () kde ! org>
Date: 2007-04-08 15:40:16
Message-ID: 1176046816.919684.28463.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 651601 by ervin:
Autoresize the "places" item sizes as discussed with Ellen.
We want to fit as many items as possible on screen, while keeping them
as big as possible.
CCMAIL:ellen@kde.org
M +43 -1 kfileplacesview.cpp
M +2 -0 kfileplacesview.h
--- trunk/KDE/kdelibs/kfile/kfileplacesview.cpp #651600:651601
@@ -41,6 +41,8 @@
KUrl currentUrl;
+ void adaptItemSize();
+
void _k_placeClicked(const QModelIndex &index);
};
@@ -48,7 +50,7 @@
: QListView(parent), d(new Private(this))
{
setSelectionRectVisible(false);
- setSelectionMode(QAbstractItemView::SingleSelection);
+ setSelectionMode(SingleSelection);
setDragEnabled(true);
setAcceptDrops(true);
@@ -143,12 +145,52 @@
setUrl(d->currentUrl);
}
+void KFilePlacesView::resizeEvent(QResizeEvent *event)
+{
+ d->adaptItemSize();
+ QListView::resizeEvent(event);
+}
+
void KFilePlacesView::rowsInserted(const QModelIndex &parent, int start, int end)
{
QListView::rowsInserted(parent, start, end);
+ d->adaptItemSize();
setUrl(d->currentUrl);
}
+void KFilePlacesView::Private::adaptItemSize()
+{
+ KFilePlacesModel *placesModel = qobject_cast<KFilePlacesModel*>(q->model());
+
+ if (placesModel==0) return;
+
+ const int rowCount = placesModel->rowCount();
+
+ if (rowCount==0) return; // We've nothing to display anyway
+
+ const int minSize = 16;
+ const int maxSize = 64;
+
+ const int maxWidth = q->width()/4;
+ const int maxHeight = (q->height()/rowCount)-1;
+
+ int size = qMin(maxHeight, maxWidth);
+
+ if (size<minSize) {
+ size = minSize;
+ } else if (size>maxSize) {
+ size = maxSize;
+ } else {
+ // Make it a multiple of 16
+ size>>= 4;
+ size<<= 4;
+ }
+
+ if (size!=q->iconSize().height()) {
+ q->setIconSize(QSize(size, size));
+ }
+}
+
void KFilePlacesView::Private::_k_placeClicked(const QModelIndex &index)
{
KFilePlacesModel *placesModel = qobject_cast<KFilePlacesModel*>(q->model());
--- trunk/KDE/kdelibs/kfile/kfileplacesview.h #651600:651601
@@ -26,6 +26,7 @@
#include <kurl.h>
class QAbstractItemModel;
+class QResizeEvent;
class QContextMenuEvent;
/**
@@ -43,6 +44,7 @@
protected:
void contextMenuEvent(QContextMenuEvent *event);
+ void resizeEvent(QResizeEvent *event);
protected Q_SLOTS:
void rowsInserted(const QModelIndex &parent, int start, int end);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic