Assure that the item size is not exceeded -> the spacing is also respected for texts that cannot be wrapped

svn path=/trunk/KDE/kdebase/apps/; revision=689651
This commit is contained in:
Peter Penz 2007-07-18 19:52:28 +00:00
parent ee5c2c1666
commit 43b2b591ec
2 changed files with 47 additions and 2 deletions

View file

@ -35,7 +35,9 @@
DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controller) :
KCategorizedView(parent),
m_controller(controller),
m_dragging(false)
m_itemSize(),
m_dragging(false),
m_dropRect()
{
Q_ASSERT(controller != 0);
setViewMode(QListView::IconMode);
@ -93,6 +95,39 @@ DolphinIconsView::~DolphinIconsView()
{
}
QRect DolphinIconsView::visualRect(const QModelIndex& index) const
{
if (itemCategorizer() == 0) {
const bool leftToRightFlow = (flow() == QListView::LeftToRight);
QRect itemRect = KCategorizedView::visualRect(index);
const int maxWidth = m_itemSize.width();
const int maxHeight = m_itemSize.height();
if (itemRect.width() > maxWidth) {
// assure that the maximum item width is not exceeded
if (leftToRightFlow) {
const int left = itemRect.left() + (itemRect.width() - maxWidth) / 2;
itemRect.setLeft(left);
}
itemRect.setWidth(maxWidth);
}
if (itemRect.height() > maxHeight) {
// assure that the maximum item height is not exceeded
if (!leftToRightFlow) {
const int top = itemRect.top() + (itemRect.height() - maxHeight) / 2;
itemRect.setTop(top);
}
itemRect.setHeight(maxHeight);
}
return itemRect;
}
return KCategorizedView::visualRect(index);
}
QStyleOptionViewItem DolphinIconsView::viewOptions() const
{
return m_viewOptions;
@ -321,6 +356,8 @@ void DolphinIconsView::updateGridSize(bool showPreview, bool showAdditionalInfo)
const int spacing = settings->gridSpacing();
setGridSize(QSize(itemWidth + spacing, itemHeight + spacing));
m_itemSize = QSize(itemWidth, itemHeight);
m_controller->setZoomInPossible(isZoomInPossible());
m_controller->setZoomOutPossible(isZoomOutPossible());
}

View file

@ -22,7 +22,10 @@
#include <kcategorizedview.h>
#include <kitemcategorizer.h>
#include <QtGui/QStyleOption>
#include <QSize>
#include <QStyleOption>
#include <libdolphin_export.h>
class DolphinController;
@ -41,6 +44,9 @@ public:
explicit DolphinIconsView(QWidget* parent, DolphinController* controller);
virtual ~DolphinIconsView();
/** @see QAbstractItemView::visualRect() */
virtual QRect visualRect(const QModelIndex& index) const;
protected:
virtual QStyleOptionViewItem viewOptions() const;
virtual void contextMenuEvent(QContextMenuEvent* event);
@ -77,6 +83,8 @@ private:
DolphinController* m_controller;
QStyleOptionViewItem m_viewOptions;
QSize m_itemSize;
bool m_dragging; // TODO: remove this property when the issue #160611 is solved in Qt 4.4
QRect m_dropRect; // TODO: remove this property when the issue #160611 is solved in Qt 4.4
};