+void update_iostream_sort(int *line_selected)
+{
+ int i;
+ int size;
+
+ size = 3;
+ if (*line_selected > (size - 1))
+ *line_selected = size - 1;
+ else if (*line_selected < 0)
+ *line_selected = 0;
+ if (iostreamtopview[*line_selected].sort == 1)
+ iostreamtopview[*line_selected].reverse = 1;
+ for (i = 0; i < size; i++)
+ iostreamtopview[i].sort = 0;
+ iostreamtopview[*line_selected].sort = 1;
+
+}
+
+void update_iostream_pref(int *line_selected, int toggle_view, int toggle_sort)
+{
+ int i;
+ int size;
+
+ if (!data)
+ return;
+ if (pref_panel_window) {
+ del_panel(pref_panel);
+ delwin(pref_panel_window);
+ }
+ size = 3;
+
+ pref_panel_window = create_window(size + 2, 30, 10, 10);
+ pref_panel = new_panel(pref_panel_window);
+
+ werase(pref_panel_window);
+ box(pref_panel_window, 0 , 0);
+ set_window_title(pref_panel_window, "IOTop Preferences ");
+ wattron(pref_panel_window, A_BOLD);
+ mvwprintw(pref_panel_window, size + 1, 1,
+ " 's' : sort, space : toggle");
+ wattroff(pref_panel_window, A_BOLD);
+
+ if (*line_selected > (size - 1))
+ *line_selected = size - 1;
+ else if (*line_selected < 0)
+ *line_selected = 0;
+ if (toggle_sort == 1) {
+ update_iostream_sort(line_selected);
+ update_current_view();
+ }
+
+ for (i = 0; i < size; i++) {
+ if (i == *line_selected) {
+ wattron(pref_panel_window, COLOR_PAIR(5));
+ mvwhline(pref_panel_window, i + 1, 1, ' ', 30 - 2);
+ }
+ if (iostreamtopview[i].sort == 1)
+ wattron(pref_panel_window, A_BOLD);
+ mvwprintw(pref_panel_window, i + 1, 1, "[-] %s",
+ iostreamtopview[i].title);
+ wattroff(pref_panel_window, A_BOLD);
+ wattroff(pref_panel_window, COLOR_PAIR(5));
+
+ }
+ update_panels();
+ doupdate();
+}
+
+void update_cpu_sort(int *line_selected)
+{
+ int i;
+ int size = 3;
+
+ if (*line_selected > (size - 1))
+ *line_selected = size - 1;
+ else if (*line_selected < 0)
+ *line_selected = 0;
+
+ /* special case, we don't support sorting by procname for now */
+ if (*line_selected != 3) {
+ if (cputopview[*line_selected].sort == 1)
+ cputopview[*line_selected].reverse = 1;
+ for (i = 0; i < size; i++)
+ cputopview[i].sort = 0;
+ cputopview[*line_selected].sort = 1;
+ }
+}
+
+void update_cpu_pref(int *line_selected, int toggle_view, int toggle_sort)
+{
+ int i;
+ int size;
+
+ if (!data)
+ return;
+ if (pref_panel_window) {
+ del_panel(pref_panel);
+ delwin(pref_panel_window);
+ }
+ size = 4;
+
+ pref_panel_window = create_window(size + 2, 30, 10, 10);
+ pref_panel = new_panel(pref_panel_window);
+
+ werase(pref_panel_window);
+ box(pref_panel_window, 0 , 0);
+ set_window_title(pref_panel_window, "CPUTop Preferences ");
+ wattron(pref_panel_window, A_BOLD);
+ mvwprintw(pref_panel_window, size + 1, 1,
+ " 's' : sort, space : toggle");
+ wattroff(pref_panel_window, A_BOLD);
+
+ if (*line_selected > (size - 1))
+ *line_selected = size - 1;
+ else if (*line_selected < 0)
+ *line_selected = 0;
+ if (toggle_sort == 1) {
+ update_cpu_sort(line_selected);
+ update_current_view();
+ }
+
+ for (i = 0; i < size; i++) {
+ if (i == *line_selected) {
+ wattron(pref_panel_window, COLOR_PAIR(5));
+ mvwhline(pref_panel_window, i + 1, 1, ' ', 30 - 2);
+ }
+ if (cputopview[i].sort == 1)
+ wattron(pref_panel_window, A_BOLD);
+ mvwprintw(pref_panel_window, i + 1, 1, "[-] %s",
+ cputopview[i].title);
+ wattroff(pref_panel_window, A_BOLD);
+ wattroff(pref_panel_window, COLOR_PAIR(5));
+
+ }
+ update_panels();
+ doupdate();
+}
+
+void update_perf_sort(int *line_selected)