22
22
using namespace qtgmenu;
24
QtGActionGroup::QtGActionGroup( const QString& action_prefix, GActionGroup* action_group )
24
QtGActionGroup::QtGActionGroup( QSharedPointer<GDBusConnection> connection,
25
const QString& action_prefix,
26
const QString& service,
25
28
: m_action_prefix( action_prefix ),
26
m_action_group( action_group )
31
g_dbus_action_group_get(connection.data(),
32
service.toUtf8().constData(),
33
path.toUtf8().constData())), &g_object_unref)
28
35
ConnectCallbacks();
30
auto actions_list = g_action_group_list_actions( m_action_group );
37
auto actions_list = g_action_group_list_actions( m_action_group.data() );
33
40
for( int i = 0; actions_list[i]; ++i )
83
85
const QString& action(split.second);
84
86
QByteArray action_utf = action.toUtf8();
86
const GVariantType* type = g_action_group_get_action_parameter_type( m_action_group,
88
const GVariantType* type = g_action_group_get_action_parameter_type( m_action_group.data(),
87
89
action_utf.constData() );
89
91
if( type == nullptr )
91
g_action_group_activate_action( m_action_group, action_utf.constData(), nullptr );
93
g_action_group_activate_action( m_action_group.data(), action_utf.constData(), nullptr );
96
98
if( g_variant_type_equal( type, G_VARIANT_TYPE_STRING ) )
98
100
GVariant* param = g_variant_new_string( action_utf.constData() );
99
g_action_group_activate_action( m_action_group, action_utf.constData(), param );
101
g_action_group_activate_action( m_action_group.data(), action_utf.constData(), param );
100
102
g_variant_unref( param );
117
119
void QtGActionGroup::EmitStates()
119
auto actions_list = g_action_group_list_actions( m_action_group );
121
auto actions_list = g_action_group_list_actions( m_action_group.data() );
121
123
for( int i = 0; actions_list && actions_list[i]; ++i )
123
125
gchar* action_name = actions_list[i];
125
bool enabled = G_ACTION_GROUP_GET_IFACE( m_action_group ) ->get_action_enabled( m_action_group,
127
bool enabled = G_ACTION_GROUP_GET_IFACE( m_action_group.data() ) ->get_action_enabled( m_action_group.data(),
128
emit ActionEnabled( FullName(m_action_prefix, action_name), enabled );
129
emit ActionEnabled( FullName(m_action_prefix, action_name), enabled );
130
const GVariantType* type = g_action_group_get_action_parameter_type( m_action_group,
131
const GVariantType* type = g_action_group_get_action_parameter_type( m_action_group.data(),
132
if( type != nullptr )
133
emit ActionParameterized( FullName(m_action_prefix, action_name), type != nullptr );
133
emit ActionParameterized( FullName(m_action_prefix, action_name), type != nullptr );
136
136
g_strfreev( actions_list );
142
142
QtGActionGroup* self = reinterpret_cast< QtGActionGroup* >( user_data );
143
143
emit self->ActionAdded( action_name );
145
bool enabled = G_ACTION_GROUP_GET_IFACE( self->m_action_group ) ->get_action_enabled(
146
self->m_action_group, action_name );
145
bool enabled = G_ACTION_GROUP_GET_IFACE( self->m_action_group.data() ) ->get_action_enabled(
146
self->m_action_group.data(), action_name );
148
148
emit self->ActionEnabled( FullName(self->m_action_prefix, action_name), enabled );
150
const GVariantType* type = g_action_group_get_action_parameter_type( self->m_action_group,
150
const GVariantType* type = g_action_group_get_action_parameter_type( self->m_action_group.data(),
152
152
if( type != nullptr )
153
153
emit self->ActionParameterized( FullName(self->m_action_prefix, action_name), type != nullptr );
179
179
if( m_action_group && m_action_added_handler == 0 )
181
m_action_added_handler = g_signal_connect( m_action_group, "action-added",
181
m_action_added_handler = g_signal_connect( m_action_group.data(), "action-added",
182
182
G_CALLBACK( ActionAddedCallback ), this );
184
184
if( m_action_group && m_action_removed_handler == 0 )
186
m_action_removed_handler = g_signal_connect( m_action_group, "action-removed",
186
m_action_removed_handler = g_signal_connect( m_action_group.data(), "action-removed",
187
187
G_CALLBACK( ActionRemovedCallback ), this );
189
189
if( m_action_group && m_action_enabled_handler == 0 )
191
m_action_enabled_handler = g_signal_connect( m_action_group, "action-enabled-changed",
191
m_action_enabled_handler = g_signal_connect( m_action_group.data(), "action-enabled-changed",
192
192
G_CALLBACK( ActionEnabledCallback ), this );
194
194
if( m_action_group && m_action_state_changed_handler == 0 )
196
m_action_state_changed_handler = g_signal_connect( m_action_group, "action-state-changed",
196
m_action_state_changed_handler = g_signal_connect( m_action_group.data(), "action-state-changed",
197
197
G_CALLBACK( ActionStateChangedCallback ), this );
203
203
if( m_action_group && m_action_added_handler != 0 )
205
g_signal_handler_disconnect( m_action_group, m_action_added_handler );
205
g_signal_handler_disconnect( m_action_group.data(), m_action_added_handler );
207
207
if( m_action_group && m_action_removed_handler != 0 )
209
g_signal_handler_disconnect( m_action_group, m_action_removed_handler );
209
g_signal_handler_disconnect( m_action_group.data(), m_action_removed_handler );
211
211
if( m_action_group && m_action_enabled_handler != 0 )
213
g_signal_handler_disconnect( m_action_group, m_action_enabled_handler );
213
g_signal_handler_disconnect( m_action_group.data(), m_action_enabled_handler );
215
215
if( m_action_group && m_action_state_changed_handler != 0 )
217
g_signal_handler_disconnect( m_action_group, m_action_state_changed_handler );
217
g_signal_handler_disconnect( m_action_group.data(), m_action_state_changed_handler );
220
220
m_action_added_handler = 0;