]> cloud.milkyroute.net Git - dolphin.git/commitdiff
provide a common drawing method for the hover indication during drag & drop until...
authorPeter Penz <peter.penz19@gmail.com>
Wed, 13 Jun 2007 17:42:16 +0000 (17:42 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Wed, 13 Jun 2007 17:42:16 +0000 (17:42 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=675042

src/dolphincontroller.cpp
src/dolphincontroller.h
src/dolphindetailsview.cpp
src/dolphiniconsview.cpp
src/sidebartreeview.cpp

index 378c1b4ba86d443999d824ea36d84c70ea003bbe..1831c15c33670dca59475ee9341d427d229d122c 100644 (file)
@@ -19,6 +19,8 @@
 
 #include "dolphincontroller.h"
 
+#include <QPainter>
+
 DolphinController::DolphinController(QObject* parent) :
     QObject(parent),
     m_showPreview(false),
@@ -87,6 +89,33 @@ void DolphinController::triggerZoomOut()
     emit zoomOut();
 }
 
+void DolphinController::drawHoverIndication(QWidget* widget,
+                                            const QRect& bounds,
+                                            const QBrush& brush)
+{
+    QPainter painter(widget);
+    painter.save();
+    QBrush blendedBrush(brush);
+    QColor color = blendedBrush.color();
+    color.setAlpha(64);
+    blendedBrush.setColor(color);
+
+    const int radius = 10;
+    QPainterPath path(QPointF(bounds.left(), bounds.top() + radius));
+    path.quadTo(bounds.left(), bounds.top(), bounds.left() + radius, bounds.top());
+    path.lineTo(bounds.right() - radius, bounds.top());
+    path.quadTo(bounds.right(), bounds.top(), bounds.right(), bounds.top() + radius);
+    path.lineTo(bounds.right(), bounds.bottom() - radius);
+    path.quadTo(bounds.right(), bounds.bottom(), bounds.right() - radius, bounds.bottom());
+    path.lineTo(bounds.left() + radius, bounds.bottom());
+    path.quadTo(bounds.left(), bounds.bottom(), bounds.left(), bounds.bottom() - radius);
+    path.closeSubpath();
+
+    painter.setRenderHint(QPainter::Antialiasing);
+    painter.fillPath(path, blendedBrush);
+    painter.restore();
+}
+
 void DolphinController::triggerItem(const QModelIndex& index)
 {
     emit itemTriggered(index);
index ccf4e48795f17a7b7fa8673ccb588b4c4b554d60..aa0eab22fabbcc4d7fd5cafa0317dcc401a53af5 100644 (file)
 #include <libdolphin_export.h>
 
 class KUrl;
+class QBrush;
 class QModelIndex;
 class QPoint;
+class QRect;
+class QWidget;
 
 /**
  * @brief Allows to control Dolphin views and to react on state changes.
@@ -83,6 +86,11 @@ public:
     inline void setZoomOutPossible(bool possible);
     inline bool isZoomOutPossible() const;
 
+    // TODO: remove this method when the issue #160611 is solved in Qt 4.4
+    static void drawHoverIndication(QWidget* widget,
+                                    const QRect& bounds,
+                                    const QBrush& brush);
+
 public slots:
     /**
      * Emits the signal itemTriggered(). The method should be invoked by the
index 6a3f4bf187661d1442e1e4e8785e91adde25180d..ba82fc901ae1f8dabc750684ea74aadab4bac3ad 100644 (file)
@@ -265,16 +265,10 @@ void DolphinDetailsView::paintEvent(QPaintEvent* event)
         painter.restore();
     }
 
+    // TODO: remove this code when the issue #160611 is solved in Qt 4.4
     if (m_dragging) {
-        // TODO: remove this code when the issue #160611 is solved in Qt 4.4
-        QPainter painter(viewport());
-        painter.save();
-        QBrush brush(m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight));
-        QColor color = brush.color();
-        color.setAlpha(64);
-        brush.setColor(color);
-        painter.fillRect(m_dropRect, brush);
-        painter.restore();
+        const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight);
+        DolphinController::drawHoverIndication(viewport(), m_dropRect, brush);
     }
 }
 
index d21ffba32752ebfd42b8257a7a5aab67125dcd78..50d7f311e92284b9ebc5b0d62c470cf44b616545 100644 (file)
@@ -162,16 +162,10 @@ void DolphinIconsView::paintEvent(QPaintEvent* event)
 {
     KListView::paintEvent(event);
 
+    // TODO: remove this code when the issue #160611 is solved in Qt 4.4
     if (m_dragging) {
-        // TODO: remove this code when the issue #160611 is solved in Qt 4.4
-        QPainter painter(viewport());
-        painter.save();
-        QBrush brush(m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight));
-        QColor color = brush.color();
-        color.setAlpha(64);
-        brush.setColor(color);
-        painter.fillRect(m_dropRect, brush);
-        painter.restore();
+        const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight);
+        DolphinController::drawHoverIndication(viewport(), m_dropRect, brush);
     }
 }
 
index f82bff37aad665f5c84ee4840ec20bbc354e5fe8..6e79171de1622c8f4eb0e111df6a36a1ca9b4ed8 100644 (file)
 
 #include "sidebartreeview.h"
 
+#include "dolphincontroller.h"
+
 #include <kdirmodel.h>
 #include <kfileitemdelegate.h>
-
 #include <QKeyEvent>
 #include <QPainter>
 #include <QHeaderView>
@@ -114,16 +115,10 @@ void SidebarTreeView::paintEvent(QPaintEvent* event)
 {
     QTreeView::paintEvent(event);
 
+    // TODO: remove this code when the issue #160611 is solved in Qt 4.4
     if (m_dragging) {
-        // TODO: remove this code when the issue #160611 is solved in Qt 4.4
-        QPainter painter(viewport());
-        painter.save();
-        QBrush brush(palette().brush(QPalette::Normal, QPalette::Highlight));
-        QColor color = brush.color();
-        color.setAlpha(64);
-        brush.setColor(color);
-        painter.fillRect(m_dropRect, brush);
-        painter.restore();
+        const QBrush& brush = palette().brush(QPalette::Normal, QPalette::Highlight);
+        DolphinController::drawHoverIndication(viewport(), m_dropRect, brush);
     }
 }