summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-05-26 17:03:52 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-05-26 17:03:52 +0000
commit052fc4d9b20905804df0ddfa0018491b1c2169fc (patch)
treeaa471e938f0140775f3c9a31ba3d640082fe1c9b
parent2ac057241a3b96fc71d9e320ac23e455a0a11368 (diff)
downloadrockbox-052fc4d9b20905804df0ddfa0018491b1c2169fc.zip
rockbox-052fc4d9b20905804df0ddfa0018491b1c2169fc.tar.gz
rockbox-052fc4d9b20905804df0ddfa0018491b1c2169fc.tar.bz2
rockbox-052fc4d9b20905804df0ddfa0018491b1c2169fc.tar.xz
Sound settings
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@708 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/sound_menu.c116
-rw-r--r--apps/sound_menu.h24
2 files changed, 140 insertions, 0 deletions
diff --git a/apps/sound_menu.c b/apps/sound_menu.c
new file mode 100644
index 0000000..39f395c
--- /dev/null
+++ b/apps/sound_menu.c
@@ -0,0 +1,116 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2002 Björn Stenberg
+ *
+ * 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.
+ *
+ ****************************************************************************/
+#include <stdio.h>
+#include <stdbool.h>
+#include "lcd.h"
+#include "menu.h"
+#include "sound_menu.h"
+#include "mpeg.h"
+#include "button.h"
+#include "kernel.h"
+
+typedef void (*settingfunc)(int);
+enum { Volume, Bass, Treble, numsettings };
+
+static void soundsetting(int setting)
+{
+ static int savedsettings[numsettings] = { 50, 50, 50 };
+ static const char* names[] = { "Volume", "Bass", "Treble" };
+ static settingfunc funcs[] = { mpeg_volume, mpeg_bass, mpeg_treble };
+
+ int value = savedsettings[setting];
+ char buf[32];
+ bool done = false;
+
+ lcd_clear_display();
+ snprintf(buf,sizeof buf,"[%s]",names[setting]);
+ lcd_puts(0,0,buf);
+
+ while ( !done ) {
+ int key;
+ snprintf(buf,sizeof buf,"%d %% ",value);
+ lcd_puts(0,1,buf);
+
+ while ( !(key = button_get()) )
+ yield();
+
+ switch ( key ) {
+#ifdef HAVE_RECORDER_KEYPAD
+ case BUTTON_UP:
+#else
+ case BUTTON_RIGHT:
+#endif
+ value += 10;
+ if ( value >= 100 )
+ value = 100;
+ (funcs[setting])(value);
+ break;
+
+#ifdef HAVE_RECORDER_KEYPAD
+ case BUTTON_DOWN:
+#else
+ case BUTTON_LEFT:
+#endif
+ value -= 10;
+ if ( value <= 0 )
+ value = 0;
+ (funcs[setting])(value);
+ break;
+
+#ifdef HAVE_RECORDER_KEYPAD
+ case BUTTON_LEFT:
+#else
+ case BUTTON_STOP:
+#endif
+ savedsettings[setting] = value;
+ done = true;
+ break;
+ }
+ }
+}
+
+static void volume(void)
+{
+ soundsetting(Volume);
+}
+
+static void bass(void)
+{
+ soundsetting(Bass);
+};
+
+static void treble(void)
+{
+ soundsetting(Treble);
+}
+
+void sound_menu(void)
+{
+ int m;
+ struct menu_items items[] = {
+ { Volume, "Volume", volume },
+ { Bass, "Bass", bass },
+ { Treble, "Treble", treble }
+ };
+
+ m=menu_init( items, sizeof items / sizeof(struct menu_items) );
+ menu_run(m);
+ menu_exit(m);
+}
+
diff --git a/apps/sound_menu.h b/apps/sound_menu.h
new file mode 100644
index 0000000..db40c12
--- /dev/null
+++ b/apps/sound_menu.h
@@ -0,0 +1,24 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2002 Björn Stenberg
+ *
+ * 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 _SOUND_MENU_H
+#define _SOUND_MENU_H
+
+void sound_menu(void);
+
+#endif