summaryrefslogtreecommitdiffstats
path: root/apps/gui/option_select.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/option_select.h')
-rw-r--r--apps/gui/option_select.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/apps/gui/option_select.h b/apps/gui/option_select.h
new file mode 100644
index 0000000000..c6a5e196f0
--- /dev/null
+++ b/apps/gui/option_select.h
@@ -0,0 +1,119 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2005 by Kevin Ferrare
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#ifndef _GUI_OPTION_SELECT_H_
+#define _GUI_OPTION_SELECT_H_
+#include "settings.h"
+
+typedef void option_formatter(char* dest, int dest_length,
+ int variable, const char* unit);
+
+struct option_select
+{
+ const char * title;
+ int min_value;
+ int max_value;
+ int step;
+ int option;
+ const char * extra_string;
+ /* In the case the option is a number */
+ option_formatter *formatter;
+ const struct opt_items * items;
+ bool limit_loop;
+};
+
+/*
+ * Initializes an option containing a numeric values
+ * - title : the title of the option
+ * - init_value : the initial value the number will be
+ * - min_value, max_value : bounds to the value
+ * - step : the ammount you want to add / withdraw to the initial number
+ * each time a key is pressed
+ * - unit : the unit in which the value is (ex "s", "bytes", ...)
+ * - formatter : a callback function that generates a string
+ * from the number it gets
+ */
+extern void option_select_init_numeric(struct option_select * opt,
+ const char * title,
+ int init_value,
+ int min_value,
+ int max_value,
+ int step,
+ const char * unit,
+ option_formatter *formatter);
+
+/*
+ * Initializes an option containing a list of choices
+ * - title : the title of the option
+ * - selected : the initially selected item
+ * - items : the list of items, defined in settings.h
+ * - nb_items : the number of items in the 'items' list
+ */
+extern void option_select_init_items(struct option_select * opt,
+ const char * title,
+ int selected,
+ const struct opt_items * items,
+ int nb_items);
+
+/*
+ * Gets the selected option
+ * - opt : the option struct
+ * - buffer : a buffer to eventually format the option
+ * Returns the selected option
+ */
+extern const char * option_select_get_text(struct option_select * opt, char * buffer);
+
+/*
+ * Selects the next value
+ * - opt : the option struct
+ */
+extern void option_select_next(struct option_select * opt);
+
+/*
+ * Selects the previous value
+ * - opt : the option struct
+ */
+extern void option_select_prev(struct option_select * opt);
+
+/*
+ * Returns the selected number
+ * - opt : the option struct
+ */
+#define option_select_get_selected(_opt) \
+ (_opt)->option
+
+/*
+ * Returns the title
+ * - opt : the option struct
+ */
+#define option_select_get_title(_opt) \
+ (_opt)->title
+
+/*
+ * Tells the option selector wether it should stop when reaching the min/max value
+ * or should continue (by going to max/min)
+ * - opt : the option struct
+ * - scroll :
+ * - true : stops when reaching min/max
+ * - false : continues to go to max/min when reaching min/max
+ */
+#define option_select_limit_loop(_opt, loop) \
+ (_opt)->limit_loop=loop
+
+#endif /* _GUI_OPTION_SELECT_H_ */