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 "dolphincontroller.h"
|
||||||
|
|
||||||
|
#include <QPainter>
|
||||||
|
|
||||||
DolphinController::DolphinController(QObject* parent) :
|
DolphinController::DolphinController(QObject* parent) :
|
||||||
QObject(parent),
|
QObject(parent),
|
||||||
m_showPreview(false),
|
m_showPreview(false),
|
||||||
|
@ -87,6 +89,33 @@ void DolphinController::triggerZoomOut()
|
||||||
emit zoomOut();
|
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)
|
void DolphinController::triggerItem(const QModelIndex& index)
|
||||||
{
|
{
|
||||||
emit itemTriggered(index);
|
emit itemTriggered(index);
|
||||||
|
|
|
@ -26,8 +26,11 @@
|
||||||
#include <libdolphin_export.h>
|
#include <libdolphin_export.h>
|
||||||
|
|
||||||
class KUrl;
|
class KUrl;
|
||||||
|
class QBrush;
|
||||||
class QModelIndex;
|
class QModelIndex;
|
||||||
class QPoint;
|
class QPoint;
|
||||||
|
class QRect;
|
||||||
|
class QWidget;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Allows to control Dolphin views and to react on state changes.
|
* @brief Allows to control Dolphin views and to react on state changes.
|
||||||
|
@ -83,6 +86,11 @@ public:
|
||||||
inline void setZoomOutPossible(bool possible);
|
inline void setZoomOutPossible(bool possible);
|
||||||
inline bool isZoomOutPossible() const;
|
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:
|
public slots:
|
||||||
/**
|
/**
|
||||||
* Emits the signal itemTriggered(). The method should be invoked by the
|
* Emits the signal itemTriggered(). The method should be invoked by the
|
||||||
|
|
|
@ -265,16 +265,10 @@ void DolphinDetailsView::paintEvent(QPaintEvent* event)
|
||||||
painter.restore();
|
painter.restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: remove this code when the issue #160611 is solved in Qt 4.4
|
||||||
if (m_dragging) {
|
if (m_dragging) {
|
||||||
// TODO: remove this code when the issue #160611 is solved in Qt 4.4
|
const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight);
|
||||||
QPainter painter(viewport());
|
DolphinController::drawHoverIndication(viewport(), m_dropRect, brush);
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -162,16 +162,10 @@ void DolphinIconsView::paintEvent(QPaintEvent* event)
|
||||||
{
|
{
|
||||||
KListView::paintEvent(event);
|
KListView::paintEvent(event);
|
||||||
|
|
||||||
|
// TODO: remove this code when the issue #160611 is solved in Qt 4.4
|
||||||
if (m_dragging) {
|
if (m_dragging) {
|
||||||
// TODO: remove this code when the issue #160611 is solved in Qt 4.4
|
const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight);
|
||||||
QPainter painter(viewport());
|
DolphinController::drawHoverIndication(viewport(), m_dropRect, brush);
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,9 +19,10 @@
|
||||||
|
|
||||||
#include "sidebartreeview.h"
|
#include "sidebartreeview.h"
|
||||||
|
|
||||||
|
#include "dolphincontroller.h"
|
||||||
|
|
||||||
#include <kdirmodel.h>
|
#include <kdirmodel.h>
|
||||||
#include <kfileitemdelegate.h>
|
#include <kfileitemdelegate.h>
|
||||||
|
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
|
@ -114,16 +115,10 @@ void SidebarTreeView::paintEvent(QPaintEvent* event)
|
||||||
{
|
{
|
||||||
QTreeView::paintEvent(event);
|
QTreeView::paintEvent(event);
|
||||||
|
|
||||||
|
// TODO: remove this code when the issue #160611 is solved in Qt 4.4
|
||||||
if (m_dragging) {
|
if (m_dragging) {
|
||||||
// TODO: remove this code when the issue #160611 is solved in Qt 4.4
|
const QBrush& brush = palette().brush(QPalette::Normal, QPalette::Highlight);
|
||||||
QPainter painter(viewport());
|
DolphinController::drawHoverIndication(viewport(), m_dropRect, brush);
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue