┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphinfileitemdelegate.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2008-10-15 21:23:42 +0000
committerPeter Penz <[email protected]>2008-10-15 21:23:42 +0000
commit994095076cccdb703b2bb285d4118bd9c654fd93 (patch)
treee995c1e81df37ff024c01d1a84765b9b48e6baeb /src/dolphinfileitemdelegate.cpp
parentd6a2d5594fc7dd95e0b4d6c993672de706d3bba5 (diff)
Assure that the item delegate draws the hover effect and the selection for the details view only above the icon + name. Open issue: The performance when selecting files by the rubberband is too slow (will be fixed before KDE 4.2).
CCBUG: 165999 CCMAIL: [email protected] svn path=/trunk/KDE/kdebase/apps/; revision=871874
Diffstat (limited to 'src/dolphinfileitemdelegate.cpp')
-rw-r--r--src/dolphinfileitemdelegate.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/dolphinfileitemdelegate.cpp b/src/dolphinfileitemdelegate.cpp
new file mode 100644
index 000000000..53c1d781e
--- /dev/null
+++ b/src/dolphinfileitemdelegate.cpp
@@ -0,0 +1,66 @@
+/***************************************************************************
+ * Copyright (C) 2008 by Peter Penz <[email protected]> *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
+ ***************************************************************************/
+
+#include "dolphinfileitemdelegate.h"
+
+#include <QAbstractItemModel>
+#include <QAbstractProxyModel>
+#include <QFontMetrics>
+
+#include <kdirmodel.h>
+#include <kfileitem.h>
+
+DolphinFileItemDelegate::DolphinFileItemDelegate(QObject* parent) :
+ KFileItemDelegate(parent),
+ m_hasMinimizedNameColumn(false)
+{
+}
+
+DolphinFileItemDelegate::~DolphinFileItemDelegate()
+{
+}
+
+void DolphinFileItemDelegate::paint(QPainter* painter,
+ const QStyleOptionViewItem& option,
+ const QModelIndex& index) const
+{
+ if (m_hasMinimizedNameColumn && (index.column() == KDirModel::Name)) {
+ QStyleOptionViewItemV4 opt(option);
+
+ const QAbstractProxyModel* proxyModel = static_cast<const QAbstractProxyModel*>(index.model());
+ const KDirModel* dirModel = static_cast<const KDirModel*>(proxyModel->sourceModel());
+ const QModelIndex dirIndex = proxyModel->mapToSource(index);
+ const KFileItem item = dirModel->itemForIndex(dirIndex);
+ if (!item.isNull()) {
+ const int width = nameColumnWidth(item.name(), opt);
+ opt.rect.setWidth(width);
+ }
+ KFileItemDelegate::paint(painter, opt, index);
+ } else {
+ KFileItemDelegate::paint(painter, option, index);
+ }
+}
+
+int DolphinFileItemDelegate::nameColumnWidth(const QString& name, const QStyleOptionViewItem& option)
+{
+ QFontMetrics fontMetrics(option.font);
+ return option.decorationSize.width() + fontMetrics.width(name) + 16;
+}
+
+#include "dolphinfileitemdelegate.moc"