diff options
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | ChangeLog | 52 | ||||
-rw-r--r-- | NEWS | 3 | ||||
-rwxr-xr-x | configure | 20 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | debian/changelog | 7 | ||||
-rw-r--r-- | src/device.c | 2 | ||||
-rw-r--r-- | src/indicator-power.c | 43 | ||||
-rw-r--r-- | tests/test-device.cc | 29 |
9 files changed, 134 insertions, 25 deletions
@@ -10,4 +10,5 @@ Lars Uebernickel Marco Trevisan (TreviƱo) Michael Terry + Tarmac Ted Gould @@ -1,5 +1,57 @@ # Generated by Makefile. Do not edit. +2012-11-13 Charles Kerr <charles.kerr@canonical.com> + + bump NEWS + +2012-11-13 Charles Kerr <charles.kerr@canonical.com> + + 12.10.5 + +2012-11-13 Charles Kerr <charles.kerr@canonical.com> + + backport the 'AC Adapter shown in panel' bugfix from trunk/13.04 + +2012-11-08 Charles Kerr <charles.kerr@canonical.com> + + add 'check-news' to AM_INIT_AUTOMAKE + +2012-11-07 Charles Kerr <charles.kerr@canonical.com> + + Handle choosing a primary device when no device is charging nor discharging. Fixes: https://bugs.launchpad.net/bugs/1075192. + + Approved by Lars Uebernickel, PS Jenkins bot. + +2012-11-07 Charles Kerr <charles.kerr@canonical.com> + + change indicator_power_device_get_time_details() s.t. the 'short details' for an AC Adapter is an empty string. + +2012-11-07 Charles Kerr <charles.kerr@canonical.com> + + modify DeviceTest.Labels s.t. it fails (currently failing) if the 'short' string for an AC Adapter is nonempty. + +2012-11-06 Charles Kerr <charles.kerr@canonical.com> + + when choosing a primary device from devices that are neither charging nor discharging, prefer batteries, then everything except line-power, then line power + +2012-11-06 Charles Kerr <charles.kerr@canonical.com> + + in TestDevice.ChoosePrimary, add another test (currently failing) to confirm that when indicator-datetime is choosing from devices that are neither charging nor discharging, batteries are more interesting than other devices, and other devices are more interesting than UP_DEVICE_KIND_LINE_POWER + +2012-11-06 Charles Kerr <charles.kerr@canonical.com> + + when choosing between two devices, always pick the one that's not a UP_DEVICE_KIND_LINE_POWER + +2012-11-06 Charles Kerr <charles.kerr@canonical.com> + + add unit test (currently failing) to test for the bug reported in LP bug #1075192 + +2012-10-29 Charles Kerr <charles.kerr@canonical.com> + + Fix the logic error. Add tests to confirm the fix. Fixes: https://bugs.launchpad.net/bugs/1071757. + + Approved by Lars Uebernickel, PS Jenkins bot. + 2012-11-04 Charles Kerr <charles.kerr@canonical.com> 12.10.4 @@ -1,3 +1,6 @@ +12.10.5 + - Fix a device display bug introduced in 12.10.3 (LP: #1075192) + 12.10.4 - Fix primary device selection bug introduced in 12.10.3 (LP: #1071757) @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for indicator-power 12.10.4. +# Generated by GNU Autoconf 2.69 for indicator-power 12.10.5. # # Report bugs to <http://bugs.launchpad.net/indicator-power>. # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='indicator-power' PACKAGE_TARNAME='indicator-power' -PACKAGE_VERSION='12.10.4' -PACKAGE_STRING='indicator-power 12.10.4' +PACKAGE_VERSION='12.10.5' +PACKAGE_STRING='indicator-power 12.10.5' PACKAGE_BUGREPORT='http://bugs.launchpad.net/indicator-power' PACKAGE_URL='http://launchpad.net/indicator-power' @@ -1442,7 +1442,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures indicator-power 12.10.4 to adapt to many kinds of systems. +\`configure' configures indicator-power 12.10.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1512,7 +1512,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of indicator-power 12.10.4:";; + short | recursive ) echo "Configuration of indicator-power 12.10.5:";; esac cat <<\_ACEOF @@ -1666,7 +1666,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -indicator-power configure 12.10.4 +indicator-power configure 12.10.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2202,7 +2202,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by indicator-power $as_me 12.10.4, which was +It was created by indicator-power $as_me 12.10.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3026,7 +3026,7 @@ fi # Define the identity of the package. PACKAGE='indicator-power' - VERSION='12.10.4' + VERSION='12.10.5' cat >>confdefs.h <<_ACEOF @@ -25191,7 +25191,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by indicator-power $as_me 12.10.4, which was +This file was extended by indicator-power $as_me 12.10.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -25258,7 +25258,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -indicator-power config.status 12.10.4 +indicator-power config.status 12.10.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 9a0e06c..476a4f2 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_INIT([indicator-power], - [12.10.4], + [12.10.5], [http://bugs.launchpad.net/indicator-power], [indicator-power], [http://launchpad.net/indicator-power]) diff --git a/debian/changelog b/debian/changelog index c7d1a85..8d2db74 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +indicator-power (12.10.5-0ubuntu1) UNRELEASED; urgency=low + + * New upstream release: + - Fix a device display bug introduced in 12.10.3 (LP: #1075192) + + -- Sebastien Bacher <seb128@ubuntu.com> Wed, 14 Nov 2012 11:08:14 +0100 + indicator-power (12.10.4-0ubuntu1) raring; urgency=low * New upstream release. diff --git a/src/device.c b/src/device.c index 490ff1a..d028ab7 100644 --- a/src/device.c +++ b/src/device.c @@ -612,7 +612,7 @@ indicator_power_device_get_time_details (const IndicatorPowerDevice * device, { *details = g_strdup (device_name); *accessible_name = g_strdup (device_name); - *short_details = g_strdup (device_name); + *short_details = g_strdup (""); } else { diff --git a/src/indicator-power.c b/src/indicator-power.c index 4118dcc..06f1c2e 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -352,12 +352,38 @@ build_menu (IndicatorPower *self) gtk_widget_show_all (GTK_WIDGET (priv->menu)); } +/* the higher the weight, the more interesting the device */ +static int +get_device_kind_weight (const IndicatorPowerDevice * device) +{ + UpDeviceKind kind; + static gboolean initialized = FALSE; + static int weights[UP_DEVICE_KIND_LAST]; + + kind = indicator_power_device_get_kind (device); + g_return_val_if_fail (0<=kind && kind<UP_DEVICE_KIND_LAST, 0); + + if (G_UNLIKELY(!initialized)) + { + int i; + + initialized = TRUE; + + for (i=0; i<UP_DEVICE_KIND_LAST; i++) + weights[i] = 1; + weights[UP_DEVICE_KIND_BATTERY] = 2; + weights[UP_DEVICE_KIND_LINE_POWER] = 0; + } + + return weights[kind]; +} + /* sort devices from most interesting to least interesting on this criteria: 1. discharging items from least time remaining until most time remaining 2. discharging items with an unknown time remaining 3. charging items from most time left to charge to least time left to charge 4. charging items with an unknown time remaining - 5. everything else */ + 5. batteries, then non-line power, then line-power */ static gint device_compare_func (gconstpointer ga, gconstpointer gb) { @@ -418,6 +444,21 @@ device_compare_func (gconstpointer ga, gconstpointer gb) } } + if (!ret) /* neither device is charging nor discharging... */ + { + const int weight_a = get_device_kind_weight (a); + const int weight_b = get_device_kind_weight (b); + + if (weight_a > weight_b) + { + ret = -1; + } + else if (weight_a < weight_b) + { + ret = 1; + } + } + if (!ret) ret = a_state - b_state; diff --git a/tests/test-device.cc b/tests/test-device.cc index 18bdc08..021404f 100644 --- a/tests/test-device.cc +++ b/tests/test-device.cc @@ -555,7 +555,7 @@ TEST_F(DeviceTest, Labels) INDICATOR_POWER_DEVICE_PERCENTAGE, 0.0, INDICATOR_POWER_DEVICE_TIME, guint64(0), NULL); - check_strings (device, "AC Adapter", "AC Adapter", "AC Adapter"); + check_strings (device, "", "AC Adapter", "AC Adapter"); // cleanup g_object_unref(o); @@ -587,19 +587,22 @@ TEST_F(DeviceTest, ChoosePrimary) sorted in order of preference wrt the spec's criteria. So tests[i] should be picked over any test with an index greater than i */ struct { + int kind; int state; guint64 time; double percentage; } tests[] = { - { UP_DEVICE_STATE_DISCHARGING, 49, 50.0 }, - { UP_DEVICE_STATE_DISCHARGING, 50, 50.0 }, - { UP_DEVICE_STATE_DISCHARGING, 50, 100.0 }, - { UP_DEVICE_STATE_DISCHARGING, 51, 50.0 }, - { UP_DEVICE_STATE_CHARGING, 50, 50.0 }, - { UP_DEVICE_STATE_CHARGING, 49, 50.0 }, - { UP_DEVICE_STATE_CHARGING, 49, 100.0 }, - { UP_DEVICE_STATE_CHARGING, 48, 50.0 }, - { UP_DEVICE_STATE_FULLY_CHARGED, 0, 50.0 } + { UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 49, 50.0 }, + { UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 50, 50.0 }, + { UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 50, 100.0 }, + { UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_DISCHARGING, 51, 50.0 }, + { UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 50, 50.0 }, + { UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 49, 50.0 }, + { UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 49, 100.0 }, + { UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_CHARGING, 48, 50.0 }, + { UP_DEVICE_KIND_BATTERY, UP_DEVICE_STATE_FULLY_CHARGED, 0, 50.0 }, + { UP_DEVICE_KIND_KEYBOARD, UP_DEVICE_STATE_FULLY_CHARGED, 0, 50.0 }, + { UP_DEVICE_KIND_LINE_POWER, UP_DEVICE_STATE_UNKNOWN, 0, 0.0 } }; device_list = NULL; @@ -610,11 +613,13 @@ TEST_F(DeviceTest, ChoosePrimary) { for (int j=i+1; j<n; j++) { - g_object_set (a, INDICATOR_POWER_DEVICE_STATE, tests[i].state, + g_object_set (a, INDICATOR_POWER_DEVICE_KIND, tests[i].kind, + INDICATOR_POWER_DEVICE_STATE, tests[i].state, INDICATOR_POWER_DEVICE_TIME, guint64(tests[i].time), INDICATOR_POWER_DEVICE_PERCENTAGE, tests[i].percentage, NULL); - g_object_set (b, INDICATOR_POWER_DEVICE_STATE, tests[j].state, + g_object_set (b, INDICATOR_POWER_DEVICE_KIND, tests[j].kind, + INDICATOR_POWER_DEVICE_STATE, tests[j].state, INDICATOR_POWER_DEVICE_TIME, guint64(tests[j].time), INDICATOR_POWER_DEVICE_PERCENTAGE, tests[j].percentage, NULL); |