From d8457ecd8d84c0f9496c4aef0223563fdb4df565 Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Fri, 25 Feb 2011 20:37:56 +0100 Subject: [PATCH] properties for dialog move --- declarativeimports/core/dialog.cpp | 29 +++++++++++++++++++++++++++++ declarativeimports/core/dialog.h | 12 ++++++++++++ 2 files changed, 41 insertions(+) diff --git a/declarativeimports/core/dialog.cpp b/declarativeimports/core/dialog.cpp index 37999d81d..71ea7923e 100644 --- a/declarativeimports/core/dialog.cpp +++ b/declarativeimports/core/dialog.cpp @@ -159,6 +159,35 @@ void DialogProxy::showPopup(QGraphicsObject *item) emit visibleChanged(); } + +int DialogProxy::x() const +{ + return m_dialog->pos().x(); +} + +void DialogProxy::setX(int x) +{ + m_dialog->move(x, m_dialog->pos().y()); +} + +int DialogProxy::y() const +{ + return m_dialog->pos().y(); +} + +void DialogProxy::setY(int y) +{ + m_dialog->move(m_dialog->pos().x(), y); +} + +bool DialogProxy::eventFilter(QObject *watched, QEvent *event) +{ + if (watched == m_dialog && event->type() == QEvent::Move) { + emit positionChanged(); + } + return false; +} + void DialogProxy::setAttribute(int attribute, bool on) { m_dialog->setAttribute((Qt::WidgetAttribute)attribute, on); diff --git a/declarativeimports/core/dialog.h b/declarativeimports/core/dialog.h index 7750c7f06..e79fd61e5 100644 --- a/declarativeimports/core/dialog.h +++ b/declarativeimports/core/dialog.h @@ -37,6 +37,8 @@ class DialogProxy : public QObject Q_PROPERTY(QGraphicsObject *mainItem READ mainItem WRITE setMainItem NOTIFY mainItemChanged) Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged) + Q_PROPERTY(int x READ x WRITE setX NOTIFY positionChanged) + Q_PROPERTY(int y READ y WRITE setY NOTIFY positionChanged) public: enum WidgetAttribute { @@ -52,6 +54,12 @@ public: bool isVisible() const; void setVisible(const bool visible); + int x() const; + void setX(int x); + + int y() const; + void setY(int y); + Q_INVOKABLE void showPopup(QGraphicsObject *item); //FIXME:: Qt::WidgetAttribute should be already Q_INVOKABLE void setAttribute(int attribute, bool on); @@ -59,10 +67,14 @@ public: Q_SIGNALS: void mainItemChanged(); void visibleChanged(); + void positionChanged(); protected Q_SLOTS: void syncMainItem(); +protected: + bool eventFilter(QObject *watched, QEvent *event); + private: Plasma::Dialog *m_dialog; DeclarativeItemContainer *m_declarativeItemContainer;