319
321
if (p->primary_device != NULL)
323
indicator_power_device_get_time_details (p->primary_device,
323
indicator_power_device_get_header (p->primary_device,
324
g_settings_get_boolean (p->settings, SETTINGS_SHOW_TIME_S),
325
g_settings_get_boolean (p->settings, SETTINGS_SHOW_PERCENTAGE_S),
328
329
icon = indicator_power_device_get_gicon (p->primary_device);
333
332
g_variant_builder_init (&b, G_VARIANT_TYPE("a{sv}"));
377
374
if (kind != UP_DEVICE_KIND_LINE_POWER)
382
378
GMenuItem * menu_item;
383
GIcon * icon = indicator_power_device_get_gicon (device);
385
indicator_power_device_get_time_details (device,
380
icon = indicator_power_device_get_gicon (device);
381
label = indicator_power_device_get_label (device);
390
382
menu_item = g_menu_item_new (label, "indicator.activate-statistics");
392
384
if (icon != NULL)
394
g_menu_item_set_attribute_value (menu_item,
395
G_MENU_ATTRIBUTE_ICON,
396
g_icon_serialize (icon));
385
g_menu_item_set_attribute_value (menu_item,
386
G_MENU_ATTRIBUTE_ICON,
387
g_icon_serialize (icon));
399
389
g_menu_append_item (menu, menu_item);
400
390
g_object_unref (menu_item);
402
392
g_clear_object (&icon);
706
698
execute_command ("gnome-power-statistics");
709
/* FIXME: use a GBinding to tie the gaction's state and the GSetting together? */
712
set_show_time_flag (IndicatorPowerService * self, gboolean b)
715
priv_t * p = self->priv;
717
/* update the settings */
718
if (b != g_settings_get_boolean (p->settings, SETTINGS_SHOW_TIME_S))
719
g_settings_set_boolean (p->settings, SETTINGS_SHOW_TIME_S, b);
721
/* update the action state */
722
v = g_action_get_state (G_ACTION(p->show_time_action));
723
if (b != g_variant_get_boolean (v))
724
g_simple_action_set_state (p->show_time_action, g_variant_new_boolean (b));
727
rebuild_header_now (self);
730
on_show_time_setting_changed (GSettings * settings, gchar * key, gpointer gself)
732
set_show_time_flag (INDICATOR_POWER_SERVICE(gself),
733
g_settings_get_boolean (settings, key));
737
on_show_time_action_state_changed (GAction * action,
738
GParamSpec * pspec G_GNUC_UNUSED,
741
GVariant * v = g_action_get_state (action);
742
set_show_time_flag (INDICATOR_POWER_SERVICE(gself),
743
g_variant_get_boolean (v));
747
705
/* toggles the state */
749
on_show_time_action_activated (GSimpleAction * simple,
750
GVariant * parameter G_GNUC_UNUSED,
751
gpointer unused G_GNUC_UNUSED)
707
on_toggle_action_activated (GSimpleAction * simple,
708
GVariant * parameter G_GNUC_UNUSED,
709
gpointer unused G_GNUC_UNUSED)
753
711
GVariant * v = g_action_get_state (G_ACTION (simple));
754
712
gboolean flag = g_variant_get_boolean (v);
756
714
g_variant_unref (v);
718
settings_to_action_state (GValue * value,
720
gpointer user_data G_GNUC_UNUSED)
722
g_value_set_variant (value, variant);
727
action_state_to_settings (const GValue * value,
728
const GVariantType * expected_type G_GNUC_UNUSED,
729
gpointer user_data G_GNUC_UNUSED)
731
return g_value_dup_variant (value);
760
735
init_gactions (IndicatorPowerService * self)
762
737
GSimpleAction * a;
764
738
priv_t * p = self->priv;
766
740
GActionEntry entries[] = {
778
752
/* add the header action */
779
753
a = g_simple_action_new_stateful ("_header", NULL, create_header_state (self));
780
g_simple_action_group_insert (p->actions, G_ACTION(a));
754
g_action_map_add_action (G_ACTION_MAP(p->actions), G_ACTION(a));
781
755
p->header_action = a;
783
757
/* add the power-level action */
784
758
a = g_simple_action_new_stateful ("battery-level", NULL, g_variant_new_uint32(0));
785
759
g_simple_action_set_enabled (a, FALSE);
786
g_simple_action_group_insert (p->actions, G_ACTION(a));
760
g_action_map_add_action (G_ACTION_MAP(p->actions), G_ACTION(a));
787
761
p->battery_level_action = a;
789
763
/* add the brightness action */
790
764
a = g_simple_action_new_stateful ("brightness", NULL, action_state_for_brightness (self));
791
g_simple_action_group_insert (p->actions, G_ACTION(a));
765
g_action_map_add_action (G_ACTION_MAP(p->actions), G_ACTION(a));
792
766
g_signal_connect (a, "change-state", G_CALLBACK(on_brightness_change_requested), self);
793
767
p->brightness_action = a;
795
769
/* add the show-time action */
796
show_time = g_settings_get_boolean (p->settings, SETTINGS_SHOW_TIME_S);
797
a = g_simple_action_new_stateful ("show-time",
799
g_variant_new_boolean(show_time));
800
g_signal_connect (a, "activate",
801
G_CALLBACK(on_show_time_action_activated), self);
802
g_signal_connect (a, "notify",
803
G_CALLBACK(on_show_time_action_state_changed), self);
804
g_simple_action_group_insert (p->actions, G_ACTION(a));
770
a = g_simple_action_new ("show-time", NULL);
771
g_settings_bind_with_mapping (p->settings, SETTINGS_SHOW_TIME_S,
773
G_SETTINGS_BIND_DEFAULT,
774
settings_to_action_state,
775
action_state_to_settings,
777
g_signal_connect (a, "activate", G_CALLBACK(on_toggle_action_activated), self);
778
g_signal_connect_swapped (a, "notify", G_CALLBACK(rebuild_header_now), self);
779
g_action_map_add_action (G_ACTION_MAP(p->actions), G_ACTION(a));
805
780
p->show_time_action = a;
782
/* add the show-percentage action */
783
a = g_simple_action_new ("show-percentage", NULL);
784
g_settings_bind_with_mapping (p->settings, SETTINGS_SHOW_PERCENTAGE_S,
786
G_SETTINGS_BIND_DEFAULT,
787
settings_to_action_state,
788
action_state_to_settings,
790
g_signal_connect (a, "activate", G_CALLBACK(on_toggle_action_activated), self);
791
g_signal_connect_swapped (a, "notify", G_CALLBACK(rebuild_header_now), self);
792
g_action_map_add_action (G_ACTION_MAP(p->actions), G_ACTION(a));
793
p->show_percentage_action = a;
807
795
rebuild_header_now (self);
1014
1002
g_clear_object (&p->show_time_action);
1005
if (p->show_percentage_action != NULL)
1007
g_signal_handlers_disconnect_by_data (p->show_percentage_action, self);
1009
g_clear_object (&p->show_percentage_action);
1017
1012
g_clear_object (&p->brightness_action);
1018
1013
g_clear_object (&p->battery_level_action);
1019
1014
g_clear_object (&p->header_action);
1020
g_clear_object (&p->show_time_action);
1021
1015
g_clear_object (&p->actions);
1023
1017
g_clear_object (&p->conn);