From 497019839281d86530470799534b8c31b41be11d Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Fri, 28 Oct 2011 19:40:04 +0200 Subject: [PATCH] export status --- declarativeimports/plasmacomponents/qmenu.cpp | 22 ++++++++++++++----- declarativeimports/plasmacomponents/qmenu.h | 15 +++++++++---- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/declarativeimports/plasmacomponents/qmenu.cpp b/declarativeimports/plasmacomponents/qmenu.cpp index 60e02b9d1..4125bea2e 100644 --- a/declarativeimports/plasmacomponents/qmenu.cpp +++ b/declarativeimports/plasmacomponents/qmenu.cpp @@ -24,7 +24,8 @@ #include QMenuProxy::QMenuProxy (QObject *parent) - : QObject (parent) + : QObject(parent), + m_status(DialogStatus::Closed) { m_menu = new QMenu(0); } @@ -34,30 +35,37 @@ QMenuProxy::~QMenuProxy() delete m_menu; } -QDeclarativeListProperty QMenuProxy::actions() +QDeclarativeListProperty QMenuProxy::items() { - return QDeclarativeListProperty(this, m_actions); + return QDeclarativeListProperty(this, m_items); } int QMenuProxy::actionCount() const { - return m_actions.count(); + return m_items.count(); } QMenuItem *QMenuProxy::action(int index) const { - return m_actions.at(index); + return m_items.at(index); +} + +DialogStatus::Status QMenuProxy::status() const +{ + return m_status; } void QMenuProxy::showMenu(int x, int y) { m_menu->clear(); - foreach(QMenuItem* item, m_actions) { + foreach(QMenuItem* item, m_items) { m_menu->addAction (item); } QPoint screenPos = QApplication::activeWindow()->mapToGlobal(QPoint(x, y)); m_menu->popup(screenPos); + m_status = DialogStatus::Open; + emit statusChanged(); } void QMenuProxy::open() @@ -107,6 +115,8 @@ void QMenuProxy::open() void QMenuProxy::close() { m_menu->hide(); + m_status = DialogStatus::Closed; + emit statusChanged(); } #include "qmenu.moc" diff --git a/declarativeimports/plasmacomponents/qmenu.h b/declarativeimports/plasmacomponents/qmenu.h index cd86684a1..83c15a61f 100644 --- a/declarativeimports/plasmacomponents/qmenu.h +++ b/declarativeimports/plasmacomponents/qmenu.h @@ -24,29 +24,36 @@ #include #include #include "qmenuitem.h" +#include "enums.h" class QMenuProxy : public QObject { Q_OBJECT - Q_PROPERTY(QDeclarativeListProperty actions READ actions) - Q_CLASSINFO("DefaultProperty", "actions") + Q_PROPERTY(QDeclarativeListProperty items READ items CONSTANT) + Q_CLASSINFO("DefaultProperty", "items") + Q_PROPERTY(DialogStatus::Status status READ status NOTIFY statusChanged) public: QMenuProxy(QObject *parent = 0); ~QMenuProxy(); - QDeclarativeListProperty actions(); + QDeclarativeListProperty items(); int actionCount() const; QMenuItem *action(int) const; + DialogStatus::Status status() const; void showMenu(int x, int y); Q_INVOKABLE void open(); Q_INVOKABLE void close(); +Q_SIGNALS: + void statusChanged(); + private: - QList m_actions; + QList m_items; QMenu *m_menu; + DialogStatus::Status m_status; }; #endif //QMENU_PROXY_H