Merge lp://qastaging/~indicator-applet-developers/indicator-me/lucid into lp://qastaging/~ubuntu-desktop/indicator-me/ubuntu
- lucid
- Merge into ubuntu
Proposed by
Ted Gould
Status: | Merged |
---|---|
Merged at revision: | not available |
Proposed branch: | lp://qastaging/~indicator-applet-developers/indicator-me/lucid |
Merge into: | lp://qastaging/~ubuntu-desktop/indicator-me/ubuntu |
Diff against target: |
683 lines (+473/-18) 12 files modified
Makefile.am (+1/-0) configure.ac (+8/-6) debian/changelog (+22/-0) debian/control (+4/-3) src/Makefile.am (+4/-0) src/dbus-shared-names.h (+3/-0) src/entry-menu-item.c (+136/-0) src/entry-menu-item.h (+62/-0) src/indicator-me.c (+54/-3) src/me-service-gwibber.c (+85/-0) src/me-service-gwibber.h (+35/-0) src/me-service.c (+59/-6) |
To merge this branch: | bzr merge lp://qastaging/~indicator-applet-developers/indicator-me/lucid |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Sebastien Bacher | Pending | ||
Review via email:
|
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Ted Gould (ted) wrote : | # |
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'Makefile.am' | |||
2 | --- Makefile.am 2010-01-21 17:12:02 +0000 | |||
3 | +++ Makefile.am 2010-02-05 01:56:12 +0000 | |||
4 | @@ -3,6 +3,7 @@ | |||
5 | 3 | src \ | 3 | src \ |
6 | 4 | data \ | 4 | data \ |
7 | 5 | po | 5 | po |
8 | 6 | EXTRA_DIST = autogen.sh | ||
9 | 6 | 7 | ||
10 | 7 | DISTCHECK_CONFIGURE_FLAGS = --enable-localinstall | 8 | DISTCHECK_CONFIGURE_FLAGS = --enable-localinstall |
11 | 8 | 9 | ||
12 | 9 | 10 | ||
13 | === modified file 'configure.ac' | |||
14 | --- configure.ac 2010-01-21 17:12:02 +0000 | |||
15 | +++ configure.ac 2010-02-05 01:56:12 +0000 | |||
16 | @@ -1,11 +1,11 @@ | |||
17 | 1 | 1 | ||
20 | 2 | AC_INIT(indicator-me, 0.2.1, ted@canonical.com) | 2 | AC_INIT(indicator-me, 0.2.3, ted@canonical.com) |
21 | 3 | AC_COPYRIGHT([Copyright 2009,2010 Canonical]) | 3 | AC_COPYRIGHT([Copyright 2009, 2010 Canonical]) |
22 | 4 | 4 | ||
23 | 5 | AC_PREREQ(2.53) | 5 | AC_PREREQ(2.53) |
24 | 6 | 6 | ||
25 | 7 | AM_CONFIG_HEADER(config.h) | 7 | AM_CONFIG_HEADER(config.h) |
27 | 8 | AM_INIT_AUTOMAKE(indicator-me, 0.2.1) | 8 | AM_INIT_AUTOMAKE(indicator-me, 0.2.3) |
28 | 9 | 9 | ||
29 | 10 | AM_MAINTAINER_MODE | 10 | AM_MAINTAINER_MODE |
30 | 11 | 11 | ||
31 | @@ -28,13 +28,15 @@ | |||
32 | 28 | 28 | ||
33 | 29 | GTK_REQUIRED_VERSION=2.12 | 29 | GTK_REQUIRED_VERSION=2.12 |
34 | 30 | INDICATOR_REQUIRED_VERSION=0.3.0 | 30 | INDICATOR_REQUIRED_VERSION=0.3.0 |
37 | 31 | DBUSMENUGTK_REQUIRED_VERSION=0.2.0 | 31 | DBUSMENUGTK_REQUIRED_VERSION=0.2.2 |
38 | 32 | DBUSMENUGLIB_REQUIRED_VERSION=0.2.0 | 32 | DBUSMENUGLIB_REQUIRED_VERSION=0.2.2 |
39 | 33 | TELEPATHYGLIB_REQUIRED_VERSION=0.9.0 | 33 | TELEPATHYGLIB_REQUIRED_VERSION=0.9.0 |
40 | 34 | INDICATOR_DISPLAY_OBJECTS=0.1 | ||
41 | 34 | 35 | ||
42 | 35 | PKG_CHECK_MODULES(APPLET, gtk+-2.0 >= $GTK_REQUIRED_VERSION | 36 | PKG_CHECK_MODULES(APPLET, gtk+-2.0 >= $GTK_REQUIRED_VERSION |
43 | 36 | indicator >= $INDICATOR_REQUIRED_VERSION | 37 | indicator >= $INDICATOR_REQUIRED_VERSION |
45 | 37 | dbusmenu-gtk >= $DBUSMENUGTK_REQUIRED_VERSION) | 38 | libido-0.1 >= $INDICATOR_DISPLAY_OBJECTS |
46 | 39 | dbusmenu-gtk >= $DBUSMENUGTK_REQUIRED_VERSION) | ||
47 | 38 | PKG_CHECK_MODULES(MESERVICE, dbusmenu-glib >= $DBUSMENUGLIB_REQUIRED_VERSION | 40 | PKG_CHECK_MODULES(MESERVICE, dbusmenu-glib >= $DBUSMENUGLIB_REQUIRED_VERSION |
48 | 39 | indicator >= $INDICATOR_REQUIRED_VERSION | 41 | indicator >= $INDICATOR_REQUIRED_VERSION |
49 | 40 | telepathy-glib >= $TELEPATHYGLIB_REQUIRED_VERSION) | 42 | telepathy-glib >= $TELEPATHYGLIB_REQUIRED_VERSION) |
50 | 41 | 43 | ||
51 | === modified file 'debian/changelog' | |||
52 | --- debian/changelog 2010-01-21 20:53:36 +0000 | |||
53 | +++ debian/changelog 2010-02-05 01:56:12 +0000 | |||
54 | @@ -1,3 +1,25 @@ | |||
55 | 1 | indicator-me (0.2.3-0ubuntu1~ppa1) lucid; urgency=low | ||
56 | 2 | |||
57 | 3 | * Upstream Release 0.2.3 | ||
58 | 4 | * Fix for the signal prototype change in dbusmenu 0.2.2 | ||
59 | 5 | |||
60 | 6 | -- Ted Gould <ted@ubuntu.com> Thu, 04 Feb 2010 17:54:53 -0800 | ||
61 | 7 | |||
62 | 8 | indicator-me (0.2.2-0ubuntu1~ppa2) lucid; urgency=low | ||
63 | 9 | |||
64 | 10 | * debian/control: Adding in ido | ||
65 | 11 | |||
66 | 12 | -- Ted Gould <ted@ubuntu.com> Thu, 04 Feb 2010 17:24:43 -0800 | ||
67 | 13 | |||
68 | 14 | indicator-me (0.2.2-0ubuntu1~ppa1) lucid; urgency=low | ||
69 | 15 | |||
70 | 16 | * Upstream Release 0.2.2 | ||
71 | 17 | * Basic Gwibber support | ||
72 | 18 | * autogen.sh in tarball | ||
73 | 19 | * debian/control: dbusmenu* to version 0.2.2 | ||
74 | 20 | |||
75 | 21 | -- Ted Gould <ted@ubuntu.com> Thu, 04 Feb 2010 17:20:38 -0800 | ||
76 | 22 | |||
77 | 1 | indicator-me (0.2.1-0ubuntu1) lucid; urgency=low | 23 | indicator-me (0.2.1-0ubuntu1) lucid; urgency=low |
78 | 2 | 24 | ||
79 | 3 | * Upstream Merge | 25 | * Upstream Merge |
80 | 4 | 26 | ||
81 | === modified file 'debian/control' | |||
82 | --- debian/control 2010-01-11 14:33:32 +0000 | |||
83 | +++ debian/control 2010-02-05 01:56:12 +0000 | |||
84 | @@ -9,10 +9,11 @@ | |||
85 | 9 | gnome-doc-utils, | 9 | gnome-doc-utils, |
86 | 10 | scrollkeeper, | 10 | scrollkeeper, |
87 | 11 | libindicator-dev (>= 0.3.0), | 11 | libindicator-dev (>= 0.3.0), |
90 | 12 | libdbusmenu-glib-dev (>= 0.2.0), | 12 | libdbusmenu-glib-dev (>= 0.2.2), |
91 | 13 | libdbusmenu-gtk-dev (>= 0.2.0), | 13 | libdbusmenu-gtk-dev (>= 0.2.2), |
92 | 14 | intltool, | 14 | intltool, |
94 | 15 | libtelepathy-glib-dev (>= 0.9.0) | 15 | libtelepathy-glib-dev (>= 0.9.0), |
95 | 16 | libido-0.1-dev | ||
96 | 16 | Standards-Version: 3.8.3 | 17 | Standards-Version: 3.8.3 |
97 | 17 | Homepage: https://launchpad.net/indicator-me | 18 | Homepage: https://launchpad.net/indicator-me |
98 | 18 | Vcs-Bzr: http://bazaar.launchpad.net/~ubuntu-desktop/indicator-me/ubuntu | 19 | Vcs-Bzr: http://bazaar.launchpad.net/~ubuntu-desktop/indicator-me/ubuntu |
99 | 19 | 20 | ||
100 | === modified file 'src/Makefile.am' | |||
101 | --- src/Makefile.am 2010-01-21 17:12:02 +0000 | |||
102 | +++ src/Makefile.am 2010-02-05 01:56:12 +0000 | |||
103 | @@ -20,10 +20,14 @@ | |||
104 | 20 | ################ | 20 | ################ |
105 | 21 | 21 | ||
106 | 22 | indicator_me_service_SOURCES = \ | 22 | indicator_me_service_SOURCES = \ |
107 | 23 | entry-menu-item.c \ | ||
108 | 24 | entry-menu-item.h \ | ||
109 | 23 | me-service.c \ | 25 | me-service.c \ |
110 | 24 | me-service-dbus.h \ | 26 | me-service-dbus.h \ |
111 | 25 | me-service-dbus.c \ | 27 | me-service-dbus.c \ |
112 | 26 | me-service-server.h \ | 28 | me-service-server.h \ |
113 | 29 | me-service-gwibber.c \ | ||
114 | 30 | me-service-gwibber.h \ | ||
115 | 27 | status-provider.h \ | 31 | status-provider.h \ |
116 | 28 | status-provider.c \ | 32 | status-provider.c \ |
117 | 29 | status-provider-mc5.h \ | 33 | status-provider-mc5.h \ |
118 | 30 | 34 | ||
119 | === modified file 'src/dbus-shared-names.h' | |||
120 | --- src/dbus-shared-names.h 2010-01-03 05:41:48 +0000 | |||
121 | +++ src/dbus-shared-names.h 2010-02-05 01:56:12 +0000 | |||
122 | @@ -30,4 +30,7 @@ | |||
123 | 30 | #define INDICATOR_ME_SERVICE_DBUS_OBJECT "/org/ayatana/indicator/me/service" | 30 | #define INDICATOR_ME_SERVICE_DBUS_OBJECT "/org/ayatana/indicator/me/service" |
124 | 31 | #define INDICATOR_ME_SERVICE_DBUS_INTERFACE "org.ayatana.indicator.me.service" | 31 | #define INDICATOR_ME_SERVICE_DBUS_INTERFACE "org.ayatana.indicator.me.service" |
125 | 32 | 32 | ||
126 | 33 | #define ENTRY_MENUITEM_TYPE "x-canonical-entry-item" | ||
127 | 34 | #define ENTRY_MENUITEM_PROP_TEXT "text" | ||
128 | 35 | |||
129 | 33 | #endif /* __DBUS_SHARED_NAMES_H__ */ | 36 | #endif /* __DBUS_SHARED_NAMES_H__ */ |
130 | 34 | 37 | ||
131 | === added file 'src/entry-menu-item.c' | |||
132 | --- src/entry-menu-item.c 1970-01-01 00:00:00 +0000 | |||
133 | +++ src/entry-menu-item.c 2010-02-05 01:56:12 +0000 | |||
134 | @@ -0,0 +1,136 @@ | |||
135 | 1 | /* | ||
136 | 2 | An indicator to show information that is in messaging applications | ||
137 | 3 | that the user is using. | ||
138 | 4 | |||
139 | 5 | Copyright 2010 Canonical Ltd. | ||
140 | 6 | |||
141 | 7 | Authors: | ||
142 | 8 | David Barth <david.barth@canonical.com> | ||
143 | 9 | Ted Gould <ted@canonical.com> | ||
144 | 10 | |||
145 | 11 | This program is free software: you can redistribute it and/or modify it | ||
146 | 12 | under the terms of the GNU General Public License version 3, as published | ||
147 | 13 | by the Free Software Foundation. | ||
148 | 14 | |||
149 | 15 | This program is distributed in the hope that it will be useful, but | ||
150 | 16 | WITHOUT ANY WARRANTY; without even the implied warranties of | ||
151 | 17 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
152 | 18 | PURPOSE. See the GNU General Public License for more details. | ||
153 | 19 | |||
154 | 20 | You should have received a copy of the GNU General Public License along | ||
155 | 21 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
156 | 22 | */ | ||
157 | 23 | |||
158 | 24 | #ifdef HAVE_CONFIG_H | ||
159 | 25 | #include "config.h" | ||
160 | 26 | #endif | ||
161 | 27 | |||
162 | 28 | #include <gdk/gdk.h> | ||
163 | 29 | #include <glib/gi18n.h> | ||
164 | 30 | #include "entry-menu-item.h" | ||
165 | 31 | #include "dbus-shared-names.h" | ||
166 | 32 | |||
167 | 33 | #include "me-service-gwibber.h" | ||
168 | 34 | |||
169 | 35 | #include <libdbusmenu-glib/client.h> | ||
170 | 36 | #include <libdbusmenu-glib/server.h> | ||
171 | 37 | #include <libdbusmenu-glib/menuitem.h> | ||
172 | 38 | |||
173 | 39 | enum { | ||
174 | 40 | LAST_SIGNAL | ||
175 | 41 | }; | ||
176 | 42 | |||
177 | 43 | /* static guint signals[LAST_SIGNAL] = { }; */ | ||
178 | 44 | |||
179 | 45 | typedef struct _EntryMenuItemPrivate EntryMenuItemPrivate; | ||
180 | 46 | struct _EntryMenuItemPrivate | ||
181 | 47 | { | ||
182 | 48 | void * placeholder; | ||
183 | 49 | }; | ||
184 | 50 | |||
185 | 51 | #define ENTRY_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ENTRY_MENU_ITEM_TYPE, EntryMenuItemPrivate)) | ||
186 | 52 | |||
187 | 53 | /* Prototypes */ | ||
188 | 54 | static void entry_menu_item_class_init (EntryMenuItemClass *klass); | ||
189 | 55 | static void entry_menu_item_init (EntryMenuItem *self); | ||
190 | 56 | static void entry_menu_item_dispose (GObject *object); | ||
191 | 57 | static void entry_menu_item_finalize (GObject *object); | ||
192 | 58 | static void handle_event (DbusmenuMenuitem *mi, const gchar *name, | ||
193 | 59 | const GValue *value, guint timestamp); | ||
194 | 60 | |||
195 | 61 | G_DEFINE_TYPE (EntryMenuItem, entry_menu_item, DBUSMENU_TYPE_MENUITEM); | ||
196 | 62 | |||
197 | 63 | static void | ||
198 | 64 | entry_menu_item_class_init (EntryMenuItemClass *klass) | ||
199 | 65 | { | ||
200 | 66 | GObjectClass *object_class = G_OBJECT_CLASS (klass); | ||
201 | 67 | |||
202 | 68 | g_type_class_add_private (klass, sizeof (EntryMenuItemPrivate)); | ||
203 | 69 | |||
204 | 70 | object_class->dispose = entry_menu_item_dispose; | ||
205 | 71 | object_class->finalize = entry_menu_item_finalize; | ||
206 | 72 | |||
207 | 73 | DbusmenuMenuitemClass *mclass = DBUSMENU_MENUITEM_CLASS(klass); | ||
208 | 74 | mclass->handle_event = handle_event; | ||
209 | 75 | |||
210 | 76 | return; | ||
211 | 77 | } | ||
212 | 78 | |||
213 | 79 | static void | ||
214 | 80 | entry_menu_item_init (EntryMenuItem *self) | ||
215 | 81 | { | ||
216 | 82 | g_debug("Building new Entry Menu Item"); | ||
217 | 83 | /* EntryMenuItemPrivate * priv = ENTRY_MENU_ITEM_GET_PRIVATE(self); */ | ||
218 | 84 | |||
219 | 85 | return; | ||
220 | 86 | } | ||
221 | 87 | |||
222 | 88 | static void | ||
223 | 89 | entry_menu_item_dispose (GObject *object) | ||
224 | 90 | { | ||
225 | 91 | /* EntryMenuItem * self = ENTRY_MENU_ITEM(object); | ||
226 | 92 | EntryMenuItemPrivate * priv = ENTRY_MENU_ITEM_GET_PRIVATE(self); */ | ||
227 | 93 | |||
228 | 94 | G_OBJECT_CLASS (entry_menu_item_parent_class)->dispose (object); | ||
229 | 95 | } | ||
230 | 96 | |||
231 | 97 | static void | ||
232 | 98 | entry_menu_item_finalize (GObject *object) | ||
233 | 99 | { | ||
234 | 100 | /* | ||
235 | 101 | EntryMenuItem * self = ENTRY_MENU_ITEM(object); | ||
236 | 102 | EntryMenuItemPrivate * priv = ENTRY_MENU_ITEM_GET_PRIVATE(self); | ||
237 | 103 | */ | ||
238 | 104 | |||
239 | 105 | G_OBJECT_CLASS (entry_menu_item_parent_class)->finalize (object); | ||
240 | 106 | |||
241 | 107 | return; | ||
242 | 108 | } | ||
243 | 109 | |||
244 | 110 | EntryMenuItem * | ||
245 | 111 | entry_menu_item_new () | ||
246 | 112 | { | ||
247 | 113 | EntryMenuItem * self = g_object_new(ENTRY_MENU_ITEM_TYPE, NULL); | ||
248 | 114 | /* EntryMenuItemPrivate * priv = ENTRY_MENU_ITEM_GET_PRIVATE(self); */ | ||
249 | 115 | |||
250 | 116 | dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_TYPE, ENTRY_MENUITEM_TYPE); | ||
251 | 117 | |||
252 | 118 | return self; | ||
253 | 119 | } | ||
254 | 120 | |||
255 | 121 | /* When the entry menu item is clicked on it emits a dbus signal | ||
256 | 122 | for the corresponding bottom-half service to act upon */ | ||
257 | 123 | static void | ||
258 | 124 | handle_event (DbusmenuMenuitem *mi, const gchar *name, | ||
259 | 125 | const GValue *value, guint timestamp) | ||
260 | 126 | { | ||
261 | 127 | /* EntryMenuItemPrivate * priv = ENTRY_MENU_ITEM_GET_PRIVATE(self); */ | ||
262 | 128 | |||
263 | 129 | g_debug ("handle_event"); | ||
264 | 130 | if (g_strcmp0 (name, "send") == 0) { | ||
265 | 131 | gwibber_send (g_value_get_string (value)); | ||
266 | 132 | dbusmenu_menuitem_property_set (mi, ENTRY_MENUITEM_PROP_TEXT, ""); | ||
267 | 133 | } | ||
268 | 134 | |||
269 | 135 | return; | ||
270 | 136 | } | ||
271 | 0 | 137 | ||
272 | === added file 'src/entry-menu-item.h' | |||
273 | --- src/entry-menu-item.h 1970-01-01 00:00:00 +0000 | |||
274 | +++ src/entry-menu-item.h 2010-02-05 01:56:12 +0000 | |||
275 | @@ -0,0 +1,62 @@ | |||
276 | 1 | /* | ||
277 | 2 | An indicator to show information that is in messaging applications | ||
278 | 3 | that the user is using. | ||
279 | 4 | |||
280 | 5 | Copyright 2010 Canonical Ltd. | ||
281 | 6 | |||
282 | 7 | Authors: | ||
283 | 8 | David Barth <david.barth@canonical.com> | ||
284 | 9 | Ted Gould <ted@canonical.com> | ||
285 | 10 | |||
286 | 11 | This program is free software: you can redistribute it and/or modify it | ||
287 | 12 | under the terms of the GNU General Public License version 3, as published | ||
288 | 13 | by the Free Software Foundation. | ||
289 | 14 | |||
290 | 15 | This program is distributed in the hope that it will be useful, but | ||
291 | 16 | WITHOUT ANY WARRANTY; without even the implied warranties of | ||
292 | 17 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
293 | 18 | PURPOSE. See the GNU General Public License for more details. | ||
294 | 19 | |||
295 | 20 | You should have received a copy of the GNU General Public License along | ||
296 | 21 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
297 | 22 | */ | ||
298 | 23 | |||
299 | 24 | #ifndef __ENTRY_MENU_ITEM_H__ | ||
300 | 25 | #define __ENTRY_MENU_ITEM_H__ | ||
301 | 26 | |||
302 | 27 | #include <glib.h> | ||
303 | 28 | #include <glib-object.h> | ||
304 | 29 | |||
305 | 30 | #include <libdbusmenu-glib/menuitem.h> | ||
306 | 31 | |||
307 | 32 | G_BEGIN_DECLS | ||
308 | 33 | |||
309 | 34 | #define ENTRY_MENU_ITEM_TYPE (entry_menu_item_get_type ()) | ||
310 | 35 | #define ENTRY_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ENTRY_MENU_ITEM_TYPE, EntryMenuItem)) | ||
311 | 36 | #define ENTRY_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ENTRY_MENU_ITEM_TYPE, EntryMenuItemClass)) | ||
312 | 37 | #define IS_ENTRY_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ENTRY_MENU_ITEM_TYPE)) | ||
313 | 38 | #define IS_ENTRY_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ENTRY_MENU_ITEM_TYPE)) | ||
314 | 39 | #define ENTRY_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ENTRY_MENU_ITEM_TYPE, EntryMenuItemClass)) | ||
315 | 40 | |||
316 | 41 | #define ENTRY_MENU_ITEM_SIGNAL_ACTIVATE "activate" | ||
317 | 42 | #define ENTRY_MENUITEM_PROP_TEXT "text" | ||
318 | 43 | |||
319 | 44 | typedef struct _EntryMenuItem EntryMenuItem; | ||
320 | 45 | typedef struct _EntryMenuItemClass EntryMenuItemClass; | ||
321 | 46 | |||
322 | 47 | struct _EntryMenuItemClass { | ||
323 | 48 | DbusmenuMenuitemClass parent_class; | ||
324 | 49 | }; | ||
325 | 50 | |||
326 | 51 | struct _EntryMenuItem { | ||
327 | 52 | DbusmenuMenuitem parent; | ||
328 | 53 | }; | ||
329 | 54 | |||
330 | 55 | GType entry_menu_item_get_type (void); | ||
331 | 56 | EntryMenuItem * entry_menu_item_new (); | ||
332 | 57 | const gchar * entry_menu_item_get_text (EntryMenuItem * appitem); | ||
333 | 58 | |||
334 | 59 | G_END_DECLS | ||
335 | 60 | |||
336 | 61 | #endif /* __ENTRY_MENU_ITEM_H__ */ | ||
337 | 62 | |||
338 | 0 | 63 | ||
339 | === modified file 'src/indicator-me.c' | |||
340 | --- src/indicator-me.c 2010-01-03 05:42:47 +0000 | |||
341 | +++ src/indicator-me.c 2010-02-05 01:56:12 +0000 | |||
342 | @@ -23,6 +23,7 @@ | |||
343 | 23 | #include <glib.h> | 23 | #include <glib.h> |
344 | 24 | #include <glib-object.h> | 24 | #include <glib-object.h> |
345 | 25 | #include <gtk/gtk.h> | 25 | #include <gtk/gtk.h> |
346 | 26 | #include <libdbusmenu-glib/menuitem.h> | ||
347 | 26 | #include <libdbusmenu-gtk/menu.h> | 27 | #include <libdbusmenu-gtk/menu.h> |
348 | 27 | 28 | ||
349 | 28 | #include <dbus/dbus-glib.h> | 29 | #include <dbus/dbus-glib.h> |
350 | @@ -31,6 +32,7 @@ | |||
351 | 31 | #include <libindicator/indicator.h> | 32 | #include <libindicator/indicator.h> |
352 | 32 | #include <libindicator/indicator-object.h> | 33 | #include <libindicator/indicator-object.h> |
353 | 33 | #include <libindicator/indicator-service-manager.h> | 34 | #include <libindicator/indicator-service-manager.h> |
354 | 35 | #include <libido/idoentrymenuitem.h> | ||
355 | 34 | 36 | ||
356 | 35 | #include "dbus-shared-names.h" | 37 | #include "dbus-shared-names.h" |
357 | 36 | #include "me-service-client.h" | 38 | #include "me-service-client.h" |
358 | @@ -201,11 +203,60 @@ | |||
359 | 201 | return; | 203 | return; |
360 | 202 | } | 204 | } |
361 | 203 | 205 | ||
362 | 206 | static void | ||
363 | 207 | entry_prop_change_cb (DbusmenuMenuitem *mi, gchar *prop, GValue *value, GtkEntry *entry) | ||
364 | 208 | { | ||
365 | 209 | if (g_strcmp0 (prop, ENTRY_MENUITEM_PROP_TEXT) == 0) { | ||
366 | 210 | gtk_entry_set_text (entry, g_value_get_string (value)); | ||
367 | 211 | } | ||
368 | 212 | } | ||
369 | 213 | |||
370 | 214 | static void | ||
371 | 215 | activate_cb (GtkEntry *entry, DbusmenuMenuitem *gmi) | ||
372 | 216 | { | ||
373 | 217 | GValue value = { 0 }; | ||
374 | 218 | g_value_init (&value, G_TYPE_STRING); | ||
375 | 219 | g_value_set_static_string (&value, gtk_entry_get_text (entry)); | ||
376 | 220 | |||
377 | 221 | g_debug ("user typed: %s", g_value_get_string (&value)); | ||
378 | 222 | |||
379 | 223 | dbusmenu_menuitem_handle_event (gmi, "send", &value, gtk_get_current_event_time()); | ||
380 | 224 | } | ||
381 | 225 | |||
382 | 226 | static gboolean | ||
383 | 227 | new_entry_item (DbusmenuMenuitem * newitem, | ||
384 | 228 | DbusmenuMenuitem * parent, | ||
385 | 229 | DbusmenuClient * client) | ||
386 | 230 | { | ||
387 | 231 | g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); | ||
388 | 232 | g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); | ||
389 | 233 | /* Note: not checking parent, it's reasonable for it to be NULL */ | ||
390 | 234 | |||
391 | 235 | IdoEntryMenuItem *ido = IDO_ENTRY_MENU_ITEM (ido_entry_menu_item_new ()); | ||
392 | 236 | GtkEntry *entry = GTK_ENTRY(ido_entry_menu_item_get_entry (ido)); | ||
393 | 237 | if (dbusmenu_menuitem_property_get (newitem, ENTRY_MENUITEM_PROP_TEXT) != NULL) | ||
394 | 238 | gtk_entry_set_text(entry, dbusmenu_menuitem_property_get(newitem, ENTRY_MENUITEM_PROP_TEXT)); | ||
395 | 239 | |||
396 | 240 | dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, GTK_MENU_ITEM(ido), parent); | ||
397 | 241 | /* disconnect the activate signal that newitem_base connected with the wrong | ||
398 | 242 | widget, ie menuitem, and re-connect it with the /entry/ instead */ | ||
399 | 243 | gulong signal_id = g_signal_handler_find (GTK_MENU_ITEM (ido), G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, parent); | ||
400 | 244 | g_signal_handler_disconnect(GTK_MENU_ITEM (ido), signal_id); | ||
401 | 245 | |||
402 | 246 | g_signal_connect (DBUSMENU_MENUITEM (newitem), DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, G_CALLBACK (entry_prop_change_cb), entry); | ||
403 | 247 | g_signal_connect (GTK_ENTRY (entry), "activate", G_CALLBACK (activate_cb), newitem); | ||
404 | 248 | |||
405 | 249 | return TRUE; | ||
406 | 250 | } | ||
407 | 251 | |||
408 | 204 | /* Builds the dbusmenu for the service. */ | 252 | /* Builds the dbusmenu for the service. */ |
409 | 205 | static GtkMenu * | 253 | static GtkMenu * |
410 | 206 | get_menu (IndicatorObject * io) | 254 | get_menu (IndicatorObject * io) |
411 | 207 | { | 255 | { |
413 | 208 | return GTK_MENU(dbusmenu_gtkmenu_new(INDICATOR_ME_DBUS_NAME, INDICATOR_ME_DBUS_OBJECT)); | 256 | DbusmenuGtkMenu *menu = dbusmenu_gtkmenu_new(INDICATOR_ME_DBUS_NAME, INDICATOR_ME_DBUS_OBJECT); |
414 | 257 | DbusmenuGtkClient * client = dbusmenu_gtkmenu_get_client(menu); | ||
415 | 258 | |||
416 | 259 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), ENTRY_MENUITEM_TYPE, new_entry_item); | ||
417 | 260 | |||
418 | 261 | return GTK_MENU (menu); | ||
419 | 209 | } | 262 | } |
420 | 210 | |||
421 | 211 | |||
422 | 212 | 263 | ||
423 | === added file 'src/me-service-gwibber.c' | |||
424 | --- src/me-service-gwibber.c 1970-01-01 00:00:00 +0000 | |||
425 | +++ src/me-service-gwibber.c 2010-02-05 01:56:12 +0000 | |||
426 | @@ -0,0 +1,85 @@ | |||
427 | 1 | /* | ||
428 | 2 | |||
429 | 3 | Logic to send messages via gwibber | ||
430 | 4 | |||
431 | 5 | Copyright 2010 Canonical Ltd. | ||
432 | 6 | |||
433 | 7 | Authors: | ||
434 | 8 | David Barth <david.barth@canonical.com> | ||
435 | 9 | |||
436 | 10 | This program is free software: you can redistribute it and/or modify it | ||
437 | 11 | under the terms of the GNU General Public License version 3, as published | ||
438 | 12 | by the Free Software Foundation. | ||
439 | 13 | |||
440 | 14 | This program is distributed in the hope that it will be useful, but | ||
441 | 15 | WITHOUT ANY WARRANTY; without even the implied warranties of | ||
442 | 16 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
443 | 17 | PURPOSE. See the GNU General Public License for more details. | ||
444 | 18 | |||
445 | 19 | You should have received a copy of the GNU General Public License along | ||
446 | 20 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
447 | 21 | */ | ||
448 | 22 | |||
449 | 23 | #include <glib.h> | ||
450 | 24 | #include <dbus/dbus-glib.h> | ||
451 | 25 | |||
452 | 26 | #define GWIBBER_ADDRESS "com.Gwibber.Service" | ||
453 | 27 | #define GWIBBER_OBJECT "/com/gwibber/Service" | ||
454 | 28 | #define GWIBBER_INTERFACE "com.Gwibber.Service" | ||
455 | 29 | |||
456 | 30 | static DBusGProxy * gwibber_proxy = NULL; | ||
457 | 31 | |||
458 | 32 | /* | ||
459 | 33 | static */ void | ||
460 | 34 | gwibber_response (DBusGProxy * proxy, DBusGProxyCall * call, gpointer data) | ||
461 | 35 | { | ||
462 | 36 | g_debug ("gwibber_send_response"); | ||
463 | 37 | |||
464 | 38 | return; | ||
465 | 39 | } | ||
466 | 40 | |||
467 | 41 | static void | ||
468 | 42 | setup_gwibber_proxy (void) { | ||
469 | 43 | DBusGConnection * bus = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); | ||
470 | 44 | g_return_if_fail(bus != NULL); | ||
471 | 45 | |||
472 | 46 | if (gwibber_proxy == NULL) { | ||
473 | 47 | gwibber_proxy = dbus_g_proxy_new_for_name(bus, | ||
474 | 48 | GWIBBER_ADDRESS, | ||
475 | 49 | GWIBBER_OBJECT, | ||
476 | 50 | GWIBBER_INTERFACE); | ||
477 | 51 | } | ||
478 | 52 | g_return_if_fail (gwibber_proxy != NULL); | ||
479 | 53 | |||
480 | 54 | return; | ||
481 | 55 | } | ||
482 | 56 | |||
483 | 57 | void | ||
484 | 58 | gwibber_send (const gchar *msg) | ||
485 | 59 | { | ||
486 | 60 | setup_gwibber_proxy (); | ||
487 | 61 | |||
488 | 62 | if (gwibber_proxy == NULL) { | ||
489 | 63 | g_warning ("Can not get a gwibber proxy object"); | ||
490 | 64 | } | ||
491 | 65 | |||
492 | 66 | GValue value = {0}; | ||
493 | 67 | g_value_init(&value, G_TYPE_STRING); | ||
494 | 68 | g_value_set_string(&value, msg); | ||
495 | 69 | |||
496 | 70 | g_debug ("gwibber_send: %s\n", msg); | ||
497 | 71 | |||
498 | 72 | dbus_g_proxy_begin_call(gwibber_proxy, | ||
499 | 73 | "SendMessage", | ||
500 | 74 | gwibber_response, | ||
501 | 75 | NULL, | ||
502 | 76 | NULL, | ||
503 | 77 | G_TYPE_VALUE, | ||
504 | 78 | &value, | ||
505 | 79 | G_TYPE_INVALID); | ||
506 | 80 | |||
507 | 81 | g_value_unset(&value); | ||
508 | 82 | |||
509 | 83 | return; | ||
510 | 84 | } | ||
511 | 85 | |||
512 | 0 | 86 | ||
513 | === added file 'src/me-service-gwibber.h' | |||
514 | --- src/me-service-gwibber.h 1970-01-01 00:00:00 +0000 | |||
515 | +++ src/me-service-gwibber.h 2010-02-05 01:56:12 +0000 | |||
516 | @@ -0,0 +1,35 @@ | |||
517 | 1 | /* | ||
518 | 2 | |||
519 | 3 | Logic to send messages via gwibber | ||
520 | 4 | |||
521 | 5 | Copyright 2010 Canonical Ltd. | ||
522 | 6 | |||
523 | 7 | Authors: | ||
524 | 8 | David Barth <david.barth@canonical.com> | ||
525 | 9 | |||
526 | 10 | This program is free software: you can redistribute it and/or modify it | ||
527 | 11 | under the terms of the GNU General Public License version 3, as published | ||
528 | 12 | by the Free Software Foundation. | ||
529 | 13 | |||
530 | 14 | This program is distributed in the hope that it will be useful, but | ||
531 | 15 | WITHOUT ANY WARRANTY; without even the implied warranties of | ||
532 | 16 | MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
533 | 17 | PURPOSE. See the GNU General Public License for more details. | ||
534 | 18 | |||
535 | 19 | You should have received a copy of the GNU General Public License along | ||
536 | 20 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
537 | 21 | */ | ||
538 | 22 | |||
539 | 23 | #ifndef __ME_SERVICE_GWIBBER_H__ | ||
540 | 24 | #define __ME_SERVICE_GWIBBER_H__ | ||
541 | 25 | |||
542 | 26 | #include <glib.h> | ||
543 | 27 | |||
544 | 28 | G_BEGIN_DECLS | ||
545 | 29 | |||
546 | 30 | void gwibber_send (const gchar *msg); | ||
547 | 31 | |||
548 | 32 | G_END_DECLS | ||
549 | 33 | |||
550 | 34 | #endif /* __ME_SERVICE_GWIBBER_H__ */ | ||
551 | 35 | |||
552 | 0 | 36 | ||
553 | === modified file 'src/me-service.c' | |||
554 | --- src/me-service.c 2010-01-21 17:12:02 +0000 | |||
555 | +++ src/me-service.c 2010-02-05 01:56:12 +0000 | |||
556 | @@ -46,6 +46,8 @@ | |||
557 | 46 | #include "status-provider-pidgin.h" | 46 | #include "status-provider-pidgin.h" |
558 | 47 | #include "status-provider-telepathy.h" | 47 | #include "status-provider-telepathy.h" |
559 | 48 | 48 | ||
560 | 49 | #include "entry-menu-item.h" | ||
561 | 50 | |||
562 | 49 | typedef StatusProvider * (*newfunc) (void); | 51 | typedef StatusProvider * (*newfunc) (void); |
563 | 50 | #define STATUS_PROVIDER_CNT 3 | 52 | #define STATUS_PROVIDER_CNT 3 |
564 | 51 | static newfunc status_provider_newfuncs[STATUS_PROVIDER_CNT] = { | 53 | static newfunc status_provider_newfuncs[STATUS_PROVIDER_CNT] = { |
565 | @@ -108,7 +110,7 @@ | |||
566 | 108 | StatusProviderStatus i; | 110 | StatusProviderStatus i; |
567 | 109 | for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { | 111 | for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { |
568 | 110 | if (status_menuitems[i] == NULL) continue; | 112 | if (status_menuitems[i] == NULL) continue; |
570 | 111 | dbusmenu_menuitem_property_set_bool(status_menuitems[i], DBUSMENU_MENUITEM_PROP_SENSITIVE, FALSE); | 113 | dbusmenu_menuitem_property_set_bool(status_menuitems[i], DBUSMENU_MENUITEM_PROP_ENABLED, FALSE); |
571 | 112 | } | 114 | } |
572 | 113 | } | 115 | } |
573 | 114 | 116 | ||
574 | @@ -118,7 +120,7 @@ | |||
575 | 118 | StatusProviderStatus i; | 120 | StatusProviderStatus i; |
576 | 119 | for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { | 121 | for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { |
577 | 120 | if (status_menuitems[i] == NULL) continue; | 122 | if (status_menuitems[i] == NULL) continue; |
579 | 121 | dbusmenu_menuitem_property_set_bool(status_menuitems[i], DBUSMENU_MENUITEM_PROP_SENSITIVE, TRUE); | 123 | dbusmenu_menuitem_property_set_bool(status_menuitems[i], DBUSMENU_MENUITEM_PROP_ENABLED, TRUE); |
580 | 122 | } | 124 | } |
581 | 123 | } | 125 | } |
582 | 124 | } | 126 | } |
583 | @@ -127,7 +129,7 @@ | |||
584 | 127 | } | 129 | } |
585 | 128 | 130 | ||
586 | 129 | static void | 131 | static void |
588 | 130 | status_menu_click (DbusmenuMenuitem * mi, gpointer data) | 132 | status_menu_click (DbusmenuMenuitem * mi, guint timestamp, gpointer data) |
589 | 131 | { | 133 | { |
590 | 132 | StatusProviderStatus status = (StatusProviderStatus)GPOINTER_TO_INT(data); | 134 | StatusProviderStatus status = (StatusProviderStatus)GPOINTER_TO_INT(data); |
591 | 133 | g_debug("Setting status: %d", status); | 135 | g_debug("Setting status: %d", status); |
592 | @@ -139,6 +141,47 @@ | |||
593 | 139 | return; | 141 | return; |
594 | 140 | } | 142 | } |
595 | 141 | 143 | ||
596 | 144 | static void | ||
597 | 145 | accounts_click (DbusmenuMenuitem *mi, gpointer user_data) | ||
598 | 146 | { | ||
599 | 147 | GError * error = NULL; | ||
600 | 148 | |||
601 | 149 | if (!g_spawn_command_line_async(user_data, &error)) { | ||
602 | 150 | g_warning("Unable to start %s: %s", (char *)user_data, error->message); | ||
603 | 151 | g_error_free(error); | ||
604 | 152 | } | ||
605 | 153 | } | ||
606 | 154 | |||
607 | 155 | static void | ||
608 | 156 | build_accounts_menuitems (gpointer data) | ||
609 | 157 | { | ||
610 | 158 | DbusmenuMenuitem * root = DBUSMENU_MENUITEM(data); | ||
611 | 159 | g_return_if_fail(root != NULL); | ||
612 | 160 | |||
613 | 161 | /* FIXME: find cmd line parameters with ken-vandine */ | ||
614 | 162 | DbusmenuMenuitem *im_accounts_mi = dbusmenu_menuitem_new(); | ||
615 | 163 | dbusmenu_menuitem_property_set(im_accounts_mi, DBUSMENU_MENUITEM_PROP_LABEL, | ||
616 | 164 | _("Chat Accounts...")); | ||
617 | 165 | dbusmenu_menuitem_child_append(root, im_accounts_mi); | ||
618 | 166 | g_signal_connect(G_OBJECT(im_accounts_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, | ||
619 | 167 | G_CALLBACK(accounts_click), "empathy -a"); | ||
620 | 168 | |||
621 | 169 | DbusmenuMenuitem *tw_accounts_mi = dbusmenu_menuitem_new(); | ||
622 | 170 | dbusmenu_menuitem_property_set(tw_accounts_mi, DBUSMENU_MENUITEM_PROP_LABEL, | ||
623 | 171 | _("Broadcast Accounts...")); | ||
624 | 172 | dbusmenu_menuitem_child_append(root, tw_accounts_mi); | ||
625 | 173 | g_signal_connect(G_OBJECT(tw_accounts_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, | ||
626 | 174 | G_CALLBACK(accounts_click), "gwibber-accounts"); | ||
627 | 175 | |||
628 | 176 | DbusmenuMenuitem *u1_accounts_mi = dbusmenu_menuitem_new(); | ||
629 | 177 | dbusmenu_menuitem_property_set(u1_accounts_mi, DBUSMENU_MENUITEM_PROP_LABEL, | ||
630 | 178 | _("Ubuntu One...")); | ||
631 | 179 | dbusmenu_menuitem_child_append(root, u1_accounts_mi); | ||
632 | 180 | g_signal_connect(G_OBJECT(u1_accounts_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, | ||
633 | 181 | G_CALLBACK(accounts_click), "ubuntuone-client-preferences"); | ||
634 | 182 | |||
635 | 183 | } | ||
636 | 184 | |||
637 | 142 | static gboolean | 185 | static gboolean |
638 | 143 | build_providers (gpointer data) | 186 | build_providers (gpointer data) |
639 | 144 | { | 187 | { |
640 | @@ -172,7 +215,7 @@ | |||
641 | 172 | if (name[0] != '\0') { | 215 | if (name[0] != '\0') { |
642 | 173 | DbusmenuMenuitem * useritem = dbusmenu_menuitem_new(); | 216 | DbusmenuMenuitem * useritem = dbusmenu_menuitem_new(); |
643 | 174 | dbusmenu_menuitem_property_set(useritem, DBUSMENU_MENUITEM_PROP_LABEL, name); | 217 | dbusmenu_menuitem_property_set(useritem, DBUSMENU_MENUITEM_PROP_LABEL, name); |
645 | 175 | dbusmenu_menuitem_property_set_bool(useritem, DBUSMENU_MENUITEM_PROP_SENSITIVE, FALSE); | 218 | dbusmenu_menuitem_property_set_bool(useritem, DBUSMENU_MENUITEM_PROP_ENABLED, FALSE); |
646 | 176 | dbusmenu_menuitem_child_append(root, useritem); | 219 | dbusmenu_menuitem_child_append(root, useritem); |
647 | 177 | } | 220 | } |
648 | 178 | 221 | ||
649 | @@ -192,6 +235,9 @@ | |||
650 | 192 | 235 | ||
651 | 193 | build_user_item(root); | 236 | build_user_item(root); |
652 | 194 | 237 | ||
653 | 238 | DbusmenuMenuitem *entry = DBUSMENU_MENUITEM (entry_menu_item_new()); | ||
654 | 239 | dbusmenu_menuitem_child_append(root, entry); | ||
655 | 240 | |||
656 | 195 | StatusProviderStatus i; | 241 | StatusProviderStatus i; |
657 | 196 | for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { | 242 | for (i = STATUS_PROVIDER_STATUS_ONLINE; i < STATUS_PROVIDER_STATUS_LAST; i++) { |
658 | 197 | if (i == STATUS_PROVIDER_STATUS_DISCONNECTED) { | 243 | if (i == STATUS_PROVIDER_STATUS_DISCONNECTED) { |
659 | @@ -203,9 +249,9 @@ | |||
660 | 203 | status_menuitems[i] = dbusmenu_menuitem_new(); | 249 | status_menuitems[i] = dbusmenu_menuitem_new(); |
661 | 204 | 250 | ||
662 | 205 | dbusmenu_menuitem_property_set(status_menuitems[i], DBUSMENU_MENUITEM_PROP_LABEL, _(status_strings[i])); | 251 | dbusmenu_menuitem_property_set(status_menuitems[i], DBUSMENU_MENUITEM_PROP_LABEL, _(status_strings[i])); |
664 | 206 | dbusmenu_menuitem_property_set(status_menuitems[i], DBUSMENU_MENUITEM_PROP_ICON, status_icons[i]); | 252 | dbusmenu_menuitem_property_set(status_menuitems[i], DBUSMENU_MENUITEM_PROP_ICON_NAME, status_icons[i]); |
665 | 207 | if (global_status == STATUS_PROVIDER_STATUS_DISCONNECTED) { | 253 | if (global_status == STATUS_PROVIDER_STATUS_DISCONNECTED) { |
667 | 208 | dbusmenu_menuitem_property_set_bool(status_menuitems[i], DBUSMENU_MENUITEM_PROP_SENSITIVE, FALSE); | 254 | dbusmenu_menuitem_property_set_bool(status_menuitems[i], DBUSMENU_MENUITEM_PROP_ENABLED, FALSE); |
668 | 209 | } | 255 | } |
669 | 210 | g_signal_connect(G_OBJECT(status_menuitems[i]), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(status_menu_click), GINT_TO_POINTER(i)); | 256 | g_signal_connect(G_OBJECT(status_menuitems[i]), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(status_menu_click), GINT_TO_POINTER(i)); |
670 | 211 | 257 | ||
671 | @@ -214,6 +260,13 @@ | |||
672 | 214 | g_debug("Built %s", status_strings[i]); | 260 | g_debug("Built %s", status_strings[i]); |
673 | 215 | } | 261 | } |
674 | 216 | 262 | ||
675 | 263 | DbusmenuMenuitem *separator = dbusmenu_menuitem_new(); | ||
676 | 264 | dbusmenu_menuitem_property_set(separator, DBUSMENU_MENUITEM_PROP_TYPE, | ||
677 | 265 | DBUSMENU_CLIENT_TYPES_SEPARATOR); | ||
678 | 266 | dbusmenu_menuitem_child_append(root, separator); | ||
679 | 267 | |||
680 | 268 | build_accounts_menuitems(root); | ||
681 | 269 | |||
682 | 217 | return FALSE; | 270 | return FALSE; |
683 | 218 | } | 271 | } |
684 | 219 | 272 |
0.2.2