diff options
author | Nick Dedekind <nicholas.dedekind@gmail.com> | 2013-08-22 12:56:43 +0100 |
---|---|---|
committer | Nick Dedekind <nicholas.dedekind@gmail.com> | 2013-08-22 12:56:43 +0100 |
commit | c2746565786204a732ff5531434bf636f8df605c (patch) | |
tree | 928b3caf70d57782917024efeb53d5f3accb4794 /libqmenumodel/src/unitymenuaction.cpp | |
parent | d912a0aed3c62b8f615c37fd9406583b9f0a6a36 (diff) | |
download | qmenumodel-c2746565786204a732ff5531434bf636f8df605c.tar.gz qmenumodel-c2746565786204a732ff5531434bf636f8df605c.tar.bz2 qmenumodel-c2746565786204a732ff5531434bf636f8df605c.zip |
Using qt event loop to pass UnityMenuAction events
Diffstat (limited to 'libqmenumodel/src/unitymenuaction.cpp')
-rw-r--r-- | libqmenumodel/src/unitymenuaction.cpp | 71 |
1 files changed, 42 insertions, 29 deletions
diff --git a/libqmenumodel/src/unitymenuaction.cpp b/libqmenumodel/src/unitymenuaction.cpp index c2c7034..b41fd3e 100644 --- a/libqmenumodel/src/unitymenuaction.cpp +++ b/libqmenumodel/src/unitymenuaction.cpp @@ -18,6 +18,7 @@ #include "unitymenuaction.h" #include "unitymenumodel.h" +#include "unitymenuactionevents.h" #include <QDebug> @@ -71,41 +72,20 @@ QVariant UnityMenuAction::state() const return m_state; } -bool UnityMenuAction::isEnabled() const +void UnityMenuAction::setState(const QVariant& state) { - return m_enabled; -} - -bool UnityMenuAction::isValid() const -{ - return m_valid; -} - -void UnityMenuAction::onAdded(bool enabled, const QVariant &state) -{ - if (m_enabled != enabled) { - m_enabled = enabled; - Q_EMIT enabledChanged(m_enabled); - } if (m_state != state) { m_state = state; Q_EMIT stateChanged(m_state); } - if (m_valid != true) { - m_valid = true; - Q_EMIT validChanged(m_valid); - } } -void UnityMenuAction::onRemoved() +bool UnityMenuAction::isEnabled() const { - if (m_valid != false) { - m_valid = false; - Q_EMIT validChanged(m_valid); - } + return m_enabled; } -void UnityMenuAction::onEnabledChanged(bool enabled) +void UnityMenuAction::setEnabled(bool enabled) { if (m_enabled != enabled) { m_enabled = enabled; @@ -113,11 +93,16 @@ void UnityMenuAction::onEnabledChanged(bool enabled) } } -void UnityMenuAction::onStateChanged(const QVariant &state) +bool UnityMenuAction::isValid() const { - if (m_state != state) { - m_state = state; - Q_EMIT stateChanged(m_state); + return m_valid; +} + +void UnityMenuAction::setValid(bool valid) +{ + if (m_valid != valid) { + m_valid = valid; + Q_EMIT validChanged(m_valid); } } @@ -134,3 +119,31 @@ void UnityMenuAction::unregisterAction() m_model->unregisterAction(this); } } + +bool UnityMenuAction::event(QEvent* e) +{ + if (e->type() == UnityMenuActionAddEvent::eventType) { + UnityMenuActionAddEvent *umaae = static_cast<UnityMenuActionAddEvent*>(e); + + setEnabled(umaae->enabled); + setState(umaae->state); + setValid(true); + return true; + } else if (e->type() == UnityMenuActionEnabledChangedEvent::eventType) { + UnityMenuActionEnabledChangedEvent *umaece = static_cast<UnityMenuActionEnabledChangedEvent*>(e); + + setEnabled(umaece->enabled); + return true; + } else if (e->type() == UnityMenuActionStateChangeEvent::eventType) { + UnityMenuActionStateChangeEvent *umasce = static_cast<UnityMenuActionStateChangeEvent*>(e); + + setState(umasce->state); + return true; + } else if (e->type() == UnityMenuActionRemoveEvent::eventType) { + UnityMenuActionRemoveEvent *umare = static_cast<UnityMenuActionRemoveEvent*>(e); + + setValid(false); + return true; + } + return QObject::event(e); +} |