From 0ca199d4f212de9f998b4bc70616f9662134c9ef Mon Sep 17 00:00:00 2001 From: Nick Dedekind Date: Tue, 11 Nov 2014 14:49:40 +0000 Subject: Allow override of action state parser --- libqmenumodel/src/qdbusactiongroup.cpp | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'libqmenumodel/src/qdbusactiongroup.cpp') diff --git a/libqmenumodel/src/qdbusactiongroup.cpp b/libqmenumodel/src/qdbusactiongroup.cpp index 0ef907a..b29ece0 100644 --- a/libqmenumodel/src/qdbusactiongroup.cpp +++ b/libqmenumodel/src/qdbusactiongroup.cpp @@ -17,6 +17,7 @@ * Renato Araujo Oliveira Filho */ +#include "actionstateparser.h" #include "qdbusactiongroup.h" #include "qstateaction.h" #include "converter.h" @@ -58,7 +59,8 @@ extern "C" { QDBusActionGroup::QDBusActionGroup(QObject *parent) :QObject(parent), QDBusObject(this), - m_actionGroup(NULL) + m_actionGroup(NULL), + m_actionStateParser(new ActionStateParser(this)) { } @@ -89,7 +91,13 @@ QVariant QDBusActionGroup::actionState(const QString &name) { QVariant result; GVariant *state = g_action_group_get_action_state(m_actionGroup, name.toUtf8().data()); - result = Converter::toQVariant(state); + + if (m_actionStateParser != NULL) { + result = m_actionStateParser->toQVariant(state); + } else { + result = Converter::toQVariant(state); + } + if (state) { g_variant_unref(state); } @@ -190,6 +198,19 @@ void QDBusActionGroup::setActionGroup(GDBusActionGroup *ag) } } +ActionStateParser* QDBusActionGroup::actionStateParser() const +{ + return m_actionStateParser; +} + +void QDBusActionGroup::setActionStateParser(ActionStateParser* actionStateParser) +{ + if (m_actionStateParser != actionStateParser) { + m_actionStateParser = actionStateParser; + Q_EMIT actionStateParserChanged(actionStateParser); + } +} + /*! \internal */ void QDBusActionGroup::clear() { -- cgit v1.2.3