1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 Robert E. Hak
*
* 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 __MENU_H__
#define __MENU_H__
#include <stdbool.h>
/* button definitions */
#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
#define MENU_EXIT BUTTON_LEFT
#define MENU_EXIT2 BUTTON_OFF
#define MENU_EXIT_MENU BUTTON_MODE
#define MENU_ENTER BUTTON_RIGHT
#define MENU_ENTER2 BUTTON_SELECT
#define MENU_RC_EXIT BUTTON_RC_STOP
#define MENU_RC_EXIT_MENU BUTTON_RC_MODE
#define MENU_RC_ENTER BUTTON_RC_ON
#define MENU_RC_ENTER2 BUTTON_RC_MENU
#elif CONFIG_KEYPAD == RECORDER_PAD
#define MENU_EXIT BUTTON_LEFT
#define MENU_EXIT2 BUTTON_OFF
#define MENU_EXIT_MENU BUTTON_F1
#define MENU_ENTER BUTTON_RIGHT
#define MENU_ENTER2 BUTTON_PLAY
#define MENU_RC_EXIT BUTTON_RC_STOP
#define MENU_RC_ENTER BUTTON_RC_PLAY
#elif CONFIG_KEYPAD == PLAYER_PAD
#define MENU_EXIT BUTTON_STOP
#define MENU_EXIT_MENU BUTTON_MENU
#define MENU_ENTER BUTTON_PLAY
#define MENU_RC_EXIT BUTTON_RC_STOP
#define MENU_RC_ENTER BUTTON_RC_PLAY
#elif CONFIG_KEYPAD == ONDIO_PAD
#define MENU_EXIT BUTTON_LEFT
#define MENU_EXIT_MENU BUTTON_MENU
#define MENU_ENTER BUTTON_RIGHT
#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || (CONFIG_KEYPAD == IPOD_4G_PAD)
/* TODO: Check menu button assignments */
#define MENU_NEXT BUTTON_DOWN
#define MENU_PREV BUTTON_UP
#define MENU_EXIT BUTTON_LEFT
#define MENU_EXIT_MENU BUTTON_MENU
#define MENU_ENTER BUTTON_RIGHT
#define MENU_ENTER2 BUTTON_SELECT
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
#define MENU_NEXT BUTTON_DOWN
#define MENU_PREV BUTTON_UP
#define MENU_EXIT BUTTON_LEFT
#define MENU_EXIT_MENU BUTTON_PLAY
#define MENU_ENTER BUTTON_RIGHT
#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
#define MENU_NEXT BUTTON_DOWN
#define MENU_PREV BUTTON_UP
#define MENU_EXIT BUTTON_LEFT
#define MENU_EXIT_MENU BUTTON_REC
#define MENU_ENTER BUTTON_RIGHT
#define MENU_ENTER2 BUTTON_SELECT
#elif CONFIG_KEYPAD == GIGABEAT_PAD
#define MENU_EXIT BUTTON_LEFT
#define MENU_EXIT2 BUTTON_A
#define MENU_EXIT_MENU BUTTON_MENU
#define MENU_ENTER BUTTON_RIGHT
#define MENU_ENTER2 BUTTON_SELECT
#define MENU_NEXT BUTTON_DOWN
#define MENU_PREV BUTTON_UP
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#define MENU_NEXT BUTTON_SCROLL_DOWN
#define MENU_PREV BUTTON_SCROLL_UP
#define MENU_EXIT BUTTON_LEFT
#define MENU_EXIT_MENU BUTTON_REW
#define MENU_ENTER BUTTON_RIGHT
#define MENU_ENTER2 BUTTON_FF
#endif
struct menu_item {
unsigned char *desc; /* string or ID */
bool (*function) (void); /* return true if USB was connected */
};
int menu_init(const struct menu_item* mitems, int count, int (*callback)(int, int),
const char *button1, const char *button2, const char *button3);
void menu_exit(int menu);
void put_cursorxy(int x, int y, bool on);
/* Returns below define, or number of selected menu item*/
int menu_show(int m);
#define MENU_ATTACHED_USB -1
#define MENU_SELECTED_EXIT -2
bool menu_run(int menu);
int menu_cursor(int menu);
char* menu_description(int menu, int position);
void menu_delete(int menu, int position);
int menu_count(int menu);
bool menu_moveup(int menu);
bool menu_movedown(int menu);
void menu_draw(int menu);
void menu_insert(int menu, int position, char *desc, bool (*function) (void));
void menu_set_cursor(int menu, int position);
void menu_talk_selected(int m);
#endif /* End __MENU_H__ */
|