summaryrefslogtreecommitdiff
path: root/alsamixer/card_select.c
diff options
context:
space:
mode:
Diffstat (limited to 'alsamixer/card_select.c')
-rw-r--r--alsamixer/card_select.c57
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();
}