summaryrefslogtreecommitdiff
path: root/apps/menu.h
blob: f9a3d1ffd89ca5e15b035dc10d9f21b9b4e6c4f7 (plain)
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__ */