X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fbattery%2Fbattery.c;h=7e47bd32699a8f2ee9a740b3ae099372d2f2f723;hb=85dd87dec827c67658156ff9cd6369e8f4400a65;hp=d1b380fdaf54e9803ef8b94d3ae5935145fc01a7;hpb=bd9ade337cc85297242a10d5eb258aad2e71d021;p=chaz%2Ftint2 diff --git a/src/battery/battery.c b/src/battery/battery.c index d1b380f..7e47bd3 100644 --- a/src/battery/battery.c +++ b/src/battery/battery.c @@ -47,7 +47,7 @@ char *path_energy_now, *path_energy_full, *path_current_now, *path_status; void init_battery() { // check battery - GDir *directory; + GDir *directory = 0; GError *error = NULL; const char *entryname; char *battery_dir = 0; @@ -69,7 +69,9 @@ void init_battery() g_free(path1); } } - if (battery_dir != 0) { + if (directory) + g_dir_close(directory); + if (battery_dir) { char *path1 = g_build_filename(battery_dir, "energy_now", NULL); if (g_file_test (path1, G_FILE_TEST_EXISTS)) { path_energy_now = g_build_filename(battery_dir, "energy_now", NULL); @@ -94,9 +96,9 @@ void init_battery() } FILE *fp; - Panel *panel; - Battery *battery; - int i, bat_percentage_height, bat_percentage_height_ink, bat_time_height, bat_time_height_ink; + Panel *panel; + Battery *battery; + int i, bat_percentage_height, bat_percentage_height_ink, bat_time_height, bat_time_height_ink; for (i=0 ; i < nb_panel ; i++) { panel = &panel1[i]; @@ -109,6 +111,8 @@ void init_battery() battery->area.panel = panel; battery->area._draw_foreground = draw_battery; battery->area._resize = resize_battery; + battery->area.resize = 1; + battery->area.redraw = 1; if((fp = fopen(path_energy_now, "r")) == NULL) { fprintf(stderr, "ERROR: battery applet can't open energy_now\n"); @@ -135,23 +139,33 @@ void init_battery() } fclose(fp); - battery->area.posy = panel->area.pix.border.width + panel->area.paddingy; - battery->area.height = panel->area.height - (2 * battery->area.posy); - battery->area.resize = 1; - battery->area.redraw = 1; - update_battery(&battery_state); snprintf(buf_bat_percentage, sizeof(buf_bat_percentage), "%d%%", battery_state.percentage); snprintf(buf_bat_time, sizeof(buf_bat_time), "%02d:%02d", battery_state.time.hours, battery_state.time.minutes); get_text_size(bat1_font_desc, &bat_percentage_height_ink, &bat_percentage_height, panel->area.height, buf_bat_percentage, strlen(buf_bat_percentage)); - battery->bat1_posy = (battery->area.height - bat_percentage_height) / 2; - get_text_size(bat2_font_desc, &bat_time_height_ink, &bat_time_height, panel->area.height, buf_bat_time, strlen(buf_bat_time)); + if (panel_horizontal) { + // panel horizonal => fixed height and posy + battery->area.posy = panel->area.pix.border.width + panel->area.paddingy; + battery->area.height = panel->area.height - (2 * battery->area.posy); + } + else { + // panel vertical => fixed width, height, posy and posx + battery->area.posy = panel->clock.area.posy + panel->clock.area.height + panel->area.paddingx; + battery->area.height = (2 * battery->area.paddingxlr) + (bat_time_height + bat_percentage_height); + battery->area.posx = panel->area.pix.border.width + panel->area.paddingy; + battery->area.width = panel->area.width - (2 * panel->area.pix.border.width) - (2 * panel->area.paddingy); + } + + battery->bat1_posy = (battery->area.height - bat_percentage_height) / 2; battery->bat1_posy -= ((bat_time_height_ink + 2) / 2); battery->bat2_posy = battery->bat1_posy + bat_percentage_height + 2 - (bat_percentage_height - bat_percentage_height_ink)/2 - (bat_time_height - bat_time_height_ink)/2; } + + if (battery_dir) + g_free(battery_dir); } @@ -217,8 +231,8 @@ void update_battery() { new_percentage = (energy_now*100)/energy_full; if(battery_low_status != 0 && battery_low_status == new_percentage && battery_state.percentage > new_percentage) { - printf("battery low, executing: %s\n", battery_low_cmd); - if(battery_low_cmd) system(battery_low_cmd); + //printf("battery low, executing: %s\n", battery_low_cmd); + if (battery_low_cmd) system(battery_low_cmd); } battery_state.percentage = new_percentage; @@ -259,7 +273,7 @@ void draw_battery (void *obj, cairo_t *c, int active) void resize_battery(void *obj) { - Battery *battery = obj; + Battery *battery = obj; PangoLayout *layout; int percentage_width, time_width, new_width; @@ -268,6 +282,8 @@ void resize_battery(void *obj) snprintf(buf_bat_percentage, sizeof(buf_bat_percentage), "%d%%", battery_state.percentage); snprintf(buf_bat_time, sizeof(buf_bat_time), "%02d:%02d", battery_state.time.hours, battery_state.time.minutes); + // vertical panel doen't adjust width + if (!panel_horizontal) return; cairo_surface_t *cs; cairo_t *c;