summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--battstat/acpi-linux.c632
-rw-r--r--battstat/acpi-linux.h22
-rw-r--r--battstat/apmlib/apm.h34
-rw-r--r--battstat/apmlib/apmlib.c439
-rw-r--r--battstat/battstat-upower.c82
-rw-r--r--battstat/battstat.h10
-rw-r--r--battstat/battstat_applet.c1716
-rw-r--r--battstat/power-management.c180
8 files changed, 1580 insertions, 1535 deletions
diff --git a/battstat/acpi-linux.c b/battstat/acpi-linux.c
index afda8fd7..c383bd2e 100644
--- a/battstat/acpi-linux.c
+++ b/battstat/acpi-linux.c
@@ -24,7 +24,7 @@
*/
#ifdef HAVE_CONFIG_H
- #include <config.h>
+ #include <config.h>
#endif
#ifdef __linux__
@@ -44,91 +44,92 @@
#include <dirent.h>
#include "acpi-linux.h"
-static GHashTable* read_file(const char* file, char* buf, size_t bufsize)
+static GHashTable*
+read_file (const char* file, char* buf, size_t bufsize)
{
- GHashTable* hash = NULL;
-
- int fd, len, i;
- char* key;
- char* value;
- gboolean reading_key;
-
- fd = open(file, O_RDONLY);
-
- if (fd == -1)
- {
- return hash;
- }
-
- len = read(fd, buf, bufsize);
-
- close (fd);
-
- if (len < 0)
- {
- if (getenv("BATTSTAT_DEBUG"))
- {
- g_message("Error reading %s: %s", file, g_strerror(errno));
- }
-
- return hash;
- }
-
- hash = g_hash_table_new(g_str_hash, g_str_equal);
-
- for (i = 0, value = key = buf, reading_key = TRUE; i < len; i++)
- {
- if (buf[i] == ':' && reading_key)
- {
- reading_key = FALSE;
- buf[i] = '\0';
- value = buf + i + 1;
- }
- else if (buf[i] == '\n')
- {
- reading_key = TRUE;
- buf[i] = '\0';
- /* g_message ("Read: %s => %s\n", key, value); */
- g_hash_table_insert(hash, key, g_strstrip(value));
- key = buf + i + 1;
- }
- else if (reading_key)
- {
- /* in acpi 20020214 it switched to lower-case proc
- * entries. fixing this up here simplifies the
- * code.
- */
- buf[i] = g_ascii_tolower(buf[i]);
- }
- }
-
- return hash;
+ GHashTable* hash = NULL;
+
+ int fd, len, i;
+ char* key;
+ char* value;
+ gboolean reading_key;
+
+ fd = open (file, O_RDONLY);
+
+ if (fd == -1)
+ {
+ return hash;
+ }
+
+ len = read (fd, buf, bufsize);
+
+ close (fd);
+
+ if (len < 0)
+ {
+ if (getenv ("BATTSTAT_DEBUG"))
+ {
+ g_message ("Error reading %s: %s", file, g_strerror (errno));
+ }
+
+ return hash;
+ }
+
+ hash = g_hash_table_new (g_str_hash, g_str_equal);
+
+ for (i = 0, value = key = buf, reading_key = TRUE; i < len; i++)
+ {
+ if (buf[i] == ':' && reading_key)
+ {
+ reading_key = FALSE;
+ buf[i] = '\0';
+ value = buf + i + 1;
+ }
+ else if (buf[i] == '\n')
+ {
+ reading_key = TRUE;
+ buf[i] = '\0';
+ /* g_message ("Read: %s => %s\n", key, value); */
+ g_hash_table_insert (hash, key, g_strstrip (value));
+ key = buf + i + 1;
+ }
+ else if (reading_key)
+ {
+ /* in acpi 20020214 it switched to lower-case proc
+ * entries. fixing this up here simplifies the
+ * code.
+ */
+ buf[i] = g_ascii_tolower (buf[i]);
+ }
+ }
+
+ return hash;
}
#if 0
static gboolean
read_bool (GHashTable *hash, const char *key)
{
- char *s;
+ char *s;
- g_return_val_if_fail (hash, FALSE);
- g_return_val_if_fail (key, FALSE);
+ g_return_val_if_fail (hash, FALSE);
+ g_return_val_if_fail (key, FALSE);
- s = g_hash_table_lookup (hash, key);
- return s && (*s == 'y');
+ s = g_hash_table_lookup (hash, key);
+ return s && (*s == 'y');
}
#endif
static long
read_long (GHashTable *hash, const char *key)
{
- char* s;
+ char* s;
- g_return_val_if_fail(hash, 0);
- g_return_val_if_fail(key, 0);
+ g_return_val_if_fail (hash, 0);
+ g_return_val_if_fail (key, 0);
- s = g_hash_table_lookup(hash, key);
- return s ? strtol(s, NULL, 10) : 0;
+ s = g_hash_table_lookup (hash, key);
+ return s ? strtol (s, NULL, 10) : 0;
}
static gulong
@@ -136,112 +137,114 @@ read_ulong (GHashTable *hash, const char *key)
{
char *s;
- g_return_val_if_fail (hash, 0);
- g_return_val_if_fail (key, 0);
+ g_return_val_if_fail (hash, 0);
+ g_return_val_if_fail (key, 0);
- s = g_hash_table_lookup (hash, key);
- return s ? strtoul (s, NULL, 10) : 0;
+ s = g_hash_table_lookup (hash, key);
+ return s ? strtoul (s, NULL, 10) : 0;
}
static const char *
read_string (GHashTable *hash, const char *key)
{
- return g_hash_table_lookup (hash, key);
+ return g_hash_table_lookup (hash, key);
}
/* Reads the current status of the AC adapter and stores the
* result in acpiinfo->ac_online. */
-static gboolean update_ac_info(struct acpi_info * acpiinfo)
+static gboolean
+update_ac_info (struct acpi_info * acpiinfo)
{
- gchar *ac_state = NULL;
- DIR * procdir;
- struct dirent * procdirentry;
- char buf[BUFSIZ];
- GHashTable *hash;
- gboolean have_adaptor = FALSE;
-
- acpiinfo->ac_online = FALSE;
-
- procdir=opendir("/proc/acpi/ac_adapter/");
- if (!procdir)
- return FALSE;
-
- while ((procdirentry=readdir(procdir)))
- {
- if (procdirentry->d_name[0]!='.')
- {
- have_adaptor = TRUE;
- ac_state = g_strconcat("/proc/acpi/ac_adapter/",
- procdirentry->d_name,
- "/",
- acpiinfo->ac_state_state,
- NULL);
- hash = read_file (ac_state, buf, sizeof (buf));
- if (hash && !acpiinfo->ac_online)
- {
- const char *s;
- s = read_string (hash, acpiinfo->ac_state_state);
- acpiinfo->ac_online = s ? (strcmp (s, "on-line") == 0) : 0;
- g_hash_table_destroy (hash);
- }
- g_free(ac_state);
- }
- }
+ gchar *ac_state = NULL;
+ DIR * procdir;
+ struct dirent * procdirentry;
+ char buf[BUFSIZ];
+ GHashTable *hash;
+ gboolean have_adaptor = FALSE;
+
+ acpiinfo->ac_online = FALSE;
+
+ procdir=opendir ("/proc/acpi/ac_adapter/");
+ if (!procdir)
+ return FALSE;
+
+ while ((procdirentry=readdir (procdir)))
+ {
+ if (procdirentry->d_name[0]!='.')
+ {
+ have_adaptor = TRUE;
+ ac_state = g_strconcat ("/proc/acpi/ac_adapter/",
+ procdirentry->d_name,
+ "/",
+ acpiinfo->ac_state_state,
+ NULL);
+ hash = read_file (ac_state, buf, sizeof (buf));
+ if (hash && !acpiinfo->ac_online)
+ {
+ const char *s;
+ s = read_string (hash, acpiinfo->ac_state_state);
+ acpiinfo->ac_online = s ? (strcmp (s, "on-line") == 0) : 0;
+ g_hash_table_destroy (hash);
+ }
+ g_free (ac_state);
+ }
+ }
/* If there are no AC adaptors registered in the system, then we're
probably on a desktop (and therefore, on AC power).
*/
- if (have_adaptor == FALSE)
- acpiinfo->ac_online = 1;
+ if (have_adaptor == FALSE)
+ acpiinfo->ac_online = 1;
- closedir(procdir);
+ closedir (procdir);
- return TRUE;
+ return TRUE;
}
/* Reads the ACPI info for the system batteries, and finds
* the total capacity, which is stored in acpiinfo. */
-static gboolean update_battery_info(struct acpi_info* acpiinfo)
+static gboolean
+update_battery_info (struct acpi_info* acpiinfo)
{
- gchar* batt_info = NULL;
- GHashTable* hash;
- DIR* procdir;
- struct dirent* procdirentry;
- char buf[BUFSIZ];
-
- acpiinfo->max_capacity = 0;
- acpiinfo->low_capacity = 0;
- acpiinfo->critical_capacity = 0;
-
- procdir = opendir("/proc/acpi/battery/");
-
- if (!procdir)
- {
- return FALSE;
- }
-
- while ((procdirentry = readdir(procdir)))
- {
- if (procdirentry->d_name[0] != '.')
- {
- batt_info = g_strconcat("/proc/acpi/battery/", procdirentry->d_name, "/info", NULL);
- hash = read_file(batt_info, buf, sizeof(buf));
-
- if (hash)
- {
- acpiinfo->max_capacity += read_long(hash, "last full capacity");
- acpiinfo->low_capacity += read_long(hash, "design capacity warning");
- acpiinfo->critical_capacity += read_long(hash, "design capacity low");
-
- g_hash_table_destroy(hash);
- }
- g_free(batt_info);
- }
- }
-
- closedir(procdir);
-
- return TRUE;
+ gchar* batt_info = NULL;
+ GHashTable* hash;
+ DIR* procdir;
+ struct dirent* procdirentry;
+ char buf[BUFSIZ];
+
+ acpiinfo->max_capacity = 0;
+ acpiinfo->low_capacity = 0;
+ acpiinfo->critical_capacity = 0;
+
+ procdir = opendir ("/proc/acpi/battery/");
+
+ if (!procdir)
+ {
+ return FALSE;
+ }
+
+ while ((procdirentry = readdir (procdir)))
+ {
+ if (procdirentry->d_name[0] != '.')
+ {
+ batt_info = g_strconcat ("/proc/acpi/battery/", procdirentry->d_name, "/info", NULL);
+ hash = read_file (batt_info, buf, sizeof (buf));
+
+ if (hash)
+ {
+ acpiinfo->max_capacity += read_long (hash, "last full capacity");
+ acpiinfo->low_capacity += read_long (hash, "design capacity warning");
+ acpiinfo->critical_capacity += read_long (hash, "design capacity low");
+
+ g_hash_table_destroy (hash);
+ }
+ g_free (batt_info);
+ }
+ }
+
+ closedir (procdir);
+
+ return TRUE;
}
@@ -250,72 +253,74 @@ static gboolean update_battery_info(struct acpi_info* acpiinfo)
* /proc/acpi/event exported by the kernel, or if it's already
* in use, the /var/run/acpid.socket maintained by acpid. Also
* initializes the stored battery and AC adapter information. */
-gboolean acpi_linux_init(struct acpi_info * acpiinfo)
+gboolean
+acpi_linux_init (struct acpi_info * acpiinfo)
{
- GHashTable *hash;
- char buf[BUFSIZ];
- gchar *pbuf;
- gulong acpi_ver;
- int fd;
-
- g_assert(acpiinfo);
-
- if (g_file_get_contents ("/sys/module/acpi/parameters/acpica_version", &pbuf, NULL, NULL)) {
- acpi_ver = strtoul (pbuf, NULL, 10);
- g_free (pbuf);
- } else if ((hash = read_file ("/proc/acpi/info", buf, sizeof (buf)))) {
- acpi_ver = read_ulong (hash, "version");
- g_hash_table_destroy (hash);
- } else
- return FALSE;
-
- if (acpi_ver < (gulong)20020208) {
- acpiinfo->ac_state_state = "status";
- acpiinfo->batt_state_state = "status";
- acpiinfo->charging_state = "state";
- } else {
- acpiinfo->ac_state_state = "state";
- acpiinfo->batt_state_state = "state";
- acpiinfo->charging_state = "charging state";
- }
-
- if (!update_battery_info(acpiinfo) || !update_ac_info(acpiinfo))
- return FALSE;
+ GHashTable *hash;
+ char buf[BUFSIZ];
+ gchar *pbuf;
+ gulong acpi_ver;
+ int fd;
+
+ g_assert (acpiinfo);
+
+ if (g_file_get_contents ("/sys/module/acpi/parameters/acpica_version", &pbuf, NULL, NULL)) {
+ acpi_ver = strtoul (pbuf, NULL, 10);
+ g_free (pbuf);
+ } else if ((hash = read_file ("/proc/acpi/info", buf, sizeof (buf)))) {
+ acpi_ver = read_ulong (hash, "version");
+ g_hash_table_destroy (hash);
+ } else
+ return FALSE;
+
+ if (acpi_ver < (gulong)20020208) {
+ acpiinfo->ac_state_state = "status";
+ acpiinfo->batt_state_state = "status";
+ acpiinfo->charging_state = "state";
+ } else {
+ acpiinfo->ac_state_state = "state";
+ acpiinfo->batt_state_state = "state";
+ acpiinfo->charging_state = "charging state";
+ }
- fd = open("/proc/acpi/event", 0);
- if (fd >= 0) {
- acpiinfo->event_fd = fd;
- acpiinfo->channel = g_io_channel_unix_new(fd);
- return TRUE;
- }
-
- fd = socket(PF_UNIX, SOCK_STREAM, 0);
- if (fd >= 0) {
- struct sockaddr_un addr;
- addr.sun_family = AF_UNIX;
- strcpy(addr.sun_path, "/var/run/acpid.socket");
- if (connect(fd, (struct sockaddr *) &addr, sizeof(addr)) == 0) {
- acpiinfo->event_fd = fd;
- acpiinfo->channel = g_io_channel_unix_new(fd);
- return TRUE;
+ if (!update_battery_info (acpiinfo) || !update_ac_info (acpiinfo))
+ return FALSE;
+
+ fd = open ("/proc/acpi/event", 0);
+ if (fd >= 0) {
+ acpiinfo->event_fd = fd;
+ acpiinfo->channel = g_io_channel_unix_new (fd);
+ return TRUE;
+ }
+
+ fd = socket (PF_UNIX, SOCK_STREAM, 0);
+ if (fd >= 0) {
+ struct sockaddr_un addr;
+ addr.sun_family = AF_UNIX;
+ strcpy (addr.sun_path, "/var/run/acpid.socket");
+ if (connect (fd, (struct sockaddr *) &addr, sizeof (addr)) == 0) {
+ acpiinfo->event_fd = fd;
+ acpiinfo->channel = g_io_channel_unix_new (fd);
+ return TRUE;
+ }
}
- }
- close(fd);
- acpiinfo->event_fd = -1;
- return FALSE;
+ close (fd);
+ acpiinfo->event_fd = -1;
+ return FALSE;
}
/* Cleans up ACPI */
-void acpi_linux_cleanup(struct acpi_info * acpiinfo)
+void
+acpi_linux_cleanup (struct acpi_info * acpiinfo)
{
- g_assert(acpiinfo);
+ g_assert (acpiinfo);
- if (acpiinfo->event_fd >= 0) {
- g_io_channel_unref(acpiinfo->channel);
- close(acpiinfo->event_fd);
- acpiinfo->event_fd = -1;
- }
+ if (acpiinfo->event_fd >= 0) {
+ g_io_channel_unref (acpiinfo->channel);
+ close (acpiinfo->event_fd);
+ acpiinfo->event_fd = -1;
+ }
}
#define ACPI_EVENT_IGNORE 0
@@ -326,56 +331,60 @@ void acpi_linux_cleanup(struct acpi_info * acpiinfo)
/* Given a string event from the ACPI system, returns the type
* of event if we're interested in it. str is updated to point
* to the next event. */
-static int parse_acpi_event(GString *buffer)
+static int
+parse_acpi_event (GString *buffer)
{
- if (strstr(buffer->str, "ac_adapter"))
- return ACPI_EVENT_AC;
- if (strstr(buffer->str, "battery") )
- return ACPI_EVENT_BATTERY_INFO;
+ if (strstr (buffer->str, "ac_adapter"))
+ return ACPI_EVENT_AC;
+ if (strstr (buffer->str, "battery"))
+ return ACPI_EVENT_BATTERY_INFO;
- return ACPI_EVENT_IGNORE;
+ return ACPI_EVENT_IGNORE;
}
/* Handles a new ACPI event by reading it from the event file
* and calling any handlers. Since this does a blocking read,
* it should only be called when there is a new event as indicated
- * by select(). */
-gboolean acpi_process_event(struct acpi_info * acpiinfo)
+ * by select (). */
+gboolean acpi_process_event (struct acpi_info * acpiinfo)
{
gsize i;
int evt;
GString *buffer;
GError *gerror=NULL;
- buffer=g_string_new(NULL);
- g_io_channel_read_line_string ( acpiinfo->channel,buffer,&i,&gerror);
+ buffer=g_string_new (NULL);
+ g_io_channel_read_line_string (acpiinfo->channel,
+ buffer,
+ &i,
+ &gerror);
if (gerror != NULL) {
- g_warning ("%s", gerror->message);
- g_error_free (gerror);
+ g_warning ("%s", gerror->message);
+ g_error_free (gerror);
}
gboolean result;
- evt = parse_acpi_event(buffer);
- switch (evt) {
+ evt = parse_acpi_event (buffer);
+ switch (evt) {
case ACPI_EVENT_AC:
- result = update_ac_info(acpiinfo);
- break;
- case ACPI_EVENT_BATTERY_INFO:
- if (update_battery_info(acpiinfo)) {
- /* Update AC info on battery info updates. This works around
- * a bug in ACPI (as per bug #163013).
- */
- result = update_ac_info(acpiinfo);
+ result = update_ac_info (acpiinfo);
break;
- }
- /* fall-through */
+ case ACPI_EVENT_BATTERY_INFO:
+ if (update_battery_info (acpiinfo)) {
+ /* Update AC info on battery info updates. This works around
+ * a bug in ACPI (as per bug #163013).
+ */
+ result = update_ac_info (acpiinfo);
+ break;
+ }
+ /* fall-through */
default:
- result = FALSE;
- }
+ result = FALSE;
+ }
- g_string_free(buffer, FALSE);
+ g_string_free (buffer, FALSE);
return result;
}
@@ -383,82 +392,83 @@ gboolean acpi_process_event(struct acpi_info * acpiinfo)
* Fills out a classic apm_info structure with the data gathered from
* the ACPI kernel interface in /proc
*/
-gboolean acpi_linux_read(struct apm_info *apminfo, struct acpi_info * acpiinfo)
+gboolean
+acpi_linux_read (struct apm_info *apminfo, struct acpi_info * acpiinfo)
{
- guint32 remain;
- guint32 rate;
- gboolean charging;
- GHashTable *hash;
- gchar* batt_state = NULL;
- DIR * procdir;
- struct dirent * procdirentry;
- char buf[BUFSIZ];
-
- g_assert(acpiinfo);
-
- /*
- * apminfo.ac_line_status must be one when on ac power
- * apminfo.battery_status must be 0 for high, 1 for low, 2 for critical, 3 for charging
- * apminfo.battery_percentage must contain batter charge percentage
- * apminfo.battery_flags & 0x8 must be nonzero when charging
- */
-
- g_assert(apminfo);
-
- charging = FALSE;
- remain = 0;
- rate = 0;
-
- procdir=opendir("/proc/acpi/battery/");
- if (!procdir)
- return FALSE;
+ guint32 remain;
+ guint32 rate;
+ gboolean charging;
+ GHashTable *hash;
+ gchar* batt_state = NULL;
+ DIR * procdir;
+ struct dirent * procdirentry;
+ char buf[BUFSIZ];
+
+ g_assert (acpiinfo);
+
+ /*
+ * apminfo.ac_line_status must be one when on ac power
+ * apminfo.battery_status must be 0 for high, 1 for low, 2 for critical, 3 for charging
+ * apminfo.battery_percentage must contain batter charge percentage
+ * apminfo.battery_flags & 0x8 must be nonzero when charging
+ */
+
+ g_assert (apminfo);
+
+ charging = FALSE;
+ remain = 0;
+ rate = 0;
+
+ procdir=opendir ("/proc/acpi/battery/");
+ if (!procdir)
+ return FALSE;
+
+ /* Get the remaining capacity for the batteries. Other information
+ * such as AC state and battery max capacity are read only when they
+ * change using acpi_process_event (). */
+ while ((procdirentry=readdir (procdir)))
+ {
+ if (procdirentry->d_name[0]!='.')
+ {
+ batt_state = g_strconcat ("/proc/acpi/battery/",
+ procdirentry->d_name,
+ "/",
+ acpiinfo->batt_state_state,
+ NULL);
+ hash = read_file (batt_state, buf, sizeof (buf));
+ if (hash)
+ {
+ const char *s;
+ if (!charging)
+ {
+ s = read_string (hash, acpiinfo->charging_state);
+ charging = s ? (strcmp (s, "charging") == 0) : 0;
+ }
+ remain += read_long (hash, "remaining capacity");
+ rate += read_long (hash, "present rate");
+ g_hash_table_destroy (hash);
+ }
+ g_free (batt_state);
+ }
+ }
+ closedir (procdir);
+
+ apminfo->ac_line_status = acpiinfo->ac_online ? 1 : 0;
+ apminfo->battery_status =
+ remain < acpiinfo->low_capacity ? 1 : remain < acpiinfo->critical_capacity ? 2 : 0;
+ if (!acpiinfo->max_capacity)
+ apminfo->battery_percentage = -1;
+ else
+ apminfo->battery_percentage = (int) (remain/(float)acpiinfo->max_capacity*100);
+ apminfo->battery_flags = charging ? 0x8 : 0;
+ if (rate && !charging)
+ apminfo->battery_time = (int) (remain/(float)rate * 60);
+ else if (rate && charging)
+ apminfo->battery_time = (int) ((acpiinfo->max_capacity-remain)/(float)rate * 60);
+ else
+ apminfo->battery_time = -1;
- /* Get the remaining capacity for the batteries. Other information
- * such as AC state and battery max capacity are read only when they
- * change using acpi_process_event(). */
- while ((procdirentry=readdir(procdir)))
- {
- if (procdirentry->d_name[0]!='.')
- {
- batt_state = g_strconcat("/proc/acpi/battery/",
- procdirentry->d_name,
- "/",
- acpiinfo->batt_state_state,
- NULL);
- hash = read_file (batt_state, buf, sizeof (buf));
- if (hash)
- {
- const char *s;
- if (!charging)
- {
- s = read_string (hash, acpiinfo->charging_state);
- charging = s ? (strcmp (s, "charging") == 0) : 0;
- }
- remain += read_long (hash, "remaining capacity");
- rate += read_long (hash, "present rate");
- g_hash_table_destroy (hash);
- }
- g_free(batt_state);
- }
- }
- closedir(procdir);
-
- apminfo->ac_line_status = acpiinfo->ac_online ? 1 : 0;
- apminfo->battery_status = remain < acpiinfo->low_capacity ? 1 : remain < acpiinfo->critical_capacity ? 2 : 0;
- if (!acpiinfo->max_capacity)
- apminfo->battery_percentage = -1;
- else
- apminfo->battery_percentage = (int) (remain/(float)acpiinfo->max_capacity*100);
- apminfo->battery_flags = charging ? 0x8 : 0;
- if (rate && !charging)
- apminfo->battery_time = (int) (remain/(float)rate * 60);
- else if (rate && charging)
- apminfo->battery_time = (int) ((acpiinfo->max_capacity-remain)/(float)rate * 60);
- else
- apminfo->battery_time = -1;
-
- return TRUE;
+ return TRUE;
}
-
#endif /* __linux__ */
diff --git a/battstat/acpi-linux.h b/battstat/acpi-linux.h
index 3550935d..572bf0e5 100644
--- a/battstat/acpi-linux.h
+++ b/battstat/acpi-linux.h
@@ -22,18 +22,18 @@
#define __ACPI_LINUX_H__
struct acpi_info {
- const char *ac_state_state, *batt_state_state, *charging_state;
- gboolean ac_online;
- int event_fd;
- int max_capacity;
- int low_capacity;
- int critical_capacity;
- GIOChannel * channel;
+ const char *ac_state_state, *batt_state_state, *charging_state;
+ gboolean ac_online;
+ int event_fd;
+ int max_capacity;
+ int low_capacity;
+ int critical_capacity;
+ GIOChannel * channel;
};
-gboolean acpi_linux_read(struct apm_info *apminfo, struct acpi_info * acpiinfo);
-gboolean acpi_process_event(struct acpi_info * acpiinfo);
-gboolean acpi_linux_init(struct acpi_info * acpiinfo);
-void acpi_linux_cleanup(struct acpi_info * acpiinfo);
+gboolean acpi_linux_read (struct apm_info *apminfo, struct acpi_info * acpiinfo);
+gboolean acpi_process_event (struct acpi_info * acpiinfo);
+gboolean acpi_linux_init (struct acpi_info * acpiinfo);
+void acpi_linux_cleanup (struct acpi_info * acpiinfo);
#endif /* __ACPI_LINUX_H__ */
diff --git a/battstat/apmlib/apm.h b/battstat/apmlib/apm.h
index 5b44ab71..619c704d 100644
--- a/battstat/apmlib/apm.h
+++ b/battstat/apmlib/apm.h
@@ -51,22 +51,22 @@ typedef struct apm_info
}
apm_info;
-extern int apm_exists(void);
-extern int apm_read(apm_info * i);
-extern dev_t apm_dev(void);
-extern int apm_open(void);
-extern int apm_close(int fd);
-extern int apm_get_events(int fd, int timeout, apm_event_t * events, int n);
-extern int apm_suspend(int fd);
-extern int apm_standby(int fd);
-extern int apm_set_ignore(int fd, int mode);
-extern unsigned int apm_last_error(int fd);
-extern const char *apm_error_name( unsigned int err );
-extern int apm_reject(int fd);
-extern const char *apm_event_name(apm_event_t event);
-extern const char *apm_time(time_t t);
-extern const char *apm_delta_time(time_t then, time_t now);
-extern const char *apm_time_nosec(time_t t);
+extern int apm_exists (void);
+extern int apm_read (apm_info * i);
+extern dev_t apm_dev (void);
+extern int apm_open (void);
+extern int apm_close (int fd);
+extern int apm_get_events (int fd, int timeout, apm_event_t * events, int n);
+extern int apm_suspend (int fd);
+extern int apm_standby (int fd);
+extern int apm_set_ignore (int fd, int mode);
+extern unsigned int apm_last_error (int fd);
+extern const char *apm_error_name (unsigned int err);
+extern int apm_reject (int fd);
+extern const char *apm_event_name (apm_event_t event);
+extern const char *apm_time (time_t t);
+extern const char *apm_delta_time (time_t then, time_t now);
+extern const char *apm_time_nosec (time_t t);
#define SUSPEND 0
#define STANDBY 1
@@ -79,4 +79,4 @@ extern const char *apm_time_nosec(time_t t);
#define APM_REJECT_ENABLED
#endif
-#endif /* __APM_H__ */
+#endif /* __APM_H__ */
diff --git a/battstat/apmlib/apmlib.c b/battstat/apmlib/apmlib.c
index e15bb541..d7125f74 100644
--- a/battstat/apmlib/apmlib.c
+++ b/battstat/apmlib/apmlib.c
@@ -37,121 +37,123 @@
* Otherwise, return 1 if no support exists, or 2 if it is the wrong
* version. *NOTE* The sense of the return value is not intuitive.
*/
-int apm_exists(void)
+int
+apm_exists (void)
{
apm_info i;
- if (access(APM_PROC, R_OK))
- return 1;
- return apm_read(&i);
+ if (access (APM_PROC, R_OK))
+ return 1;
+ return apm_read (&i);
}
/* Read information from /proc/apm. Return 0 on success, 1 if APM not
* installed, 2 if APM installed, but old version.
*/
-int apm_read(apm_info * i)
+int
+apm_read (apm_info * i)
{
FILE *str;
char units[10];
char buffer[100];
int retcode = 0;
- if (!(str = fopen(APM_PROC, "r")))
- return 1;
+ if (!(str = fopen (APM_PROC, "r")))
+ return 1;
- if (fgets(buffer, sizeof(buffer) - 1, str) == NULL)
- printf("fgets error\n");
+ if (fgets (buffer, sizeof (buffer) - 1, str) == NULL)
+ printf ("fgets error\n");
- buffer[sizeof(buffer) - 1] = '\0';
+ buffer[sizeof (buffer) - 1] = '\0';
/* Should check for other driver versions; driver 1.9 (and some
* others) uses this format, which doesn't expose # batteries.
*/
- sscanf(buffer, "%s %d.%d %hx %hx %hx %hx %d%% %d %s\n",
- (char *) i->driver_version,
- &i->apm_version_major,
- &i->apm_version_minor,
- &i->apm_flags,
- &i->ac_line_status,
- &i->battery_status,
- &i->battery_flags,
- &i->battery_percentage,
- &i->battery_time,
- units);
- i->using_minutes = !strncmp(units, "min", 3) ? 1 : 0;
+ sscanf (buffer, "%s %d.%d %hx %hx %hx %hx %d%% %d %s\n",
+ (char *) i->driver_version,
+ &i->apm_version_major,
+ &i->apm_version_minor,
+ &i->apm_flags,
+ &i->ac_line_status,
+ &i->battery_status,
+ &i->battery_flags,
+ &i->battery_percentage,
+ &i->battery_time,
+ units);
+ i->using_minutes = !strncmp (units, "min", 3) ? 1 : 0;
if (i->driver_version[0] == 'B')
- { /* old style. argh. */
+ { /* old style. argh. */
#if !BACKWARD_COMPAT
- retcode = 2;
+ retcode = 2;
#else
- strcpy((char *) i->driver_version, "pre-0.7");
- i->apm_version_major = 0;
- i->apm_version_minor = 0;
- i->apm_flags = 0;
- i->ac_line_status = 0xff;
- i->battery_status = 0xff;
- i->battery_flags = 0xff;
- i->battery_percentage = -1;
- i->battery_time = -1;
- i->using_minutes = 1;
-
- sscanf(buffer, "BIOS version: %d.%d",
- &i->apm_version_major, &i->apm_version_minor);
-
- if (fgets(buffer, sizeof(buffer) - 1, str) == NULL)
- printf("fgets error\n");
-
- sscanf(buffer, "Flags: 0x%02hx", &i->apm_flags);
- if (i->apm_flags & APM_32_BIT_SUPPORT)
- {
- if (fgets(buffer, sizeof(buffer) - 1, str) == NULL)
- printf("fgets error\n");
-
- if (fgets(buffer, sizeof(buffer) - 1, str) == NULL)
- printf("fgets error\n");
-
- if (buffer[0] != 'P')
- {
- if (!strncmp(buffer + 4, "off line", 8))
- i->ac_line_status = 0;
- else if (!strncmp(buffer + 4, "on line", 7))
- i->ac_line_status = 1;
- else if (!strncmp(buffer + 4, "on back", 7))
- i->ac_line_status = 2;
-
- if (fgets(buffer, sizeof(buffer) - 1, str) == NULL)
- printf("fgets error\n");
-
- if (!strncmp(buffer + 16, "high", 4))
- i->battery_status = 0;
- else if (!strncmp(buffer + 16, "low", 3))
- i->battery_status = 1;
- else if (!strncmp(buffer + 16, "crit", 4))
- i->battery_status = 2;
- else if (!strncmp(buffer + 16, "charg", 5))
- i->battery_status = 3;
-
- if (fgets(buffer, sizeof(buffer) - 1, str) == NULL)
- printf("fgets error\n");
-
- if (strncmp(buffer + 14, "unknown", 7))
- i->battery_percentage = atoi(buffer + 14);
- if (i->apm_version_major >= 1 && i->apm_version_minor >= 1)
- {
- if (fgets(buffer, sizeof(buffer) - 1, str) == NULL)
- printf("fgets error\n");
-
- sscanf(buffer, "Battery flag: 0x%02hx", &i->battery_flags);
-
- if (fgets(buffer, sizeof(buffer) - 1, str) == NULL)
- printf("fgets error\n");
-
- if (strncmp(buffer + 14, "unknown", 7))
- i->battery_time = atoi(buffer + 14);
- }
- }
- }
+ strcpy ((char *) i->driver_version, "pre-0.7");
+ i->apm_version_major = 0;
+ i->apm_version_minor = 0;
+ i->apm_flags = 0;
+ i->ac_line_status = 0xff;
+ i->battery_status = 0xff;
+ i->battery_flags = 0xff;
+ i->battery_percentage = -1;
+ i->battery_time = -1;
+ i->using_minutes = 1;
+
+ sscanf (buffer, "BIOS version: %d.%d",
+ &i->apm_version_major, &i->apm_version_minor);
+
+ if (fgets (buffer, sizeof (buffer) - 1, str) == NULL)
+ printf ("fgets error\n");
+
+ sscanf (buffer, "Flags: 0x%02hx", &i->apm_flags);
+ if (i->apm_flags & APM_32_BIT_SUPPORT)
+ {
+ if (fgets (buffer, sizeof (buffer) - 1, str) == NULL)
+ printf ("fgets error\n");
+
+ if (fgets (buffer, sizeof (buffer) - 1, str) == NULL)
+ printf ("fgets error\n");
+
+ if (buffer[0] != 'P')
+ {
+ if (!strncmp (buffer + 4, "off line", 8))
+ i->ac_line_status = 0;
+ else if (!strncmp (buffer + 4, "on line", 7))
+ i->ac_line_status = 1;
+ else if (!strncmp (buffer + 4, "on back", 7))
+ i->ac_line_status = 2;
+
+ if (fgets (buffer, sizeof (buffer) - 1, str) == NULL)
+ printf ("fgets error\n");
+
+ if (!strncmp (buffer + 16, "high", 4))
+ i->battery_status = 0;
+ else if (!strncmp (buffer + 16, "low", 3))
+ i->battery_status = 1;
+ else if (!strncmp (buffer + 16, "crit", 4))
+ i->battery_status = 2;
+ else if (!strncmp (buffer + 16, "charg", 5))
+ i->battery_status = 3;
+
+ if (fgets (buffer, sizeof (buffer) - 1, str) == NULL)
+ printf ("fgets error\n");
+
+ if (strncmp (buffer + 14, "unknown", 7))
+ i->battery_percentage = atoi (buffer + 14);
+ if (i->apm_version_major >= 1 && i->apm_version_minor >= 1)
+ {
+ if (fgets (buffer, sizeof (buffer) - 1, str) == NULL)
+ printf ("fgets error\n");
+
+ sscanf (buffer, "Battery flag: 0x%02hx", &i->battery_flags);
+
+ if (fgets (buffer, sizeof (buffer) - 1, str) == NULL)
+ printf ("fgets error\n");
+
+ if (strncmp (buffer + 14, "unknown", 7))
+ i->battery_time = atoi (buffer + 14);
+ }
+ }
+ }
#endif
}
@@ -159,15 +161,15 @@ int apm_read(apm_info * i)
* set to 0xff (==255) instead of -1.
*/
if (i->battery_percentage > 100)
- i->battery_percentage = -1;
+ i->battery_percentage = -1;
- fclose(str);
+ fclose (str);
return retcode;
}
/* Lookup the device number for the apm_bios device. */
-dev_t apm_dev(void)
+dev_t apm_dev (void)
{
FILE *str;
static int cached = -1;
@@ -176,32 +178,32 @@ dev_t apm_dev(void)
apm_info i;
if (cached >= 0)
- return cached;
+ return cached;
- if (access(APM_PROC, R_OK) || apm_read(&i) == 1)
- return cached = -1;
+ if (access (APM_PROC, R_OK) || apm_read (&i) == 1)
+ return cached = -1;
if (i.driver_version[0] == '1')
- return cached = makedev(10, 134);
+ return cached = makedev (10, 134);
- if (!(str = fopen(APM_DEV, "r")))
- return -1;
- while (fgets(buf, sizeof(buf) - 1, str))
+ if (!(str = fopen (APM_DEV, "r")))
+ return -1;
+ while (fgets (buf, sizeof (buf) - 1, str))
{
- buf[sizeof(buf) - 1] = '\0';
- for (pt = buf; *pt && isspace(*pt); ++pt); /* skip leading spaces */
- for (; *pt && !isspace(*pt); ++pt); /* find next space */
- if (isspace(*pt))
- {
- *pt++ = '\0';
- pt[strlen(pt) - 1] = '\0'; /* get rid of newline */
- if (!strcmp(pt, APM_NAME))
- {
- fclose(str);
- return cached = makedev(atoi(buf), 0);
- }
- }
+ buf[sizeof (buf) - 1] = '\0';
+ for (pt = buf; *pt && isspace (*pt); ++pt); /* skip leading spaces */
+ for (; *pt && !isspace (*pt); ++pt); /* find next space */
+ if (isspace (*pt))
+ {
+ *pt++ = '\0';
+ pt[strlen (pt) - 1] = '\0'; /* get rid of newline */
+ if (!strcmp (pt, APM_NAME))
+ {
+ fclose (str);
+ return cached = makedev (atoi (buf), 0);
+ }
+ }
}
- fclose(str);
+ fclose (str);
return cached = -1;
}
@@ -211,54 +213,55 @@ dev_t apm_dev(void)
* instead of /tmp?
*
* apenwarr 2001/05/11: just throw out the weird temporary device file stuff.
- * It was only for ancient kernel versions anyway.
+ * It was only for ancient kernel versions anyway.
*/
-int apm_open(void)
+int
+apm_open (void)
{
int fd;
apm_info i;
- if (access(APM_PROC, R_OK) || apm_read(&i) == 1)
- return -1;
+ if (access (APM_PROC, R_OK) || apm_read (&i) == 1)
+ return -1;
if (i.driver_version[0] >= '1')
{
- if ((fd = open(APM_DEVICE, O_RDWR)) < 0)
- {
- /* Try to create it. This is reasonable
- * for backward compatibility.
- */
- if (mknod(APM_DEVICE, S_IFCHR | S_IRUSR | S_IWUSR, apm_dev()))
- {
- unlink(APM_DEVICE);
- return -1;
- }
- fd = open(APM_DEVICE, O_RDWR);
- }
-
- return fd;
+ if ((fd = open (APM_DEVICE, O_RDWR)) < 0)
+ {
+ /* Try to create it. This is reasonable
+ * for backward compatibility.
+ */
+ if (mknod (APM_DEVICE, S_IFCHR | S_IRUSR | S_IWUSR, apm_dev ()))
+ {
+ unlink (APM_DEVICE);
+ return -1;
+ }
+ fd = open (APM_DEVICE, O_RDWR);
+ }
+ return fd;
}
-
return -1;
}
/* Given a file descriptor for the apm_bios device, close it. */
-int apm_close(int fd)
+int
+apm_close (int fd)
{
- return close(fd);
+ return close (fd);
}
/* Given a file descriptor for the apm_bios device, this routine will wait
* timeout seconds for APM events. Up to n events will be placed in the
* events queue. The return code will indicate the number of events
- * stored. Since this routine uses select(2), it will return if an
+ * stored. Since this routine uses select (2), it will return if an
* unblocked signal is caught. A timeout < 0 means to block indefinately.
*
* Note that if you read a request to standby or to suspend, the kernel
- * will be waiting for you to respond to it with a call to apm_suspend()
- * or to apm_standby() !
+ * will be waiting for you to respond to it with a call to apm_suspend ()
+ * or to apm_standby () !
*/
-int apm_get_events(int fd, int timeout, apm_event_t * events, int n)
+int
+apm_get_events (int fd, int timeout, apm_event_t * events, int n)
{
int retcode;
fd_set fds;
@@ -267,110 +270,116 @@ int apm_get_events(int fd, int timeout, apm_event_t * events, int n)
t.tv_sec = timeout;
t.tv_usec = 0;
- FD_ZERO(&fds);
- FD_SET(fd, &fds);
- retcode = select(fd + 1, &fds, NULL, NULL, timeout < 0 ? NULL : &t);
+ FD_ZERO (&fds);
+ FD_SET (fd, &fds);
+ retcode = select (fd + 1, &fds, NULL, NULL, timeout < 0 ? NULL : &t);
if (retcode <= 0)
- return 0;
- return read(fd, events, n * sizeof(apm_event_t)) / sizeof(apm_event_t);
+ return 0;
+ return read (fd, events, n * sizeof (apm_event_t)) / sizeof (apm_event_t);
}
/* Try to set the Power State to Suspend. */
-int apm_suspend(int fd)
+int
+apm_suspend (int fd)
{
- sync();
- return ioctl(fd, APM_IOC_SUSPEND, NULL);
+ sync ();
+ return ioctl (fd, APM_IOC_SUSPEND, NULL);
}
/* Try to set the Power State to Standby. */
-int apm_standby(int fd)
+int
+apm_standby (int fd)
{
- sync();
- return ioctl(fd, APM_IOC_STANDBY, NULL);
+ sync ();
+ return ioctl (fd, APM_IOC_STANDBY, NULL);
}
/* Return the last error code generated by the kernel APM driver */
-unsigned int apm_last_error( int fd )
+unsigned int
+apm_last_error ( int fd )
{
int err = 0;
#ifdef APM_IOC_LAST_ERROR
int ierr = 0;
- if ( (ierr = ioctl( fd, APM_IOC_LAST_ERROR, &err)) )
- return ierr;
+ if ((ierr = ioctl (fd, APM_IOC_LAST_ERROR, &err)))
+ return ierr;
#endif
return err;
}
/* Define lookup table for error messages */
typedef struct lookup_t {
- int key;
- char * msg;
+ int key;
+ char* msg;
} lookup_t;
/* APM error messages, arranged by error code */
static const lookup_t error_table[] = {
-/* N/A { APM_SUCCESS, "Operation succeeded" }, */
- { APM_DISABLED, "Power management disabled" },
- { APM_CONNECTED, "Real mode interface already connected" },
- { APM_NOT_CONNECTED, "Interface not connected" },
- { APM_16_CONNECTED, "16 bit interface already connected" },
-/* N/A { APM_16_UNSUPPORTED, "16 bit interface not supported" }, */
- { APM_32_CONNECTED, "32 bit interface already connected" },
- { APM_32_UNSUPPORTED, "32 bit interface not supported" },
- { APM_BAD_DEVICE, "Unrecognized device ID" },
- { APM_BAD_PARAM, "Parameter out of range" },
- { APM_NOT_ENGAGED, "Interface not engaged" },
+/* N/A { APM_SUCCESS, "Operation succeeded" }, */
+ { APM_DISABLED, "Power management disabled" },
+ { APM_CONNECTED, "Real mode interface already connected" },
+ { APM_NOT_CONNECTED, "Interface not connected" },
+ { APM_16_CONNECTED, "16 bit interface already connected" },
+/* N/A { APM_16_UNSUPPORTED, "16 bit interface not supported" }, */
+ { APM_32_CONNECTED, "32 bit interface already connected" },
+ { APM_32_UNSUPPORTED, "32 bit interface not supported" },
+ { APM_BAD_DEVICE, "Unrecognized device ID" },
+ { APM_BAD_PARAM, "Parameter out of range" },
+ { APM_NOT_ENGAGED, "Interface not engaged" },
#ifdef APM_BAD_FUNCTION
- { APM_BAD_FUNCTION, "Function not supported" },
+ { APM_BAD_FUNCTION, "Function not supported" },
#endif
#ifdef APM_RESUME_DISABLED
- { APM_RESUME_DISABLED, "Resume timer disabled" },
+ { APM_RESUME_DISABLED, "Resume timer disabled" },
#endif
- { APM_BAD_STATE, "Unable to enter requested state" },
-/* N/A { APM_NO_EVENTS, "No events pending" }, */
- { APM_NOT_PRESENT, "No APM present" }
+ { APM_BAD_STATE, "Unable to enter requested state" },
+/* N/A { APM_NO_EVENTS, "No events pending" }, */
+ { APM_NOT_PRESENT, "No APM present" }
};
-#define ERROR_COUNT (sizeof(error_table)/sizeof(lookup_t))
+#define ERROR_COUNT (sizeof(error_table)/sizeof(lookup_t))
/* Return character string describing error messages from APM kernel */
-const char *apm_error_name( unsigned int err )
+const char *
+apm_error_name (unsigned int err)
{
int i;
- for(i=0; i<ERROR_COUNT; i++)
- if(err == error_table[i].key) return(error_table[i].msg);
+ for (i=0; i<ERROR_COUNT; i++)
+ if (err == error_table[i].key) return (error_table[i].msg);
return "Unknown error";
}
-int apm_reject( int fd )
+int
+apm_reject (int fd)
{
#ifdef APM_IOC_REJECT
- if ( ioctl( fd, APM_IOC_REJECT, NULL ) )
- return apm_last_error( fd );
+ if (ioctl fd, APM_IOC_REJECT, NULL ))
+ return apm_last_error (fd);
else
#endif
- return 0;
+ return 0;
}
-#ifdef APM_IOC_IGNORE /* detect kernel support of IGNORE/NOIGNORE functions */
-int apm_set_ignore(int fd, int mode)
+#ifdef APM_IOC_IGNORE /* detect kernel support of IGNORE/NOIGNORE functions */
+int
+apm_set_ignore (int fd, int mode)
/* Ignore Standby. */
{
if (mode == IGNORE)
{
- printf("Telling kernel to ignore system standby/suspend mode\n");
- return ioctl(fd, APM_IOC_IGNORE, NULL);
+ printf ("Telling kernel to ignore system standby/suspend mode\n");
+ return ioctl (fd, APM_IOC_IGNORE, NULL);
}
else
{
- printf("Telling kernel not to ignore system standby/suspend mode\n");
- return ioctl(fd, APM_IOC_NOIGNORE, NULL);
+ printf ("Telling kernel not to ignore system standby/suspend mode\n");
+ return ioctl (fd, APM_IOC_NOIGNORE, NULL);
}
- printf("NOTE: User-generated suspend/standby requests are not ignored\n");
+ printf ("NOTE: User-generated suspend/standby requests are not ignored\n");
}
#endif
@@ -381,35 +390,36 @@ int apm_set_ignore(int fd, int mode)
*
* Updated to APM BIOS 1.2 spec (February 1996). Available on-line.
*/
-const char *apm_event_name(apm_event_t event)
+const char *
+apm_event_name (apm_event_t event)
{
switch (event)
{
case APM_SYS_STANDBY:
- return "System Standby Request";
+ return "System Standby Request";
case APM_SYS_SUSPEND:
- return "System Suspend Request";
+ return "System Suspend Request";
case APM_NORMAL_RESUME:
- return "Normal Resume System";
+ return "Normal Resume System";
case APM_CRITICAL_RESUME:
- return "Critical Resume System";
+ return "Critical Resume System";
case APM_LOW_BATTERY:
- return "Battery Low";
+ return "Battery Low";
case APM_POWER_STATUS_CHANGE:
- return "Power Status Change";
+ return "Power Status Change";
case APM_UPDATE_TIME:
- return "Update Time";
+ return "Update Time";
case APM_CRITICAL_SUSPEND:
- return "Critical Suspend";
+ return "Critical Suspend";
case APM_USER_STANDBY:
- return "User System Standby Request";
+ return "User System Standby Request";
case APM_USER_SUSPEND:
- return "User System Suspend Request";
+ return "User System Suspend Request";
case APM_STANDBY_RESUME:
- return "System Standby Resume";
+ return "System Standby Resume";
#ifdef APM_CAPABILITY_CHANGE
case APM_CAPABILITY_CHANGE:
- return "Capability Change";
+ return "Capability Change";
#endif
}
return "Unknown";
@@ -424,12 +434,14 @@ const char *apm_event_name(apm_event_t event)
#define SEC_PER_HOUR (60*60)
#define SEC_PER_MIN (60)
-const char *apm_delta_time(time_t then, time_t now)
+const char *
+apm_delta_time (time_t then, time_t now)
{
- return apm_time(now - then);
+ return apm_time (now - then);
}
-const char *apm_time(time_t t)
+const char *
+apm_time (time_t t)
{
static char buffer[128];
unsigned long s, m, h, d;
@@ -443,18 +455,19 @@ const char *apm_time(time_t t)
s = t;
if (d)
- sprintf(buffer, "%lu day%s, %02lu:%02lu:%02lu",
- d, d > 1 ? "s" : "", h, m, s);
+ sprintf (buffer, "%lu day%s, %02lu:%02lu:%02lu",
+ d, d > 1 ? "s" : "", h, m, s);
else
- sprintf(buffer, "%02lu:%02lu:%02lu", h, m, s);
+ sprintf (buffer, "%02lu:%02lu:%02lu", h, m, s);
if (t == -1)
- sprintf(buffer, "unknown");
+ sprintf (buffer, "unknown");
return buffer;
}
-const char *apm_time_nosec(time_t t)
+const char *
+apm_time_nosec (time_t t)
{
static char buffer[128];
unsigned long s, m, h, d;
@@ -468,16 +481,16 @@ const char *apm_time_nosec(time_t t)
s = t;
if (s > 30)
- ++m;
+ ++m;
if (d)
- sprintf(buffer, "%lu day%s, %lu:%02lu",
- d, d > 1 ? "s" : "", h, m);
+ sprintf (buffer, "%lu day%s, %lu:%02lu",
+ d, d > 1 ? "s" : "", h, m);
else
- sprintf(buffer, "%lu:%02lu", h, m);
+ sprintf (buffer, "%lu:%02lu", h, m);
if (t == -1)
- sprintf(buffer, "unknown");
+ sprintf (buffer, "unknown");
return buffer;
}
diff --git a/battstat/battstat-upower.c b/battstat/battstat-upower.c
index 2a3c6541..788adfd4 100644
--- a/battstat/battstat-upower.c
+++ b/battstat/battstat-upower.c
@@ -34,7 +34,7 @@ static UpClient *upc;
static void (*status_updated_callback) (void);
-/* status_updated_callback() can not be called directly because at the time of
+/* status_updated_callback () can not be called directly because at the time of
* the device-remove signal, the device is not actually removed from the list
* of devices known to the up_client object (see libupower-glib/up-client.c in
* upower). Waiting for the next idle timer works around this issue and has has
@@ -64,12 +64,12 @@ schedule_status_callback (void)
static void
device_cb (UpClient *client, UpDevice *device, gpointer user_data) {
- schedule_status_callback();
+ schedule_status_callback ();
}
static void
device_removed_cb (UpClient *client, const gchar *object_path, gpointer user_data) {
- schedule_status_callback();
+ schedule_status_callback ();
}
/* ---- public functions ---- */
@@ -79,10 +79,10 @@ battstat_upower_initialise (void (*callback) (void))
{
status_updated_callback = callback;
- if( upc != NULL )
- return g_strdup( "Already initialised!" );
+ if (upc != NULL)
+ return g_strdup ("Already initialised!");
- if( (upc = up_client_new() ) == NULL )
+ if ((upc = up_client_new ()) == NULL)
goto error_out;
GPtrArray *devices;
@@ -90,15 +90,15 @@ battstat_upower_initialise (void (*callback) (void))
if (!devices) {
goto error_shutdownclient;
}
- g_ptr_array_unref(devices);
+ g_ptr_array_unref (devices);
- g_signal_connect_after( upc, "device-added", G_CALLBACK (device_cb), NULL );
- g_signal_connect_after( upc, "device-removed", G_CALLBACK (device_removed_cb), NULL );
+ g_signal_connect_after (upc, "device-added", G_CALLBACK (device_cb), NULL);
+ g_signal_connect_after (upc, "device-removed", G_CALLBACK (device_removed_cb), NULL);
return NULL;
error_shutdownclient:
- g_object_unref( upc );
+ g_object_unref (upc);
upc = NULL;
error_out:
@@ -106,12 +106,12 @@ error_out:
}
void
-battstat_upower_cleanup( void )
+battstat_upower_cleanup (void)
{
- if( upc == NULL )
+ if (upc == NULL)
return;
- g_object_unref( upc );
+ g_object_unref (upc);
upc = NULL;
}
@@ -130,14 +130,14 @@ battstat_upower_cleanup( void )
* http://lists.freedesktop.org/archives/hal/2005-July/002841.html
*/
void
-battstat_upower_get_battery_info( BatteryStatus *status )
+battstat_upower_get_battery_info (BatteryStatus *status)
{
GPtrArray *devices = up_client_get_devices2 (upc);
/* The calculation to get overall percentage power remaining is as follows:
*
- * Sum( Current charges ) / Sum( Full Capacities )
+ * Sum (Current charges) / Sum (Full Capacities)
*
* We can't just take an average of all of the percentages since this
* doesn't deal with the case that one battery might have a larger
@@ -179,15 +179,15 @@ battstat_upower_get_battery_info( BatteryStatus *status )
/* For each physical battery bay... */
int i;
- for( i = 0; i < devices->len; i++ )
+ for (i = 0; i < devices->len; i++)
{
- UpDevice *upd = g_ptr_array_index( devices, i );
+ UpDevice *upd = g_ptr_array_index (devices, i);
int type, state;
double current_charge, full_capacity, rate;
gint64 time_to_full, time_to_empty;
- g_object_get( upd,
+ g_object_get (upd,
"kind", &type,
"state", &state,
"energy", &current_charge,
@@ -195,7 +195,7 @@ battstat_upower_get_battery_info( BatteryStatus *status )
"energy-rate", &rate,
"time-to-full", &time_to_full,
"time-to-empty", &time_to_empty,
- NULL );
+ NULL);
/* Only count batteries here */
@@ -206,11 +206,11 @@ battstat_upower_get_battery_info( BatteryStatus *status )
present++;
/* At least one battery charging -> composite battery is charging. */
- if( state == UP_DEVICE_STATE_CHARGING )
+ if (state == UP_DEVICE_STATE_CHARGING)
charging = 1;
/* At least one battery is discharging -> we're not on AC. */
- if( state == UP_DEVICE_STATE_DISCHARGING )
+ if (state == UP_DEVICE_STATE_DISCHARGING)
on_ac_power = 0;
/* Sum the totals for current charge, design capacity, (dis)charge rate. */
@@ -222,7 +222,7 @@ battstat_upower_get_battery_info( BatteryStatus *status )
remaining_time = (state == UP_DEVICE_STATE_DISCHARGING ? time_to_empty : time_to_full);
}
- if( !present || full_capacity_total <= 0 || (charging && !on_ac_power) )
+ if (!present || full_capacity_total <= 0 || (charging && !on_ac_power))
{
/* Either no battery is present or something has gone horribly wrong.
* In either case we must return that the composite battery is not
@@ -234,7 +234,7 @@ battstat_upower_get_battery_info( BatteryStatus *status )
status->on_ac_power = TRUE;
status->charging = FALSE;
- g_ptr_array_unref( devices );
+ g_ptr_array_unref (devices);
return;
}
@@ -243,11 +243,11 @@ battstat_upower_get_battery_info( BatteryStatus *status )
/* As per above, overall charge is:
*
- * Sum( Current charges ) / Sum( Full Capacities )
+ * Sum (Current charges) / Sum (Full Capacities)
*/
- status->percent = ( current_charge_total / full_capacity_total ) * 100.0 + 0.5;
+ status->percent = (current_charge_total / full_capacity_total) * 100.0 + 0.5;
- if( present == 1 )
+ if (present == 1)
{
/* In the case of exactly one battery, report the time remaining figure
* from upower directly since it might have come from an authorative source
@@ -258,13 +258,13 @@ battstat_upower_get_battery_info( BatteryStatus *status )
* unknown time remaining.
*/
- if( remaining_time == 0 )
+ if (remaining_time == 0)
status->minutes = -1;
else
status->minutes = (remaining_time + 30) / 60;
}
/* Rest of cases to deal with multiple battery systems... */
- else if( !on_ac_power && rate_total != 0 )
+ else if (!on_ac_power && rate_total != 0)
{
/* Then we're discharging. Calculate time remaining until at zero. */
@@ -272,9 +272,9 @@ battstat_upower_get_battery_info( BatteryStatus *status )
remaining = current_charge_total;
remaining /= rate_total;
- status->minutes = (int) floor( remaining * 60.0 + 0.5 );
+ status->minutes = (int) floor (remaining * 60.0 + 0.5);
}
- else if( charging && rate_total != 0 )
+ else if (charging && rate_total != 0)
{
/* Calculate time remaining until charged. For systems with more than
* one battery, this code is very approximate. The assumption is that if
@@ -286,11 +286,11 @@ battstat_upower_get_battery_info( BatteryStatus *status )
double remaining;
remaining = full_capacity_total - current_charge_total;
- if( remaining < 0 )
+ if (remaining < 0)
remaining = 0;
remaining /= rate_total;
- status->minutes = (int) floor( remaining * 60.0 + 0.5 );
+ status->minutes = (int) floor (remaining * 60.0 + 0.5);
}
else
{
@@ -302,27 +302,27 @@ battstat_upower_get_battery_info( BatteryStatus *status )
status->charging = charging;
status->on_ac_power = on_ac_power;
- g_ptr_array_unref( devices );
+ g_ptr_array_unref (devices);
}
void
-error_dialog( const char *fmt , ...)
+error_dialog (const char *fmt , ...)
{
va_list ap;
- va_start(ap, fmt);
+ va_start (ap, fmt);
char str[1000];
- vsprintf(str, fmt, ap);
- va_end(ap);
+ vsprintf (str, fmt, ap);
+ va_end (ap);
GtkWidget *dialog;
- dialog = gtk_message_dialog_new( NULL, 0, GTK_MESSAGE_ERROR,
+ dialog = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR,
GTK_BUTTONS_OK, "%s", str);
- g_signal_connect_swapped( G_OBJECT (dialog), "response",
+ g_signal_connect_swapped (G_OBJECT (dialog), "response",
G_CALLBACK (gtk_widget_destroy),
- G_OBJECT (dialog) );
+ G_OBJECT (dialog));
- gtk_widget_show_all( dialog );
+ gtk_widget_show_all (dialog);
}
#endif /* HAVE_UPOWER */
diff --git a/battstat/battstat.h b/battstat/battstat.h
index d0d4e402..77ff8f10 100644
--- a/battstat/battstat.h
+++ b/battstat/battstat.h
@@ -142,15 +142,15 @@ typedef struct _ProgressData {
} ProgressData;
/* battstat_applet.c */
-void reconfigure_layout( ProgressData *battstat );
-void battstat_show_help( ProgressData *battstat, const char *section );
+void reconfigure_layout (ProgressData *battstat);
+void battstat_show_help (ProgressData *battstat, const char *section);
void prop_cb (GtkAction *, ProgressData *);
/* power-management.c */
-const char *power_management_getinfo( BatteryStatus *status );
+const char *power_management_getinfo (BatteryStatus *status);
const char *power_management_initialise (void (*callback) (void));
-void power_management_cleanup( void );
+void power_management_cleanup (void);
-int power_management_using_upower( void );
+int power_management_using_upower (void);
#endif /* _battstat_h_ */
diff --git a/battstat/battstat_applet.c b/battstat/battstat_applet.c
index 7f3838ed..a369612c 100644
--- a/battstat/battstat_applet.c
+++ b/battstat/battstat_applet.c
@@ -50,19 +50,21 @@
#define BATTSTAT_SCHEMA "org.mate.panel.applet.battstat"
static gboolean check_for_updates (gpointer data);
-static void about_cb( GtkAction *, ProgressData * );
-static void help_cb( GtkAction *, ProgressData * );
+
+static void about_cb (GtkAction *, ProgressData *);
+
+static void help_cb (GtkAction *, ProgressData *);
static const GtkActionEntry battstat_menu_actions [] = {
- { "BattstatProperties", "document-properties", N_("_Preferences"),
- NULL, NULL,
- G_CALLBACK (prop_cb) },
- { "BattstatHelp", "help-browser", N_("_Help"),
- NULL, NULL,
- G_CALLBACK (help_cb) },
- { "BattstatAbout", "help-about", N_("_About"),
- NULL, NULL,
- G_CALLBACK (about_cb) }
+ { "BattstatProperties", "document-properties", N_("_Preferences"),
+ NULL, NULL,
+ G_CALLBACK (prop_cb) },
+ { "BattstatHelp", "help-browser", N_("_Help"),
+ NULL, NULL,
+ G_CALLBACK (help_cb) },
+ { "BattstatAbout", "help-about", N_("_About"),
+ NULL, NULL,
+ G_CALLBACK (about_cb) }
};
#define AC_POWER_STRING _("System is running on AC power")
@@ -78,22 +80,22 @@ static GSList *instances;
static void
status_change_callback (void)
{
- GSList *instance;
+ GSList *instance;
- for (instance = instances; instance; instance = instance->next)
- {
- ProgressData *battstat = instance->data;
-
- if (battstat->timeout_id)
+ for (instance = instances; instance; instance = instance->next)
{
- g_source_remove (battstat->timeout_id);
- battstat->timeout_id = 0;
- }
+ ProgressData *battstat = instance->data;
- check_for_updates (battstat);
- }
+ if (battstat->timeout_id)
+ {
+ g_source_remove (battstat->timeout_id);
+ battstat->timeout_id = 0;
+ }
+
+ check_for_updates (battstat);
+ }
- event_driven = TRUE;
+ event_driven = TRUE;
}
/* The following two functions keep track of how many instances of the applet
@@ -108,214 +110,215 @@ status_change_callback (void)
static const char *
static_global_initialisation (ProgressData *battstat)
{
- gboolean first_time;
- const char *err;
+ gboolean first_time;
+ const char *err;
- first_time = !instances;
+ first_time = !instances;
- instances = g_slist_prepend (instances, battstat);
+ instances = g_slist_prepend (instances, battstat);
- if (!first_time)
- return NULL;
+ if (!first_time)
+ return NULL;
- err = power_management_initialise (status_change_callback);
+ err = power_management_initialise (status_change_callback);
- return err;
+ return err;
}
static void
static_global_teardown (ProgressData *battstat)
{
- instances = g_slist_remove (instances, battstat);
+ instances = g_slist_remove (instances, battstat);
- /* remaining instances... */
- if (instances)
- return;
+ /* remaining instances... */
+ if (instances)
+ return;
- /* instances == 0 */
+ /* instances == 0 */
- power_management_cleanup();
+ power_management_cleanup ();
}
/* Pop up an error dialog on the same screen as 'applet' saying 'msg'.
*/
static void
-battstat_error_dialog( GtkWidget *applet, const char *msg )
+battstat_error_dialog (GtkWidget *applet,
+ const char *msg)
{
- GtkWidget *dialog;
+ GtkWidget *dialog;
- dialog = gtk_message_dialog_new( NULL, 0, GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK, "%s", msg);
+ dialog = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK, "%s", msg);
- gtk_window_set_screen( GTK_WINDOW (dialog),
- gtk_widget_get_screen (GTK_WIDGET (applet)) );
+ gtk_window_set_screen (GTK_WINDOW (dialog),
+ gtk_widget_get_screen (GTK_WIDGET (applet)));
- g_signal_connect_swapped( G_OBJECT (dialog), "response",
- G_CALLBACK (gtk_widget_destroy),
- G_OBJECT (dialog) );
+ g_signal_connect_swapped (G_OBJECT (dialog), "response",
+ G_CALLBACK (gtk_widget_destroy),
+ G_OBJECT (dialog));
- gtk_widget_show_all( dialog );
+ gtk_widget_show_all (dialog);
}
/* Format a string describing how much time is left to fully (dis)charge
- the battery. The return value must be g_free()d.
+ the battery. The return value must be g_free ()d.
*/
static char *
get_remaining (BatteryStatus *info)
{
- int hours;
- int mins;
-
- hours = info->minutes / 60;
- mins = info->minutes % 60;
-
- if (info->on_ac_power && !info->charging)
- return g_strdup_printf (_("Battery charged (%d%%)"), info->percent);
- else if (info->minutes < 0 && !info->on_ac_power)
- return g_strdup_printf (_("Unknown time (%d%%) remaining"), info->percent);
- else if (info->minutes < 0 && info->on_ac_power)
- return g_strdup_printf (_("Unknown time (%d%%) until charged"), info->percent);
- else
- if (hours == 0)
- if (!info->on_ac_power)
- return g_strdup_printf (ngettext (
- "%d minute (%d%%) remaining",
- "%d minutes (%d%%) remaining",
- mins), mins, info->percent);
- else
- return g_strdup_printf (ngettext (
- "%d minute until charged (%d%%)",
- "%d minutes until charged (%d%%)",
- mins), mins, info->percent);
- else if (mins == 0)
- if (!info->on_ac_power)
- return g_strdup_printf (ngettext (
- "%d hour (%d%%) remaining",
- "%d hours (%d%%) remaining",
- hours), hours, info->percent);
- else
- return g_strdup_printf (ngettext (
- "%d hour until charged (%d%%)",
- "%d hours until charged (%d%%)",
- hours), hours, info->percent);
- else
- if (!info->on_ac_power)
- /* TRANSLATOR: "%d %s %d %s" are "%d hours %d minutes"
- * Swap order with "%2$s %2$d %1$s %1$d if needed */
- return g_strdup_printf (_("%d %s %d %s (%d%%) remaining"),
- hours, ngettext ("hour", "hours", hours),
- mins, ngettext ("minute", "minutes", mins),
- info->percent);
- else
- /* TRANSLATOR: "%d %s %d %s" are "%d hours %d minutes"
- * Swap order with "%2$s %2$d %1$s %1$d if needed */
- return g_strdup_printf (_("%d %s %d %s until charged (%d%%)"),
- hours, ngettext ("hour", "hours", hours),
- mins, ngettext ("minute", "minutes", mins),
- info->percent);
+ int hours;
+ int mins;
+
+ hours = info->minutes / 60;
+ mins = info->minutes % 60;
+
+ if (info->on_ac_power && !info->charging)
+ return g_strdup_printf (_("Battery charged (%d%%)"), info->percent);
+ else if (info->minutes < 0 && !info->on_ac_power)
+ return g_strdup_printf (_("Unknown time (%d%%) remaining"), info->percent);
+ else if (info->minutes < 0 && info->on_ac_power)
+ return g_strdup_printf (_("Unknown time (%d%%) until charged"), info->percent);
+ else
+ if (hours == 0)
+ if (!info->on_ac_power)
+ return g_strdup_printf (ngettext (
+ "%d minute (%d%%) remaining",
+ "%d minutes (%d%%) remaining",
+ mins), mins, info->percent);
+ else
+ return g_strdup_printf (ngettext (
+ "%d minute until charged (%d%%)",
+ "%d minutes until charged (%d%%)",
+ mins), mins, info->percent);
+ else if (mins == 0)
+ if (!info->on_ac_power)
+ return g_strdup_printf (ngettext (
+ "%d hour (%d%%) remaining",
+ "%d hours (%d%%) remaining",
+ hours), hours, info->percent);
+ else
+ return g_strdup_printf (ngettext (
+ "%d hour until charged (%d%%)",
+ "%d hours until charged (%d%%)",
+ hours), hours, info->percent);
+ else
+ if (!info->on_ac_power)
+ /* TRANSLATOR: "%d %s %d %s" are "%d hours %d minutes"
+ * Swap order with "%2$s %2$d %1$s %1$d if needed */
+ return g_strdup_printf (_("%d %s %d %s (%d%%) remaining"),
+ hours, ngettext ("hour", "hours", hours),
+ mins, ngettext ("minute", "minutes", mins),
+ info->percent);
+ else
+ /* TRANSLATOR: "%d %s %d %s" are "%d hours %d minutes"
+ * Swap order with "%2$s %2$d %1$s %1$d if needed */
+ return g_strdup_printf (_("%d %s %d %s until charged (%d%%)"),
+ hours, ngettext ("hour", "hours", hours),
+ mins, ngettext ("minute", "minutes", mins),
+ info->percent);
}
static gboolean
battery_full_notify (GtkWidget *applet)
{
#ifdef HAVE_LIBNOTIFY
- GError *error = NULL;
- GdkPixbuf *icon;
- gboolean result;
+ GError *error = NULL;
+ GdkPixbuf *icon;
+ gboolean result;
- if (!notify_is_initted () && !notify_init (_("Battery Monitor")))
- return FALSE;
+ if (!notify_is_initted () && !notify_init (_("Battery Monitor")))
+ return FALSE;
- 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);
+ 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);
+ NotifyNotification *n = notify_notification_new (_("Your battery is now fully recharged"),
+ "", /* "battery" */ NULL);
- notify_notification_set_image_from_pixbuf (n, icon);
- g_object_unref (icon);
+ notify_notification_set_image_from_pixbuf (n, icon);
+ g_object_unref (icon);
- result = notify_notification_show (n, &error);
+ result = notify_notification_show (n, &error);
- if (error)
- {
- g_warning ("%s", error->message);
- g_error_free (error);
- }
+ if (error)
+ {
+ g_warning ("%s", error->message);
+ g_error_free (error);
+ }
- g_object_unref (G_OBJECT (n));
+ g_object_unref (G_OBJECT (n));
- return result;
+ return result;
#else
- return FALSE;
+ return FALSE;
#endif
}
-/* Show a dialog notifying the user that their battery is done charging.
- */
+/* Show a dialog notifying the user that their battery is done charging. */
static void
battery_full_dialog (GtkWidget *applet)
{
/* first attempt to use libnotify */
- if (battery_full_notify (applet))
- return;
-
- GtkWidget *dialog, *hbox, *image, *label;
- cairo_surface_t *surface;
-
- gchar *new_label;
- dialog = gtk_dialog_new_with_buttons (
- _("Battery Notice"),
- NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- "gtk-ok",
- GTK_RESPONSE_ACCEPT,
- NULL);
- g_signal_connect_swapped (G_OBJECT (dialog), "response",
- G_CALLBACK (gtk_widget_destroy),
- G_OBJECT (dialog));
-
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- 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_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>",
- _("Your battery is now fully recharged"));
- label = gtk_label_new (new_label);
- g_free (new_label);
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
- gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
- gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 6);
- gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), hbox);
- gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE);
- gtk_window_stick (GTK_WINDOW (dialog));
- gtk_window_set_skip_pager_hint (GTK_WINDOW (dialog), TRUE);
- gtk_window_set_focus_on_map (GTK_WINDOW (dialog), FALSE);
- gtk_widget_show_all (dialog);
+ if (battery_full_notify (applet))
+ return;
+
+ GtkWidget *dialog, *hbox, *image, *label;
+ cairo_surface_t *surface;
+
+ gchar *new_label;
+ dialog = gtk_dialog_new_with_buttons (_("Battery Notice"),
+ NULL,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ "gtk-ok",
+ GTK_RESPONSE_ACCEPT,
+ NULL);
+ g_signal_connect_swapped (G_OBJECT (dialog),
+ "response",
+ G_CALLBACK (gtk_widget_destroy),
+ G_OBJECT (dialog));
+
+ gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ 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_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>",
+ _("Your battery is now fully recharged"));
+
+ label = gtk_label_new (new_label);
+ g_free (new_label);
+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+ gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 6);
+ gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
+ hbox);
+ gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE);
+ gtk_window_stick (GTK_WINDOW (dialog));
+ gtk_window_set_skip_pager_hint (GTK_WINDOW (dialog), TRUE);
+ gtk_window_set_focus_on_map (GTK_WINDOW (dialog), FALSE);
+ gtk_widget_show_all (dialog);
}
/* Destroy the low battery notification dialog and mark it as such.
*/
static void
-battery_low_dialog_destroy( ProgressData *battstat )
+battery_low_dialog_destroy (ProgressData *battstat)
{
- gtk_widget_destroy( battstat->battery_low_dialog );
- battstat->battery_low_dialog = NULL;
- battstat->battery_low_label = NULL;
+ gtk_widget_destroy (battstat->battery_low_dialog);
+ battstat->battery_low_dialog = NULL;
+ battstat->battery_low_label = NULL;
}
/* Determine if suspend is unsupported. For the time being this involves
@@ -323,221 +326,226 @@ battery_low_dialog_destroy( ProgressData *battstat )
*/
/* #define HAVE_PMI */
static gboolean
-is_suspend_unavailable( void )
+is_suspend_unavailable (void)
{
#ifdef HAVE_PMI
- int status;
+ int status;
- status = system( "pmi query suspend" );
+ status = system ("pmi query suspend");
- /* -1 - fail (pmi unavailable?). return 'false' since we don't know.
- * 0 - success (can suspend). return 'false' since not unavailable.
- * 1 - success (cannot suspend). return 'true' since unavailable.
- */
- if( WEXITSTATUS( status ) == 1 )
- return TRUE;
- else
- return FALSE;
+ /* -1 - fail (pmi unavailable?). return 'false' since we don't know.
+ * 0 - success (can suspend). return 'false' since not unavailable.
+ * 1 - success (cannot suspend). return 'true' since unavailable.
+ */
+ if (WEXITSTATUS (status) == 1 )
+ return TRUE;
+ else
+ return FALSE;
#else
- return FALSE; /* return 'false' since we don't know. */
+ return FALSE; /* return 'false' since we don't know. */
#endif
}
/* Update the text label in the battery low dialog.
*/
static void
-battery_low_update_text( ProgressData *battstat, BatteryStatus *info )
+battery_low_update_text (ProgressData *battstat,
+ BatteryStatus *info)
{
- const char *suggest;
- gchar *remaining, *new_label;
- GtkRequisition size;
-
- /* If we're not displaying the dialog then don't update it. */
- if( battstat->battery_low_label == NULL ||
- battstat->battery_low_dialog == NULL )
- return;
-
- gtk_widget_get_preferred_size (GTK_WIDGET (battstat->battery_low_label), NULL, &size);
-
- /* If the label has never been set before, the width will be 0. If it
- has been set before (width > 0) then we want to keep the size of
- the old widget (to keep the dialog from changing sizes) so we set it
- explicitly here.
- */
- if( size.width > 0 )
- gtk_widget_set_size_request( GTK_WIDGET( battstat->battery_low_label ),
- size.width, size.height );
-
- if (info->minutes < 0 && !info->on_ac_power)
- {
- /* we don't know the remaining time */
- remaining = g_strdup_printf (_("You have %d%% of your total battery "
- "capacity remaining."), info->percent);
- }
- else
- {
- remaining = g_strdup_printf( ngettext(
- "You have %d minute of battery power "
- "remaining (%d%% of the total capacity).",
- "You have %d minutes of battery power "
- "remaining (%d%% of the total capacity).",
- info->minutes ),
- info->minutes,info->percent );
- }
-
- if( is_suspend_unavailable() )
+ const char *suggest;
+ gchar *remaining, *new_label;
+ GtkRequisition size;
+
+ /* If we're not displaying the dialog then don't update it. */
+ if (battstat->battery_low_label == NULL ||
+ battstat->battery_low_dialog == NULL)
+ return;
+
+ gtk_widget_get_preferred_size (GTK_WIDGET (battstat->battery_low_label), NULL, &size);
+
+ /* If the label has never been set before, the width will be 0. If it
+ has been set before (width > 0) then we want to keep the size of
+ the old widget (to keep the dialog from changing sizes) so we set it
+ explicitly here.
+ */
+ if (size.width > 0)
+ gtk_widget_set_size_request (GTK_WIDGET (battstat->battery_low_label),
+ size.width, size.height);
+
+ if (info->minutes < 0 && !info->on_ac_power)
+ {
+ /* we don't know the remaining time */
+ remaining = g_strdup_printf (_("You have %d%% of your total battery"
+ "capacity remaining."), info->percent);
+ }
+ else
+ {
+ remaining = g_strdup_printf (ngettext ("You have %d minute of battery power "
+ "remaining (%d%% of the total capacity).",
+ "You have %d minutes of battery power "
+ "remaining (%d%% of the total capacity).",
+ info->minutes),
+ info->minutes,
+ info->percent);
+ }
+
+ if (is_suspend_unavailable ())
/* TRANSLATORS: this is a list, it is left as a single string
* to allow you to make it appear like a list would in your
* locale. This is if the laptop does not support suspend. */
- suggest = _("To avoid losing your work:\n"
- " \xE2\x80\xA2 plug your laptop into external power, or\n"
- " \xE2\x80\xA2 save open documents and shut your laptop down."
- );
- else
+ suggest = _("To avoid losing your work:\n"
+ " \xE2\x80\xA2 plug your laptop into external power, or\n"
+ " \xE2\x80\xA2 save open documents and shut your laptop down.");
+ else
/* TRANSLATORS: this is a list, it is left as a single string
* to allow you to make it appear like a list would in your
* locale. This is if the laptop supports suspend. */
- suggest = _("To avoid losing your work:\n"
- " \xE2\x80\xA2 suspend your laptop to save power,\n"
- " \xE2\x80\xA2 plug your laptop into external power, or\n"
- " \xE2\x80\xA2 save open documents and shut your laptop down."
- );
-
- new_label = g_strdup_printf(
- "<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s\n\n%s",
- _("Your battery is running low"), remaining, suggest );
-
- gtk_label_set_markup( battstat->battery_low_label, new_label );
- g_free( remaining );
- g_free( new_label );
+ suggest = _("To avoid losing your work:\n"
+ " \xE2\x80\xA2 suspend your laptop to save power,\n"
+ " \xE2\x80\xA2 plug your laptop into external power, or\n"
+ " \xE2\x80\xA2 save open documents and shut your laptop down.");
+
+ new_label = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s\n\n%s",
+ _("Your battery is running low"), remaining, suggest);
+
+ gtk_label_set_markup (battstat->battery_low_label, new_label);
+ g_free (remaining);
+ g_free (new_label);
}
/* Show a dialog notifying the user that their battery is running low.
*/
static void
-battery_low_dialog( ProgressData *battery, BatteryStatus *info )
+battery_low_dialog (ProgressData *battery,
+ BatteryStatus *info)
{
- GtkWidget *hbox, *image, *label;
- GtkWidget *vbox;
- cairo_surface_t *surface;
-
- /* If the dialog is already displayed then don't display it again. */
- if( battery->battery_low_dialog != NULL )
- return;
-
- battery->battery_low_dialog = gtk_dialog_new_with_buttons (
- _("Battery Notice"),
- NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- "gtk-ok",
- GTK_RESPONSE_ACCEPT,
- NULL);
- gtk_dialog_set_default_response( GTK_DIALOG (battery->battery_low_dialog),
- GTK_RESPONSE_ACCEPT );
-
- g_signal_connect_swapped( G_OBJECT (battery->battery_low_dialog),
- "response",
- G_CALLBACK (battery_low_dialog_destroy),
- battery );
-
- gtk_container_set_border_width (GTK_CONTAINER (battery->battery_low_dialog),
- 6);
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
- 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_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);
- label = gtk_label_new ("");
- battery->battery_low_label = GTK_LABEL( label );
- gtk_label_set_line_wrap( battery->battery_low_label, TRUE );
- gtk_label_set_selectable( battery->battery_low_label, TRUE );
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 6);
- gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (battery->battery_low_dialog))), hbox);
-
- gtk_window_set_keep_above (GTK_WINDOW (battery->battery_low_dialog), TRUE);
- gtk_window_stick (GTK_WINDOW (battery->battery_low_dialog));
- gtk_window_set_focus_on_map (GTK_WINDOW (battery->battery_low_dialog),
- FALSE);
- gtk_window_set_skip_pager_hint (GTK_WINDOW (battery->battery_low_dialog),
- TRUE);
-
- battery_low_update_text( battery, info );
-
- gtk_window_set_position (GTK_WINDOW (battery->battery_low_dialog),
- GTK_WIN_POS_CENTER);
- gtk_widget_show_all (battery->battery_low_dialog);
+ GtkWidget *hbox, *image, *label;
+ GtkWidget *vbox;
+ cairo_surface_t *surface;
+
+ /* If the dialog is already displayed then don't display it again. */
+ if (battery->battery_low_dialog != NULL)
+ return;
+
+ battery->battery_low_dialog =
+ gtk_dialog_new_with_buttons (_("Battery Notice"),
+ NULL,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ "gtk-ok",
+ GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ gtk_dialog_set_default_response (GTK_DIALOG (battery->battery_low_dialog),
+ GTK_RESPONSE_ACCEPT);
+
+ g_signal_connect_swapped (G_OBJECT (battery->battery_low_dialog),
+ "response",
+ G_CALLBACK (battery_low_dialog_destroy),
+ battery);
+
+ gtk_container_set_border_width (GTK_CONTAINER (battery->battery_low_dialog),
+ 6);
+
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
+ 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_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);
+ label = gtk_label_new ("");
+ battery->battery_low_label = GTK_LABEL (label);
+ gtk_label_set_line_wrap (battery->battery_low_label, TRUE);
+ gtk_label_set_selectable (battery->battery_low_label, TRUE);
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 6);
+ gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (battery->battery_low_dialog))),
+ hbox);
+
+ gtk_window_set_keep_above (GTK_WINDOW (battery->battery_low_dialog), TRUE);
+ gtk_window_stick (GTK_WINDOW (battery->battery_low_dialog));
+ gtk_window_set_focus_on_map (GTK_WINDOW (battery->battery_low_dialog),
+ FALSE);
+ gtk_window_set_skip_pager_hint (GTK_WINDOW (battery->battery_low_dialog),
+ TRUE);
+
+ battery_low_update_text (battery, info);
+
+ gtk_window_set_position (GTK_WINDOW (battery->battery_low_dialog),
+ GTK_WIN_POS_CENTER);
+ gtk_widget_show_all (battery->battery_low_dialog);
}
/* Update the text of the tooltip from the provided info.
*/
static void
-update_tooltip( ProgressData *battstat, BatteryStatus *info )
+update_tooltip (ProgressData *battstat,
+ BatteryStatus *info)
{
- gchar *powerstring;
- gchar *remaining;
- gchar *tiptext;
-
- if (info->present)
- {
- if (info->on_ac_power)
- powerstring = AC_POWER_STRING;
- else
- powerstring = DC_POWER_STRING;
+ gchar *powerstring;
+ gchar *remaining;
+ gchar *tiptext;
- remaining = get_remaining (info);
+ if (info->present)
+ {
+ if (info->on_ac_power)
+ powerstring = AC_POWER_STRING;
+ else
+ powerstring = DC_POWER_STRING;
- tiptext = g_strdup_printf ("%s\n%s", powerstring, remaining);
- g_free (remaining);
- }
- else
- {
- if (info->on_ac_power)
- tiptext = g_strdup_printf ("%s\n%s", AC_POWER_STRING,
- _("No battery present"));
+ remaining = get_remaining (info);
+
+ tiptext = g_strdup_printf ("%s\n%s", powerstring, remaining);
+ g_free (remaining);
+ }
else
- tiptext = g_strdup_printf ("%s\n%s", DC_POWER_STRING,
- _("Battery status unknown"));
- }
+ {
+ if (info->on_ac_power)
+ tiptext = g_strdup_printf ("%s\n%s", AC_POWER_STRING,
+ _("No battery present"));
+ else
+ tiptext = g_strdup_printf ("%s\n%s", DC_POWER_STRING,
+ _("Battery status unknown"));
+ }
- gtk_widget_set_tooltip_text (battstat->applet, tiptext);
- g_free (tiptext);
+ gtk_widget_set_tooltip_text (battstat->applet, tiptext);
+ g_free (tiptext);
}
/* Update the text label that either shows the percentage of time left.
*/
static void
-update_percent_label( ProgressData *battstat, BatteryStatus *info )
+update_percent_label (ProgressData *battstat,
+ BatteryStatus *info)
{
- gchar *new_label;
-
- if (info->present && battstat->showtext == APPLET_SHOW_PERCENT)
- new_label = g_strdup_printf ("%d%%", info->percent);
- else if (info->present && battstat->showtext == APPLET_SHOW_TIME)
- {
- /* Fully charged or unknown (-1) time remaining display none */
- if ((info->on_ac_power && info->percent == 100) || info->minutes < 0)
- new_label = g_strdup ("");
- else
+ gchar *new_label;
+
+ if (info->present && battstat->showtext == APPLET_SHOW_PERCENT)
+ new_label = g_strdup_printf ("%d%%", info->percent);
+ else if (info->present && battstat->showtext == APPLET_SHOW_TIME)
{
- int time;
- time = info->minutes;
- new_label = g_strdup_printf ("%d:%02d", time/60, time%60);
+ /* Fully charged or unknown (-1) time remaining display none */
+ if ((info->on_ac_power && info->percent == 100) || info->minutes < 0)
+ new_label = g_strdup ("");
+ else
+ {
+ int time;
+ time = info->minutes;
+ new_label = g_strdup_printf ("%d:%02d", time/60, time%60);
+ }
}
- }
- else
- new_label = g_strdup (_("N/A"));
+ else
+ new_label = g_strdup (_("N/A"));
- gtk_label_set_text (GTK_LABEL (battstat->percent), new_label);
- g_free (new_label);
+ gtk_label_set_text (GTK_LABEL (battstat->percent), new_label);
+ g_free (new_label);
}
/* Determine what status icon we ought to be displaying and change the
@@ -545,184 +553,189 @@ update_percent_label( ProgressData *battstat, BatteryStatus *info )
showing.
*/
static void
-possibly_update_status_icon( ProgressData *battstat, BatteryStatus *info )
+possibly_update_status_icon (ProgressData *battstat,
+ BatteryStatus *info )
{
- 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;
-
- if (batt_life <= battstat->red_val)
- {
- if (info->charging)
- icon_name = "battery-caution-charging";
- else
- icon_name = "battery-caution";
- }
- else if (batt_life <= battstat->orange_val)
- {
- if (info->charging)
- icon_name = "battery-low-charging";
- else
- icon_name = "battery-low";
- }
- else if (batt_life <= battstat->yellow_val)
- {
- if (info->charging)
- icon_name = "battery-good-charging";
- else
- icon_name = "battery-good";
- }
- else if (info->on_ac_power)
- {
- if (info->charging)
- icon_name = "battery-full-charging";
+ 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;
+
+ if (batt_life <= battstat->red_val)
+ {
+ if (info->charging)
+ icon_name = "battery-caution-charging";
+ else
+ icon_name = "battery-caution";
+ }
+ else if (batt_life <= battstat->orange_val)
+ {
+ if (info->charging)
+ icon_name = "battery-low-charging";
+ else
+ icon_name = "battery-low";
+ }
+ else if (batt_life <= battstat->yellow_val)
+ {
+ if (info->charging)
+ icon_name = "battery-good-charging";
+ else
+ icon_name = "battery-good";
+ }
+ else if (info->on_ac_power)
+ {
+ if (info->charging)
+ icon_name = "battery-full-charging";
+ else
+ icon_name = "battery-full-charged";
+ }
else
- icon_name = "battery-full-charged";
- }
- else
- {
- icon_name = "battery-full";
- }
+ {
+ icon_name = "battery-full";
+ }
- theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (battstat->applet)));
+ theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (battstat->applet)));
- icon_size = mate_panel_applet_get_size (MATE_PANEL_APPLET (battstat->applet));
- icon_scale = gtk_widget_get_scale_factor (GTK_WIDGET (battstat->applet));
+ icon_size = mate_panel_applet_get_size (MATE_PANEL_APPLET (battstat->applet));
+ icon_scale = gtk_widget_get_scale_factor (GTK_WIDGET (battstat->applet));
- surface = gtk_icon_theme_load_surface (theme, icon_name, icon_size, icon_scale, NULL, 0, NULL);
+ surface = gtk_icon_theme_load_surface (theme, icon_name,
+ icon_size,
+ icon_scale,
+ NULL, 0, NULL);
- gtk_image_set_from_surface (GTK_IMAGE(battstat->status), surface);
- cairo_surface_destroy (surface);
+ 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
makes any changes as appropriate.
*/
static gboolean
-check_for_updates( gpointer data )
+check_for_updates (gpointer data)
{
- ProgressData *battstat = data;
- BatteryStatus info;
- const char *err;
+ ProgressData *battstat = data;
+ BatteryStatus info;
+ const char *err;
- if (DEBUG) g_print("check_for_updates()\n");
+ if (DEBUG) g_print ("check_for_updates ()\n");
- if( (err = power_management_getinfo( &info )) )
- battstat_error_dialog( battstat->applet, err );
+ if ((err = power_management_getinfo (&info)))
+ battstat_error_dialog (battstat->applet, err);
- if (!event_driven)
- {
- int timeout;
+ if (!event_driven)
+ {
+ int timeout;
- /* if on AC and not event driven scale back the polls to once every 10 */
- if (info.on_ac_power)
- timeout = 10;
- else
- timeout = 2;
+ /* if on AC and not event driven scale back the polls to once every 10 */
+ if (info.on_ac_power)
+ timeout = 10;
+ else
+ timeout = 2;
- if (timeout != battstat->timeout)
- {
- battstat->timeout = timeout;
+ if (timeout != battstat->timeout)
+ {
+ battstat->timeout = timeout;
- if (battstat->timeout_id)
- g_source_remove (battstat->timeout_id);
+ if (battstat->timeout_id)
+ g_source_remove (battstat->timeout_id);
+
+ battstat->timeout_id = g_timeout_add_seconds (battstat->timeout,
+ check_for_updates,
+ battstat);
+ }
+ }
- battstat->timeout_id = g_timeout_add_seconds (battstat->timeout,
- check_for_updates,
- battstat);
+
+ possibly_update_status_icon (battstat, &info);
+
+ if (!info.on_ac_power &&
+ battstat->last_batt_life != 1000 &&
+ (
+ /* if percentage drops below red_val */
+ (!battstat->red_value_is_time &&
+ battstat->last_batt_life > battstat->red_val &&
+ info.percent <= battstat->red_val) ||
+ /* if time drops below red_val */
+ (battstat->red_value_is_time &&
+ battstat->last_minutes > battstat->red_val &&
+ info.minutes <= battstat->red_val)
+ )
+ && info.present)
+ {
+ /* Warn that battery dropped below red_val */
+ if (battstat->lowbattnotification)
+ {
+ battery_low_dialog (battstat, &info);
+
+ if (battstat->beep)
+ gdk_display_beep (gdk_display_get_default ());
+ }
+ }
+
+ if (battstat->last_charging &&
+ battstat->last_acline_status &&
+ battstat->last_acline_status!=1000 &&
+ !info.charging &&
+ info.on_ac_power &&
+ info.present &&
+ info.percent > 99)
+ {
+ /* Inform that battery now fully charged */
+ if (battstat->fullbattnot)
+ {
+ battery_full_dialog (battstat->applet);
+
+ if (battstat->beep)
+ gdk_display_beep (gdk_display_get_default ());
+ }
}
- }
-
-
- possibly_update_status_icon( battstat, &info );
-
- if (!info.on_ac_power &&
- battstat->last_batt_life != 1000 &&
- (
- /* if percentage drops below red_val */
- (!battstat->red_value_is_time &&
- battstat->last_batt_life > battstat->red_val &&
- info.percent <= battstat->red_val) ||
- /* if time drops below red_val */
- (battstat->red_value_is_time &&
- battstat->last_minutes > battstat->red_val &&
- info.minutes <= battstat->red_val)
- ) &&
- info.present)
- {
- /* Warn that battery dropped below red_val */
- if(battstat->lowbattnotification)
+
+ /* If the warning dialog is displayed and we just got plugged in then
+ stop displaying it.
+ */
+ if (battstat->battery_low_dialog && info.on_ac_power)
+ battery_low_dialog_destroy (battstat);
+
+ if (info.on_ac_power != battstat->last_acline_status ||
+ info.percent != battstat->last_batt_life ||
+ info.minutes != battstat->last_minutes ||
+ info.charging != battstat->last_charging)
{
- battery_low_dialog(battstat, &info);
+ /* Update the tooltip */
+ update_tooltip (battstat, &info);
- if(battstat->beep)
- gdk_display_beep (gdk_display_get_default ());
+ /* If the warning dialog box is currently displayed, update that too. */
+ if (battstat->battery_low_dialog != NULL)
+ battery_low_update_text (battstat, &info);
}
- }
-
- if( battstat->last_charging &&
- battstat->last_acline_status &&
- battstat->last_acline_status!=1000 &&
- !info.charging &&
- info.on_ac_power &&
- info.present &&
- info.percent > 99)
- {
- /* Inform that battery now fully charged */
- if(battstat->fullbattnot)
+
+ if ((battstat->showtext == APPLET_SHOW_PERCENT &&
+ battstat->last_batt_life != info.percent) ||
+ (battstat->showtext == APPLET_SHOW_TIME &&
+ battstat->last_minutes != info.minutes) ||
+ battstat->last_acline_status != info.on_ac_power ||
+ battstat->last_present != info.present ||
+ battstat->refresh_label) /* set by properties dialog */
{
- battery_full_dialog (battstat->applet);
+ /* Update the label */
+ update_percent_label (battstat, &info);
- if (battstat->beep)
- gdk_display_beep (gdk_display_get_default ());
+ /* done */
+ battstat->refresh_label = FALSE;
}
- }
-
- /* If the warning dialog is displayed and we just got plugged in then
- stop displaying it.
- */
- if( battstat->battery_low_dialog && info.on_ac_power )
- battery_low_dialog_destroy( battstat );
-
- if( info.on_ac_power != battstat->last_acline_status ||
- info.percent != battstat->last_batt_life ||
- info.minutes != battstat->last_minutes ||
- info.charging != battstat->last_charging )
- {
- /* Update the tooltip */
- update_tooltip( battstat, &info );
-
- /* If the warning dialog box is currently displayed, update that too. */
- if( battstat->battery_low_dialog != NULL )
- battery_low_update_text( battstat, &info );
- }
-
- if( (battstat->showtext == APPLET_SHOW_PERCENT &&
- battstat->last_batt_life != info.percent) ||
- (battstat->showtext == APPLET_SHOW_TIME &&
- battstat->last_minutes != info.minutes) ||
- battstat->last_acline_status != info.on_ac_power ||
- battstat->last_present != info.present ||
- battstat->refresh_label ) /* set by properties dialog */
- {
- /* Update the label */
- update_percent_label( battstat, &info );
-
- /* done */
- battstat->refresh_label = FALSE;
- }
-
- battstat->last_charging = info.charging;
- battstat->last_batt_life = info.percent;
- battstat->last_minutes = info.minutes;
- battstat->last_acline_status = info.on_ac_power;
- battstat->last_present = info.present;
-
- return TRUE;
+
+ battstat->last_charging = info.charging;
+ battstat->last_batt_life = info.percent;
+ battstat->last_minutes = info.minutes;
+ battstat->last_acline_status = info.on_ac_power;
+ battstat->last_present = info.present;
+
+ return TRUE;
}
/* Gets called when the user removes the applet from the panel. Clean up
@@ -730,26 +743,27 @@ check_for_updates( gpointer data )
decrease our applet count (and possibly perform global cleanup)
*/
static void
-destroy_applet( GtkWidget *widget, ProgressData *battstat )
+destroy_applet (GtkWidget *widget,
+ ProgressData *battstat)
{
- if (DEBUG) g_print("destroy_applet()\n");
+ if (DEBUG) g_print ("destroy_applet ()\n");
- if (battstat->prop_win)
- gtk_widget_destroy (GTK_WIDGET (battstat->prop_win));
+ if (battstat->prop_win)
+ gtk_widget_destroy (GTK_WIDGET (battstat->prop_win));
- if( battstat->battery_low_dialog )
- battery_low_dialog_destroy( battstat );
+ if (battstat->battery_low_dialog)
+ battery_low_dialog_destroy (battstat);
- if (battstat->timeout_id)
- g_source_remove (battstat->timeout_id);
+ if (battstat->timeout_id)
+ g_source_remove (battstat->timeout_id);
- g_object_unref( G_OBJECT(battstat->status) );
- g_object_unref( G_OBJECT(battstat->percent) );
- g_object_unref (battstat->settings);
+ g_object_unref (G_OBJECT (battstat->status));
+ g_object_unref (G_OBJECT (battstat->percent));
+ g_object_unref (battstat->settings);
- static_global_teardown (battstat);
+ static_global_teardown (battstat);
- g_free (battstat);
+ g_free (battstat);
}
/* Common function invoked by the 'Help' context menu item and the 'Help'
@@ -759,91 +773,92 @@ void
battstat_show_help (ProgressData *battstat,
const char *section)
{
- GError *error = NULL;
- char *uri;
-
- if (section)
- uri = g_strdup_printf ("help:mate-battstat/%s", section);
- else
- uri = g_strdup ("help:mate-battstat");
-
- gtk_show_uri_on_window (NULL,
- uri,
- gtk_get_current_event_time (),
- &error);
-
- g_free (uri);
-
- if (error)
- {
- char *message;
-
- message = g_strdup_printf (_("There was an error displaying help: %s"),
- error->message );
- battstat_error_dialog (battstat->applet, message);
- g_error_free (error);
- g_free (message);
- }
+ GError *error = NULL;
+ char *uri;
+
+ if (section)
+ uri = g_strdup_printf ("help:mate-battstat/%s", section);
+ else
+ uri = g_strdup ("help:mate-battstat");
+
+ gtk_show_uri_on_window (NULL,
+ uri,
+ gtk_get_current_event_time (),
+ &error);
+
+ g_free (uri);
+
+ if (error)
+ {
+ char *message;
+
+ message = g_strdup_printf (_("There was an error displaying help: %s"),
+ error->message );
+ battstat_error_dialog (battstat->applet, message);
+ g_error_free (error);
+ g_free (message);
+ }
}
/* Called when the user selects the 'help' menu item.
*/
static void
-help_cb( GtkAction *action, ProgressData *battstat )
+help_cb (GtkAction *action,
+ ProgressData *battstat)
{
- battstat_show_help( battstat, NULL );
+ battstat_show_help (battstat, NULL);
}
/* Called when the user selects the 'about' menu item.
*/
static void
-about_cb( GtkAction *action, ProgressData *battstat )
+about_cb (GtkAction *action, ProgressData *battstat)
{
- const gchar *authors[] = {
- "J\xC3\xB6rgen Pehrson <[email protected]>",
- "Lennart Poettering <[email protected]> (Linux ACPI support)",
- "Seth Nickell <[email protected]> (GNOME2 port)",
- "Davyd Madeley <[email protected]>",
- "Ryan Lortie <[email protected]>",
- "Joe Marcus Clarke <[email protected]> (FreeBSD ACPI support)",
- NULL
- };
-
- const gchar *documenters[] = {
- "J\xC3\xB6rgen Pehrson <[email protected]>",
- "Trevor Curtis <[email protected]>",
- "Davyd Madeley <[email protected]>",
- N_("MATE Documentation Team"),
- NULL
- };
-
- char *comments = g_strdup_printf ("%s\n\n%s",
- _("This utility shows the status of your laptop battery."),
- power_management_using_upower () ?
- /* true */ _("upower backend enabled.") :
- /* false */ _("Legacy backend enabled."));
+ const gchar *authors[] = {
+ "J\xC3\xB6rgen Pehrson <[email protected]>",
+ "Lennart Poettering <[email protected]> (Linux ACPI support)",
+ "Seth Nickell <[email protected]> (GNOME2 port)",
+ "Davyd Madeley <[email protected]>",
+ "Ryan Lortie <[email protected]>",
+ "Joe Marcus Clarke <[email protected]> (FreeBSD ACPI support)",
+ NULL
+ };
+
+ const gchar *documenters[] = {
+ "J\xC3\xB6rgen Pehrson <[email protected]>",
+ "Trevor Curtis <[email protected]>",
+ "Davyd Madeley <[email protected]>",
+ N_("MATE Documentation Team"),
+ NULL
+ };
+
+ char *comments = g_strdup_printf ("%s\n\n%s",
+ _("This utility shows the status of your laptop battery."),
+ power_management_using_upower () ?
+ /* true */ _("upower backend enabled.") :
+ /* false */ _("Legacy backend enabled."));
#ifdef ENABLE_NLS
- const char **p;
- for (p = documenters; *p; ++p)
- *p = _(*p);
+ const char **p;
+ for (p = documenters; *p; ++p)
+ *p = _(*p);
#endif
- gtk_show_about_dialog( NULL,
- "title", _("About Battery Charge Monitor"),
- "version", VERSION,
- "copyright", _("Copyright \xc2\xa9 2000 The Gnulix Society\n"
- "Copyright \xc2\xa9 2002-2005 Free Software Foundation and others\n"
- "Copyright \xc2\xa9 2012-2020 MATE developers"),
- "comments", comments,
- "authors", authors,
- "documenters", documenters,
- "translator-credits", _("translator-credits"),
- "logo-icon-name", "battery",
- NULL );
-
- g_free (comments);
+ gtk_show_about_dialog (NULL,
+ "title", _("About Battery Charge Monitor"),
+ "version", VERSION,
+ "copyright", _("Copyright \xc2\xa9 2000 The Gnulix Society\n"
+ "Copyright \xc2\xa9 2002-2005 Free Software Foundation and others\n"
+ "Copyright \xc2\xa9 2012-2020 MATE developers"),
+ "comments", comments,
+ "authors", authors,
+ "documenters", documenters,
+ "translator-credits", _("translator-credits"),
+ "logo-icon-name", "battery",
+ NULL);
+
+ g_free (comments);
}
/* Rotate text on side panels. Called on initial startup and when the
@@ -851,17 +866,16 @@ about_cb( GtkAction *action, ProgressData *battstat )
* another panel).
*/
static void
-setup_text_orientation( ProgressData *battstat )
+setup_text_orientation (ProgressData *battstat)
{
- if( battstat->orienttype == MATE_PANEL_APPLET_ORIENT_RIGHT )
- gtk_label_set_angle( GTK_LABEL( battstat->percent ), 90 );
- else if( battstat->orienttype == MATE_PANEL_APPLET_ORIENT_LEFT )
- gtk_label_set_angle( GTK_LABEL( battstat->percent ), 270 );
- else
- gtk_label_set_angle( GTK_LABEL( battstat->percent ), 0 );
+ if (battstat->orienttype == MATE_PANEL_APPLET_ORIENT_RIGHT)
+ gtk_label_set_angle (GTK_LABEL (battstat->percent), 90);
+ else if (battstat->orienttype == MATE_PANEL_APPLET_ORIENT_LEFT)
+ gtk_label_set_angle (GTK_LABEL (battstat->percent), 270);
+ else
+ gtk_label_set_angle (GTK_LABEL (battstat->percent), 0);
}
-
/* This signal is delivered by the panel when the orientation of the applet
has changed. This is either because the applet has just been created,
has just been moved to a new panel or the panel that the applet was on
@@ -869,69 +883,70 @@ setup_text_orientation( ProgressData *battstat )
*/
static void
change_orient (MatePanelApplet *applet,
- MatePanelAppletOrient orient,
- ProgressData *battstat)
+ MatePanelAppletOrient orient,
+ ProgressData *battstat)
{
- if (DEBUG) g_print("change_orient()\n");
+ if (DEBUG) g_print ("change_orient ()\n");
- /* Ignore the update if we already know. */
- if( orient != battstat->orienttype )
- {
- battstat->orienttype = orient;
+ /* Ignore the update if we already know. */
+ if (orient != battstat->orienttype)
+ {
+ battstat->orienttype = orient;
- /* The applet changing orientation very likely involves the layout
- being changed to better fit the new shape of the panel.
- */
- setup_text_orientation( battstat );
- reconfigure_layout( battstat );
- }
+ /* The applet changing orientation very likely involves the layout
+ being changed to better fit the new shape of the panel.
+ */
+ setup_text_orientation (battstat);
+ reconfigure_layout (battstat);
+ }
}
/* This is delivered when our size has changed. This happens when the applet
is just created or if the size of the panel has changed.
*/
static void
-size_allocate( MatePanelApplet *applet, GtkAllocation *allocation,
- ProgressData *battstat)
+size_allocate (MatePanelApplet *applet,
+ GtkAllocation *allocation,
+ ProgressData *battstat)
{
- if (DEBUG) g_print("applet_change_pixel_size()\n");
+ if (DEBUG) g_print ("applet_change_pixel_size ()\n");
- /* Ignore the update if we already know. */
- if( battstat->width == allocation->width &&
- battstat->height == allocation->height )
- return;
+ /* Ignore the update if we already know. */
+ if (battstat->width == allocation->width &&
+ battstat->height == allocation->height)
+ return;
- battstat->width = allocation->width;
- battstat->height = allocation->height;
+ battstat->width = allocation->width;
+ battstat->height = allocation->height;
- /* The applet changing size could result in the layout changing. */
- reconfigure_layout( battstat );
+ /* The applet changing size could result in the layout changing. */
+ reconfigure_layout (battstat);
}
/* Get our settings out of gsettings.
*/
static void
-load_preferences(ProgressData *battstat)
+load_preferences (ProgressData *battstat)
{
- GSettings *settings = battstat->settings;
+ GSettings *settings = battstat->settings;
- if (DEBUG) g_print("load_preferences()\n");
+ if (DEBUG) g_print ("load_preferences ()\n");
- battstat->red_val = g_settings_get_int (settings, "red-value");
- battstat->red_val = MIN (battstat->red_val, 100);
- battstat->red_value_is_time = g_settings_get_boolean (settings, "red-value-is-time");
+ battstat->red_val = g_settings_get_int (settings, "red-value");
+ battstat->red_val = MIN (battstat->red_val, 100);
+ battstat->red_value_is_time = g_settings_get_boolean (settings, "red-value-is-time");
- /* automatically calculate orangle and yellow values from the red value */
- battstat->orange_val = battstat->red_val * ORANGE_MULTIPLIER;
- battstat->orange_val = MIN (battstat->orange_val, 100);
+ /* automatically calculate orangle and yellow values from the red value */
+ battstat->orange_val = battstat->red_val * ORANGE_MULTIPLIER;
+ battstat->orange_val = MIN (battstat->orange_val, 100);
- battstat->yellow_val = battstat->red_val * YELLOW_MULTIPLIER;
- battstat->yellow_val = MIN (battstat->yellow_val, 100);
+ battstat->yellow_val = battstat->red_val * YELLOW_MULTIPLIER;
+ battstat->yellow_val = MIN (battstat->yellow_val, 100);
- 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->showtext = g_settings_get_int (settings, "show-text");
+ 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->showtext = g_settings_get_int (settings, "show-text");
}
/* Convenience function to attach a child widget to a GtkGrid in the
@@ -939,41 +954,43 @@ load_preferences(ProgressData *battstat)
gridss and only supports positions that are used in this applet.
*/
static void
-grid_layout_attach (GtkGrid *grid, LayoutLocation loc, GtkWidget *child)
+grid_layout_attach (GtkGrid *grid,
+ LayoutLocation loc,
+ GtkWidget *child)
{
- switch( loc )
- {
- case LAYOUT_LONG:
- gtk_grid_attach (grid, child, 1, 0, 1, 2);
- break;
-
- case LAYOUT_TOPLEFT:
- gtk_grid_attach (grid, child, 0, 0, 1, 1);
- break;
-
- case LAYOUT_TOP:
- gtk_grid_attach (grid, child, 1, 0, 1, 1);
- break;
-
- case LAYOUT_LEFT:
- gtk_grid_attach (grid, child, 0, 1, 1, 1);
- break;
-
- case LAYOUT_CENTRE:
- gtk_grid_attach (grid, child, 1, 1, 1, 1);
- break;
-
- case LAYOUT_RIGHT:
- gtk_grid_attach (grid, child, 2, 1, 1, 1);
- break;
-
- case LAYOUT_BOTTOM:
- gtk_grid_attach (grid, child, 1, 2, 1, 1);
- break;
-
- default:
- break;
- }
+ switch (loc)
+ {
+ case LAYOUT_LONG:
+ gtk_grid_attach (grid, child, 1, 0, 1, 2);
+ break;
+
+ case LAYOUT_TOPLEFT:
+ gtk_grid_attach (grid, child, 0, 0, 1, 1);
+ break;
+
+ case LAYOUT_TOP:
+ gtk_grid_attach (grid, child, 1, 0, 1, 1);
+ break;
+
+ case LAYOUT_LEFT:
+ gtk_grid_attach (grid, child, 0, 1, 1, 1);
+ break;
+
+ case LAYOUT_CENTRE:
+ gtk_grid_attach (grid, child, 1, 1, 1, 1);
+ break;
+
+ case LAYOUT_RIGHT:
+ gtk_grid_attach (grid, child, 2, 1, 1, 1);
+ break;
+
+ case LAYOUT_BOTTOM:
+ gtk_grid_attach (grid, child, 1, 2, 1, 1);
+ break;
+
+ default:
+ break;
+ }
}
/* The layout has (maybe) changed. Calculate what layout we ought to be
@@ -982,132 +999,132 @@ grid_layout_attach (GtkGrid *grid, LayoutLocation loc, GtkWidget *child)
when elements get added or removed.
*/
void
-reconfigure_layout( ProgressData *battstat )
+reconfigure_layout (ProgressData *battstat)
{
- LayoutConfiguration c;
-
- /* 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:
- /* 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:
- /* Stack vertically for left and right panels. */
- c.status = LAYOUT_TOP;
- if( battstat->showtext )
- c.text = LAYOUT_BOTTOM;
- break;
- }
-
- if( memcmp( &c, &battstat->layout, sizeof (LayoutConfiguration) ) )
- {
- /* Something in the layout has changed. Rebuild. */
-
- /* Start by removing any elements in the grid from the grid. */
- if( battstat->layout.text )
- gtk_container_remove( GTK_CONTAINER( battstat->grid ),
- battstat->percent );
- if( battstat->layout.status )
- gtk_container_remove( GTK_CONTAINER( battstat->grid ),
- battstat->status );
-
- /* Attach the elements to their new locations. */
- grid_layout_attach( GTK_GRID(battstat->grid),
- c.status, battstat->status );
- grid_layout_attach( GTK_GRID(battstat->grid),
- c.text, battstat->percent );
-
- gtk_widget_show_all( battstat->applet );
- }
-
- battstat->layout = c;
-
- /* Check for generic updates. This is required, for example, to make sure
- the text label is immediately updated to show the time remaining or
- percentage.
- */
- check_for_updates( battstat );
+ LayoutConfiguration c;
+
+ /* 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:
+ /* 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:
+ /* Stack vertically for left and right panels. */
+ c.status = LAYOUT_TOP;
+ if (battstat->showtext)
+ c.text = LAYOUT_BOTTOM;
+ break;
+ }
+
+ if (memcmp (&c, &battstat->layout, sizeof (LayoutConfiguration)))
+ {
+ /* Something in the layout has changed. Rebuild. */
+
+ /* Start by removing any elements in the grid from the grid. */
+ if (battstat->layout.text)
+ gtk_container_remove (GTK_CONTAINER (battstat->grid),
+ battstat->percent);
+ if (battstat->layout.status)
+ gtk_container_remove (GTK_CONTAINER (battstat->grid),
+ battstat->status);
+
+ /* Attach the elements to their new locations. */
+ grid_layout_attach (GTK_GRID (battstat->grid),
+ c.status, battstat->status);
+ grid_layout_attach (GTK_GRID (battstat->grid),
+ c.text, battstat->percent);
+
+ gtk_widget_show_all (battstat->applet);
+ }
+
+ battstat->layout = c;
+
+ /* Check for generic updates. This is required, for example, to make sure
+ the text label is immediately updated to show the time remaining or
+ percentage.
+ */
+ check_for_updates (battstat);
}
/* Allocate the widgets for the applet and connect our signals.
*/
static gint
-create_layout(ProgressData *battstat)
+create_layout (ProgressData *battstat)
{
- if (DEBUG) g_print("create_layout()\n");
-
- /* Have our background automatically painted. */
- mate_panel_applet_set_background_widget( MATE_PANEL_APPLET( battstat->applet ),
- GTK_WIDGET( battstat->applet ) );
-
- /* Allocate the four widgets that we need. */
- battstat->grid = gtk_grid_new ();
- battstat->percent = gtk_label_new( "" );
- battstat->status = 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
- the container adds a real reference and removes the floating reference
- if one exists. Since we insert/remove these widgets from the table
- when our layout is reconfigured, we need to keep our own 'real'
- reference to each widget. This adds a real reference to each widget
- and "sinks" the floating reference.
- */
- g_object_ref( battstat->status );
- g_object_ref( battstat->percent );
- g_object_ref_sink( G_OBJECT( battstat->status ) );
- g_object_ref_sink( G_OBJECT( battstat->percent ) );
-
- /* Let reconfigure_layout know that the grid is currently empty. */
- battstat->layout.status = LAYOUT_NONE;
- battstat->layout.text = LAYOUT_NONE;
-
- /* Put the grid directly inside the applet and show everything. */
- gtk_widget_set_halign (battstat->grid, GTK_ALIGN_CENTER);
- gtk_widget_set_valign (battstat->grid, GTK_ALIGN_CENTER);
- gtk_container_add (GTK_CONTAINER (battstat->applet), battstat->grid);
- gtk_widget_show_all (battstat->applet);
-
- /* Attach all sorts of signals to the applet. */
- g_signal_connect(G_OBJECT(battstat->applet),
- "destroy",
- G_CALLBACK(destroy_applet),
- battstat);
-
- g_signal_connect (battstat->applet,
- "change_orient",
- G_CALLBACK(change_orient),
- battstat);
-
- g_signal_connect (battstat->applet,
- "size_allocate",
- G_CALLBACK (size_allocate),
- battstat);
-
- return FALSE;
+ if (DEBUG) g_print ("create_layout ()\n");
+
+ /* Have our background automatically painted. */
+ mate_panel_applet_set_background_widget (MATE_PANEL_APPLET (battstat->applet),
+ GTK_WIDGET (battstat->applet));
+
+ /* Allocate the four widgets that we need. */
+ battstat->grid = gtk_grid_new ();
+ battstat->percent = gtk_label_new ("");
+ battstat->status = 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
+ the container adds a real reference and removes the floating reference
+ if one exists. Since we insert/remove these widgets from the table
+ when our layout is reconfigured, we need to keep our own 'real'
+ reference to each widget. This adds a real reference to each widget
+ and "sinks" the floating reference.
+ */
+ g_object_ref (battstat->status);
+ g_object_ref (battstat->percent);
+ g_object_ref_sink (G_OBJECT (battstat->status));
+ g_object_ref_sink (G_OBJECT (battstat->percent));
+
+ /* Let reconfigure_layout know that the grid is currently empty. */
+ battstat->layout.status = LAYOUT_NONE;
+ battstat->layout.text = LAYOUT_NONE;
+
+ /* Put the grid directly inside the applet and show everything. */
+ gtk_widget_set_halign (battstat->grid, GTK_ALIGN_CENTER);
+ gtk_widget_set_valign (battstat->grid, GTK_ALIGN_CENTER);
+ gtk_container_add (GTK_CONTAINER (battstat->applet), battstat->grid);
+ gtk_widget_show_all (battstat->applet);
+
+ /* Attach all sorts of signals to the applet. */
+ g_signal_connect (G_OBJECT (battstat->applet),
+ "destroy",
+ G_CALLBACK (destroy_applet),
+ battstat);
+
+ g_signal_connect (battstat->applet,
+ "change_orient",
+ G_CALLBACK (change_orient),
+ battstat);
+
+ g_signal_connect (battstat->applet,
+ "size_allocate",
+ G_CALLBACK (size_allocate),
+ battstat);
+
+ return FALSE;
}
void
prop_cb (GtkAction *action,
ProgressData *battstat)
{
- if (battstat->prop_win) {
- gtk_window_set_screen (GTK_WINDOW (battstat->prop_win),
- gtk_widget_get_screen (battstat->applet));
- gtk_window_present (GTK_WINDOW (battstat->prop_win));
- } else {
- battstat->prop_win = battstat_preferences_new (battstat);
- gtk_widget_show_all (GTK_WIDGET (battstat->prop_win));
- }
+ if (battstat->prop_win) {
+ gtk_window_set_screen (GTK_WINDOW (battstat->prop_win),
+ gtk_widget_get_screen (battstat->applet));
+ gtk_window_present (GTK_WINDOW (battstat->prop_win));
+ } else {
+ battstat->prop_win = battstat_preferences_new (battstat);
+ gtk_widget_show_all (GTK_WIDGET (battstat->prop_win));
+ }
}
/* Called by the factory to fill in the fields for the applet.
@@ -1115,92 +1132,97 @@ prop_cb (GtkAction *action,
static gboolean
battstat_applet_fill (MatePanelApplet *applet)
{
- ProgressData *battstat;
- AtkObject *atk_widget;
- GtkActionGroup *action_group;
- const char *err;
-
- if (DEBUG) g_print("main()\n");
-
- g_set_application_name (_("Battery Charge Monitor"));
-
- gtk_window_set_default_icon_name ("battery");
-
- mate_panel_applet_set_flags (applet, MATE_PANEL_APPLET_EXPAND_MINOR);
-
- battstat = g_new0 (ProgressData, 1);
- battstat->settings = mate_panel_applet_settings_new (applet, BATTSTAT_SCHEMA);
-
- /* Some starting values... */
- battstat->applet = GTK_WIDGET (applet);
- battstat->refresh_label = TRUE;
- battstat->last_batt_life = 1000;
- battstat->last_acline_status = 1000;
- battstat->last_charging = 1000;
- battstat->orienttype = mate_panel_applet_get_orient (applet);
- battstat->battery_low_dialog = NULL;
- battstat->battery_low_label = NULL;
- battstat->timeout = -1;
- battstat->timeout_id = 0;
-
- /* The first received size_allocate event will cause a reconfigure. */
- battstat->height = -1;
- battstat->width = -1;
-
- load_preferences (battstat);
- create_layout (battstat);
- setup_text_orientation( battstat );
-
- action_group = gtk_action_group_new ("Battstat Applet Actions");
- gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
- gtk_action_group_add_actions (action_group,
- battstat_menu_actions,
- G_N_ELEMENTS (battstat_menu_actions),
- battstat);
-
- mate_panel_applet_setup_menu_from_resource (MATE_PANEL_APPLET (battstat->applet),
- BATTSTAT_RESOURCE_PATH "battstat-applet-menu.xml",
- action_group);
-
- if (mate_panel_applet_get_locked_down (MATE_PANEL_APPLET (battstat->applet))) {
- GtkAction *action;
-
- action = gtk_action_group_get_action (action_group, "BattstatProperties");
- gtk_action_set_visible (action, FALSE);
- }
- g_object_unref (action_group);
-
- atk_widget = gtk_widget_get_accessible (battstat->applet);
- if (GTK_IS_ACCESSIBLE (atk_widget)) {
- atk_object_set_name (atk_widget, _("Battery Charge Monitor"));
- atk_object_set_description(atk_widget, _("Monitor a laptop's remaining power"));
- }
-
- if ((err = static_global_initialisation (battstat)))
- battstat_error_dialog (GTK_WIDGET (applet), err);
-
- return TRUE;
+ ProgressData *battstat;
+ AtkObject *atk_widget;
+ GtkActionGroup *action_group;
+ const char *err;
+
+ if (DEBUG) g_print ("main ()\n");
+
+ g_set_application_name (_("Battery Charge Monitor"));
+
+ gtk_window_set_default_icon_name ("battery");
+
+ mate_panel_applet_set_flags (applet,
+ MATE_PANEL_APPLET_EXPAND_MINOR);
+
+ battstat = g_new0 (ProgressData, 1);
+ battstat->settings = mate_panel_applet_settings_new (applet,
+ BATTSTAT_SCHEMA);
+
+ /* Some starting values... */
+ battstat->applet = GTK_WIDGET (applet);
+ battstat->refresh_label = TRUE;
+ battstat->last_batt_life = 1000;
+ battstat->last_acline_status = 1000;
+ battstat->last_charging = 1000;
+ battstat->orienttype = mate_panel_applet_get_orient (applet);
+ battstat->battery_low_dialog = NULL;
+ battstat->battery_low_label = NULL;
+ battstat->timeout = -1;
+ battstat->timeout_id = 0;
+
+ /* The first received size_allocate event will cause a reconfigure. */
+ battstat->height = -1;
+ battstat->width = -1;
+
+ load_preferences (battstat);
+ create_layout (battstat);
+ setup_text_orientation (battstat);
+
+ action_group = gtk_action_group_new ("Battstat Applet Actions");
+ gtk_action_group_set_translation_domain (action_group,
+ GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (action_group,
+ battstat_menu_actions,
+ G_N_ELEMENTS (battstat_menu_actions),
+ battstat);
+
+ mate_panel_applet_setup_menu_from_resource (MATE_PANEL_APPLET (battstat->applet),
+ BATTSTAT_RESOURCE_PATH "battstat-applet-menu.xml",
+ action_group);
+
+ if (mate_panel_applet_get_locked_down (MATE_PANEL_APPLET (battstat->applet))) {
+ GtkAction *action;
+
+ action = gtk_action_group_get_action (action_group,
+ "BattstatProperties");
+ gtk_action_set_visible (action, FALSE);
+ }
+ g_object_unref (action_group);
+
+ atk_widget = gtk_widget_get_accessible (battstat->applet);
+ if (GTK_IS_ACCESSIBLE (atk_widget)) {
+ atk_object_set_name (atk_widget,
+ _("Battery Charge Monitor"));
+ atk_object_set_description (atk_widget,
+ _("Monitor a laptop's remaining power"));
+ }
+
+ if ((err = static_global_initialisation (battstat)))
+ battstat_error_dialog (GTK_WIDGET (applet), err);
+
+ return TRUE;
}
/* Boilerplate... */
static gboolean
battstat_applet_factory (MatePanelApplet *applet,
- const gchar *iid,
- gpointer data)
+ const gchar *iid,
+ gpointer data)
{
- gboolean retval = FALSE;
+ gboolean retval = FALSE;
- if (!strcmp (iid, "BattstatApplet"))
- retval = battstat_applet_fill (applet);
+ if (!strcmp (iid, "BattstatApplet"))
+ retval = battstat_applet_fill (applet);
- return retval;
+ return retval;
}
MATE_PANEL_APPLET_OUT_PROCESS_FACTORY ("BattstatAppletFactory",
- PANEL_TYPE_APPLET,
- "battstat",
- battstat_applet_factory,
- NULL)
-
+ PANEL_TYPE_APPLET,
+ "battstat",
+ battstat_applet_factory,
+ NULL)
diff --git a/battstat/power-management.c b/battstat/power-management.c
index ca208891..8a19aed2 100644
--- a/battstat/power-management.c
+++ b/battstat/power-management.c
@@ -94,19 +94,19 @@ static int using_upower;
BatteryStatus test_status;
static void
-test_update_boolean( GtkToggleButton *button, gboolean *value )
+test_update_boolean (GtkToggleButton *button, gboolean *value)
{
- *value = gtk_toggle_button_get_active( button );
+ *value = gtk_toggle_button_get_active (button);
}
static void
-test_update_integer( GtkSpinButton *spin, gint *value )
+test_update_integer (GtkSpinButton *spin, gint *value)
{
- *value = gtk_spin_button_get_value_as_int( spin );
+ *value = gtk_spin_button_get_value_as_int (spin);
}
static void
-initialise_test( void )
+initialise_test (void)
{
GtkWidget *w;
GtkBox *box;
@@ -117,43 +117,43 @@ initialise_test( void )
test_status.on_ac_power = FALSE;
test_status.charging = FALSE;
- box = GTK_BOX( gtk_box_new (GTK_ORIENTATION_VERTICAL, 5 ) );
-
- gtk_box_pack_start( box, gtk_label_new( "percent" ), TRUE, TRUE, 0);
- w = gtk_spin_button_new_with_range( -1.0, 100.0, 1 );
- gtk_spin_button_set_value( GTK_SPIN_BUTTON( w ), 50.0 );
- g_signal_connect( G_OBJECT( w ), "value-changed",
- G_CALLBACK( test_update_integer ), &test_status.percent );
- gtk_box_pack_start( box, w, TRUE, TRUE, 0 );
-
- gtk_box_pack_start( box, gtk_label_new( "minutes" ), TRUE, TRUE, 0);
- w = gtk_spin_button_new_with_range( -1.0, 1000.0, 1 );
- gtk_spin_button_set_value( GTK_SPIN_BUTTON( w ), 180.0 );
- g_signal_connect( G_OBJECT( w ), "value-changed",
- G_CALLBACK( test_update_integer ), &test_status.minutes );
- gtk_box_pack_start( box, w, TRUE, TRUE, 0);
-
-
- w = gtk_toggle_button_new_with_label( "on_ac_power" );
- g_signal_connect( G_OBJECT( w ), "toggled",
- G_CALLBACK( test_update_boolean ),
- &test_status.on_ac_power );
- gtk_box_pack_start( box, w, TRUE, TRUE, 0);
-
- w = gtk_toggle_button_new_with_label( "charging" );
- g_signal_connect( G_OBJECT( w ), "toggled",
- G_CALLBACK( test_update_boolean ), &test_status.charging );
- gtk_box_pack_start( box, w, TRUE, TRUE, 0);
-
- w = gtk_toggle_button_new_with_label( "present" );
- gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), TRUE );
- g_signal_connect( G_OBJECT( w ), "toggled",
- G_CALLBACK( test_update_boolean ), &test_status.present );
- gtk_box_pack_start( box, w, TRUE, TRUE, 0);
-
- w = gtk_window_new( GTK_WINDOW_TOPLEVEL );
- gtk_container_add( GTK_CONTAINER( w ), GTK_WIDGET( box ) );
- gtk_widget_show_all( w );
+ box = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 5));
+
+ gtk_box_pack_start (box, gtk_label_new ("percent"), TRUE, TRUE, 0);
+ w = gtk_spin_button_new_with_range (-1.0, 100.0, 1);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), 50.0);
+ g_signal_connect (G_OBJECT (w), "value-changed",
+ G_CALLBACK (test_update_integer), &test_status.percent);
+ gtk_box_pack_start (box, w, TRUE, TRUE, 0);
+
+ gtk_box_pack_start (box, gtk_label_new ("minutes"), TRUE, TRUE, 0);
+ w = gtk_spin_button_new_with_range (-1.0, 1000.0, 1);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), 180.0);
+ g_signal_connect (G_OBJECT (w), "value-changed",
+ G_CALLBACK (test_update_integer), &test_status.minutes);
+ gtk_box_pack_start (box, w, TRUE, TRUE, 0);
+
+
+ w = gtk_toggle_button_new_with_label ("on_ac_power");
+ g_signal_connect (G_OBJECT (w), "toggled",
+ G_CALLBACK (test_update_boolean),
+ &test_status.on_ac_power);
+ gtk_box_pack_start (box, w, TRUE, TRUE, 0);
+
+ w = gtk_toggle_button_new_with_label ("charging");
+ g_signal_connect (G_OBJECT (w), "toggled",
+ G_CALLBACK (test_update_boolean), &test_status.charging);
+ gtk_box_pack_start (box, w, TRUE, TRUE, 0);
+
+ w = gtk_toggle_button_new_with_label ("present");
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), TRUE);
+ g_signal_connect (G_OBJECT (w), "toggled",
+ G_CALLBACK (test_update_boolean), &test_status.present);
+ gtk_box_pack_start (box, w, TRUE, TRUE, 0);
+
+ w = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_container_add (GTK_CONTAINER (w), GTK_WIDGET (box));
+ gtk_widget_show_all (w);
}
static const char *
@@ -161,8 +161,8 @@ apm_readinfo (BatteryStatus *status)
{
static int test_initialised;
- if( !test_initialised )
- initialise_test();
+ if (!test_initialised)
+ initialise_test ();
test_initialised = 1;
*status = test_status;
@@ -189,13 +189,13 @@ apm_readinfo (BatteryStatus *status)
{
int fd;
- if (DEBUG) g_print("apm_readinfo() (FreeBSD)\n");
+ if (DEBUG) g_print ("apm_readinfo () (FreeBSD)\n");
if (using_acpi) {
if (acpi_count <= 0) {
acpi_count = 30;
- acpi_process_event(&acpiinfo);
- if (acpi_freebsd_read(&apminfo, &acpiinfo) == FALSE)
+ acpi_process_event (&acpiinfo);
+ if (acpi_freebsd_read (&apminfo, &acpiinfo) == FALSE)
return ERR_FREEBSD_ACPI;
}
acpi_count--;
@@ -206,17 +206,17 @@ apm_readinfo (BatteryStatus *status)
FreeBSD. Each time this functions is called (once every second)
the APM device is opened, read from and then closed.
*/
- fd = open(APMDEVICE, O_RDONLY);
+ fd = open (APMDEVICE, O_RDONLY);
if (fd == -1) {
return ERR_OPEN_APMDEV;
}
- if (ioctl(fd, APMIO_GETINFO, &apminfo) == -1)
- err(1, "ioctl(APMIO_GETINFO)");
+ if (ioctl (fd, APMIO_GETINFO, &apminfo) == -1)
+ err (1, "ioctl (APMIO_GETINFO)");
- close(fd);
+ close (fd);
- if(apminfo.ai_status == 0)
+ if (apminfo.ai_status == 0)
return ERR_APM_E;
}
@@ -257,9 +257,9 @@ apm_readinfo (BatteryStatus *status)
int fd;
#if defined(__NetBSD__)
- if (DEBUG) g_print("apm_readinfo() (NetBSD)\n");
+ if (DEBUG) g_print ("apm_readinfo () (NetBSD)\n");
#else /* __OpenBSD__ */
- if (DEBUG) g_print("apm_readinfo() (OpenBSD)\n");
+ if (DEBUG) g_print ("apm_readinfo () (OpenBSD)\n");
#endif
fd = open(APMDEVICE, O_RDONLY);
@@ -268,9 +268,9 @@ apm_readinfo (BatteryStatus *status)
pm_initialised = 0;
return ERR_OPEN_APMDEV;
}
- if (ioctl(fd, APM_IOC_GETPOWER, &apminfo) == -1)
- err(1, "ioctl(APM_IOC_GETPOWER)");
- close(fd);
+ if (ioctl (fd, APM_IOC_GETPOWER, &apminfo) == -1)
+ err(1, "ioctl (APM_IOC_GETPOWER)");
+ close (fd);
status->present = TRUE;
status->on_ac_power = apminfo.ac_state ? 1 : 0;
@@ -295,13 +295,13 @@ static struct apm_info apminfo;
static gboolean acpi_callback (GIOChannel * chan, GIOCondition cond, gpointer data)
{
if (cond & (G_IO_ERR | G_IO_HUP)) {
- acpi_linux_cleanup(&acpiinfo);
+ acpi_linux_cleanup (&acpiinfo);
apminfo.battery_percentage = -1;
return FALSE;
}
- if (acpi_process_event(&acpiinfo)) {
- acpi_linux_read(&apminfo, &acpiinfo);
+ if (acpi_process_event (&acpiinfo)) {
+ acpi_linux_read (&apminfo, &acpiinfo);
}
return TRUE;
}
@@ -309,35 +309,35 @@ static gboolean acpi_callback (GIOChannel * chan, GIOCondition cond, gpointer da
static const char *
apm_readinfo (BatteryStatus *status)
{
- /* Code for Linux by Thomas Hood <[email protected]>. apm_read() will
+ /* Code for Linux by Thomas Hood <[email protected]>. apm_read () will
read from /proc/... instead and we do not need to open the device
ourselves.
*/
- if (DEBUG) g_print("apm_readinfo() (Linux)\n");
+ if (DEBUG) g_print ("apm_readinfo () (Linux)\n");
/* ACPI support added by Lennart Poettering <[email protected]> 10/27/2001
* Updated by David Moore <[email protected]> 5/29/2003 to poll less and
* use ACPI events. */
if (using_acpi && acpiinfo.event_fd >= 0) {
if (acpi_count <= 0) {
- /* Only call this one out of 30 calls to apm_readinfo() (every 30 seconds)
+ /* Only call this one out of 30 calls to apm_readinfo () (every 30 seconds)
* since reading the ACPI system takes CPU cycles. */
acpi_count=30;
- acpi_linux_read(&apminfo, &acpiinfo);
+ acpi_linux_read (&apminfo, &acpiinfo);
}
acpi_count--;
}
/* If we lost the file descriptor with ACPI events, try to get it back. */
else if (using_acpi) {
- if (acpi_linux_init(&acpiinfo)) {
+ if (acpi_linux_init (&acpiinfo)) {
acpiwatch = g_io_add_watch (acpiinfo.channel,
G_IO_IN | G_IO_ERR | G_IO_HUP,
acpi_callback, NULL);
- acpi_linux_read(&apminfo, &acpiinfo);
+ acpi_linux_read (&apminfo, &acpiinfo);
}
}
else
- apm_read(&apminfo);
+ apm_read (&apminfo);
status->present = TRUE;
status->on_ac_power = apminfo.ac_line_status ? 1 : 0;
@@ -379,11 +379,11 @@ apm_readinfo (BatteryStatus *status)
* the problem might be. This error message is not to be freed.
*/
const char *
-power_management_getinfo( BatteryStatus *status )
+power_management_getinfo (BatteryStatus *status)
{
const char *retval;
- if( !pm_initialised )
+ if (!pm_initialised)
{
status->on_ac_power = TRUE;
status->minutes = -1;
@@ -395,27 +395,27 @@ power_management_getinfo( BatteryStatus *status )
}
#ifdef HAVE_UPOWER
- if( using_upower)
+ if (using_upower)
{
- battstat_upower_get_battery_info( status );
+ battstat_upower_get_battery_info (status);
return NULL;
}
#endif
- retval = apm_readinfo( status );
+ retval = apm_readinfo (status);
- if(status->percent == -1) {
+ if (status->percent == -1) {
status->percent = 0;
status->present = FALSE;
}
- if(status->percent > 100)
+ if (status->percent > 100)
status->percent = 100;
- if(status->percent == 100)
+ if (status->percent == 100)
status->charging = FALSE;
- if(!status->on_ac_power)
+ if (!status->on_ac_power)
status->charging = FALSE;
return retval;
@@ -442,7 +442,7 @@ power_management_initialise (void (*callback) (void))
err = battstat_upower_initialise (callback);
- if( err == NULL ) /* UPOWER is up */
+ if (err == NULL) /* UPOWER is up */
{
pm_initialised = 1;
using_upower = TRUE;
@@ -450,12 +450,12 @@ power_management_initialise (void (*callback) (void))
}
else
/* fallback to legacy methods */
- g_free( err );
+ g_free (err);
#endif /* HAVE_UPOWER */
#ifdef __linux__
- if (acpi_linux_init(&acpiinfo)) {
+ if (acpi_linux_init (&acpiinfo)) {
using_acpi = TRUE;
acpi_count = 0;
}
@@ -464,21 +464,21 @@ power_management_initialise (void (*callback) (void))
/* If neither ACPI nor APM could be read, but ACPI does seem to be
* installed, warn the user how to get ACPI working. */
- if (!using_acpi && (apm_exists() == 1) &&
- (stat("/proc/acpi", &statbuf) == 0)) {
+ if (!using_acpi && (apm_exists () == 1) &&
+ (stat ("/proc/acpi", &statbuf) == 0)) {
using_acpi = TRUE;
acpi_count = 0;
return ERR_ACPID;
}
- /* Watch for ACPI events and handle them immediately with acpi_callback(). */
+ /* Watch for ACPI events and handle them immediately with acpi_callback (). */
if (using_acpi && acpiinfo.event_fd >= 0) {
acpiwatch = g_io_add_watch (acpiinfo.channel,
G_IO_IN | G_IO_ERR | G_IO_HUP,
acpi_callback, NULL);
}
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
- if (acpi_freebsd_init(&acpiinfo)) {
+ if (acpi_freebsd_init (&acpiinfo)) {
using_acpi = TRUE;
acpi_count = 0;
}
@@ -496,12 +496,12 @@ power_management_initialise (void (*callback) (void))
* Perform any cleanup that might be required.
*/
void
-power_management_cleanup( void )
+power_management_cleanup (void)
{
#ifdef HAVE_UPOWER
- if( using_upower)
+ if (using_upower)
{
- battstat_upower_cleanup();
+ battstat_upower_cleanup ();
pm_initialised = 1;
return;
}
@@ -511,13 +511,13 @@ power_management_cleanup( void )
if (using_acpi)
{
if (acpiwatch != 0)
- g_source_remove(acpiwatch);
+ g_source_remove (acpiwatch);
acpiwatch = 0;
- acpi_linux_cleanup(&acpiinfo);
+ acpi_linux_cleanup (&acpiinfo);
}
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
if (using_acpi) {
- acpi_freebsd_cleanup(&acpiinfo);
+ acpi_freebsd_cleanup (&acpiinfo);
}
#endif
@@ -525,7 +525,7 @@ power_management_cleanup( void )
}
int
-power_management_using_upower( void)
+power_management_using_upower (void)
{
#ifdef HAVE_UPOWER
return using_upower;