summaryrefslogtreecommitdiff
path: root/battstat/battstat_applet.c
diff options
context:
space:
mode:
Diffstat (limited to 'battstat/battstat_applet.c')
-rw-r--r--battstat/battstat_applet.c588
1 files changed, 63 insertions, 525 deletions
diff --git a/battstat/battstat_applet.c b/battstat/battstat_applet.c
index b98bbf8c..3925fca7 100644
--- a/battstat/battstat_applet.c
+++ b/battstat/battstat_applet.c
@@ -45,7 +45,6 @@
#endif
#include "battstat.h"
-#include "pixmaps.h"
#ifndef gettext_noop
#define gettext_noop(String) (String)
@@ -72,168 +71,6 @@ static const GtkActionEntry battstat_menu_actions [] = {
#define AC_POWER_STRING _("System is running on AC power")
#define DC_POWER_STRING _("System is running on battery power")
-/* The icons for Battery, Critical, AC and Charging */
-static GdkPixbuf *statusimage[STATUS_PIXMAP_NUM];
-
-/* Assuming a horizontal battery, the colour is drawn into it one horizontal
- line at a time as a vertical gradient. The following arrays decide where
- each horizontal line starts (the length of the lines varies with the
- percentage battery life remaining).
-*/
-static const int pixel_offset_top[]={ 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5 };
-static const int pixel_top_length[]={ 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 3, 2 };
-static const int pixel_offset_bottom[]={ 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 38, 38 };
-
-
-/* The following array is the colour of each line. The (slightly) varying
- colours are what makes for the gradient effect. The 'dark' colours are
- used to draw the end of the bar, giving it more of a 3D look. The code
- assumes that all of these arrays will have the same number of elements.
-*/
-static GdkColor green[] = {
- {0,0x7A00,0xDB00,0x7000},
- {0,0x9100,0xE900,0x8500},
- {0,0xA000,0xF100,0x9500},
- {0,0x9600,0xEE00,0x8A00},
- {0,0x8E00,0xE900,0x8100},
- {0,0x8500,0xE500,0x7700},
- {0,0x7C00,0xDF00,0x6E00},
- {0,0x7300,0xDA00,0x6500},
- {0,0x6A00,0xD600,0x5B00},
- {0,0x6000,0xD000,0x5100},
- {0,0x5600,0xCA00,0x4600},
- {0,0x5100,0xC100,0x4200},
-};
-
-static GdkColor red[] = {
- {0,0xD900,0x7200,0x7400},
- {0,0xE600,0x8800,0x8C00},
- {0,0xF000,0x9600,0x9A00},
- {0,0xEB00,0x8D00,0x9100},
- {0,0xE700,0x8300,0x8800},
- {0,0xE200,0x7A00,0x7F00},
- {0,0xDD00,0x7100,0x7600},
- {0,0xD800,0x6700,0x6D00},
- {0,0xD300,0x5D00,0x6300},
- {0,0xCD00,0x5400,0x5900},
- {0,0xC800,0x4900,0x4F00},
- {0,0xC100,0x4200,0x4700},
-};
-
-static GdkColor yellow[] = {
- {0,0xD800,0xD900,0x7200},
- {0,0xE600,0xE500,0x8800},
- {0,0xF000,0xEF00,0x9600},
- {0,0xEB00,0xEA00,0x8D00},
- {0,0xE700,0xE600,0x8300},
- {0,0xE200,0xE100,0x7A00},
- {0,0xDD00,0xDC00,0x7100},
- {0,0xD800,0xD700,0x6700},
- {0,0xD300,0xD200,0x5D00},
- {0,0xCD00,0xCC00,0x5400},
- {0,0xC800,0xC600,0x4900},
- {0,0xC100,0xBF00,0x4200},
-};
-
-static GdkColor orange[] = {
- {0,0xD900,0xAD00,0x7200},
- {0,0xE600,0xBB00,0x8800},
- {0,0xF000,0xC700,0x9600},
- {0,0xEB00,0xC000,0x8D00},
- {0,0xE700,0xB900,0x8300},
- {0,0xE200,0xB300,0x7A00},
- {0,0xDD00,0xAB00,0x7100},
- {0,0xD800,0xA400,0x6700},
- {0,0xD300,0x9E00,0x5D00},
- {0,0xCD00,0x9600,0x5400},
- {0,0xC800,0x8D00,0x4900},
- {0,0xC100,0x8600,0x4200},
-};
-
-static GdkColor darkgreen[] = {
- {0,0x6500,0xC600,0x5B00},
- {0,0x7B00,0xD300,0x6F00},
- {0,0x8A00,0xDB00,0x7F00},
- {0,0x8000,0xD800,0x7400},
- {0,0x7800,0xD400,0x6B00},
- {0,0x6F00,0xCF00,0x6200},
- {0,0x6600,0xCA00,0x5900},
- {0,0x5D00,0xC500,0x5000},
- {0,0x5400,0xC100,0x4600},
- {0,0x4B00,0xBB00,0x3C00},
- {0,0x4100,0xB600,0x3100},
- {0,0x3C00,0xAC00,0x2D00},
-};
-
-static GdkColor darkorange[] = {
- {0,0xC400,0x9700,0x5C00},
- {0,0xD000,0xA500,0x7200},
- {0,0xDA00,0xB100,0x8000},
- {0,0xD500,0xAA00,0x7700},
- {0,0xD100,0xA300,0x6D00},
- {0,0xCD00,0x9D00,0x6400},
- {0,0xC700,0x9600,0x5B00},
- {0,0xC300,0x8F00,0x5200},
- {0,0xBE00,0x8800,0x4800},
- {0,0xB800,0x8100,0x3F00},
- {0,0xB300,0x7900,0x3400},
- {0,0xAC00,0x7200,0x2D00},
-};
-
-static GdkColor darkyellow[] = {
- {0,0xC200,0xC400,0x5C00},
- {0,0xD000,0xCF00,0x7200},
- {0,0xDA00,0xD900,0x8000},
- {0,0xD500,0xD400,0x7700},
- {0,0xD100,0xD000,0x6D00},
- {0,0xCD00,0xCB00,0x6400},
- {0,0xC700,0xC600,0x5B00},
- {0,0xC300,0xC200,0x5200},
- {0,0xBE00,0xBD00,0x4800},
- {0,0xB800,0xB700,0x3F00},
- {0,0xB300,0xB200,0x3400},
- {0,0xAC00,0xAA00,0x2D00},
-};
-
-static GdkColor darkred[] = {
- {0,0xC900,0x6200,0x6400},
- {0,0xD600,0x7800,0x7C00},
- {0,0xDA00,0x8000,0x8500},
- {0,0xD500,0x7700,0x7B00},
- {0,0xD100,0x6D00,0x7200},
- {0,0xCD00,0x6400,0x6900},
- {0,0xC700,0x5B00,0x6100},
- {0,0xC300,0x5200,0x5700},
- {0,0xBE00,0x4800,0x4E00},
- {0,0xB800,0x3F00,0x4400},
- {0,0xB100,0x3200,0x3700},
- {0,0xA200,0x3200,0x3700},
-};
-
-/* Initialise the global static variables that store our status pixmaps from
- their XPM format (as stored in pixmaps.h). This should only be done once
- since they are global variables.
-*/
-/* FIXME: We should be using named icons here... */
-static void
-initialise_global_pixmaps( void )
-{
- statusimage[STATUS_PIXMAP_BATTERY] =
- gdk_pixbuf_new_from_xpm_data ((const char **) battery_small_xpm);
-
- statusimage[STATUS_PIXMAP_METER] =
- gdk_pixbuf_new_from_xpm_data ((const char **) battery_small_meter_xpm);
-
- statusimage[STATUS_PIXMAP_AC] =
- gdk_pixbuf_new_from_xpm_data ((const char **) ac_small_xpm);
-
- statusimage[STATUS_PIXMAP_CHARGE] =
- gdk_pixbuf_new_from_xpm_data ((const char **) charge_small_xpm);
-
- statusimage[STATUS_PIXMAP_WARNING] =
- gdk_pixbuf_new_from_xpm_data ((const char **) warning_small_xpm);
-}
-
/* Our backends may be either event driven or poll-based.
* If they are event driven then we know this the first time we
* receive an event.
@@ -284,7 +121,6 @@ static_global_initialisation (ProgressData *battstat)
if (!first_time)
return NULL;
- initialise_global_pixmaps();
err = power_management_initialise (status_change_callback);
return err;
@@ -393,17 +229,17 @@ battery_full_notify (GtkWidget *applet)
if (!notify_is_initted () && !notify_init (_("Battery Monitor")))
return FALSE;
- icon = gtk_icon_theme_load_icon (
+ icon = gtk_icon_theme_load_icon_for_scale (
gtk_icon_theme_get_default (),
"battery",
48,
+ gtk_widget_get_scale_factor (applet),
GTK_ICON_LOOKUP_USE_BUILTIN,
NULL);
NotifyNotification *n = notify_notification_new (_("Your battery is now fully recharged"), "", /* "battery" */ NULL);
- /* XXX: it would be nice to pass this as a named icon */
- notify_notification_set_icon_from_pixbuf (n, icon);
+ notify_notification_set_image_from_pixbuf (n, icon);
g_object_unref (icon);
result = notify_notification_show (n, &error);
@@ -432,7 +268,7 @@ battery_full_dialog (GtkWidget *applet)
return;
GtkWidget *dialog, *hbox, *image, *label;
- GdkPixbuf *pixbuf;
+ cairo_surface_t *surface;
gchar *new_label;
dialog = gtk_dialog_new_with_buttons (
@@ -448,14 +284,16 @@ battery_full_dialog (GtkWidget *applet)
gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- pixbuf = gtk_icon_theme_load_icon (
+ surface = gtk_icon_theme_load_surface (
gtk_icon_theme_get_default (),
"battery",
48,
+ gtk_widget_get_scale_factor (applet),
+ NULL,
GTK_ICON_LOOKUP_USE_BUILTIN,
NULL);
- image = gtk_image_new_from_pixbuf (pixbuf);
- g_object_unref (pixbuf);
+ image = gtk_image_new_from_surface (surface);
+ cairo_surface_destroy (surface);
gtk_box_pack_start (GTK_BOX (hbox), image, TRUE, TRUE, 6);
new_label = g_strdup_printf (
"<span weight=\"bold\" size=\"larger\">%s</span>",
@@ -584,7 +422,7 @@ battery_low_dialog( ProgressData *battery, BatteryStatus *info )
{
GtkWidget *hbox, *image, *label;
GtkWidget *vbox;
- GdkPixbuf *pixbuf;
+ cairo_surface_t *surface;
/* If the dialog is already displayed then don't display it again. */
if( battery->battery_low_dialog != NULL )
@@ -609,13 +447,15 @@ battery_low_dialog( ProgressData *battery, BatteryStatus *info )
6);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
- pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
+ surface = gtk_icon_theme_load_surface (gtk_icon_theme_get_default (),
"battery",
48,
+ gtk_widget_get_scale_factor (GTK_WIDGET (hbox)),
+ NULL,
GTK_ICON_LOOKUP_USE_BUILTIN,
NULL);
- image = gtk_image_new_from_pixbuf (pixbuf);
- g_object_unref (pixbuf);
+ image = gtk_image_new_from_surface (surface);
+ cairo_surface_destroy (surface);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 6);
gtk_box_pack_start (GTK_BOX (vbox), image, FALSE, FALSE, 0);
@@ -675,157 +515,6 @@ update_tooltip( ProgressData *battstat, BatteryStatus *info )
g_free (tiptext);
}
-static void
-pixbuf_draw_line( GdkPixbuf *pixbuf, GdkColor *colour, int x1, int y1, int x2, int y2)
-{
- guchar *pixels = gdk_pixbuf_get_pixels (pixbuf);
- int stride = gdk_pixbuf_get_rowstride (pixbuf);
- int channels = gdk_pixbuf_get_n_channels (pixbuf);
- guchar r, g, b, a;
- int i, n;
-
- r = colour->red >> 8;
- g = colour->green >> 8;
- b = colour->blue >> 8;
- a = 0xFF;
-
- pixels += stride * y1 + 4 * x1;
-
- if (x1 == x2)
- {
- /* stride = gdk_pixbuf_get_rowstride (pixbuf); */
- n = y2 - y1;
- }
- else if (y1 == y2)
- {
- stride = gdk_pixbuf_get_n_channels (pixbuf);
- n = x2 - x1;
- }
- else
- g_assert_not_reached ();
-
- for (i = 0; i < n; i++)
- {
- pixels[0] = r;
- pixels[1] = g;
- pixels[2] = b;
- if (channels == 4)
- pixels[3] = a;
-
- pixels += stride;
- }
-}
-
-/* Redraw the battery meter image.
- */
-static void
-update_battery_image (ProgressData *battstat, int batt_percent, int batt_time)
-{
- GdkColor *color, *darkcolor;
- GdkPixbuf *pixbuf;
- guint progress_value;
- gint i, x;
- int batt_life;
-
- if (!battstat->showbattery)
- return;
-
- batt_life = !battstat->red_value_is_time ? batt_percent : batt_time;
-
- if (batt_life <= battstat->red_val)
- {
- color = red;
- darkcolor = darkred;
- }
- else if (batt_life <= battstat->orange_val)
- {
- color = orange;
- darkcolor = darkorange;
- }
- else if (batt_life <= battstat->yellow_val)
- {
- color = yellow;
- darkcolor = darkyellow;
- }
- else
- {
- color = green;
- darkcolor = darkgreen;
- }
-
- /* Depending on if the meter is horizontally oriented start out with the
- appropriate XPM image (from pixmaps.h)
- */
- if (battstat->horizont)
- pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) battery_gray_xpm);
- else
- pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) battery_y_gray_xpm);
-
- /* The core code responsible for painting the battery meter. For each
- colour in our gradient array, draw a vertical or horizontal line
- depending on the current orientation of the meter.
- */
- if (battstat->draintop) {
- progress_value = PROGLEN * batt_life / 100.0;
-
- for( i = 0; i < G_N_ELEMENTS( orange ); i++ )
- {
- if (battstat->horizont)
- pixbuf_draw_line (pixbuf, &color[i], pixel_offset_top[i], i + 2,
- pixel_offset_top[i] + progress_value, i + 2);
- else
- pixbuf_draw_line (pixbuf, &color[i], i + 2, pixel_offset_top[i],
- i + 2, pixel_offset_top[i] + progress_value);
- }
- }
- else
- {
- progress_value = PROGLEN * batt_life / 100.0;
-
- for( i = 0; i < G_N_ELEMENTS( orange ); i++)
- {
- if (battstat->horizont)
- pixbuf_draw_line (pixbuf, &color[i], pixel_offset_bottom[i], i + 2,
- pixel_offset_bottom[i] - progress_value, i + 2);
- else
- pixbuf_draw_line (pixbuf, &color[i], i + 2,
- pixel_offset_bottom[i] - 1, i + 2,
- pixel_offset_bottom[i] - progress_value);
- }
-
- for( i = 0; i < G_N_ELEMENTS( orange ); i++ )
- {
- x = pixel_offset_bottom[i] - progress_value - pixel_top_length[i];
- if (x < pixel_offset_top[i])
- x = pixel_offset_top[i];
-
- if (progress_value < 33)
- {
- if (battstat->horizont)
- pixbuf_draw_line (pixbuf, &darkcolor[i],
- pixel_offset_bottom[i] - progress_value - 1,
- i + 2, x, i + 2);
- else
- pixbuf_draw_line (pixbuf, &darkcolor[i], i + 2,
- pixel_offset_bottom[i] - progress_value - 1,
- i + 2, x);
- }
- }
- }
-
- /* Store our newly created pixmap into the GtkImage. This results in
- the last reference to the old pixmap/mask being dropped.
- */
- gtk_image_set_from_pixbuf( GTK_IMAGE(battstat->battery),
- pixbuf);
-
- /* The GtkImage does not assume a reference to the pixmap or mask;
- you still need to unref them if you own references. GtkImage will
- add its own reference rather than adopting yours.
- */
- g_object_unref( G_OBJECT(pixbuf) );
-}
-
/* Update the text label that either shows the percentage of time left.
*/
static void
@@ -861,98 +550,57 @@ update_percent_label( ProgressData *battstat, BatteryStatus *info )
static void
possibly_update_status_icon( ProgressData *battstat, BatteryStatus *info )
{
- StatusPixmapIndex pixmap_index;
- int batt_life, last_batt_life;
+ GtkIconTheme *theme;
+ cairo_surface_t *surface;
+ gint icon_size, icon_scale;
+ gchar *icon_name;
+ int batt_life;
batt_life = !battstat->red_value_is_time ? info->percent : info->minutes;
- last_batt_life = !battstat->red_value_is_time ? battstat->last_batt_life :
- battstat->last_minutes;
- if( info->on_ac_power )
+ if (batt_life <= battstat->red_val)
{
- if( info->charging )
- pixmap_index = STATUS_PIXMAP_CHARGE;
+ if (info->charging)
+ icon_name = g_strdup("battery-caution-charging");
else
- pixmap_index = STATUS_PIXMAP_AC;
+ icon_name = g_strdup("battery-caution");
}
- else /* on battery */
+ else if (batt_life <= battstat->orange_val)
{
- if (batt_life > battstat->red_val)
- pixmap_index = STATUS_PIXMAP_BATTERY;
+ if (info->charging)
+ icon_name = g_strdup("battery-low-charging");
else
- pixmap_index = STATUS_PIXMAP_WARNING;
+ icon_name = g_strdup("battery-low");
}
-
- /* If we are showing the full length battery meter then the status icon
- should display static icons. If we are not showing the full meter
- then the status icon will show a smaller meter if we are on battery.
- */
- if( !battstat->showbattery &&
- (pixmap_index == STATUS_PIXMAP_BATTERY ||
- pixmap_index == STATUS_PIXMAP_WARNING) )
- pixmap_index = STATUS_PIXMAP_METER;
-
-
- /* Take care of drawing the smaller meter. */
- if( pixmap_index == STATUS_PIXMAP_METER &&
- (batt_life != last_batt_life ||
- battstat->last_pixmap_index != STATUS_PIXMAP_METER) )
+ else if (batt_life <= battstat->yellow_val)
{
- GdkColor *colour;
- GdkPixbuf *meter;
- guint progress_value;
- gint i, x;
-
- /* Pull in a clean version of the icons so that we don't paint over
- top of the same icon over and over. We neglect to free/update the
- statusmask here since it will always stay the same.
- */
- meter = gdk_pixbuf_copy ( statusimage[STATUS_PIXMAP_METER]);
-
- if (batt_life <= battstat->red_val)
- {
- colour = red;
- }
- else if (batt_life <= battstat->orange_val)
- {
- colour = orange;
- }
- else if (batt_life <= battstat->yellow_val)
- {
- colour = yellow;
- }
+ if (info->charging)
+ icon_name = g_strdup("battery-good-charging");
else
- {
- colour = green;
- }
+ icon_name = g_strdup("battery-good");
+ }
+ else if (info->on_ac_power)
+ {
+ if (info->charging)
+ icon_name = g_strdup("battery-full-charging");
+ else
+ icon_name = g_strdup("battery-full-charged");
+ }
+ else
+ {
+ icon_name = g_strdup("battery-full");
+ }
- progress_value = 12 * info->percent / 100.0;
+ theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (battstat->applet)));
- for( i = 0; i < 10; i++ )
- {
- if( i >= 2 && i <= 7 )
- x = 17;
- else
- x = 16;
-
- pixbuf_draw_line( meter, &colour[(i * 13 / 10)],
- i + 1, x - progress_value,
- i + 1, x );
- }
+ icon_size = mate_panel_applet_get_size (MATE_PANEL_APPLET (battstat->applet));
+ icon_scale = gtk_widget_get_scale_factor (GTK_WIDGET (battstat->applet));
- /* force a redraw immediately */
- gtk_image_set_from_pixbuf( GTK_IMAGE (battstat->status), meter);
+ surface = gtk_icon_theme_load_surface (theme, icon_name, icon_size, icon_scale, NULL, 0, NULL);
+ g_free (icon_name);
- /* free our private pixmap copy */
- g_object_unref( G_OBJECT( meter ) );
- battstat->last_pixmap_index = STATUS_PIXMAP_METER;
- }
- else if( pixmap_index != battstat->last_pixmap_index )
- {
- gtk_image_set_from_pixbuf (GTK_IMAGE (battstat->status),
- statusimage[pixmap_index]);
- battstat->last_pixmap_index = pixmap_index;
- }
+ gtk_image_set_from_surface (GTK_IMAGE(battstat->status), surface);
+ cairo_surface_destroy (surface);
}
/* Gets called as a gtk_timeout once per second. Checks for updates and
@@ -1016,12 +664,8 @@ check_for_updates( gpointer data )
battery_low_dialog(battstat, &info);
if(battstat->beep)
- gdk_beep();
+ gdk_display_beep (gdk_display_get_default ());
}
-#if 0
- /* FIXME: mate-applets doesn't depend on libmate anymore */
- mate_triggers_do ("", NULL, "battstat_applet", "LowBattery", NULL);
-#endif
}
if( battstat->last_charging &&
@@ -1033,17 +677,12 @@ check_for_updates( gpointer data )
info.percent > 99)
{
/* Inform that battery now fully charged */
-#if 0
- /* FIXME: mate-applets doesn't depend on libmate anymore */
- mate_triggers_do ("", NULL, "battstat_applet", "BatteryFull", NULL);
-#endif
-
if(battstat->fullbattnot)
{
battery_full_dialog (battstat->applet);
if (battstat->beep)
- gdk_beep();
+ gdk_display_beep (gdk_display_get_default ());
}
}
@@ -1066,12 +705,6 @@ check_for_updates( gpointer data )
battery_low_update_text( battstat, &info );
}
- if( info.percent != battstat->last_batt_life )
- {
- /* Update the battery meter image */
- update_battery_image (battstat, info.percent, info.minutes);
- }
-
if( (battstat->showtext == APPLET_SHOW_PERCENT &&
battstat->last_batt_life != info.percent) ||
(battstat->showtext == APPLET_SHOW_TIME &&
@@ -1116,7 +749,6 @@ destroy_applet( GtkWidget *widget, ProgressData *battstat )
g_object_unref( G_OBJECT(battstat->status) );
g_object_unref( G_OBJECT(battstat->percent) );
- g_object_unref( G_OBJECT(battstat->battery) );
g_free( battstat );
@@ -1278,7 +910,6 @@ size_allocate( MatePanelApplet *applet, GtkAllocation *allocation,
static void
load_preferences(ProgressData *battstat)
{
- MatePanelApplet *applet = MATE_PANEL_APPLET (battstat->applet);
GSettings *settings = battstat->settings;
if (DEBUG) g_print("load_preferences()\n");
@@ -1297,15 +928,6 @@ load_preferences(ProgressData *battstat)
battstat->lowbattnotification = g_settings_get_boolean (settings, "low-battery-notification");
battstat->fullbattnot = g_settings_get_boolean (settings, "full-battery-notification");
battstat->beep = g_settings_get_boolean (settings, "beep");
- battstat->draintop = g_settings_get_boolean (settings, "drain-from-top");
-
- battstat->showstatus = g_settings_get_boolean (settings, "show-status");
- battstat->showbattery = g_settings_get_boolean (settings, "show-battery");
-
- /* for miagration from older versions */
- if (battstat->showstatus && battstat->showbattery)
- battstat->showbattery = FALSE;
-
battstat->showtext = g_settings_get_int (settings, "show-text");
}
@@ -1359,90 +981,28 @@ grid_layout_attach (GtkGrid *grid, LayoutLocation loc, GtkWidget *child)
void
reconfigure_layout( ProgressData *battstat )
{
- gboolean up_down_order = FALSE;
- gboolean do_square = FALSE;
LayoutConfiguration c;
- int battery_horiz = 0;
- int needwidth;
- /* Decide if we are doing to do 'square' mode. */
+ /* Default to no elements being displayed. */
+ c.status = c.text = LAYOUT_NONE;
+
switch( battstat->orienttype )
{
case MATE_PANEL_APPLET_ORIENT_UP:
case MATE_PANEL_APPLET_ORIENT_DOWN:
- up_down_order = TRUE;
-
- /* Need to be at least 46px tall to do square mode on a horiz. panel */
- if( battstat->height >= 46 )
- do_square = TRUE;
+ /* Stack horizontally for top and bottom panels. */
+ c.status = LAYOUT_LEFT;
+ if( battstat->showtext )
+ c.text = LAYOUT_RIGHT;
break;
case MATE_PANEL_APPLET_ORIENT_LEFT:
case MATE_PANEL_APPLET_ORIENT_RIGHT:
- /* We need 64px to fix the text beside anything. */
- if( battstat->showtext )
- needwidth = 64;
- /* We need 48px to fix the icon and battery side-by-side. */
- else
- needwidth = 48;
-
- if( battstat->width >= needwidth )
- do_square = TRUE;
- break;
- }
-
- /* Default to no elements being displayed. */
- c.status = c.text = c.battery = LAYOUT_NONE;
-
- if( do_square )
- {
- /* Square mode is only useful if we have the battery meter shown. */
- if( battstat->showbattery )
- {
- c.battery = LAYOUT_LONG;
-
- /* if( battstat->showstatus ) */ /* make this always true */
- c.status = LAYOUT_TOPLEFT;
-
- if( battstat->showtext )
- c.text = LAYOUT_LEFT;
- }
- else
- {
- /* We have enough room to do 'square' mode but the battery meter is
- not requested. We can, instead, take up the extra space by stacking
- our items in the opposite order that we normally would (ie: stack
- horizontally on a vertical panel and vertically on horizontal).
- */
- up_down_order = !up_down_order;
- do_square = FALSE;
- }
- }
-
- if( !do_square )
- {
- if( up_down_order )
- {
- /* Stack horizontally for top and bottom panels. */
- /* if( battstat->showstatus ) */ /* make this always true */
- c.status = LAYOUT_LEFT;
- if( battstat->showbattery )
- c.battery = LAYOUT_CENTRE;
- if( battstat->showtext )
- c.text = LAYOUT_RIGHT;
-
- battery_horiz = 1;
- }
- else
- {
/* Stack vertically for left and right panels. */
- /* if( battstat->showstatus ) */ /* make this always true */
- c.status = LAYOUT_TOP;
- if( battstat->showbattery )
- c.battery = LAYOUT_CENTRE;
+ c.status = LAYOUT_TOP;
if( battstat->showtext )
- c.text = LAYOUT_BOTTOM;
- }
+ c.text = LAYOUT_BOTTOM;
+ break;
}
if( memcmp( &c, &battstat->layout, sizeof (LayoutConfiguration) ) )
@@ -1456,14 +1016,9 @@ reconfigure_layout( ProgressData *battstat )
if( battstat->layout.status )
gtk_container_remove( GTK_CONTAINER( battstat->grid ),
battstat->status );
- if( battstat->layout.battery )
- gtk_container_remove( GTK_CONTAINER( battstat->grid ),
- battstat->battery );
/* Attach the elements to their new locations. */
grid_layout_attach( GTK_GRID(battstat->grid),
- c.battery, battstat->battery );
- grid_layout_attach( GTK_GRID(battstat->grid),
c.status, battstat->status );
grid_layout_attach( GTK_GRID(battstat->grid),
c.text, battstat->percent );
@@ -1471,17 +1026,6 @@ reconfigure_layout( ProgressData *battstat )
gtk_widget_show_all( battstat->applet );
}
- /* If we are showing the battery meter and we weren't showing it before or
- if the orientation has changed, we had better update it right now.
- */
- if( (c.battery && !battstat->layout.battery) ||
- battery_horiz != battstat->horizont )
- {
- battstat->horizont = battery_horiz;
- update_battery_image (battstat,
- battstat->last_batt_life, battstat->last_minutes);
- }
-
battstat->layout = c;
/* Check for generic updates. This is required, for example, to make sure
@@ -1506,7 +1050,6 @@ create_layout(ProgressData *battstat)
battstat->grid = gtk_grid_new ();
battstat->percent = gtk_label_new( "" );
battstat->status = gtk_image_new();
- battstat->battery = gtk_image_new();
/* When you first get a pointer to a newly created GtkWidget it has one
'floating' reference. When you first add this widget to a container
@@ -1518,15 +1061,12 @@ create_layout(ProgressData *battstat)
*/
g_object_ref( battstat->status );
g_object_ref( battstat->percent );
- g_object_ref( battstat->battery );
g_object_ref_sink( G_OBJECT( battstat->status ) );
g_object_ref_sink( G_OBJECT( battstat->percent ) );
- g_object_ref_sink( G_OBJECT( battstat->battery ) );
/* Let reconfigure_layout know that the grid is currently empty. */
battstat->layout.status = LAYOUT_NONE;
battstat->layout.text = LAYOUT_NONE;
- battstat->layout.battery = LAYOUT_NONE;
/* Put the grid directly inside the applet and show everything. */
gtk_widget_set_halign (battstat->grid, GTK_ALIGN_CENTER);
@@ -1580,10 +1120,8 @@ battstat_applet_fill (MatePanelApplet *applet)
battstat->refresh_label = TRUE;
battstat->last_batt_life = 1000;
battstat->last_acline_status = 1000;
- battstat->last_pixmap_index = 1000;
battstat->last_charging = 1000;
battstat->orienttype = mate_panel_applet_get_orient (applet);
- battstat->horizont = TRUE;
battstat->battery_low_dialog = NULL;
battstat->battery_low_label = NULL;
battstat->timeout = -1;