mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
provide a common drawing method for the hover indication during drag & drop until issue/wish #160611 is solved in Qt4.4
svn path=/trunk/KDE/kdebase/apps/; revision=675042
This commit is contained in:
parent
862ceee323
commit
2cb45d81a5
5 changed files with 48 additions and 28 deletions
|
@ -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);
|
||||
|
|
|
@ -26,8 +26,11 @@
|
|||
#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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,9 +19,10 @@
|
|||
|
||||
#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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue