2
* Copyright 2013 Canonical Ltd.
2
* Copyright 2013-2016 Canonical Ltd.
4
4
* This program is free software; you can redistribute it and/or modify
5
5
* it under the terms of the GNU Lesser General Public License as published by
74
QString ModelActionRootState::secondaryAction() const
76
return m_secondaryAction;
79
QString ModelActionRootState::scrollAction() const
81
return m_scrollAction;
84
QString ModelActionRootState::submenuAction() const
86
return m_submenuAction;
72
89
bool ModelActionRootState::valid() const
74
91
return !currentState().empty();
109
129
Q_EMIT menuChanged();
110
130
setCurrentState(QVariantMap());
132
updateOtherActions();
113
135
void ModelActionRootState::updateActionState()
137
if (m_reentryGuard) return;
138
m_reentryGuard = true;
115
140
if (m_menu && m_menu->rowCount() > 0) {
116
141
ActionStateParser* oldParser = m_menu->actionStateParser();
117
142
m_menu->setActionStateParser(&m_parser);
127
152
// else if m_menu->rowCount() == 0, let's leave existing cache in place
128
153
// until the new menu comes in, to avoid flashing the UI empty for a moment
155
m_reentryGuard = false;
158
void ModelActionRootState::updateOtherActions()
160
if (m_reentryGuard) return;
161
m_reentryGuard = true;
163
if (m_menu && m_menu->rowCount() > 0) {
165
map[QStringLiteral("submenu-action")] = QStringLiteral("string");
166
map[QStringLiteral("x-canonical-scroll-action")] = QStringLiteral("string");
167
map[QStringLiteral("x-canonical-secondary-action")] = QStringLiteral("string");
168
m_menu->loadExtendedAttributes(0, map);
169
QVariantMap extMap = m_menu->get(0, "ext").toMap();
171
QString secondaryAction = extMap.value(QStringLiteral("xCanonicalSecondaryAction")).toString();
172
if (m_secondaryAction != secondaryAction) {
173
m_secondaryAction = secondaryAction;
174
Q_EMIT secondaryActionChanged();
177
QString scrollAction = extMap.value(QStringLiteral("xCanonicalScrollAction")).toString();
178
if (m_scrollAction != scrollAction) {
179
m_scrollAction = scrollAction;
180
Q_EMIT scrollActionChanged();
183
QString submenuAction = extMap.value(QStringLiteral("submenuAction")).toString();
184
if (m_submenuAction != submenuAction) {
185
m_submenuAction = submenuAction;
186
Q_EMIT submenuActionChanged();
189
if (!m_secondaryAction.isEmpty()) {
190
m_secondaryAction.clear();
191
Q_EMIT secondaryActionChanged();
193
if (!m_scrollAction.isEmpty()) {
194
m_scrollAction.clear();
195
Q_EMIT scrollActionChanged();
197
if (!m_submenuAction.isEmpty()) {
198
m_submenuAction.clear();
199
Q_EMIT submenuActionChanged();
203
m_reentryGuard = false;