Merge lp:~ken-vandine/indicator-me/remove_about_me into lp:indicator-me
- remove_about_me
- Merge into trunk
Proposed by
Ken VanDine
Status: | Merged |
---|---|
Approved by: | Ted Gould |
Approved revision: | 151 |
Merged at revision: | 151 |
Proposed branch: | lp:~ken-vandine/indicator-me/remove_about_me |
Merge into: | lp:indicator-me |
Diff against target: |
603 lines (+0/-501) 6 files modified
src/Makefile.am (+0/-2) src/about-me-menu-item.c (+0/-313) src/about-me-menu-item.h (+0/-66) src/dbus-shared-names.h (+0/-1) src/indicator-me.c (+0/-48) src/me-service.c (+0/-71) |
To merge this branch: | bzr merge lp:~ken-vandine/indicator-me/remove_about_me |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ted Gould (community) | Approve | ||
Review via email: mp+66023@code.launchpad.net |
Commit message
Description of the change
Removed the about me menu, it doesn't exist in oneiric.
To post a comment you must log in.
Revision history for this message
Ted Gould (ted) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'src/Makefile.am' | |||
2 | --- src/Makefile.am 2011-02-17 15:58:10 +0000 | |||
3 | +++ src/Makefile.am 2011-06-27 16:40:07 +0000 | |||
4 | @@ -8,8 +8,6 @@ | |||
5 | 8 | melibdir = $(INDICATORDIR) | 8 | melibdir = $(INDICATORDIR) |
6 | 9 | melib_LTLIBRARIES = libme.la | 9 | melib_LTLIBRARIES = libme.la |
7 | 10 | libme_la_SOURCES = \ | 10 | libme_la_SOURCES = \ |
8 | 11 | about-me-menu-item.c \ | ||
9 | 12 | about-me-menu-item.h \ | ||
10 | 13 | indicator-me.c \ | 11 | indicator-me.c \ |
11 | 14 | dbus-shared-names.h \ | 12 | dbus-shared-names.h \ |
12 | 15 | gen-me-service.xml.h \ | 13 | gen-me-service.xml.h \ |
13 | 16 | 14 | ||
14 | === removed file 'src/about-me-menu-item.c' | |||
15 | --- src/about-me-menu-item.c 2010-04-14 14:52:10 +0000 | |||
16 | +++ src/about-me-menu-item.c 1970-01-01 00:00:00 +0000 | |||
17 | @@ -1,313 +0,0 @@ | |||
18 | 1 | /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */ | ||
19 | 2 | /* | ||
20 | 3 | * Copyright 2010 Canonical, Ltd. | ||
21 | 4 | * | ||
22 | 5 | * This program is free software: you can redistribute it and/or modify it | ||
23 | 6 | * under the terms of either or both of the following licenses: | ||
24 | 7 | * | ||
25 | 8 | * 1) the GNU Lesser General Public License version 3, as published by the | ||
26 | 9 | * Free Software Foundation; and/or | ||
27 | 10 | * 2) the GNU Lesser General Public License version 2.1, as published by | ||
28 | 11 | * the Free Software Foundation. | ||
29 | 12 | * | ||
30 | 13 | * This program is distributed in the hope that it will be useful, but | ||
31 | 14 | * WITHOUT ANY WARRANTY; without even the implied warranties of | ||
32 | 15 | * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR | ||
33 | 16 | * PURPOSE. See the applicable version of the GNU Lesser General Public | ||
34 | 17 | * License for more details. | ||
35 | 18 | * | ||
36 | 19 | * You should have received a copy of both the GNU Lesser General Public | ||
37 | 20 | * License version 3 and version 2.1 along with this program. If not, see | ||
38 | 21 | * <http://www.gnu.org/licenses/> | ||
39 | 22 | * | ||
40 | 23 | * Authors: | ||
41 | 24 | * David Barth <david.barth@canonical.com> | ||
42 | 25 | * Cody Russell <crussell@canonical.com> | ||
43 | 26 | */ | ||
44 | 27 | |||
45 | 28 | #include <sys/types.h> | ||
46 | 29 | #include <sys/stat.h> | ||
47 | 30 | #include <unistd.h> | ||
48 | 31 | |||
49 | 32 | #include <glib/gstdio.h> | ||
50 | 33 | |||
51 | 34 | #include <gtk/gtk.h> | ||
52 | 35 | #include "about-me-menu-item.h" | ||
53 | 36 | |||
54 | 37 | static GObject* about_me_menu_item_constructor (GType type, | ||
55 | 38 | guint n_construct_properties, | ||
56 | 39 | GObjectConstructParam *construct_params); | ||
57 | 40 | static void about_me_menu_item_set_property (GObject *object, | ||
58 | 41 | guint prop_id, | ||
59 | 42 | const GValue *value, | ||
60 | 43 | GParamSpec *pspec); | ||
61 | 44 | static void about_me_menu_item_get_property (GObject *object, | ||
62 | 45 | guint prop_id, | ||
63 | 46 | GValue *value, | ||
64 | 47 | GParamSpec *pspec); | ||
65 | 48 | |||
66 | 49 | struct _AboutMeMenuItemPrivate { | ||
67 | 50 | GtkWidget *label; | ||
68 | 51 | GtkWidget *image; | ||
69 | 52 | GtkWidget *hbox; | ||
70 | 53 | gchar *realname; | ||
71 | 54 | }; | ||
72 | 55 | |||
73 | 56 | enum { | ||
74 | 57 | PROP_0, | ||
75 | 58 | PROP_REALNAME | ||
76 | 59 | }; | ||
77 | 60 | |||
78 | 61 | G_DEFINE_TYPE (AboutMeMenuItem, about_me_menu_item, GTK_TYPE_MENU_ITEM) | ||
79 | 62 | |||
80 | 63 | #define GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ABOUT_ME_TYPE_MENU_ITEM, AboutMeMenuItemPrivate)) | ||
81 | 64 | |||
82 | 65 | static void | ||
83 | 66 | about_me_menu_item_class_init (AboutMeMenuItemClass *item_class) | ||
84 | 67 | { | ||
85 | 68 | GObjectClass *gobject_class = G_OBJECT_CLASS (item_class); | ||
86 | 69 | |||
87 | 70 | gobject_class->constructor = about_me_menu_item_constructor; | ||
88 | 71 | gobject_class->set_property = about_me_menu_item_set_property; | ||
89 | 72 | gobject_class->get_property = about_me_menu_item_get_property; | ||
90 | 73 | |||
91 | 74 | g_object_class_install_property (gobject_class, | ||
92 | 75 | PROP_REALNAME, | ||
93 | 76 | g_param_spec_string ("realname", | ||
94 | 77 | "Realname", | ||
95 | 78 | "The \"Realname\" for the user", | ||
96 | 79 | NULL, | ||
97 | 80 | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); | ||
98 | 81 | |||
99 | 82 | g_type_class_add_private (gobject_class, sizeof (AboutMeMenuItemPrivate)); | ||
100 | 83 | } | ||
101 | 84 | |||
102 | 85 | static void | ||
103 | 86 | about_me_menu_item_init (AboutMeMenuItem *self) | ||
104 | 87 | { | ||
105 | 88 | AboutMeMenuItemPrivate *priv = GET_PRIVATE (self); | ||
106 | 89 | |||
107 | 90 | priv->label = NULL; | ||
108 | 91 | priv->image = NULL; | ||
109 | 92 | priv->realname = NULL; | ||
110 | 93 | } | ||
111 | 94 | |||
112 | 95 | static void | ||
113 | 96 | about_me_menu_item_set_property (GObject *object, | ||
114 | 97 | guint prop_id, | ||
115 | 98 | const GValue *value, | ||
116 | 99 | GParamSpec *pspec) | ||
117 | 100 | { | ||
118 | 101 | AboutMeMenuItem *menu_item = ABOUT_ME_MENU_ITEM (object); | ||
119 | 102 | AboutMeMenuItemPrivate *priv = GET_PRIVATE (menu_item); | ||
120 | 103 | |||
121 | 104 | switch (prop_id) | ||
122 | 105 | { | ||
123 | 106 | case PROP_REALNAME: | ||
124 | 107 | g_assert (priv->realname == NULL); | ||
125 | 108 | priv->realname = g_strdup (g_value_get_string (value)); | ||
126 | 109 | break; | ||
127 | 110 | |||
128 | 111 | default: | ||
129 | 112 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | ||
130 | 113 | break; | ||
131 | 114 | } | ||
132 | 115 | } | ||
133 | 116 | |||
134 | 117 | static void | ||
135 | 118 | about_me_menu_item_get_property (GObject *object, | ||
136 | 119 | guint prop_id, | ||
137 | 120 | GValue *value, | ||
138 | 121 | GParamSpec *pspec) | ||
139 | 122 | { | ||
140 | 123 | AboutMeMenuItem *menu_item = ABOUT_ME_MENU_ITEM (object); | ||
141 | 124 | AboutMeMenuItemPrivate *priv = GET_PRIVATE (menu_item); | ||
142 | 125 | |||
143 | 126 | switch (prop_id) | ||
144 | 127 | { | ||
145 | 128 | case PROP_REALNAME: | ||
146 | 129 | g_value_set_string (value, priv->realname); | ||
147 | 130 | break; | ||
148 | 131 | |||
149 | 132 | default: | ||
150 | 133 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | ||
151 | 134 | break; | ||
152 | 135 | } | ||
153 | 136 | } | ||
154 | 137 | |||
155 | 138 | #define DEFAULT_PIXELS_PER_EM 10.0f | ||
156 | 139 | |||
157 | 140 | static gdouble | ||
158 | 141 | get_pixels_per_em (GtkWidget *widget) | ||
159 | 142 | { | ||
160 | 143 | g_return_val_if_fail (GTK_IS_WIDGET (widget), DEFAULT_PIXELS_PER_EM); | ||
161 | 144 | |||
162 | 145 | /* Note: taken from indicator-session */ | ||
163 | 146 | GtkStyle * style = gtk_widget_get_style(widget); | ||
164 | 147 | |||
165 | 148 | PangoLayout * layout = pango_layout_new(gtk_widget_get_pango_context(widget)); | ||
166 | 149 | pango_layout_set_text(layout, "M", -1); | ||
167 | 150 | pango_layout_set_font_description(layout, style->font_desc); | ||
168 | 151 | |||
169 | 152 | gint width; | ||
170 | 153 | pango_layout_get_pixel_size(layout, &width, NULL); | ||
171 | 154 | |||
172 | 155 | gint point = pango_font_description_get_size(style->font_desc); | ||
173 | 156 | gdouble dpi = gdk_screen_get_resolution(gdk_screen_get_default()); | ||
174 | 157 | |||
175 | 158 | return ((point * dpi) / 72.0f) / PANGO_SCALE; | ||
176 | 159 | } | ||
177 | 160 | |||
178 | 161 | |||
179 | 162 | /* from n-osd */ | ||
180 | 163 | static GdkPixbuf* | ||
181 | 164 | load_icon (const gchar* filename, | ||
182 | 165 | gint icon_size) | ||
183 | 166 | { | ||
184 | 167 | GdkPixbuf* buffer = NULL; | ||
185 | 168 | GdkPixbuf* pixbuf = NULL; | ||
186 | 169 | GtkIconTheme* theme = NULL; | ||
187 | 170 | GError* error = NULL; | ||
188 | 171 | |||
189 | 172 | /* sanity check */ | ||
190 | 173 | g_return_val_if_fail (filename, NULL); | ||
191 | 174 | |||
192 | 175 | theme = gtk_icon_theme_get_default (); | ||
193 | 176 | buffer = gtk_icon_theme_load_icon (theme, | ||
194 | 177 | filename, | ||
195 | 178 | icon_size, | ||
196 | 179 | GTK_ICON_LOOKUP_FORCE_SVG | | ||
197 | 180 | GTK_ICON_LOOKUP_GENERIC_FALLBACK | | ||
198 | 181 | GTK_ICON_LOOKUP_FORCE_SIZE, | ||
199 | 182 | &error); | ||
200 | 183 | if (error) | ||
201 | 184 | { | ||
202 | 185 | g_print ("loading icon '%s' caused error: '%s'", | ||
203 | 186 | filename, | ||
204 | 187 | error->message); | ||
205 | 188 | g_error_free (error); | ||
206 | 189 | error = NULL; | ||
207 | 190 | pixbuf = NULL; | ||
208 | 191 | } | ||
209 | 192 | else | ||
210 | 193 | { | ||
211 | 194 | /* copy and unref buffer so on an icon-theme change old | ||
212 | 195 | ** icons are not kept in memory due to dangling | ||
213 | 196 | ** references, this also makes sure we do not need to | ||
214 | 197 | ** connect to GtkWidget::style-set signal for the | ||
215 | 198 | ** GdkPixbuf we get from gtk_icon_theme_load_icon() */ | ||
216 | 199 | pixbuf = gdk_pixbuf_copy (buffer); | ||
217 | 200 | g_object_unref (buffer); | ||
218 | 201 | } | ||
219 | 202 | |||
220 | 203 | return pixbuf; | ||
221 | 204 | } | ||
222 | 205 | |||
223 | 206 | gboolean | ||
224 | 207 | about_me_menu_item_load_avatar (AboutMeMenuItem *self, const gchar *file) | ||
225 | 208 | { | ||
226 | 209 | g_return_val_if_fail (ABOUT_IS_ME_MENU_ITEM (self), FALSE); | ||
227 | 210 | |||
228 | 211 | AboutMeMenuItemPrivate *priv = GET_PRIVATE (self); | ||
229 | 212 | |||
230 | 213 | g_debug ("loading avatar from file %s", file); | ||
231 | 214 | |||
232 | 215 | struct stat buf; | ||
233 | 216 | if (! (g_stat (file, &buf) == 0 && buf.st_size > 0)) { | ||
234 | 217 | g_warning ("%s: not found or empty", file); | ||
235 | 218 | return FALSE; | ||
236 | 219 | } | ||
237 | 220 | |||
238 | 221 | if (buf.st_size > 1024*1024) { | ||
239 | 222 | g_warning ("avatar file too large (%lld)", (long long)buf.st_size); | ||
240 | 223 | return FALSE; | ||
241 | 224 | } | ||
242 | 225 | |||
243 | 226 | GError *error = NULL; | ||
244 | 227 | int size = get_pixels_per_em (priv->image) * 3; | ||
245 | 228 | |||
246 | 229 | GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_scale (file, -1, size, TRUE, | ||
247 | 230 | &error); | ||
248 | 231 | if (pixbuf == NULL) { | ||
249 | 232 | if (error != NULL) { | ||
250 | 233 | g_warning ("Couldn't read file %s: %s", file, error->message); | ||
251 | 234 | g_error_free (error); | ||
252 | 235 | } | ||
253 | 236 | return FALSE; | ||
254 | 237 | } | ||
255 | 238 | |||
256 | 239 | gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), pixbuf); | ||
257 | 240 | |||
258 | 241 | g_object_unref (pixbuf); | ||
259 | 242 | |||
260 | 243 | return TRUE; | ||
261 | 244 | } | ||
262 | 245 | |||
263 | 246 | static void | ||
264 | 247 | image_size_allocate (GtkWidget *widget, | ||
265 | 248 | GtkAllocation *allocation, | ||
266 | 249 | gpointer user_data) | ||
267 | 250 | { | ||
268 | 251 | gint max = MAX (allocation->width, allocation->height); | ||
269 | 252 | |||
270 | 253 | gtk_widget_set_size_request (widget, max, max); | ||
271 | 254 | } | ||
272 | 255 | |||
273 | 256 | static GObject* | ||
274 | 257 | about_me_menu_item_constructor (GType type, | ||
275 | 258 | guint n_construct_properties, | ||
276 | 259 | GObjectConstructParam *construct_params) | ||
277 | 260 | { | ||
278 | 261 | GObject *object; | ||
279 | 262 | GtkWidget *hbox; | ||
280 | 263 | GtkWidget *align; | ||
281 | 264 | AboutMeMenuItemPrivate *priv; | ||
282 | 265 | object = G_OBJECT_CLASS (about_me_menu_item_parent_class)->constructor (type, | ||
283 | 266 | n_construct_properties, | ||
284 | 267 | construct_params); | ||
285 | 268 | |||
286 | 269 | priv = GET_PRIVATE (object); | ||
287 | 270 | |||
288 | 271 | GtkWidget *frame = gtk_frame_new (NULL); | ||
289 | 272 | gdouble pixels_per_em = get_pixels_per_em (frame); | ||
290 | 273 | GdkPixbuf *pixbuf = load_icon ("stock_person-panel", pixels_per_em * 3); | ||
291 | 274 | if (pixbuf == NULL) | ||
292 | 275 | pixbuf = load_icon ("stock_person", pixels_per_em * 3); | ||
293 | 276 | priv->image = gtk_image_new_from_pixbuf (pixbuf); | ||
294 | 277 | g_signal_connect (frame, "size-allocate", G_CALLBACK (image_size_allocate), NULL); | ||
295 | 278 | gtk_misc_set_padding (GTK_MISC (priv->image), 2, 2); | ||
296 | 279 | gtk_container_add (GTK_CONTAINER (frame), priv->image); | ||
297 | 280 | |||
298 | 281 | align = gtk_alignment_new (0, 0.3, 0, 0); | ||
299 | 282 | priv->label = gtk_label_new (priv->realname); | ||
300 | 283 | gtk_misc_set_padding (GTK_MISC (priv->label), 2, 2); | ||
301 | 284 | gtk_container_add (GTK_CONTAINER (align), priv->label); | ||
302 | 285 | |||
303 | 286 | hbox = gtk_hbox_new (FALSE, 0); | ||
304 | 287 | gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, FALSE, 0); | ||
305 | 288 | gtk_box_pack_start (GTK_BOX (hbox), align, TRUE, TRUE, DEFAULT_PIXELS_PER_EM); | ||
306 | 289 | |||
307 | 290 | gtk_container_add (GTK_CONTAINER (object), hbox); | ||
308 | 291 | gtk_widget_show_all (GTK_WIDGET(object)); | ||
309 | 292 | |||
310 | 293 | priv->hbox = hbox; | ||
311 | 294 | |||
312 | 295 | return object; | ||
313 | 296 | } | ||
314 | 297 | |||
315 | 298 | /** | ||
316 | 299 | * about_me_menu_item_new: | ||
317 | 300 | * @realname: the name to display in the new menu item. | ||
318 | 301 | * @returns: a new #AboutMeMenuItem. | ||
319 | 302 | * | ||
320 | 303 | * Creates a new #AboutMeMenuItem with a name. | ||
321 | 304 | **/ | ||
322 | 305 | GtkWidget* | ||
323 | 306 | about_me_menu_item_new (const gchar *realname) | ||
324 | 307 | { | ||
325 | 308 | return g_object_new (ABOUT_ME_TYPE_MENU_ITEM, | ||
326 | 309 | "realname", realname, | ||
327 | 310 | NULL); | ||
328 | 311 | } | ||
329 | 312 | |||
330 | 313 | #define __ABOUT_ME_MENU_ITEM_C__ | ||
331 | 314 | 0 | ||
332 | === removed file 'src/about-me-menu-item.h' | |||
333 | --- src/about-me-menu-item.h 2011-06-22 18:29:03 +0000 | |||
334 | +++ src/about-me-menu-item.h 1970-01-01 00:00:00 +0000 | |||
335 | @@ -1,66 +0,0 @@ | |||
336 | 1 | /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */ | ||
337 | 2 | /* | ||
338 | 3 | * Copyright 2010 Canonical, Ltd. | ||
339 | 4 | * | ||
340 | 5 | * This program is free software: you can redistribute it and/or modify it | ||
341 | 6 | * under the terms of either or both of the following licenses: | ||
342 | 7 | * | ||
343 | 8 | * 1) the GNU Lesser General Public License version 3, as published by the | ||
344 | 9 | * Free Software Foundation; and/or | ||
345 | 10 | * 2) the GNU Lesser General Public License version 2.1, as published by | ||
346 | 11 | * the Free Software Foundation. | ||
347 | 12 | * | ||
348 | 13 | * This program is distributed in the hope that it will be useful, but | ||
349 | 14 | * WITHOUT ANY WARRANTY; without even the implied warranties of | ||
350 | 15 | * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR | ||
351 | 16 | * PURPOSE. See the applicable version of the GNU Lesser General Public | ||
352 | 17 | * License for more details. | ||
353 | 18 | * | ||
354 | 19 | * You should have received a copy of both the GNU Lesser General Public | ||
355 | 20 | * License version 3 and version 2.1 along with this program. If not, see | ||
356 | 21 | * <http://www.gnu.org/licenses/> | ||
357 | 22 | * | ||
358 | 23 | * Authors: | ||
359 | 24 | * David Barth <david.barth@canonical.com> | ||
360 | 25 | * Cody Russell <crussell@canonical.com> | ||
361 | 26 | */ | ||
362 | 27 | |||
363 | 28 | #ifndef __ABOUT_ME_MENU_ITEM_H__ | ||
364 | 29 | #define __ABOUT_ME_MENU_ITEM_H__ | ||
365 | 30 | |||
366 | 31 | #include <gtk/gtk.h> | ||
367 | 32 | |||
368 | 33 | G_BEGIN_DECLS | ||
369 | 34 | |||
370 | 35 | #define ABOUT_ME_TYPE_MENU_ITEM (about_me_menu_item_get_type ()) | ||
371 | 36 | #define ABOUT_ME_MENU_ITEM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ABOUT_ME_TYPE_MENU_ITEM, AboutMeMenuItem)) | ||
372 | 37 | #define ABOUT_ME_MENU_ITEM_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), ABOUT_ME_TYPE_MENU_ITEM, AboutMeMenuItemClass)) | ||
373 | 38 | #define ABOUT_IS_ME_MENU_ITEM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ABOUT_ME_TYPE_MENU_ITEM)) | ||
374 | 39 | #define ABOUT_IS_ME_MENU_ITEM_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), ABOUT_ME_TYPE_MENU_ITEM)) | ||
375 | 40 | #define ABOUT_ME_MENU_ITEM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ABOUT_ME_TYPE_MENU_ITEM, AboutMeMenuItemClass)) | ||
376 | 41 | |||
377 | 42 | |||
378 | 43 | typedef struct _AboutMeMenuItem AboutMeMenuItem; | ||
379 | 44 | typedef struct _AboutMeMenuItemClass AboutMeMenuItemClass; | ||
380 | 45 | typedef struct _AboutMeMenuItemPrivate AboutMeMenuItemPrivate; | ||
381 | 46 | |||
382 | 47 | struct _AboutMeMenuItem | ||
383 | 48 | { | ||
384 | 49 | GtkMenuItem parent_instance; | ||
385 | 50 | |||
386 | 51 | AboutMeMenuItemPrivate *priv; | ||
387 | 52 | }; | ||
388 | 53 | |||
389 | 54 | struct _AboutMeMenuItemClass | ||
390 | 55 | { | ||
391 | 56 | GtkMenuItemClass parent_class; | ||
392 | 57 | }; | ||
393 | 58 | |||
394 | 59 | |||
395 | 60 | GType about_me_menu_item_get_type (void) G_GNUC_CONST; | ||
396 | 61 | GtkWidget *about_me_menu_item_new (const gchar *name); | ||
397 | 62 | gboolean about_me_menu_item_load_avatar (AboutMeMenuItem *self, const gchar *file); | ||
398 | 63 | |||
399 | 64 | G_END_DECLS | ||
400 | 65 | |||
401 | 66 | #endif /* __ABOUT_ME_MENU_ITEM_H__ */ | ||
402 | 67 | 0 | ||
403 | === modified file 'src/dbus-shared-names.h' | |||
404 | --- src/dbus-shared-names.h 2011-01-14 21:30:09 +0000 | |||
405 | +++ src/dbus-shared-names.h 2011-06-27 16:40:07 +0000 | |||
406 | @@ -34,7 +34,6 @@ | |||
407 | 34 | #define DBUSMENU_ENTRY_MENUITEM_PROP_TEXT "text" | 34 | #define DBUSMENU_ENTRY_MENUITEM_PROP_TEXT "text" |
408 | 35 | #define DBUSMENU_ENTRY_MENUITEM_PROP_HINT "hint" | 35 | #define DBUSMENU_ENTRY_MENUITEM_PROP_HINT "hint" |
409 | 36 | 36 | ||
410 | 37 | #define DBUSMENU_ABOUT_ME_MENUITEM_TYPE "x-canonical-about-me-item" | ||
411 | 38 | #define DBUSMENU_ABOUT_ME_MENUITEM_PROP_NAME "name" | 37 | #define DBUSMENU_ABOUT_ME_MENUITEM_PROP_NAME "name" |
412 | 39 | #define DBUSMENU_ABOUT_ME_MENUITEM_PROP_ICON "icon" | 38 | #define DBUSMENU_ABOUT_ME_MENUITEM_PROP_ICON "icon" |
413 | 40 | 39 | ||
414 | 41 | 40 | ||
415 | === modified file 'src/indicator-me.c' | |||
416 | --- src/indicator-me.c 2011-06-22 18:29:03 +0000 | |||
417 | +++ src/indicator-me.c 2011-06-27 16:40:07 +0000 | |||
418 | @@ -41,8 +41,6 @@ | |||
419 | 41 | #include <libindicator/indicator-image-helper.h> | 41 | #include <libindicator/indicator-image-helper.h> |
420 | 42 | #include <libido/idoentrymenuitem.h> | 42 | #include <libido/idoentrymenuitem.h> |
421 | 43 | 43 | ||
422 | 44 | #include "about-me-menu-item.h" | ||
423 | 45 | |||
424 | 46 | #include "dbus-shared-names.h" | 44 | #include "dbus-shared-names.h" |
425 | 47 | #include "gen-me-service.xml.h" | 45 | #include "gen-me-service.xml.h" |
426 | 48 | 46 | ||
427 | @@ -101,10 +99,6 @@ | |||
428 | 101 | DbusmenuMenuitem * parent, | 99 | DbusmenuMenuitem * parent, |
429 | 102 | DbusmenuClient * client, | 100 | DbusmenuClient * client, |
430 | 103 | gpointer user_data); | 101 | gpointer user_data); |
431 | 104 | static gboolean new_about_me_item (DbusmenuMenuitem * newitem, | ||
432 | 105 | DbusmenuMenuitem * parent, | ||
433 | 106 | DbusmenuClient * client, | ||
434 | 107 | gpointer user_data); | ||
435 | 108 | static void entry_activate_cb (GtkEntry *entry, DbusmenuMenuitem *mi); | 102 | static void entry_activate_cb (GtkEntry *entry, DbusmenuMenuitem *mi); |
436 | 109 | static void entry_prop_change_cb (DbusmenuMenuitem *mi, gchar *prop, GVariant *value, GtkEntry *entry); | 103 | static void entry_prop_change_cb (DbusmenuMenuitem *mi, gchar *prop, GVariant *value, GtkEntry *entry); |
437 | 110 | static gboolean entry_hint_is_shown (GtkWidget *widget); | 104 | static gboolean entry_hint_is_shown (GtkWidget *widget); |
438 | @@ -665,47 +659,6 @@ | |||
439 | 665 | return TRUE; | 659 | return TRUE; |
440 | 666 | } | 660 | } |
441 | 667 | 661 | ||
442 | 668 | /* Whenever we have a property change on a DbusmenuMenuitem | ||
443 | 669 | we need to be responsive to that. */ | ||
444 | 670 | static void | ||
445 | 671 | about_me_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, GVariant * value, AboutMeMenuItem *item) | ||
446 | 672 | { | ||
447 | 673 | g_return_if_fail (ABOUT_IS_ME_MENU_ITEM (item)); | ||
448 | 674 | |||
449 | 675 | if (!g_strcmp0(prop, DBUSMENU_ABOUT_ME_MENUITEM_PROP_ICON)) { | ||
450 | 676 | /* reload the avatar icon */ | ||
451 | 677 | about_me_menu_item_load_avatar (item, g_variant_get_string(value, NULL)); | ||
452 | 678 | } else if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_VISIBLE)) { | ||
453 | 679 | /* normal, ignore */ | ||
454 | 680 | } else { | ||
455 | 681 | g_warning("Indicator Item property '%s' unknown", prop); | ||
456 | 682 | } | ||
457 | 683 | |||
458 | 684 | return; | ||
459 | 685 | } | ||
460 | 686 | |||
461 | 687 | static gboolean | ||
462 | 688 | new_about_me_item (DbusmenuMenuitem * newitem, | ||
463 | 689 | DbusmenuMenuitem * parent, | ||
464 | 690 | DbusmenuClient * client, | ||
465 | 691 | gpointer user_data) | ||
466 | 692 | { | ||
467 | 693 | g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); | ||
468 | 694 | g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); | ||
469 | 695 | /* Note: not checking parent, it's reasonable for it to be NULL */ | ||
470 | 696 | |||
471 | 697 | const gchar *name = dbusmenu_menuitem_property_get (newitem, DBUSMENU_ABOUT_ME_MENUITEM_PROP_NAME); | ||
472 | 698 | AboutMeMenuItem *about = ABOUT_ME_MENU_ITEM (about_me_menu_item_new (name)); | ||
473 | 699 | if (about != NULL) { | ||
474 | 700 | dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, GTK_MENU_ITEM(about), parent); | ||
475 | 701 | const gchar *avatar = dbusmenu_menuitem_property_get (newitem, DBUSMENU_ABOUT_ME_MENUITEM_PROP_ICON); | ||
476 | 702 | about_me_menu_item_load_avatar (about, avatar); | ||
477 | 703 | g_signal_connect(G_OBJECT(newitem), DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, G_CALLBACK(about_me_prop_change_cb), about); | ||
478 | 704 | } | ||
479 | 705 | |||
480 | 706 | return TRUE; | ||
481 | 707 | } | ||
482 | 708 | |||
483 | 709 | /* Builds the dbusmenu for the service. */ | 662 | /* Builds the dbusmenu for the service. */ |
484 | 710 | static GtkMenu * | 663 | static GtkMenu * |
485 | 711 | get_menu (IndicatorObject * io) | 664 | get_menu (IndicatorObject * io) |
486 | @@ -714,7 +667,6 @@ | |||
487 | 714 | DbusmenuGtkClient * client = dbusmenu_gtkmenu_get_client(menu); | 667 | DbusmenuGtkClient * client = dbusmenu_gtkmenu_get_client(menu); |
488 | 715 | 668 | ||
489 | 716 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_ENTRY_MENUITEM_TYPE, new_entry_item); | 669 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_ENTRY_MENUITEM_TYPE, new_entry_item); |
490 | 717 | dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_ABOUT_ME_MENUITEM_TYPE, new_about_me_item); | ||
491 | 718 | 670 | ||
492 | 719 | return GTK_MENU (menu); | 671 | return GTK_MENU (menu); |
493 | 720 | } | 672 | } |
494 | 721 | 673 | ||
495 | === modified file 'src/me-service.c' | |||
496 | --- src/me-service.c 2011-04-18 04:00:53 +0000 | |||
497 | +++ src/me-service.c 2011-06-27 16:40:07 +0000 | |||
498 | @@ -88,7 +88,6 @@ | |||
499 | 88 | static GMainLoop * mainloop = NULL; | 88 | static GMainLoop * mainloop = NULL; |
500 | 89 | static StatusServiceDbus * dbus_interface = NULL; | 89 | static StatusServiceDbus * dbus_interface = NULL; |
501 | 90 | static StatusProviderStatus global_status = STATUS_PROVIDER_STATUS_DISCONNECTED; | 90 | static StatusProviderStatus global_status = STATUS_PROVIDER_STATUS_DISCONNECTED; |
502 | 91 | static GFileMonitor *avatar_monitor = NULL; | ||
503 | 92 | static DbusmenuMenuitem *broadcast_field = NULL; | 91 | static DbusmenuMenuitem *broadcast_field = NULL; |
504 | 93 | static DbusmenuMenuitem * useritem = NULL; | 92 | static DbusmenuMenuitem * useritem = NULL; |
505 | 94 | static GSettings *gsettings = NULL; | 93 | static GSettings *gsettings = NULL; |
506 | @@ -341,48 +340,6 @@ | |||
507 | 341 | (value == 0) ? FALSE : TRUE); | 340 | (value == 0) ? FALSE : TRUE); |
508 | 342 | } | 341 | } |
509 | 343 | 342 | ||
510 | 344 | |||
511 | 345 | /* disabled for this release */ | ||
512 | 346 | #if 0 | ||
513 | 347 | static void | ||
514 | 348 | avatar_changed_cb (GFileMonitor * monitor, GFile * file, GFile * other_file, GFileMonitorEvent event_type, gpointer user_data) | ||
515 | 349 | { | ||
516 | 350 | g_debug("avatar changed!"); | ||
517 | 351 | |||
518 | 352 | g_return_if_fail (DBUSMENU_IS_MENUITEM (user_data)); | ||
519 | 353 | |||
520 | 354 | DbusmenuMenuitem *mi = DBUSMENU_MENUITEM (user_data); | ||
521 | 355 | |||
522 | 356 | /* whatever happened, we just update the icon property | ||
523 | 357 | and let the indicator reload the image */ | ||
524 | 358 | gchar * path = g_file_get_path (file); | ||
525 | 359 | dbusmenu_menuitem_property_set (mi, DBUSMENU_ABOUT_ME_MENUITEM_PROP_ICON, path); | ||
526 | 360 | } | ||
527 | 361 | |||
528 | 362 | static void | ||
529 | 363 | build_avatar_item (DbusmenuMenuitem * root) | ||
530 | 364 | { | ||
531 | 365 | useritem = dbusmenu_menuitem_new(); | ||
532 | 366 | dbusmenu_menuitem_property_set(useritem, DBUSMENU_ABOUT_ME_MENUITEM_PROP_NAME, g_get_real_name ()); | ||
533 | 367 | dbusmenu_menuitem_property_set_bool(useritem, DBUSMENU_MENUITEM_PROP_ENABLED, FALSE); | ||
534 | 368 | dbusmenu_menuitem_property_set_bool(useritem, DBUSMENU_MENUITEM_PROP_VISIBLE, FALSE); | ||
535 | 369 | dbusmenu_menuitem_property_set(useritem, DBUSMENU_MENUITEM_PROP_TYPE, DBUSMENU_ABOUT_ME_MENUITEM_TYPE); | ||
536 | 370 | dbusmenu_menuitem_child_append(root, useritem); | ||
537 | 371 | |||
538 | 372 | /* avatar icon */ | ||
539 | 373 | gchar *filename = g_build_filename (g_get_home_dir (), ".face", NULL); | ||
540 | 374 | dbusmenu_menuitem_property_set (useritem, DBUSMENU_ABOUT_ME_MENUITEM_PROP_ICON, filename); | ||
541 | 375 | GFile *file = g_file_new_for_path (filename); | ||
542 | 376 | avatar_monitor = g_file_monitor (file, G_FILE_MONITOR_NONE, NULL, NULL); | ||
543 | 377 | if (avatar_monitor != NULL) | ||
544 | 378 | g_signal_connect (G_OBJECT (avatar_monitor), "changed", G_CALLBACK (avatar_changed_cb), useritem); | ||
545 | 379 | |||
546 | 380 | g_free (filename); | ||
547 | 381 | |||
548 | 382 | return; | ||
549 | 383 | } | ||
550 | 384 | #endif | ||
551 | 385 | |||
552 | 386 | #define GSETTINGS_SCHEMA "com.canonical.indicator.me" | 343 | #define GSETTINGS_SCHEMA "com.canonical.indicator.me" |
553 | 387 | #define GSETTINGS_DISPLAY "display" | 344 | #define GSETTINGS_DISPLAY "display" |
554 | 388 | 345 | ||
555 | @@ -392,10 +349,6 @@ | |||
556 | 392 | DbusmenuMenuitem * root = DBUSMENU_MENUITEM(data); | 349 | DbusmenuMenuitem * root = DBUSMENU_MENUITEM(data); |
557 | 393 | g_return_val_if_fail(DBUSMENU_IS_MENUITEM(root), FALSE); | 350 | g_return_val_if_fail(DBUSMENU_IS_MENUITEM(root), FALSE); |
558 | 394 | 351 | ||
559 | 395 | /* disabled for this release */ | ||
560 | 396 | #if 0 | ||
561 | 397 | build_avatar_item(root); | ||
562 | 398 | #endif | ||
563 | 399 | 352 | ||
564 | 400 | broadcast_field = DBUSMENU_MENUITEM (entry_menu_item_new()); | 353 | broadcast_field = DBUSMENU_MENUITEM (entry_menu_item_new()); |
565 | 401 | dbusmenu_menuitem_property_set (broadcast_field, DBUSMENU_ENTRY_MENUITEM_PROP_HINT, _("Post message...")); | 354 | dbusmenu_menuitem_property_set (broadcast_field, DBUSMENU_ENTRY_MENUITEM_PROP_HINT, _("Post message...")); |
566 | @@ -433,27 +386,6 @@ | |||
567 | 433 | 386 | ||
568 | 434 | build_accounts_menuitems(root); | 387 | build_accounts_menuitems(root); |
569 | 435 | 388 | ||
570 | 436 | /* add a standard "About Me..." menu item at the end of the menu */ | ||
571 | 437 | DbusmenuMenuitem *separator = dbusmenu_menuitem_new(); | ||
572 | 438 | dbusmenu_menuitem_property_set(separator, DBUSMENU_MENUITEM_PROP_TYPE, | ||
573 | 439 | DBUSMENU_CLIENT_TYPES_SEPARATOR); | ||
574 | 440 | dbusmenu_menuitem_child_append(root, separator); | ||
575 | 441 | |||
576 | 442 | useritem = dbusmenu_menuitem_new(); | ||
577 | 443 | dbusmenu_menuitem_property_set(useritem, DBUSMENU_MENUITEM_PROP_LABEL, _("About Me...")); | ||
578 | 444 | dbusmenu_menuitem_property_set_bool(useritem, DBUSMENU_MENUITEM_PROP_ENABLED, FALSE); | ||
579 | 445 | dbusmenu_menuitem_property_set_bool(useritem, DBUSMENU_MENUITEM_PROP_VISIBLE, FALSE); | ||
580 | 446 | dbusmenu_menuitem_child_append(root, useritem); | ||
581 | 447 | |||
582 | 448 | gchar *gam = g_find_program_in_path("gnome-about-me"); | ||
583 | 449 | if (gam != NULL) { | ||
584 | 450 | dbusmenu_menuitem_property_set_bool(useritem, DBUSMENU_MENUITEM_PROP_ENABLED, TRUE); | ||
585 | 451 | g_signal_connect(G_OBJECT(useritem), | ||
586 | 452 | DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, | ||
587 | 453 | G_CALLBACK(spawn_on_activate_cb), "gnome-about-me"); | ||
588 | 454 | g_free(gam); | ||
589 | 455 | } | ||
590 | 456 | |||
591 | 457 | /* finally set the menu name and update items visibility according | 389 | /* finally set the menu name and update items visibility according |
592 | 458 | to a gsettings key and receive display mode notifications to update it | 390 | to a gsettings key and receive display mode notifications to update it |
593 | 459 | later */ | 391 | later */ |
594 | @@ -470,9 +402,6 @@ | |||
595 | 470 | { | 402 | { |
596 | 471 | g_debug("Service shutting down"); | 403 | g_debug("Service shutting down"); |
597 | 472 | 404 | ||
598 | 473 | if (avatar_monitor != NULL) | ||
599 | 474 | g_object_unref (avatar_monitor); | ||
600 | 475 | |||
601 | 476 | g_main_loop_quit(mainloop); | 405 | g_main_loop_quit(mainloop); |
602 | 477 | return; | 406 | return; |
603 | 478 | } | 407 | } |