refactor: Renames DropSplitAreas => DropOverlayCross

mod: Uses QPalette::Highlight color, instead of in-source fixed color, for area overlay painting.
This commit is contained in:
mfreiholz 2016-04-18 07:06:46 +02:00
parent 0bd5dc57fa
commit 86c23c6269
2 changed files with 16 additions and 18 deletions

View File

@ -10,14 +10,14 @@ class QGridLayout;
#include "ads/API.h"
ADS_NAMESPACE_BEGIN
class DropSplitAreas;
class DropOverlayCross;
// DropOverlay paints a translucent rectangle over another widget.
// It can also show different types of drop area indicators.
class DropOverlay : public QFrame
{
Q_OBJECT
friend class DropSplitAreas;
friend class DropOverlayCross;
public:
DropOverlay(QWidget* parent);
@ -41,7 +41,7 @@ protected:
private:
DropAreas _allowedAreas;
DropSplitAreas* _splitAreas;
DropOverlayCross* _splitAreas;
bool _fullAreaDrop;
QPointer<QWidget> _target;
@ -50,12 +50,12 @@ private:
};
// DropSplitAreas shows a cross with 5 different drop area possibilities.
class DropSplitAreas : public QWidget
class DropOverlayCross : public QWidget
{
Q_OBJECT
public:
DropSplitAreas(DropOverlay* overlay);
DropOverlayCross(DropOverlay* overlay);
void reset();
DropArea cursorLocation() const;
void setWidgetForArea(QWidget* widget, DropArea area);

View File

@ -27,7 +27,7 @@ static QWidget* createDropWidget(const QString& img)
DropOverlay::DropOverlay(QWidget* parent) :
QFrame(parent),
_allowedAreas(InvalidDropArea),
_splitAreas(new DropSplitAreas(this)),
_splitAreas(new DropOverlayCross(this)),
_fullAreaDrop(false),
_lastLocation(InvalidDropArea)
{
@ -46,8 +46,6 @@ DropOverlay::DropOverlay(QWidget* parent) :
DropOverlay::~DropOverlay()
{
delete _splitAreas;
_splitAreas = NULL;
}
void DropOverlay::setAllowedAreas(DropAreas areas)
@ -143,13 +141,14 @@ void DropOverlay::hideDropOverlay()
void DropOverlay::paintEvent(QPaintEvent*)
{
QPainter p(this);
const QColor areaColor = palette().color(QPalette::Active, QPalette::Highlight);//QColor(0, 100, 255)
// Always draw drop-rect over the entire rect()
if (_fullAreaDrop)
{
QRect r = rect();
p.fillRect(r, QBrush(QColor(0, 100, 255), Qt::Dense4Pattern));
p.setBrush(QBrush(QColor(0, 100, 255)));
p.fillRect(r, QBrush(areaColor, Qt::Dense4Pattern));
p.setBrush(QBrush(areaColor));
p.drawRect(r);
return;
}
@ -179,8 +178,8 @@ void DropOverlay::paintEvent(QPaintEvent*)
}
if (!r.isNull())
{
p.fillRect(r, QBrush(QColor(0, 100, 255), Qt::Dense4Pattern));
p.setBrush(QBrush(QColor(0, 100, 255)));
p.fillRect(r, QBrush(areaColor, Qt::Dense4Pattern));
p.setBrush(QBrush(areaColor));
p.drawRect(r);
}
@ -216,7 +215,7 @@ void DropOverlay::moveEvent(QMoveEvent* e)
///////////////////////////////////////////////////////////////////////
DropSplitAreas::DropSplitAreas(DropOverlay* overlay) :
DropOverlayCross::DropOverlayCross(DropOverlay* overlay) :
QWidget(overlay->parentWidget()),
_overlay(overlay),
_widgets()
@ -246,7 +245,7 @@ DropSplitAreas::DropSplitAreas(DropOverlay* overlay) :
bl1->addStretch(1);
}
void DropSplitAreas::reset()
void DropOverlayCross::reset()
{
const DropAreas areas = _overlay->allowedAreas();
@ -276,7 +275,7 @@ void DropSplitAreas::reset()
setWidgetForArea(NULL, ADS_NS::CenterDropArea);
}
DropArea DropSplitAreas::cursorLocation() const
DropArea DropOverlayCross::cursorLocation() const
{
const QPoint pos = mapFromGlobal(QCursor::pos());
QHashIterator<DropArea, QWidget*> i(_widgets);
@ -294,7 +293,7 @@ DropArea DropSplitAreas::cursorLocation() const
return InvalidDropArea;
}
void DropSplitAreas::setWidgetForArea(QWidget* widget, DropArea area)
void DropOverlayCross::setWidgetForArea(QWidget* widget, DropArea area)
{
QWidget* oldWidget = _widgets.take(area);
if (oldWidget)
@ -327,7 +326,6 @@ void DropSplitAreas::setWidgetForArea(QWidget* widget, DropArea area)
return;
}
_widgets.insert(area, widget);
_grid->invalidate();
// if (area == ADS_NS::TopDropArea)
// {
@ -356,7 +354,7 @@ void DropSplitAreas::setWidgetForArea(QWidget* widget, DropArea area)
// }
}
void DropSplitAreas::showEvent(QShowEvent* e)
void DropOverlayCross::showEvent(QShowEvent*)
{
resize(_overlay->size());
move(_overlay->pos());