]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fixed wrong usage of QStyleOptionViewItem: caching of the file item in the constructo...
authorPeter Penz <peter.penz19@gmail.com>
Thu, 6 Dec 2007 21:06:45 +0000 (21:06 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Thu, 6 Dec 2007 21:06:45 +0000 (21:06 +0000)
* the selection color of the details view now uses the correct selection color
* changing the colors of KDE results in updating the colors of all Dolphin views

CCMAIL: hein@kde.org
CCMAIL: ereslibre@kde.org
CCMAIL: mw_triad@users.sourceforge.net

svn path=/trunk/KDE/kdebase/apps/; revision=745700

src/dolphincolumnwidget.cpp
src/dolphincolumnwidget.h
src/dolphindetailsview.cpp
src/dolphindetailsview.h
src/dolphiniconsview.cpp
src/dolphiniconsview.h

index 677215972d2b35aa027a6810c538a5e6edbdb72b..bc692ee1b007f3480d482c57bdde8c23fa44e320 100644 (file)
@@ -55,7 +55,8 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     m_view(columnView),
     m_url(url),
     m_childUrl(),
-    m_viewOptions(),
+    m_font(),
+    m_decorationSize(),
     m_dirLister(0),
     m_dolphinModel(0),
     m_proxyModel(0),
@@ -84,17 +85,12 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     const ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
     Q_ASSERT(settings != 0);
 
-    m_viewOptions = QListView::viewOptions();
-
-    QFont font(settings->fontFamily(), settings->fontSize());
-    font.setItalic(settings->italicFont());
-    font.setBold(settings->boldFont());
-    m_viewOptions.font = font;
+    m_font = QFont(settings->fontFamily(), settings->fontSize());
+    m_font.setItalic(settings->italicFont());
+    m_font.setBold(settings->boldFont());
 
     const int iconSize = settings->iconSize();
-    m_viewOptions.decorationSize = QSize(iconSize, iconSize);
-
-    m_viewOptions.showDecorationSelected = true;
+    m_decorationSize = QSize(iconSize, iconSize);
 
     KFileItemDelegate* delegate = new KFileItemDelegate(this);
     setItemDelegate(delegate);
@@ -137,7 +133,7 @@ DolphinColumnWidget::~DolphinColumnWidget()
 
 void DolphinColumnWidget::setDecorationSize(const QSize& size)
 {
-    m_viewOptions.decorationSize = size;
+    m_decorationSize = size;
     doItemsLayout();
 }
 
@@ -197,6 +193,16 @@ void DolphinColumnWidget::setNameFilter(const QString& nameFilter)
     m_proxyModel->setFilterRegExp(nameFilter);
 }
 
+
+QStyleOptionViewItem DolphinColumnWidget::viewOptions() const
+{
+    QStyleOptionViewItem viewOptions = QListView::viewOptions();
+    viewOptions.font = m_font;
+    viewOptions.decorationSize = m_decorationSize;
+    viewOptions.showDecorationSelected = true;
+    return viewOptions;
+}
+
 void DolphinColumnWidget::startDrag(Qt::DropActions supportedActions)
 {
     DragAndDropHelper::startDrag(this, supportedActions);
@@ -278,7 +284,7 @@ void DolphinColumnWidget::paintEvent(QPaintEvent* event)
 
     // TODO: remove this code when the issue #160611 is solved in Qt 4.4
     if (m_dragging) {
-        const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight);
+        const QBrush& brush = viewOptions().palette.brush(QPalette::Normal, QPalette::Highlight);
         DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush);
     }
 }
index e8fea3bf595afb1f1587eb878e3b423e50fd094b..5cb7e1168d3576c353c0654ac755e95da7b8c6d3 100644 (file)
@@ -20,7 +20,9 @@
 #ifndef DOLPHINCOLUMNWIDGET_H
 #define DOLPHINCOLUMNWIDGET_H
 
+#include <QFont>
 #include <QListView>
+#include <QSize>
 #include <QStyleOption>
 
 #include <kurl.h>
@@ -147,7 +149,10 @@ private:
     DolphinColumnView* m_view;
     KUrl m_url;      // URL of the directory that is shown
     KUrl m_childUrl; // URL of the next column that is shown
-    QStyleOptionViewItem m_viewOptions;
+
+    QFont m_font;
+    QSize m_decorationSize;
+
     KDirLister* m_dirLister;
     DolphinModel* m_dolphinModel;
     DolphinSortFilterProxyModel* m_proxyModel;
@@ -184,9 +189,4 @@ inline const KUrl& DolphinColumnWidget::url() const
     return m_url;
 }
 
-inline QStyleOptionViewItem DolphinColumnWidget::viewOptions() const
-{
-    return m_viewOptions;
-}
-
 #endif
index f3d55a8c30ccfcfe22028515b113f33e2a6a8d04..68b288b0b96f2375e499e98315f61ce49c4904cc 100644 (file)
@@ -44,6 +44,8 @@
 DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* controller) :
     QTreeView(parent),
     m_controller(controller),
+    m_font(),
+    m_decorationSize(),
     m_clearAdditionalInfo(false),
     m_dragging(false),
     m_showElasticBand(false),
@@ -107,13 +109,7 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr
     const DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings();
     Q_ASSERT(settings != 0);
 
-    m_viewOptions = QTreeView::viewOptions();
-
-    QFont font(settings->fontFamily(), settings->fontSize());
-    font.setItalic(settings->italicFont());
-    font.setBold(settings->boldFont());
-    m_viewOptions.font = font;
-    m_viewOptions.showDecorationSelected = true;
+    m_font = QFont(settings->fontFamily(), settings->fontSize());
 
 // TODO: Remove this check when 4.3.2 is released and KDE requires it... this
 //       check avoids a division by zero happening on versions before 4.3.1.
@@ -163,7 +159,11 @@ bool DolphinDetailsView::event(QEvent* event)
 
 QStyleOptionViewItem DolphinDetailsView::viewOptions() const
 {
-    return m_viewOptions;
+    QStyleOptionViewItem viewOptions = QTreeView::viewOptions();
+    viewOptions.font = m_font;
+    viewOptions.showDecorationSelected = true;
+    viewOptions.decorationSize = m_decorationSize;
+    return viewOptions;
 }
 
 void DolphinDetailsView::contextMenuEvent(QContextMenuEvent* event)
@@ -301,7 +301,7 @@ void DolphinDetailsView::paintEvent(QPaintEvent* event)
 
     // TODO: remove this code when the issue #160611 is solved in Qt 4.4
     if (m_dragging) {
-        const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight);
+        const QBrush& brush = viewOptions().palette.brush(QPalette::Normal, QPalette::Highlight);
         DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush);
     }
 }
@@ -516,7 +516,7 @@ void DolphinDetailsView::updateDecorationSize()
 {
     DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings();
     const int iconSize = settings->iconSize();
-    m_viewOptions.decorationSize = QSize(iconSize, iconSize);
+    m_decorationSize = QSize(iconSize, iconSize);
 
     m_controller->setZoomInPossible(isZoomInPossible());
     m_controller->setZoomOutPossible(isZoomOutPossible());
index 1b21690c0b46896fe7003fc55068dc8f96b7c1e3..cfa5062b78d3abad41017d80a85b01775bc6a335 100644 (file)
@@ -22,8 +22,7 @@
 #define DOLPHINDETAILSVIEW_H
 
 #include <dolphinview.h>
-#include <QtGui/QStyleOption>
-#include <QtGui/QTreeView>
+#include <QTreeView>
 #include <libdolphin_export.h>
 
 class DolphinController;
@@ -146,7 +145,9 @@ private:
 
 private:
     DolphinController* m_controller;
-    QStyleOptionViewItem m_viewOptions;
+
+    QFont m_font;
+    QSize m_decorationSize;
 
     bool m_clearAdditionalInfo;
 
index 2bb21cb79a6859de0c6e8dd6efbedf2344ee146a..a45b08dcf9886b27d7235c07900798ebca0468c6 100644 (file)
@@ -38,6 +38,10 @@ DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controlle
     KCategorizedView(parent),
     m_controller(controller),
     m_categoryDrawer(0),
+    m_font(),
+    m_decorationSize(),
+    m_decorationPosition(QStyleOptionViewItem::Top),
+    m_displayAlignment(Qt::AlignHCenter),
     m_itemSize(),
     m_dragging(false),
     m_dropRect()
@@ -84,24 +88,21 @@ DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controlle
     const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
     Q_ASSERT(settings != 0);
 
-    m_viewOptions = KCategorizedView::viewOptions();
-    m_viewOptions.showDecorationSelected = true;
-
-    QFont font(settings->fontFamily(), settings->fontSize());
-    font.setItalic(settings->italicFont());
-    font.setBold(settings->boldFont());
-    m_viewOptions.font = font;
+    m_font = QFont(settings->fontFamily(), settings->fontSize());
+    m_font.setItalic(settings->italicFont());
+    m_font.setBold(settings->boldFont());
 
     setWordWrap(settings->numberOfTextlines() > 1);
     updateGridSize(view->showPreview(), 0);
 
     if (settings->arrangement() == QListView::TopToBottom) {
         setFlow(QListView::LeftToRight);
-        m_viewOptions.decorationPosition = QStyleOptionViewItem::Top;
+        m_decorationPosition = QStyleOptionViewItem::Top;
+        m_displayAlignment = Qt::AlignHCenter;
     } else {
         setFlow(QListView::TopToBottom);
-        m_viewOptions.decorationPosition = QStyleOptionViewItem::Left;
-        m_viewOptions.displayAlignment = Qt::AlignLeft | Qt::AlignVCenter;
+        m_decorationPosition = QStyleOptionViewItem::Left;
+        m_displayAlignment = Qt::AlignLeft | Qt::AlignVCenter;
     }
 
     m_categoryDrawer = new DolphinCategoryDrawer();
@@ -121,6 +122,7 @@ QRect DolphinIconsView::visualRect(const QModelIndex& index) const
     const bool leftToRightFlow = (flow() == QListView::LeftToRight);
 
     QRect itemRect = KCategorizedView::visualRect(index);
+
     const int maxWidth  = m_itemSize.width();
     const int maxHeight = m_itemSize.height();
 
@@ -152,7 +154,8 @@ QRect DolphinIconsView::visualRect(const QModelIndex& index) const
         const int margin = settings->gridSpacing();
         const int gridWidth = gridSize().width();
         const int gridIndex = (itemRect.left() - margin + 1) / gridWidth;
-        itemRect.moveLeft(gridIndex * gridWidth + margin);
+        const int centerInc = (maxWidth - itemRect.width()) / 2;
+        itemRect.moveLeft((gridIndex * gridWidth) + margin + centerInc);
     }
 
     return itemRect;
@@ -160,7 +163,13 @@ QRect DolphinIconsView::visualRect(const QModelIndex& index) const
 
 QStyleOptionViewItem DolphinIconsView::viewOptions() const
 {
-    return m_viewOptions;
+    QStyleOptionViewItem viewOptions = KCategorizedView::viewOptions();
+    viewOptions.font = m_font;
+    viewOptions.decorationPosition = m_decorationPosition;
+    viewOptions.decorationSize = m_decorationSize;
+    viewOptions.displayAlignment = m_displayAlignment;
+    viewOptions.showDecorationSelected = true;
+    return viewOptions;
 }
 
 void DolphinIconsView::contextMenuEvent(QContextMenuEvent* event)
@@ -250,7 +259,7 @@ void DolphinIconsView::paintEvent(QPaintEvent* event)
 
     // TODO: remove this code when the issue #160611 is solved in Qt 4.4
     if (m_dragging) {
-        const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight);
+        const QBrush& brush = viewOptions().palette.brush(QPalette::Normal, QPalette::Highlight);
         DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush);
     }
 }
@@ -421,22 +430,22 @@ void DolphinIconsView::updateGridSize(bool showPreview, int additionalInfoCount)
     }
 
     Q_ASSERT(additionalInfoCount >= 0);
-    itemHeight += additionalInfoCount * m_viewOptions.font.pointSize() * 2;
+    itemHeight += additionalInfoCount * m_font.pointSize() * 2;
 
     if (settings->arrangement() == QListView::TopToBottom) {
         // The decoration width indirectly defines the maximum
         // width for the text wrapping. To use the maximum item width
         // for text wrapping, it is used as decoration width.
-        m_viewOptions.decorationSize = QSize(itemWidth, size);
+        m_decorationSize = QSize(itemWidth, size);
     } else {
-        m_viewOptions.decorationSize = QSize(size, size);
+        m_decorationSize = QSize(size, size);
     }
 
+    m_itemSize = QSize(itemWidth, itemHeight);
+
     const int spacing = settings->gridSpacing();
     setGridSize(QSize(itemWidth + spacing * 2, itemHeight + spacing));
 
-    m_itemSize = QSize(itemWidth, itemHeight);
-
     m_controller->setZoomInPossible(isZoomInPossible());
     m_controller->setZoomOutPossible(isZoomOutPossible());
 }
index fbbbce0ecbd87de2f1f91cd33bfc483feb4f1739..06c41786822c537dac08863ad9621ae60fce5e08 100644 (file)
@@ -25,6 +25,7 @@
 #include <kfileitem.h>
 #include <kfileitemdelegate.h>
 
+#include <QFont>
 #include <QSize>
 #include <QStyleOption>
 
@@ -97,7 +98,11 @@ private:
 private:
     DolphinController* m_controller;
     DolphinCategoryDrawer* m_categoryDrawer;
-    QStyleOptionViewItem m_viewOptions;
+
+    QFont m_font;
+    QSize m_decorationSize;
+    QStyleOptionViewItem::Position m_decorationPosition;
+    Qt::Alignment m_displayAlignment;
 
     QSize m_itemSize;