147
xfpm_brightness_widget_class_init (XfpmBrightnessWidgetClass *klass)
149
GObjectClass *object_class = G_OBJECT_CLASS (klass);
151
object_class->finalize = xfpm_brightness_widget_finalize;
153
g_type_class_add_private (klass, sizeof (XfpmBrightnessWidgetPrivate));
157
xfpm_brightness_widget_init (XfpmBrightnessWidget *widget)
148
xfpm_brightness_widget_create_popup (XfpmBrightnessWidget *widget)
161
152
GtkWidget *align;
163
widget->priv = XFPM_BRIGHTNESS_WIDGET_GET_PRIVATE (widget);
165
widget->priv->monitor = xfpm_dbus_monitor_new ();
167
widget->priv->level = 0;
168
widget->priv->max_level = 0;
169
widget->priv->timeout_id = 0;
170
widget->priv->notify_osd = FALSE;
171
widget->priv->check_server_caps = TRUE;
173
xfpm_dbus_monitor_add_service (widget->priv->monitor,
175
"org.freedesktop.Notifications");
177
widget->priv->sig_1 = g_signal_connect (widget->priv->monitor, "service-connection-changed",
178
G_CALLBACK (xfpm_brightness_widget_service_connection_changed_cb),
155
if ( widget->priv->window != NULL )
181
158
widget->priv->window = gtk_window_new (GTK_WINDOW_POPUP);
183
160
g_object_set (G_OBJECT (widget->priv->window),
205
182
widget->priv->progress_bar = gtk_progress_bar_new ();
184
adj = gtk_adjustment_new (0., 0., widget->priv->max_level, 1., 0., 0.);
186
g_object_set (G_OBJECT (widget->priv->progress_bar),
207
190
gtk_box_pack_start (GTK_BOX (vbox), widget->priv->progress_bar, TRUE, TRUE, 0);
209
192
gtk_widget_show_all (align);
211
widget->priv->n = notify_notification_new (" ",
196
xfpm_brightness_widget_create_notification (XfpmBrightnessWidget *widget)
198
if ( widget->priv->n == NULL )
200
widget->priv->n = notify_notification_new (" ",
208
xfpm_brightness_widget_destroy (gpointer data)
210
XfpmBrightnessWidget *widget;
212
widget = XFPM_BRIGHTNESS_WIDGET (data);
214
if ( widget->priv->window )
216
gtk_widget_destroy (widget->priv->window);
217
widget->priv->window = NULL;
221
if ( widget->priv->n )
223
g_object_unref (widget->priv->n);
224
widget->priv->n = NULL;
231
xfpm_brightness_widget_class_init (XfpmBrightnessWidgetClass *klass)
233
GObjectClass *object_class = G_OBJECT_CLASS (klass);
235
object_class->finalize = xfpm_brightness_widget_finalize;
237
g_type_class_add_private (klass, sizeof (XfpmBrightnessWidgetPrivate));
241
xfpm_brightness_widget_init (XfpmBrightnessWidget *widget)
243
widget->priv = XFPM_BRIGHTNESS_WIDGET_GET_PRIVATE (widget);
245
widget->priv->monitor = xfpm_dbus_monitor_new ();
247
widget->priv->level = 0;
248
widget->priv->max_level = 0;
249
widget->priv->timeout_id = 0;
250
widget->priv->destroy_id = 0;
251
widget->priv->notify_osd = FALSE;
252
widget->priv->check_server_caps = TRUE;
253
widget->priv->window = NULL;
254
widget->priv->progress_bar = NULL;
255
widget->priv->n = NULL;
257
xfpm_dbus_monitor_add_service (widget->priv->monitor,
259
"org.freedesktop.Notifications");
261
widget->priv->sig_1 = g_signal_connect (widget->priv->monitor, "service-connection-changed",
262
G_CALLBACK (xfpm_brightness_widget_service_connection_changed_cb),
225
273
if ( g_signal_handler_is_connected (G_OBJECT (widget->priv->monitor), widget->priv->sig_1) )
226
274
g_signal_handler_disconnect (G_OBJECT (widget->priv->monitor), widget->priv->sig_1);
228
g_object_unref (widget->priv->n);
276
xfpm_brightness_widget_destroy (widget);
229
278
g_object_unref (widget->priv->monitor);
231
gtk_widget_destroy (widget->priv->window);
233
280
G_OBJECT_CLASS (xfpm_brightness_widget_parent_class)->finalize (object);
236
XfpmBrightnessWidget *
237
xfpm_brightness_widget_new (void)
239
XfpmBrightnessWidget *widget = NULL;
240
widget = g_object_new (XFPM_TYPE_BRIGHTNESS_WIDGET, NULL);
245
void xfpm_brightness_widget_set_max_level (XfpmBrightnessWidget *widget, guint level)
249
g_return_if_fail (XFPM_IS_BRIGHTNESS_WIDGET (widget));
251
adj = gtk_adjustment_new (0., 0., level, 1., 0., 0.);
253
widget->priv->max_level = level;
255
g_object_set (G_OBJECT (widget->priv->progress_bar),
261
void xfpm_brightness_widget_set_level (XfpmBrightnessWidget *widget, guint level)
265
g_return_if_fail (XFPM_IS_BRIGHTNESS_WIDGET (widget));
267
widget->priv->level = level;
269
if ( widget->priv->check_server_caps )
271
widget->priv->notify_osd = xfpm_brightness_widget_server_is_notify_osd ();
272
widget->priv->check_server_caps = FALSE;
284
xfpm_brightness_widget_show (XfpmBrightnessWidget *widget)
275
286
if ( widget->priv->notify_osd )
288
xfpm_brightness_widget_create_notification (widget);
277
289
xfpm_brightness_widget_display_notification (widget);
295
xfpm_brightness_widget_create_popup (widget);
281
296
g_object_get (G_OBJECT (widget->priv->progress_bar),
282
297
"adjustment", &adj,
285
gtk_adjustment_set_value (adj, level);
300
gtk_adjustment_set_value (adj, widget->priv->level);
287
302
if ( !GTK_WIDGET_VISIBLE (widget->priv->window))
288
303
gtk_window_present (GTK_WINDOW (widget->priv->window));
293
308
widget->priv->timeout_id =
294
309
g_timeout_add (900, (GSourceFunc) xfpm_brightness_widget_timeout, widget);
312
if ( widget->priv->destroy_id != 0 )
314
g_source_remove (widget->priv->destroy_id);
315
widget->priv->destroy_id = 0;
318
/* Release the memory after 60 seconds */
319
widget->priv->destroy_id = g_timeout_add_seconds (60, (GSourceFunc) xfpm_brightness_widget_destroy, widget);
323
XfpmBrightnessWidget *
324
xfpm_brightness_widget_new (void)
326
XfpmBrightnessWidget *widget = NULL;
327
widget = g_object_new (XFPM_TYPE_BRIGHTNESS_WIDGET, NULL);
332
void xfpm_brightness_widget_set_max_level (XfpmBrightnessWidget *widget, guint level)
334
g_return_if_fail (XFPM_IS_BRIGHTNESS_WIDGET (widget));
336
widget->priv->max_level = level;
339
void xfpm_brightness_widget_set_level (XfpmBrightnessWidget *widget, guint level)
341
g_return_if_fail (XFPM_IS_BRIGHTNESS_WIDGET (widget));
343
widget->priv->level = level;
345
if ( widget->priv->check_server_caps )
347
widget->priv->notify_osd = xfpm_brightness_widget_server_is_notify_osd ();
348
widget->priv->check_server_caps = FALSE;
351
xfpm_brightness_widget_show (widget);