diff options
Diffstat (limited to 'alsamixer/card_select.c')
-rw-r--r-- | alsamixer/card_select.c | 57 |
1 files changed, 8 insertions, 49 deletions
diff --git a/alsamixer/card_select.c b/alsamixer/card_select.c index c5fb727..a58c037 100644 --- a/alsamixer/card_select.c +++ b/alsamixer/card_select.c @@ -72,43 +72,12 @@ static void on_handle_key(int key) } } -static bool create(void) +static void create(void) { - int rows, columns; - const char *title; - - if (screen_lines < 3 || screen_cols < 10) { - beep(); - list_widget.close(); - return FALSE; - } - scale_menu(menu, &rows, &columns); - rows += 2; - columns += 2; - if (rows > screen_lines) - rows = screen_lines; - if (columns > screen_cols) - columns = screen_cols; - - widget_init(&list_widget, rows, columns, SCREEN_CENTER, SCREEN_CENTER, - attrs.menu, WIDGET_BORDER | WIDGET_SUBWINDOW); - - title = _("Sound Card"); - mvwprintw(list_widget.window, 0, (columns - 2 - get_mbs_width(title)) / 2, " %s ", title); - set_menu_win(menu, list_widget.window); - set_menu_sub(menu, list_widget.subwindow); - return TRUE; -} - -static void on_window_size_changed(void) -{ - unpost_menu(menu); - if (!create()) - return; - post_menu(menu); + menu_widget_create(&list_widget, menu, _("Sound Card")); } -static void on_close(void) +void close_card_select_list(void) { unsigned int i; struct card *card, *next_card; @@ -128,15 +97,10 @@ static void on_close(void) widget_free(&list_widget); } -void close_card_select_list(void) -{ - on_close(); -} - static struct widget list_widget = { .handle_key = on_handle_key, - .window_size_changed = on_window_size_changed, - .close = on_close, + .window_size_changed = create, + .close = close_card_select_list, }; static int get_cards(void) @@ -170,11 +134,9 @@ static int get_cards(void) if (err < 0) continue; card = ccalloc(1, sizeof *card); - sprintf(buf, "%d", number); - card->indexstr = cstrdup(buf); - card->name = cstrdup(snd_ctl_card_info_get_name(info)); - sprintf(buf, "hw:%d", number); card->device_name = cstrdup(buf); + card->indexstr = cstrdup(buf + 3); + card->name = cstrdup(snd_ctl_card_info_get_name(info)); prev_card->next = card; prev_card = card; ++count; @@ -231,8 +193,5 @@ void create_card_select_list(void) set_menu_spacing(menu, 2, 1, 1); menu_opts_on(menu, O_SHOWDESC); - if (!create()) - return; - - post_menu(menu); + create(); } |