Create a pad for each pm blocks, so we can use the same code
to scroll the values on the display.

Signed-off-by: Daniel Lezcano <daniel.lezc...@linaro.org>
---
 display.c |  141 ++++++++++++++++++-------------------------------------------
 1 files changed, 41 insertions(+), 100 deletions(-)

diff --git a/display.c b/display.c
index 3795547..b417459 100644
--- a/display.c
+++ b/display.c
@@ -31,10 +31,6 @@ enum { PT_COLOR_DEFAULT = 1,
 };
 
 static WINDOW *header_win;
-static WINDOW *regulator_win;
-static WINDOW *clock_pad;
-static WINDOW *clock_labels;
-static WINDOW *sensor_win;
 static WINDOW *footer_win;
 
 int maxx, maxy;
@@ -50,6 +46,8 @@ struct rowdata {
 };
 
 struct windata {
+       WINDOW *win;
+       WINDOW *pad;
        struct rowdata *rowdata;
        char *name;
        int nrdata;
@@ -70,6 +68,9 @@ static void display_fini(void)
 
 int display_init(void)
 {
+       int i;
+       size_t array_size = sizeof(windata) / sizeof(windata[0]);
+
        if (!initscr())
                return -1;
 
@@ -97,21 +98,17 @@ int display_init(void)
 
        getmaxyx(stdscr, maxy, maxx);
 
-       regulator_win = subwin(stdscr, maxy - 2, maxx, 1, 0);
-       if (!regulator_win)
-               return -1;
+       for (i = 0; i < array_size; i++) {
 
-       clock_labels = subwin(stdscr, maxy - 2, maxx, 1, 0);
-       if (!clock_labels)
-               return -1;
+               windata[i].win = subwin(stdscr, maxy - 2, maxx, 1, 0);
+               if (!windata[i].win)
+                       return -1;
 
-       clock_pad = newpad(maxrows, maxx);
-       if (!clock_pad)
-               return -1;
+               windata[i].pad = newpad(maxrows, maxx);
+               if (!windata[i].pad)
+                       return -1;
 
-       sensor_win = subwin(stdscr, maxy - 2, maxx, 1, 0);
-       if (!sensor_win)
-               return -1;
+       }
 
        header_win = subwin(stdscr, 1, maxx, 0, 0);
        if (!header_win)
@@ -142,17 +139,9 @@ void create_windows(int selectedwindow)
 
 }
 
-void create_selectedwindow(int selectedwindow)
+void create_selectedwindow(int win)
 {
-       switch (selectedwindow) {
-       case REGULATOR:
-               wrefresh(regulator_win);
-               break;
-
-       case SENSOR:
-               wrefresh(sensor_win);
-               break;
-       }
+       wrefresh(windata[win].win);
 }
 
 void show_header(int selectedwindow)
@@ -192,6 +181,8 @@ void show_header(int selectedwindow)
 
 void print_regulator_header(void)
 {
+       WINDOW *regulator_win = windata[REGULATOR].win;
+
        werase(regulator_win);
        wattron(regulator_win, A_BOLD);
        print(regulator_win, 0, 0, "Name");
@@ -208,73 +199,23 @@ void print_regulator_header(void)
 
 void print_clock_header(void)
 {
-       werase(clock_labels);
-       wattron(clock_labels, A_BOLD);
-       print(clock_labels, 0, 0, "Name");
-       print(clock_labels, 56, 0, "Flags");
-       print(clock_labels, 75, 0, "Rate");
-       print(clock_labels, 88, 0, "Usecount");
-       print(clock_labels, 98, 0, "Children");
-       wattroff(clock_labels, A_BOLD);
-       wrefresh(clock_labels);
+       WINDOW *clock_win = windata[CLOCK].win;
+
+       werase(clock_win);
+       wattron(clock_win, A_BOLD);
+       print(clock_win, 0, 0, "Name");
+       print(clock_win, 56, 0, "Flags");
+       print(clock_win, 75, 0, "Rate");
+       print(clock_win, 88, 0, "Usecount");
+       print(clock_win, 98, 0, "Children");
+       wattroff(clock_win, A_BOLD);
+       wrefresh(clock_win);
 }
 
-#if 0
-void show_regulator_info(struct regulator_info *reg_info, int nr_reg, int 
verbose)
-{
-       int i, count = 1;
-
-       print_regulator_header();
-
-       wrefresh(regulator_win);
-
-       return;
-
-       (void)verbose;
-
-       for (i = 0; i < nr_reg; i++) {
-               int col = 0;
-
-               if ((i + 2) > (maxy-2))
-                       break;
-
-               if (reg_info[i].num_users > 0)
-                       wattron(regulator_win, WA_BOLD);
-               else
-                       wattroff(regulator_win, WA_BOLD);
-
-               print(regulator_win, col, count, "%s",
-                       reg_info[i].name);
-               col += 12;
-               print(regulator_win, col, count, "%s",
-                       reg_info[i].status);
-               col += 12;
-               print(regulator_win, col, count, "%s",
-                       reg_info[i].state);
-               col += 12;
-               print(regulator_win, col, count, "%s",
-                       reg_info[i].type);
-               col += 12;
-               print(regulator_win, col, count, "%d",
-                       reg_info[i].num_users);
-               col += 12;
-               print(regulator_win, col, count, "%d",
-                       reg_info[i].microvolts);
-               col += 12;
-               print(regulator_win, col, count, "%d",
-                       reg_info[i].min_microvolts);
-               col += 12;
-               print(regulator_win, col, count, "%d",
-                       reg_info[i].max_microvolts);
-
-               count++;
-       }
-       wrefresh(regulator_win);
-}
-#endif
-
 void print_sensor_header(void)
 {
+       WINDOW *sensor_win = windata[SENSOR].win;
+
        werase(sensor_win);
        wattron(sensor_win, A_BOLD);
        print(sensor_win, 0, 0, "Name");
@@ -289,14 +230,14 @@ void print_sensor_header(void)
 
 int display_refresh_pad(int win)
 {
-       return prefresh(clock_pad, windata[win].scrolling,
+       return prefresh(windata[win].pad, windata[win].scrolling,
                        0, 2, 0, maxy - 2, maxx);
 }
 
-static int inline display_clock_un_select(int win, int line,
+static int inline display_un_select(int win, int line,
                                          bool highlight, bool bold)
 {
-       if (mvwchgat(clock_pad, line, 0, -1,
+       if (mvwchgat(windata[win].pad, line, 0, -1,
                     highlight ? WA_STANDOUT :
                     bold ? WA_BOLD: WA_NORMAL, 0, NULL) < 0)
                return -1;
@@ -306,12 +247,12 @@ static int inline display_clock_un_select(int win, int 
line,
 
 int display_select(int win, int line)
 {
-       return display_clock_un_select(win, line, true, false);
+       return display_un_select(win, line, true, false);
 }
 
 int display_unselect(int win, int line, bool bold)
 {
-       return display_clock_un_select(win, line, false, bold);
+       return display_un_select(win, line, false, bold);
 }
 
 void *display_get_row_data(int win)
@@ -337,11 +278,11 @@ int display_set_row_data(int win, int line, void *data, 
int attr)
        return 0;
 }
 
-int display_reset_cursor(win)
+int display_reset_cursor(int win)
 {
        windata[win].nrdata = 0;
-       werase(clock_pad);
-       return wmove(clock_pad, 0, 0);
+       werase(windata[win].pad);
+       return wmove(windata[win].pad, 0, 0);
 }
 
 int display_print_line(int win, int line, char *str, int bold, void *data)
@@ -358,12 +299,12 @@ int display_print_line(int win, int line, char *str, int 
bold, void *data)
                return -1;
 
        if (attr)
-               wattron(clock_pad, attr);
+               wattron(windata[win].pad, attr);
 
-       wprintw(clock_pad, "%s\n", str);
+       wprintw(windata[win].pad, "%s\n", str);
 
        if (attr)
-               wattroff(clock_pad, attr);
+               wattroff(windata[win].pad, attr);
 
        return 0;
 }
-- 
1.7.1


_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to