Update menubox
authorwchang kim <wchang.kim@samsung.com>
Tue, 26 Oct 2021 06:42:09 +0000 (15:42 +0900)
committerwchang kim <wchang.kim@samsung.com>
Tue, 26 Oct 2021 06:42:09 +0000 (15:42 +0900)
Change-Id: Ic029861aff1dbb6effba8dbb5f682b42c1f59621

support/kconfig/lxdialog/menubox.c
support/kconfig/mconf.c

index 185524901dce6b996347b00cd3ff0e2b8715aa36..de728acdadb29e1b1edec21b49fbfcf5317a50aa 100755 (executable)
@@ -59,6 +59,7 @@
 #include "dialog.h"
 
 static int menu_width, item_x;
+static int info_width;
 
 /*
  * Print menu item
@@ -178,6 +179,114 @@ static void do_scroll(WINDOW *win, int *scroll, int n)
        wrefresh(win);
 }
 
+#define MAX_LIST_NUM 8192
+#define MAX_STR_NUM  256
+
+struct list_entry{
+       int pack_num;
+       int installed_size;
+       int packed_size;
+       int scroll;
+       char list[MAX_LIST_NUM][MAX_STR_NUM]
+};
+
+struct list_entry installed_list;
+
+static int init_installed_list()
+{
+       int i;
+       installed_list.pack_num = 0;
+       installed_list.scroll = 0;
+       installed_list.installed_size = 0;
+       installed_list.packed_size = 0;
+
+       for( i = 0 ; i < MAX_LIST_NUM ; i++ )
+       {
+               memset(&(installed_list.list[i][0]), 0, MAX_STR_NUM);
+       }
+       return 0;
+}
+
+static int read_data()
+{
+       FILE *fp;
+       int i = 0;
+       int flag = 0;
+
+       init_installed_list();
+       fp = fopen("installed_list.txt", "r");
+       if( fp == NULL ) return -1;
+
+       while(i < MAX_LIST_NUM && fgets(installed_list.list[i++],MAX_STR_NUM, fp));
+       installed_list.pack_num = i-1;
+       fclose(fp);
+
+       for ( i = installed_list.pack_num -1 ; i > 0 ; i --)
+       {
+               if((flag & 0x0f) == 0 && strstr(&(installed_list.list[i][0]), "Installed Size : "))
+               {
+                       sscanf(&(installed_list.list[i][0]), "Installed Size : %d", &(installed_list.installed_size));
+                       flag |= 0x0f;
+               }
+               if((flag & 0xf0) == 0 && strstr(&(installed_list.list[i][0]), "Size : "))
+               {
+                       sscanf(&(installed_list.list[i][0]), "Size : %d", &(installed_list.packed_size));
+                       flag |= 0xf0;
+               }
+               if( flag == 0xff)
+               {
+                       break;
+               }
+       }
+       installed_list.pack_num -= 2;
+
+       return 0;
+}
+
+static void print_list(WINDOW *win, int start, int max)
+{
+       int i;
+       int pack_num = installed_list.pack_num;
+
+       for ( i = 0 ; i < max ; i++ )
+       {
+               wrefresh(win);
+       }
+
+       for ( i = 0 ; i < max && i < pack_num - start ; i++ )
+       {
+               wmove(win, i, 0);
+               wclrtoeol(win);
+               mvwaddnstr(win, i, 0, installed_list.list[start+i], strlen(installed_list.list[start+i])-1);
+               wrefresh(win);
+       }
+       for ( ; i < max ; i++)
+       {
+               wmove(win, i, 0);
+               wclrtoeol(win);
+               wrefresh(win);
+       }
+
+       return;
+}
+
+static void print_info(WINDOW *win)
+{
+       char mesg[256];
+
+       sprintf(mesg, "Package Num    : %d", installed_list.pack_num);
+       wmove(win, 0, 0);
+       mvwaddnstr(win, 0, 0, mesg, strlen(mesg));
+       sprintf(mesg, "Installed Size : %d", installed_list.installed_size);
+       wmove(win, 1, 0);
+       mvwaddnstr(win, 1, 0, mesg, strlen(mesg));
+       sprintf(mesg, "Packed Size    : %d", installed_list.packed_size);
+       wmove(win, 2, 0);
+       mvwaddnstr(win, 2, 0, mesg, strlen(mesg));
+
+       return;
+}
+
 /*
  * Display a menu for choosing among a number of options
  */
@@ -188,7 +297,8 @@ int dialog_menu(const char *title, const char *prompt,
        int height, width, menu_height;
        int key = 0, button = 0, scroll = 0, choice = 0;
        int first_item =  0, max_choice;
-       WINDOW *dialog, *menu;
+       WINDOW *dialog, *menu, *info, *list;
+       int info_width, info_height;
 
 do_resize:
        height = getmaxy(stdscr);
@@ -226,9 +336,51 @@ do_resize:
        wattrset(dialog, dlg.dialog.atr);
        print_autowrap(dialog, prompt, width - 2, 1, 3);
 
-       menu_width = width - 6;
+       info_width = width * 2 / 5;
+       info_height = 5;
+       menu_width = width - 6 - info_width;
        box_y = height - menu_height - 5;
+#if 0
        box_x = (width - menu_width) / 2 - 1;
+#else
+       box_x = 2;
+#endif
+
+       read_data();
+#if 1
+       int info_x, info_y;
+       int installed_size = 1024*1024;
+       int packed_size = installed_size / 2;
+       int pack_num = 100;
+
+       info_y = height - menu_height - 5;
+       info_x = menu_width + 4;
+
+       /* info menu box */
+       info = subwin(dialog, info_height, info_width,
+                     y + info_y + 1, x + info_x + 1);
+       /* draw a box around the menu items */
+       draw_box(dialog, info_y, info_x, info_height, info_width,
+                dlg.menubox_border.atr, dlg.menubox.atr);
+
+       print_info(info);
+
+       /* list menu box */
+       info_width = width * 2 / 5 - 2;
+       info_height = menu_height - 5;
+
+       info_y += 5;
+       info_x = menu_width + 4;
+
+       /* info menu & list menu*/
+       list = subwin(dialog, info_height, info_width,
+                     y + info_y + 1, x + info_x + 1);
+       /* draw a box around the menu items */
+       draw_box(dialog, info_y, info_x, info_height+2, info_width + 2,
+                dlg.menubox_border.atr, dlg.menubox.atr);
+
+       print_list(list, installed_list.scroll, info_height);
+#endif
 
        /* create new window for the menu */
        menu = subwin(dialog, menu_height, menu_width,
@@ -303,6 +455,47 @@ do_resize:
                                }
                }
 
+               if(key == KEY_SRIGHT)
+               {
+                       if(installed_list.scroll < installed_list.pack_num - info_height )
+                       {
+                       installed_list.scroll++;
+                       }
+               }
+               else if(key == KEY_SLEFT)
+               {
+                       if(installed_list.scroll > 0)
+                       {
+                               installed_list.scroll--;
+                       }
+               }
+               else if(key == KEY_HOME)
+               {
+                       installed_list.scroll = 0;;
+               }
+               else if(key == KEY_END)
+               {
+                       installed_list.scroll = installed_list.pack_num - info_height;;
+               }
+               else if(key == KEY_SHOME)
+               {
+                       if( 0 < installed_list.scroll - info_height )
+                               installed_list.scroll -= info_height;
+                       else
+                               installed_list.scroll = 0;
+
+               }
+               else if(key == KEY_SEND)
+               {
+                       if( installed_list.pack_num > installed_list.scroll + (2 *info_height) )
+                               installed_list.scroll += info_height;
+                       else
+                               installed_list.scroll = installed_list.pack_num - info_height;
+               }
+
+
+               print_list(list, installed_list.scroll, info_height);
+
                if (item_count() != 0 &&
                    (i < max_choice ||
                     key == KEY_UP || key == KEY_DOWN ||
@@ -432,6 +625,8 @@ do_resize:
                }
        }
        delwin(menu);
+       delwin(list);
+       delwin(info);
        delwin(dialog);
        return key;             /* ESC pressed */
 }
index 279f4552a174fbac50bab1753a51761da8602290..923adbe90cb67474a5f6f7d19f3812fc1e2186bb 100755 (executable)
@@ -1025,6 +1025,9 @@ int main(int ac, char **av)
        conf_read(NULL);
 
        mode = getenv("MENUCONFIG_MODE");
+       printf("TBB_CONFIG : %s\n", getenv("TBB_CONFIG"));
+       printf("INFO_DIR : %s\n", getenv("INFO_DIR"));
+       printf("INFO_DIR : %s\n", getenv("INFO_DIR"));
        if (mode) {
                if (!strcasecmp(mode, "single_menu"))
                        single_menu_mode = 1;