aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Lezcano <daniel.lezcano@linaro.org>2011-06-15 15:45:12 +0200
committerDaniel Lezcano <daniel.lezcano@linaro.org>2011-06-15 15:45:12 +0200
commit7b3da5001ca3648380070a1ea19a44bd76ce3d4b (patch)
tree0e5a2307d30c38ccb8834721faedccb3b6f9d207
parent597892aaee54debd403f423a781538785b646a19 (diff)
downloadpowerdebug-7b3da5001ca3648380070a1ea19a44bd76ce3d4b.tar.gz
Encapsulate the display (1)
Remove some corner cases for the footer display we have the same display feature for all the pm blocks. Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
-rw-r--r--display.c104
-rw-r--r--display.h2
-rw-r--r--powerdebug.c9
-rw-r--r--powerdebug.h20
4 files changed, 49 insertions, 86 deletions
diff --git a/display.c b/display.c
index c6a68a7..fa7d93a 100644
--- a/display.c
+++ b/display.c
@@ -18,7 +18,6 @@
#include "display.h"
#define print(w, x, y, fmt, args...) do { mvwprintw(w, y, x, fmt, ##args); } while (0)
-#define NUM_FOOTER_ITEMS 5
enum { PT_COLOR_DEFAULT = 1,
PT_COLOR_HEADER_BAR,
@@ -38,7 +37,8 @@ int maxx, maxy;
/* Number of lines in the virtual window */
static const int maxrows = 1024;
-static char footer_items[NUM_FOOTER_ITEMS][64];
+#define footer_label " Q (Quit) R (Refresh) Other Keys: 'Left', " \
+ "'Right' , 'Up', 'Down', 'enter', , 'Esc'"
struct rowdata {
int attr;
@@ -66,7 +66,39 @@ static void display_fini(void)
endwin();
}
-int display_init(void)
+static int show_header_footer(int win)
+{
+ int i;
+ int curr_pointer = 0;
+
+ wattrset(header_win, COLOR_PAIR(PT_COLOR_HEADER_BAR));
+ wbkgd(header_win, COLOR_PAIR(PT_COLOR_HEADER_BAR));
+ werase(header_win);
+
+ print(header_win, curr_pointer, 0, "PowerDebug %s", VERSION);
+ curr_pointer += 20;
+
+ for (i = 0; i < TOTAL_FEATURE_WINS; i++) {
+ if (win == i)
+ wattron(header_win, A_REVERSE);
+ else
+ wattroff(header_win, A_REVERSE);
+
+ print(header_win, curr_pointer, 0, " %s ", windata[i].name);
+ curr_pointer += strlen(windata[i].name) + 2;
+ }
+ wrefresh(header_win);
+ werase(footer_win);
+
+ wattron(footer_win, A_REVERSE);
+ print(footer_win, 0, 0, "%s", footer_label);
+ wattroff(footer_win, A_REVERSE);
+ wrefresh(footer_win);
+
+ return 0;
+}
+
+int display_init(int wdefault)
{
int i;
size_t array_size = sizeof(windata) / sizeof(windata[0]);
@@ -118,65 +150,7 @@ int display_init(void)
if (!footer_win)
return -1;
- return 0;
-}
-
-void create_windows(int selectedwindow)
-{
- strcpy(footer_items[0], " Q (Quit) ");
- strcpy(footer_items[1], " R (Refresh) ");
-
- if (selectedwindow == CLOCK)
- strcpy(footer_items[2], " Other Keys: 'Left', 'Right', 'Up', 'Down', 'enter', "
- " '/', 'Esc' ");
- else
- strcpy(footer_items[2], " Other Keys: 'Left', 'Right' ");
-
- strcpy(footer_items[3], "");
-
- werase(stdscr);
- refresh();
-
-}
-
-void create_selectedwindow(int win)
-{
- wrefresh(windata[win].win);
-}
-
-void show_header(int selectedwindow)
-{
- int i, j = 0;
- int curr_pointer = 0;
-
- wattrset(header_win, COLOR_PAIR(PT_COLOR_HEADER_BAR));
- wbkgd(header_win, COLOR_PAIR(PT_COLOR_HEADER_BAR));
- werase(header_win);
-
- print(header_win, curr_pointer, 0, "PowerDebug %s", VERSION);
- curr_pointer += 20;
-
- for (i = 0; i < TOTAL_FEATURE_WINS; i++) {
- if (selectedwindow == i)
- wattron(header_win, A_REVERSE);
- else
- wattroff(header_win, A_REVERSE);
-
- print(header_win, curr_pointer, 0, " %s ", windata[i].name);
- curr_pointer += strlen(windata[i].name) + 2;
- }
- wrefresh(header_win);
- werase(footer_win);
-
- for (i = 0; i < NUM_FOOTER_ITEMS; i++) {
- if (strlen(footer_items[i]) == 0)
- continue;
- wattron(footer_win, A_REVERSE);
- print(footer_win, j, 0, "%s", footer_items[i]);
- wattroff(footer_win, A_REVERSE);
- j+= strlen(footer_items[i])+1;
- }
- wrefresh(footer_win);
+ return show_header_footer(wdefault);
}
void print_regulator_header(void)
@@ -195,6 +169,8 @@ void print_regulator_header(void)
print(regulator_win, 84, 0, "Max u-volts");
wattroff(regulator_win, A_BOLD);
wrefresh(regulator_win);
+
+ show_header_footer(REGULATOR);
}
void print_clock_header(void)
@@ -210,6 +186,8 @@ void print_clock_header(void)
print(clock_win, 98, 0, "Children");
wattroff(clock_win, A_BOLD);
wrefresh(clock_win);
+
+ show_header_footer(CLOCK);
}
void print_sensor_header(void)
@@ -222,6 +200,8 @@ void print_sensor_header(void)
print(sensor_win, 36, 0, "Value");
wattroff(sensor_win, A_BOLD);
wrefresh(sensor_win);
+
+ show_header_footer(SENSOR);
}
int display_refresh_pad(int win)
diff --git a/display.h b/display.h
index 047d674..0b407fb 100644
--- a/display.h
+++ b/display.h
@@ -13,4 +13,4 @@
* - initial API and implementation
*******************************************************************************/
-extern int display_init(void);
+extern int display_init(int wdefault);
diff --git a/powerdebug.c b/powerdebug.c
index 0eee7c5..4d94829 100644
--- a/powerdebug.c
+++ b/powerdebug.c
@@ -258,11 +258,8 @@ int mainloop(struct powerdebug_options *options)
struct timeval tval;
fd_set readfds;
- if (options->selectedwindow != CLOCK || !cont) {
- create_windows(options->selectedwindow);
- show_header(options->selectedwindow);
- create_selectedwindow(options->selectedwindow);
- }
+ /* if (options->selectedwindow != CLOCK || !cont) */
+ /* show_header(options->selectedwindow); */
if (options->selectedwindow == REGULATOR)
regulator_display();
@@ -328,7 +325,7 @@ static int powerdebug_dump(struct powerdebug_options *options)
static int powerdebug_display(struct powerdebug_options *options)
{
- if (display_init()) {
+ if (display_init(options->selectedwindow)) {
printf("failed to initialize display\n");
return -1;
}
diff --git a/powerdebug.h b/powerdebug.h
index 7175839..712acb2 100644
--- a/powerdebug.h
+++ b/powerdebug.h
@@ -28,13 +28,7 @@
enum {CLOCK, REGULATOR, SENSOR};
enum {CLOCK_SELECTED = 1, REFRESH_WINDOW};
-extern int read_and_dump_clock_info(char *clk);
extern void find_parents_for_clock(char *clkname, int complete);
-extern int read_and_print_clock_info(void);
-extern int print_clock_info(int hrow, int selected);
-extern void print_string_val(char *name, char *val);
-extern void print_clock_header(void);
-
extern int display_print_line(int window, int line, char *str,
int bold, void *data);
@@ -45,16 +39,8 @@ extern int display_prev_line(int window);
extern void *display_get_row_data(int window);
extern int clock_toggle_expanded(void);
-extern int display_clock_select(int window, int line);
-extern int display_clock_unselect(int window, int line, bool bold);
-
-extern void get_sensor_info(char *path, char *name, char *sensor, int verbose);
-extern int sensor_dump(void);
+extern int regulator_display(void);
extern void print_sensor_header(void);
+extern void print_clock_header(void);
+extern void print_regulator_header(void);
-extern void killall_windows(int all);
-extern void show_header(int selectedwindow);
-extern void create_windows(int selectedwindow);
-extern void create_selectedwindow(int selectedwindow);
-
-extern int regulator_display(void);