Skip to content

Commit

Permalink
feat(DRegionMonitor): support set coordinate type
Browse files Browse the repository at this point in the history
Change-Id: Ie781aa940cf1c971043eaeccd54cd02f579dd597
  • Loading branch information
haruyukilxz committed Oct 29, 2018
1 parent a34833e commit d677330
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 2 deletions.
20 changes: 20 additions & 0 deletions src/util/dregionmonitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ QRegion DRegionMonitor::watchedRegion() const
return d->watchedRegion;
}

DRegionMonitor::CoordinateType DRegionMonitor::coordinateType() const
{
D_DC(DRegionMonitor);

return d->type;
}

void DRegionMonitor::registerRegion()
{
if (registered())
Expand Down Expand Up @@ -59,6 +66,13 @@ void DRegionMonitor::setWatchedRegion(const QRegion &region)
d->registerMonitorRegion();
}

void DRegionMonitor::setCoordinateType(DRegionMonitor::CoordinateType type)
{
D_D(DRegionMonitor);

d->type = type;
}

DRegionMonitorPrivate::DRegionMonitorPrivate(DRegionMonitor *q)
: DObjectPrivate(q)
, eventInter(new XEventMonitor("com.deepin.api.XEventMonitor", "/com/deepin/api/XEventMonitor", QDBusConnection::sessionBus()))
Expand Down Expand Up @@ -173,6 +187,12 @@ void DRegionMonitorPrivate::_q_KeyRelease(const QString &keyname, const int x, c

const QPoint DRegionMonitorPrivate::deviceScaledCoordinate(const QPoint &p, const double ratio) const
{
D_QC(DRegionMonitor);

if (type == q->Original) {
return p;
}

for (const auto *s : qApp->screens())
{
const QRect &g(s->geometry());
Expand Down
13 changes: 11 additions & 2 deletions src/util/dregionmonitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,40 @@ class DRegionMonitor : public QObject, public DTK_CORE_NAMESPACE::DObject
Q_OBJECT
D_DECLARE_PRIVATE(DRegionMonitor)
Q_DISABLE_COPY(DRegionMonitor)
Q_PROPERTY(CoordinateType coordinateType READ coordinateType WRITE setCoordinateType NOTIFY coordinateTypeChanged)

public:
explicit DRegionMonitor(QObject *parent = nullptr);

enum WatchedFlags
{
enum WatchedFlags {
Button_Left = 1,
Button_Right = 3,
};

enum CoordinateType {
ScaleRatio,
Original
};
Q_ENUM(CoordinateType)

bool registered() const;
QRegion watchedRegion() const;
CoordinateType coordinateType() const;

Q_SIGNALS:
void buttonPress(const QPoint &p, const int flag) const;
void buttonRelease(const QPoint &p, const int flag) const;
void cursorMove(const QPoint &p) const;
void keyPress(const QString &keyname) const;
void keyRelease(const QString &keyname) const;
void coordinateTypeChanged(CoordinateType type) const;

public Q_SLOTS:
void registerRegion();
inline void registerRegion(const QRegion &region) { setWatchedRegion(region); registerRegion(); }
void unregisterRegion();
void setWatchedRegion(const QRegion &region);
void setCoordinateType(CoordinateType type);

private:
Q_PRIVATE_SLOT(d_func(), void _q_ButtonPress(const int, const int, const int, const QString&))
Expand Down
1 change: 1 addition & 0 deletions src/util/private/dregionmonitor_p.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class DRegionMonitorPrivate : public DObjectPrivate
XEventMonitor *eventInter;
QRegion watchedRegion;
QString registerKey;
DRegionMonitor::CoordinateType type = DRegionMonitor::ScaleRatio;
};

DWIDGET_END_NAMESPACE
Expand Down

0 comments on commit d677330

Please sign in to comment.