83447294b61f80461906ec47f3ddbf0133c0154c
[gentoo.git] /
1 diff --git a/src/gpm-engine.c b/src/gpm-engine.c
2 index fe458e3..56d19e2 100644
3 --- a/src/gpm-engine.c
4 +++ b/src/gpm-engine.c
5 @@ -84,7 +84,29 @@ static UpDevice *gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *o
6  static UpDevice *gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device);
7  #if UP_CHECK_VERSION (0, 99, 0)
8  static void gpm_engine_device_changed_cb (UpDevice *device, GParamSpec *pspec, GpmEngine *engine);
9 -#endif
10 +
11 +#define GPM_ENGINE_WARNING_NONE UP_DEVICE_LEVEL_NONE
12 +#define GPM_ENGINE_WARNING_DISCHARGING UP_DEVICE_LEVEL_DISCHARGING
13 +#define GPM_ENGINE_WARNING_LOW UP_DEVICE_LEVEL_LOW
14 +#define GPM_ENGINE_WARNING_CRITICAL UP_DEVICE_LEVEL_CRITICAL
15 +#define GPM_ENGINE_WARNING_ACTION UP_DEVICE_LEVEL_ACTION
16 +
17 +/**
18 + * gpm_engine_get_warning:
19 + *
20 + * This gets the possible engine state for the device according to the
21 + * policy, which could be per-percent, or per-time.
22 + *
23 + * Return value: A GpmEngine state, e.g. GPM_ENGINE_WARNING_DISCHARGING
24 + **/
25 +static UpDeviceLevel
26 +gpm_engine_get_warning (GpmEngine *engine, UpDevice *device)
27 +{
28 +       UpDeviceLevel warning;
29 +       g_object_get (device, "warning-level", &warning, NULL);
30 +       return warning;
31 +}
32 +#else
33  
34  typedef enum {
35         GPM_ENGINE_WARNING_NONE = 0,
36 @@ -226,6 +248,7 @@ gpm_engine_get_warning (GpmEngine *engine, UpDevice *device)
37   out:
38         return warning_type;
39  }
40 +#endif
41  
42  /**
43   * gpm_engine_get_summary:
44 @@ -282,12 +305,20 @@ gpm_engine_get_summary (GpmEngine *engine)
45   * Returns the icon
46   **/
47  static gchar *
48 +#if UP_CHECK_VERSION (0, 99, 0)
49 +gpm_engine_get_icon_priv (GpmEngine *engine, UpDeviceKind device_kind, UpDeviceLevel warning, gboolean use_state)
50 +#else
51  gpm_engine_get_icon_priv (GpmEngine *engine, UpDeviceKind device_kind, GpmEngineWarning warning, gboolean use_state)
52 +#endif
53  {
54         guint i;
55         GPtrArray *array;
56         UpDevice *device;
57 +#if UP_CHECK_VERSION (0, 99, 0)
58 +       UpDeviceLevel warning_temp;
59 +#else
60         GpmEngineWarning warning_temp;
61 +#endif
62         UpDeviceKind kind;
63         UpDeviceState state;
64         gboolean is_present;
65 @@ -572,6 +603,9 @@ gpm_engine_device_check_capacity (GpmEngine *engine, UpDevice *device)
66  static UpDevice *
67  gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *original_device)
68  {
69 +#if UP_CHECK_VERSION (0, 99, 0)
70 +       return engine->priv->battery_composite;
71 +#else
72         guint battery_devices = 0;
73         GPtrArray *array;
74         UpDevice *device;
75 @@ -601,6 +635,7 @@ gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *original_device)
76  out:
77         /* return composite device or original device */
78         return device;
79 +#endif
80  }
81  
82  /**
83 @@ -609,6 +644,18 @@ gpm_engine_get_composite_device (GpmEngine *engine, UpDevice *original_device)
84  static UpDevice *
85  gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device)
86  {
87 +#if UP_CHECK_VERSION (0, 99, 0)
88 +       gchar *text;
89 +
90 +       text = up_device_to_text (engine->priv->battery_composite);
91 +       egg_debug ("composite:\n%s", text);
92 +       g_free (text);
93 +
94 +       /* force update of icon */
95 +       gpm_engine_recalculate_state_icon (engine);
96 +
97 +       return engine->priv->battery_composite;
98 +#else
99         guint i;
100         gdouble percentage = 0.0;
101         gdouble energy = 0.0;
102 @@ -720,6 +767,7 @@ gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device
103  out:
104         /* return composite device or original device */
105         return device;
106 +#endif
107  }
108  
109  /**
110 @@ -728,7 +776,11 @@ gpm_engine_update_composite_device (GpmEngine *engine, UpDevice *original_device
111  static void
112  gpm_engine_device_add (GpmEngine *engine, UpDevice *device)
113  {
114 +#if UP_CHECK_VERSION (0, 99, 0)
115 +       UpDeviceLevel warning;
116 +#else
117         GpmEngineWarning warning;
118 +#endif
119         UpDeviceState state;
120         UpDeviceKind kind;
121         UpDevice *composite;
122 @@ -762,9 +814,9 @@ gpm_engine_device_add (GpmEngine *engine, UpDevice *device)
123         }
124  
125  #if UP_CHECK_VERSION (0, 99, 0)
126 -       if (kind == UP_DEVICE_KIND_BATTERY || kind == UP_DEVICE_KIND_UPS || kind == UP_DEVICE_KIND_LINE_POWER)
127 -               return;
128         g_signal_connect (device, "notify", G_CALLBACK (gpm_engine_device_changed_cb), engine);
129 +       g_ptr_array_add (engine->priv->array, g_object_ref (device));
130 +       gpm_engine_recalculate_state (engine);
131  #endif
132  
133  }
134 @@ -820,10 +872,14 @@ gpm_engine_coldplug_idle_cb (GpmEngine *engine)
135  static void
136  gpm_engine_device_added_cb (UpClient *client, UpDevice *device, GpmEngine *engine)
137  {
138 +#if UP_CHECK_VERSION (0, 99, 0)
139 +       gpm_engine_device_add (engine, device);
140 +#else
141         /* add to list */
142         g_ptr_array_add (engine->priv->array, g_object_ref (device));
143  
144         gpm_engine_recalculate_state (engine);
145 +#endif
146  }
147  
148  /**
149 @@ -866,15 +922,17 @@ gpm_engine_device_changed_cb (UpDevice *device, GParamSpec *pspec, GpmEngine *en
150  gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *engine)
151  #endif
152  {
153 -#if !UP_CHECK_VERSION(0, 99, 0)
154         UpDeviceKind kind;
155 -#endif
156         UpDeviceState state;
157         UpDeviceState state_old;
158 +#if UP_CHECK_VERSION(0, 99, 0)
159 +       UpDeviceLevel warning_old;
160 +       UpDeviceLevel warning;
161 +#else
162         GpmEngineWarning warning_old;
163         GpmEngineWarning warning;
164 +#endif
165  
166 -#if !UP_CHECK_VERSION(0, 99, 0)
167         /* get device properties */
168         g_object_get (device,
169                       "kind", &kind,
170 @@ -885,7 +943,6 @@ gpm_engine_device_changed_cb (UpClient *client, UpDevice *device, GpmEngine *eng
171                 egg_debug ("updating because %s changed", up_device_get_object_path (device));
172                 device = gpm_engine_update_composite_device (engine, device);
173         }
174 -#endif
175  
176         /* get device properties (may be composite) */
177         g_object_get (device,
178 @@ -1070,22 +1127,10 @@ gpm_engine_init (GpmEngine *engine)
179         g_signal_connect (engine->priv->phone, "device-refresh",
180                           G_CALLBACK (phone_device_refresh_cb), engine);
181  
182 -#if UP_CHECK_VERSION(0, 99, 0)
183 -       /* coldplug */
184 -       array = up_client_get_devices(engine->priv->client);
185 -       if (array) {
186 -               for (i = 0; i < array->len; i++) {
187 -                       UpDevice *device = g_ptr_array_index (array, i);
188 -                       gpm_engine_device_added_cb(engine->priv->client, device, engine);
189 -               }
190 -               g_ptr_array_free (array, TRUE);
191 -       }
192 -#endif
193 -
194         /* create a fake virtual composite battery */
195  #if UP_CHECK_VERSION(0, 99, 0)
196         engine->priv->battery_composite = up_client_get_display_device (engine->priv->client);
197 -       g_signal_connect (engine->priv->client, "notify",
198 +       g_signal_connect (engine->priv->battery_composite, "notify",
199                           G_CALLBACK (gpm_engine_device_changed_cb), engine);
200  #else
201         engine->priv->battery_composite = up_device_new ();
202 diff --git a/src/gpm-manager.c b/src/gpm-manager.c
203 index df84cac..09bd0c0 100644
204 --- a/src/gpm-manager.c
205 +++ b/src/gpm-manager.c
206 @@ -1858,7 +1858,9 @@ gpm_manager_init (GpmManager *manager)
207                           G_CALLBACK (gpm_manager_settings_changed_cb), manager);
208         manager->priv->client = up_client_new ();
209  #if UP_CHECK_VERSION(0, 99, 0)
210 -       g_signal_connect (manager->priv->client, "notify",
211 +       g_signal_connect (manager->priv->client, "notify::lid-is-closed",
212 +                         G_CALLBACK (gpm_manager_client_changed_cb), manager);
213 +       g_signal_connect (manager->priv->client, "notify::on-battery",
214                           G_CALLBACK (gpm_manager_client_changed_cb), manager);
215  #else
216         g_signal_connect (manager->priv->client, "changed",
217