Branch data Line data Source code
1 : : /* 2 : : * Copyright © 2010 Codethink Limited 3 : : * 4 : : * SPDX-License-Identifier: LGPL-2.1-or-later 5 : : * 6 : : * This library is free software; you can redistribute it and/or 7 : : * modify it under the terms of the GNU Lesser General Public 8 : : * License as published by the Free Software Foundation; either 9 : : * version 2.1 of the License, or (at your option) any later version. 10 : : * 11 : : * This library is distributed in the hope that it will be useful, 12 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 : : * Lesser General Public License for more details. 15 : : * 16 : : * You should have received a copy of the GNU Lesser General 17 : : * Public License along with this library; if not, see <http://www.gnu.org/licenses/>. 18 : : * 19 : : * Authors: Ryan Lortie <desrt@desrt.ca> 20 : : */ 21 : : 22 : : #include "config.h" 23 : : 24 : : #include "gsimpleaction.h" 25 : : #include "gactiongroup.h" 26 : : #include "gactionmap.h" 27 : : #include "gaction.h" 28 : : 29 : : /** 30 : : * GRemoteActionGroup: 31 : : * 32 : : * The `GRemoteActionGroup` interface is implemented by [iface@Gio.ActionGroup] 33 : : * instances that either transmit action invocations to other processes 34 : : * or receive action invocations in the local process from other 35 : : * processes. 36 : : * 37 : : * The interface has `_full` variants of the two 38 : : * methods on [iface@Gio.ActionGroup] used to activate actions: 39 : : * [method@Gio.ActionGroup.activate_action] and 40 : : * [method@Gio.ActionGroup.change_action_state]. These variants allow a 41 : : * ‘platform data’ [struct@GLib.Variant] to be specified: a dictionary providing 42 : : * context for the action invocation (for example: timestamps, startup 43 : : * notification IDs, etc). 44 : : * 45 : : * [class@Gio.DBusActionGroup] implements `GRemoteActionGroup`. This provides a 46 : : * mechanism to send platform data for action invocations over D-Bus. 47 : : * 48 : : * Additionally, [method@Gio.DBusConnection.export_action_group] will check if 49 : : * the exported [iface@Gio.ActionGroup] implements `GRemoteActionGroup` and use 50 : : * the `_full` variants of the calls if available. This 51 : : * provides a mechanism by which to receive platform data for action 52 : : * invocations that arrive by way of D-Bus. 53 : : * 54 : : * Since: 2.32 55 : : **/ 56 : : 57 : : /** 58 : : * GRemoteActionGroupInterface: 59 : : * @activate_action_full: the virtual function pointer for g_remote_action_group_activate_action_full() 60 : : * @change_action_state_full: the virtual function pointer for g_remote_action_group_change_action_state_full() 61 : : * 62 : : * The virtual function table for #GRemoteActionGroup. 63 : : * 64 : : * Since: 2.32 65 : : **/ 66 : : 67 : : #include "config.h" 68 : : 69 : : #include "gremoteactiongroup.h" 70 : : 71 [ + + + - : 28 : G_DEFINE_INTERFACE (GRemoteActionGroup, g_remote_action_group, G_TYPE_ACTION_GROUP) + + + - ] 72 : : 73 : : static void 74 : 13 : g_remote_action_group_default_init (GRemoteActionGroupInterface *iface) 75 : : { 76 : 13 : } 77 : : 78 : : /** 79 : : * g_remote_action_group_activate_action_full: 80 : : * @remote: a #GDBusActionGroup 81 : : * @action_name: the name of the action to activate 82 : : * @parameter: (nullable): the optional parameter to the activation 83 : : * @platform_data: the platform data to send 84 : : * 85 : : * Activates the remote action. 86 : : * 87 : : * This is the same as g_action_group_activate_action() except that it 88 : : * allows for provision of "platform data" to be sent along with the 89 : : * activation request. This typically contains details such as the user 90 : : * interaction timestamp or startup notification information. 91 : : * 92 : : * @platform_data must be non-%NULL and must have the type 93 : : * %G_VARIANT_TYPE_VARDICT. If it is floating, it will be consumed. 94 : : * 95 : : * Since: 2.32 96 : : **/ 97 : : void 98 : 0 : g_remote_action_group_activate_action_full (GRemoteActionGroup *remote, 99 : : const gchar *action_name, 100 : : GVariant *parameter, 101 : : GVariant *platform_data) 102 : : { 103 : 0 : G_REMOTE_ACTION_GROUP_GET_IFACE (remote) 104 : 0 : ->activate_action_full (remote, action_name, parameter, platform_data); 105 : 0 : } 106 : : 107 : : /** 108 : : * g_remote_action_group_change_action_state_full: 109 : : * @remote: a #GRemoteActionGroup 110 : : * @action_name: the name of the action to change the state of 111 : : * @value: the new requested value for the state 112 : : * @platform_data: the platform data to send 113 : : * 114 : : * Changes the state of a remote action. 115 : : * 116 : : * This is the same as g_action_group_change_action_state() except that 117 : : * it allows for provision of "platform data" to be sent along with the 118 : : * state change request. This typically contains details such as the 119 : : * user interaction timestamp or startup notification information. 120 : : * 121 : : * @platform_data must be non-%NULL and must have the type 122 : : * %G_VARIANT_TYPE_VARDICT. If it is floating, it will be consumed. 123 : : * 124 : : * Since: 2.32 125 : : **/ 126 : : void 127 : 0 : g_remote_action_group_change_action_state_full (GRemoteActionGroup *remote, 128 : : const gchar *action_name, 129 : : GVariant *value, 130 : : GVariant *platform_data) 131 : : { 132 : 0 : G_REMOTE_ACTION_GROUP_GET_IFACE (remote) 133 : 0 : ->change_action_state_full (remote, action_name, value, platform_data); 134 : 0 : }