* @v dynui Dynamic user interface
* @v name Name, or NULL
* @v text Text, or NULL
+ * @v flags Flags
* @v shortcut Shortcut key
- * @v is_default Item is the default item
* @ret item User interface item, or NULL on failure
*/
struct dynamic_item * add_dynui_item ( struct dynamic_ui *dynui,
const char *name, const char *text,
- int shortcut, int is_default ) {
+ unsigned int flags, int shortcut ) {
struct dynamic_item *item;
size_t name_len;
size_t text_len;
strcpy ( text_copy, text );
item->text = text_copy;
item->index = dynui->count++;
+ item->flags = flags;
item->shortcut = shortcut;
- item->is_default = is_default;
/* Add to list of items */
list_add_tail ( &item->list, &dynui->items );
struct item_options opts;
struct dynamic_ui *dynui;
struct dynamic_item *item;
+ unsigned int flags = 0;
char *name = NULL;
char *text = NULL;
int rc;
goto err_parse_dynui;
/* Add dynamic user interface item */
- item = add_dynui_item ( dynui, name, ( text ? text : "" ),
- opts.key, opts.is_default );
+ if ( opts.is_default )
+ flags |= DYNUI_DEFAULT;
+ item = add_dynui_item ( dynui, name, ( text ? text : "" ), flags,
+ opts.key );
if ( ! item ) {
rc = -ENOMEM;
goto err_add_dynui_item;
if ( strcmp ( select, item->name ) == 0 )
ui.scroll.current = ui.scroll.count;
} else {
- if ( item->is_default )
+ if ( item->flags & DYNUI_DEFAULT )
ui.scroll.current = ui.scroll.count;
}
}
const char *text;
/** Index */
unsigned int index;
+ /** Flags */
+ unsigned int flags;
/** Shortcut key */
int shortcut;
- /** Is default item */
- int is_default;
};
+/** Dynamic user interface item is default selection */
+#define DYNUI_DEFAULT 0x0001
+
extern struct dynamic_ui * create_dynui ( const char *name, const char *title );
extern struct dynamic_item * add_dynui_item ( struct dynamic_ui *dynui,
const char *name,
- const char *text, int shortcut,
- int is_default );
+ const char *text,
+ unsigned int flags,
+ int shortcut );
extern void destroy_dynui ( struct dynamic_ui *dynui );
extern struct dynamic_ui * find_dynui ( const char *name );
extern struct dynamic_item * dynui_item ( struct dynamic_ui *dynui,