From c6b010848fda50d5874fe65e1d992099639d9921 Mon Sep 17 00:00:00 2001 From: marschap Date: Mon, 16 May 2005 18:41:57 +0000 Subject: [PATCH] better use LCD screen estate if (width != 20) --- clients/lcdproc/disk.c | 51 ++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/clients/lcdproc/disk.c b/clients/lcdproc/disk.c index 1f7e48c..b4da894 100644 --- a/clients/lcdproc/disk.c +++ b/clients/lcdproc/disk.c @@ -33,19 +33,23 @@ disk_screen (int rep, int display) // Holds info to display (avoid recalculating it) struct disp { - char dev[8]; + char dev[16]; char cap[8]; int full; } table[256]; int i; static int num_disks = 0; static int first = 1; // First line to display, sort of. + static int dev_wid = 6; + static int gauge_wid = 6; #define huge long long int huge size; if (first) { first = 0; + dev_wid = (lcd_wid >= 20) ? (lcd_wid - 8) / 2 : (lcd_wid / 2) - 1; + gauge_wid = (lcd_wid >= 20) ? (lcd_wid - dev_wid - 10) : (lcd_wid - dev_wid - 3); sock_send_string (sock, "screen_add D\n"); sprintf (buffer, "screen_set D -name {Disk Use: %s}\n", get_hostname()); @@ -67,21 +71,19 @@ disk_screen (int rep, int display) memset (table, 0, sizeof (struct disp) * 256); machine_get_fs(mnt, &count); - first = 0; // Fill the display structure... if (count) { sock_send_string (sock, "widget_set D err1 30 5 .\n"); sock_send_string (sock, "widget_set D err2 30 5 .\n"); for (i = 0; i < count; i++) { - if (strlen (mnt[i].mpoint) > 6) { - sprintf (table[i].dev, "-%s", (mnt[i].mpoint) + (strlen (mnt[i].mpoint) - 5)); - } else { + if (strlen(mnt[i].mpoint) > dev_wid) + sprintf (table[i].dev, "-%s", (mnt[i].mpoint) + (strlen(mnt[i].mpoint) - (dev_wid - 1))); + else sprintf (table[i].dev, "%s", mnt[i].mpoint); - } //table[i].full = (lcd_cellwid * 4); - table[i].full = (huge) (lcd_cellwid * 4) + table[i].full = (huge) (lcd_cellwid * gauge_wid) * (huge) (mnt[i].blocks - mnt[i].bfree) / (huge) mnt[i].blocks; @@ -89,20 +91,22 @@ disk_screen (int rep, int display) memset (table[i].cap, 0, 8); // Kilobytes - if (size > 0 && size < (huge) 1000 * (huge) 1000) + if ((size >= 0) && (size < (huge) 1000 * (huge) 1000)) sprintf (table[i].cap, "%3.1fk", (double) (size) / 1024.0); // Megabytes - else if (size >= (huge) 1000 * (huge) 1000 && size < (huge) 1000 * (huge) 1000 * (huge) 1000) + else if ((size >= (huge) 1000 * (huge) 1000) && (size < (huge) 1000 * (huge) 1000 * (huge) 1000)) sprintf (table[i].cap, "%3.1fM", (float) (size / (huge) 1024) / 1024.0); // Gigabytes - else if (size >= (huge) 1000 * (huge) 1000 * (huge) 1000 && size < (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000) + else if ((size >= (huge) 1000 * (huge) 1000 * (huge) 1000) && + (size < (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000)) sprintf (table[i].cap, "%3.1fG", (float) (size / ((huge) 1024 * (huge) 1024)) / 1024.0); // Terabytes - else if (size >= (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 && size < (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000) + else if ((size >= (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000) && + (size < (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000)) sprintf (table[i].cap, "%3.1fT", (float) (size / ((huge) 1024 * (huge) 1024 * (huge) 1024)) / 1024.0); - // PectaBytes -- Yeah! I want some! - else if (size >= (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 && size < (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000) + else if ((size >= (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000) && + (size < (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000)) sprintf (table[i].cap, "%3.1fP", (float) (size / ((huge) 1024 * (huge) 1024 * (huge) 1024 * (huge) 1024)) / 1024.0); } @@ -120,7 +124,7 @@ disk_screen (int rep, int display) //sprintf(tmp, "widget_set D f 1 2 20 4 20 %i v 8\n", count); //sock_send_string(sock, tmp); for (i = 0; i < count; i++) { - if (table[i].dev[0] == 0) + if (table[i].dev[0] == '\0') continue; if (i >= num_disks) // Make sure we have enough lines... { @@ -128,12 +132,21 @@ disk_screen (int rep, int display) sock_send_string (sock, tmp); sprintf (tmp, "widget_add D h%i hbar -in f\n", i); sock_send_string (sock, tmp); - } - sprintf (tmp, "widget_set D s%i 1 %i {%-6s %6s E F}\n", i, i + 1, table[i].dev, table[i].cap); - sock_send_string (sock, tmp); - sprintf (tmp, "widget_set D h%i 16 %i %i\n", i, i + 1, table[i].full); - sock_send_string (sock, tmp); + if (lcd_wid >= 20) { // 20+x columns + sprintf (tmp, "%-*s %6s E%*sF", dev_wid, table[i].dev, table[i].cap, gauge_wid, ""); + sprintf (buffer, "widget_set D s%i 1 %i {%s}\n", i, i + 1, tmp); + sock_send_string (sock, buffer); + sprintf (buffer, "widget_set D h%i %i %i %i\n", i, 10 + dev_wid, i + 1, table[i].full); + sock_send_string (sock, buffer); + } + else { // < 20 columns + sprintf (tmp, "%-*s E%*sF", dev_wid, table[i].dev, gauge_wid, ""); + sprintf (buffer, "widget_set D s%i 1 %i {%s}\n", i, i + 1, tmp); + sock_send_string (sock, buffer); + sprintf (buffer, "widget_set D h%i %i %i %i\n", i, 3 + dev_wid, i + 1, table[i].full); + sock_send_string (sock, buffer); + } } // Now remove extra widgets...