mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-14 02:27:39 -04:00
Remade the menu system slightly. All functions invoked from menus now use
the Menu typedef as return type, and *ALL* menus that intercept USB connect can then return MENU_REFRESH_DIR so that the parent (any parent really) that do file or dir-accesses knows that and can do the refresh. If no refresh is needed by the parent, MENU_OK is returned. Somewhat biggish commit this close to 1.3, but we need to sort out this refresh-after-usb-connected business. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1948 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
ad4a92eb87
commit
b285076925
23 changed files with 175 additions and 89 deletions
|
@ -15,7 +15,7 @@ OC = sh-elf-objcopy
|
||||||
|
|
||||||
FIRMWARE := ../firmware
|
FIRMWARE := ../firmware
|
||||||
|
|
||||||
INCLUDES= -I$(FIRMWARE)/include -I$(FIRMWARE) -I$(FIRMWARE)/common -I$(FIRMWARE)/drivers -I$(FIRMWARE)/malloc
|
INCLUDES= -I$(FIRMWARE)/include -I$(FIRMWARE) -I$(FIRMWARE)/common -I$(FIRMWARE)/drivers -I$(FIRMWARE)/malloc -I.
|
||||||
|
|
||||||
# Pick a target to build for
|
# Pick a target to build for
|
||||||
#TARGET = -DARCHOS_PLAYER=1
|
#TARGET = -DARCHOS_PLAYER=1
|
||||||
|
|
|
@ -82,7 +82,7 @@ void dbg_os(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void dbg_os(void)
|
Menu dbg_os(void)
|
||||||
{
|
{
|
||||||
char buf[32];
|
char buf[32];
|
||||||
int button;
|
int button;
|
||||||
|
@ -109,7 +109,7 @@ void dbg_os(void)
|
||||||
switch(button)
|
switch(button)
|
||||||
{
|
{
|
||||||
case BUTTON_STOP:
|
case BUTTON_STOP:
|
||||||
return;
|
return MENU_OK;
|
||||||
|
|
||||||
case BUTTON_LEFT:
|
case BUTTON_LEFT:
|
||||||
currval--;
|
currval--;
|
||||||
|
@ -124,12 +124,13 @@ void dbg_os(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
/* Test code!!! */
|
/* Test code!!! */
|
||||||
void dbg_ports(void)
|
Menu dbg_ports(void)
|
||||||
{
|
{
|
||||||
unsigned short porta;
|
unsigned short porta;
|
||||||
unsigned short portb;
|
unsigned short portb;
|
||||||
|
@ -199,12 +200,13 @@ void dbg_ports(void)
|
||||||
case BUTTON_LEFT:
|
case BUTTON_LEFT:
|
||||||
charger_enable(false);
|
charger_enable(false);
|
||||||
ide_power_enable(true);
|
ide_power_enable(true);
|
||||||
return;
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void dbg_ports(void)
|
Menu dbg_ports(void)
|
||||||
{
|
{
|
||||||
unsigned short porta;
|
unsigned short porta;
|
||||||
unsigned short portb;
|
unsigned short portb;
|
||||||
|
@ -280,7 +282,7 @@ void dbg_ports(void)
|
||||||
switch(button)
|
switch(button)
|
||||||
{
|
{
|
||||||
case BUTTON_STOP:
|
case BUTTON_STOP:
|
||||||
return;
|
return MENU_OK;
|
||||||
|
|
||||||
case BUTTON_LEFT:
|
case BUTTON_LEFT:
|
||||||
currval--;
|
currval--;
|
||||||
|
@ -295,12 +297,13 @@ void dbg_ports(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_RTC
|
#ifdef HAVE_RTC
|
||||||
/* Read RTC RAM contents and display them */
|
/* Read RTC RAM contents and display them */
|
||||||
void dbg_rtc(void)
|
Menu dbg_rtc(void)
|
||||||
{
|
{
|
||||||
char buf[32];
|
char buf[32];
|
||||||
unsigned char addr = 0, r, c;
|
unsigned char addr = 0, r, c;
|
||||||
|
@ -344,14 +347,15 @@ void dbg_rtc(void)
|
||||||
break;
|
break;
|
||||||
case BUTTON_OFF:
|
case BUTTON_OFF:
|
||||||
case BUTTON_LEFT:
|
case BUTTON_LEFT:
|
||||||
return;
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void dbg_rtc(void)
|
Menu dbg_rtc(void)
|
||||||
{
|
{
|
||||||
return;
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -361,7 +365,7 @@ void dbg_rtc(void)
|
||||||
#define NUMROWS 4
|
#define NUMROWS 4
|
||||||
#endif
|
#endif
|
||||||
/* Read MAS registers and display them */
|
/* Read MAS registers and display them */
|
||||||
void dbg_mas(void)
|
Menu dbg_mas(void)
|
||||||
{
|
{
|
||||||
char buf[32];
|
char buf[32];
|
||||||
unsigned int addr = 0, r, i;
|
unsigned int addr = 0, r, i;
|
||||||
|
@ -405,13 +409,14 @@ void dbg_mas(void)
|
||||||
#else
|
#else
|
||||||
case BUTTON_DOWN:
|
case BUTTON_DOWN:
|
||||||
#endif
|
#endif
|
||||||
return;
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_MAS3587F
|
#ifdef HAVE_MAS3587F
|
||||||
void dbg_mas_codec(void)
|
Menu dbg_mas_codec(void)
|
||||||
{
|
{
|
||||||
char buf[32];
|
char buf[32];
|
||||||
unsigned int addr = 0, r, i;
|
unsigned int addr = 0, r, i;
|
||||||
|
@ -442,9 +447,10 @@ void dbg_mas_codec(void)
|
||||||
if (addr) { addr -= 4; }
|
if (addr) { addr -= 4; }
|
||||||
break;
|
break;
|
||||||
case BUTTON_LEFT:
|
case BUTTON_LEFT:
|
||||||
return;
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -458,7 +464,7 @@ void dbg_mas_codec(void)
|
||||||
#define BAT_FIRST_VAL MAX(POWER_HISTORY_LEN - LCD_WIDTH - 1, 0)
|
#define BAT_FIRST_VAL MAX(POWER_HISTORY_LEN - LCD_WIDTH - 1, 0)
|
||||||
#define BAT_YSPACE (LCD_HEIGHT - 20)
|
#define BAT_YSPACE (LCD_HEIGHT - 20)
|
||||||
|
|
||||||
void view_battery(void)
|
Menu view_battery(void)
|
||||||
{
|
{
|
||||||
int view = 0;
|
int view = 0;
|
||||||
int i, x, y;
|
int i, x, y;
|
||||||
|
@ -579,15 +585,16 @@ void view_battery(void)
|
||||||
|
|
||||||
case BUTTON_LEFT:
|
case BUTTON_LEFT:
|
||||||
case BUTTON_OFF:
|
case BUTTON_OFF:
|
||||||
return;
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_MAS3507D
|
#ifdef HAVE_MAS3507D
|
||||||
void dbg_mas_info(void)
|
Menu dbg_mas_info(void)
|
||||||
{
|
{
|
||||||
int button;
|
int button;
|
||||||
char buf[32];
|
char buf[32];
|
||||||
|
@ -721,7 +728,7 @@ void dbg_mas_info(void)
|
||||||
switch(button)
|
switch(button)
|
||||||
{
|
{
|
||||||
case BUTTON_STOP:
|
case BUTTON_STOP:
|
||||||
return;
|
return MENU_OK;
|
||||||
|
|
||||||
case BUTTON_LEFT:
|
case BUTTON_LEFT:
|
||||||
currval--;
|
currval--;
|
||||||
|
@ -757,12 +764,14 @@ void dbg_mas_info(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void debug_menu(void)
|
Menu debug_menu(void)
|
||||||
{
|
{
|
||||||
int m;
|
int m;
|
||||||
|
Menu result;
|
||||||
|
|
||||||
struct menu_items items[] = {
|
struct menu_items items[] = {
|
||||||
{ "View I/O ports", dbg_ports },
|
{ "View I/O ports", dbg_ports },
|
||||||
|
@ -785,8 +794,10 @@ void debug_menu(void)
|
||||||
};
|
};
|
||||||
|
|
||||||
m=menu_init( items, sizeof items / sizeof(struct menu_items) );
|
m=menu_init( items, sizeof items / sizeof(struct menu_items) );
|
||||||
menu_run(m);
|
result = menu_run(m);
|
||||||
menu_exit(m);
|
menu_exit(m);
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* SIMULATOR */
|
#endif /* SIMULATOR */
|
||||||
|
|
|
@ -19,12 +19,12 @@
|
||||||
#ifndef _DEBUG_MENU_H
|
#ifndef _DEBUG_MENU_H
|
||||||
#define _DEBUG_MENU_H
|
#define _DEBUG_MENU_H
|
||||||
|
|
||||||
void debug_menu(void);
|
Menu debug_menu(void);
|
||||||
|
|
||||||
#ifndef SIMULATOR
|
#ifndef SIMULATOR
|
||||||
extern void dbg_ports(void);
|
extern Menu dbg_ports(void);
|
||||||
#ifdef HAVE_RTC
|
#ifdef HAVE_RTC
|
||||||
extern void dbg_rtc(void);
|
extern Menu dbg_rtc(void);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -29,11 +29,12 @@
|
||||||
#include "sprintf.h"
|
#include "sprintf.h"
|
||||||
|
|
||||||
#include "sokoban.h"
|
#include "sokoban.h"
|
||||||
extern void tetris(void);
|
extern Menu tetris(void);
|
||||||
|
|
||||||
void games_menu(void)
|
Menu games_menu(void)
|
||||||
{
|
{
|
||||||
int m;
|
int m;
|
||||||
|
Menu result;
|
||||||
|
|
||||||
struct menu_items items[] = {
|
struct menu_items items[] = {
|
||||||
{ "Tetris", tetris },
|
{ "Tetris", tetris },
|
||||||
|
@ -41,10 +42,10 @@ void games_menu(void)
|
||||||
};
|
};
|
||||||
|
|
||||||
m=menu_init( items, sizeof items / sizeof(struct menu_items) );
|
m=menu_init( items, sizeof items / sizeof(struct menu_items) );
|
||||||
menu_run(m);
|
result = menu_run(m);
|
||||||
menu_exit(m);
|
menu_exit(m);
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
#ifndef _GAMES_MENU_H
|
#ifndef _GAMES_MENU_H
|
||||||
#define _GAMES_MENU_H
|
#define _GAMES_MENU_H
|
||||||
|
|
||||||
void games_menu(void);
|
#include "menu.h"
|
||||||
|
|
||||||
|
Menu games_menu(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -105,7 +105,7 @@ int show_logo( void )
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void show_credits(void)
|
Menu show_credits(void)
|
||||||
{
|
{
|
||||||
int j = 0;
|
int j = 0;
|
||||||
int btn;
|
int btn;
|
||||||
|
@ -120,22 +120,23 @@ void show_credits(void)
|
||||||
|
|
||||||
btn = button_get(false);
|
btn = button_get(false);
|
||||||
if (btn != BUTTON_NONE && !(btn & BUTTON_REL))
|
if (btn != BUTTON_NONE && !(btn & BUTTON_REL))
|
||||||
return;
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
roll_credits();
|
roll_credits();
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SIMULATOR
|
#ifdef SIMULATOR
|
||||||
#define mp3buf 0
|
#define mp3buf 0
|
||||||
#define mp3end 0
|
#define mp3end 0
|
||||||
|
|
||||||
extern void simulate_usb(void);
|
extern Menu simulate_usb(void);
|
||||||
#else
|
#else
|
||||||
/* defined in linker script */
|
/* defined in linker script */
|
||||||
extern unsigned char mp3buf[];
|
extern unsigned char mp3buf[];
|
||||||
extern unsigned char mp3end[];
|
extern unsigned char mp3end[];
|
||||||
#endif
|
#endif
|
||||||
void show_info(void)
|
Menu show_info(void)
|
||||||
{
|
{
|
||||||
char s[32];
|
char s[32];
|
||||||
int buflen = ((mp3end - mp3buf) * 100) / 0x100000;
|
int buflen = ((mp3end - mp3buf) * 100) / 0x100000;
|
||||||
|
@ -181,11 +182,14 @@ void show_info(void)
|
||||||
if(button_get(false) & ~BUTTON_REL)
|
if(button_get(false) & ~BUTTON_REL)
|
||||||
done = true;
|
done = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void main_menu(void)
|
Menu main_menu(void)
|
||||||
{
|
{
|
||||||
int m;
|
int m;
|
||||||
|
Menu result;
|
||||||
|
|
||||||
/* main menu */
|
/* main menu */
|
||||||
struct menu_items items[] = {
|
struct menu_items items[] = {
|
||||||
|
@ -208,11 +212,13 @@ void main_menu(void)
|
||||||
#ifdef HAVE_LCD_CHARCELLS
|
#ifdef HAVE_LCD_CHARCELLS
|
||||||
lcd_icon(ICON_PARAM, true);
|
lcd_icon(ICON_PARAM, true);
|
||||||
#endif
|
#endif
|
||||||
menu_run(m);
|
result = menu_run(m);
|
||||||
#ifdef HAVE_LCD_CHARCELLS
|
#ifdef HAVE_LCD_CHARCELLS
|
||||||
lcd_icon(ICON_PARAM, false);
|
lcd_icon(ICON_PARAM, false);
|
||||||
#endif
|
#endif
|
||||||
menu_exit(m);
|
menu_exit(m);
|
||||||
|
|
||||||
settings_save();
|
settings_save();
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
#ifndef _MAIN_MENU_H
|
#ifndef _MAIN_MENU_H
|
||||||
#define _MAIN_MENU_H
|
#define _MAIN_MENU_H
|
||||||
|
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
extern int show_logo(void);
|
extern int show_logo(void);
|
||||||
extern void main_menu(void);
|
extern Menu main_menu(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -212,13 +212,14 @@ void menu_exit(int m)
|
||||||
inuse[m] = false;
|
inuse[m] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_run(int m)
|
Menu menu_run(int m)
|
||||||
{
|
{
|
||||||
#ifndef SIMULATOR
|
#ifndef SIMULATOR
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
bool laststate;
|
bool laststate;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
Menu result = MENU_OK;
|
||||||
|
|
||||||
menu_draw(m);
|
menu_draw(m);
|
||||||
|
|
||||||
|
@ -273,7 +274,7 @@ void menu_run(int m)
|
||||||
case BUTTON_MENU:
|
case BUTTON_MENU:
|
||||||
#endif
|
#endif
|
||||||
lcd_stop_scroll();
|
lcd_stop_scroll();
|
||||||
return;
|
return result;
|
||||||
|
|
||||||
#ifdef HAVE_RECORDER_KEYPAD
|
#ifdef HAVE_RECORDER_KEYPAD
|
||||||
case BUTTON_F3:
|
case BUTTON_F3:
|
||||||
|
@ -298,6 +299,7 @@ void menu_run(int m)
|
||||||
#else
|
#else
|
||||||
lcd_icon(ICON_PARAM, true);
|
lcd_icon(ICON_PARAM, true);
|
||||||
#endif
|
#endif
|
||||||
|
result = MENU_REFRESH_DIR;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -308,4 +310,6 @@ void menu_run(int m)
|
||||||
status_draw();
|
status_draw();
|
||||||
lcd_update();
|
lcd_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
12
apps/menu.h
12
apps/menu.h
|
@ -22,15 +22,23 @@
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
MENU_OK,
|
||||||
|
MENU_REFRESH_DIR, /* any file/directory contents need to be re-read */
|
||||||
|
MENU_LAST /* don't use as return code, only for number of return codes
|
||||||
|
available */
|
||||||
|
} Menu;
|
||||||
|
|
||||||
struct menu_items {
|
struct menu_items {
|
||||||
char *desc;
|
char *desc;
|
||||||
void (*function) (void);
|
Menu (*function) (void);
|
||||||
};
|
};
|
||||||
|
|
||||||
int menu_init(struct menu_items* items, int count);
|
int menu_init(struct menu_items* items, int count);
|
||||||
void menu_exit(int menu);
|
void menu_exit(int menu);
|
||||||
void menu_run(int menu);
|
|
||||||
|
|
||||||
void put_cursorxy(int x, int y, bool on);
|
void put_cursorxy(int x, int y, bool on);
|
||||||
|
|
||||||
|
Menu menu_run(int menu);
|
||||||
|
|
||||||
#endif /* End __MENU_H__ */
|
#endif /* End __MENU_H__ */
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "lcd.h"
|
#include "lcd.h"
|
||||||
#include "button.h"
|
#include "button.h"
|
||||||
#include "kernel.h"
|
#include "kernel.h"
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
#ifdef SIMULATOR
|
#ifdef SIMULATOR
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -33,7 +34,7 @@
|
||||||
#define SS_TITLE "Blank"
|
#define SS_TITLE "Blank"
|
||||||
#define SS_TITLE_FONT 2
|
#define SS_TITLE_FONT 2
|
||||||
|
|
||||||
void blank(void)
|
Menu blank(void)
|
||||||
{
|
{
|
||||||
int w, h;
|
int w, h;
|
||||||
char *off = "[Off] to stop";
|
char *off = "[Off] to stop";
|
||||||
|
@ -81,10 +82,11 @@ void blank(void)
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
if(button_get(false))
|
if(button_get(false))
|
||||||
return;
|
return MENU_OK;
|
||||||
sleep(HZ/10);
|
sleep(HZ/10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "lcd.h"
|
#include "lcd.h"
|
||||||
#include "button.h"
|
#include "button.h"
|
||||||
#include "kernel.h"
|
#include "kernel.h"
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
#ifdef SIMULATOR
|
#ifdef SIMULATOR
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -83,7 +84,7 @@ static void loopit(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void bounce(void)
|
Menu bounce(void)
|
||||||
{
|
{
|
||||||
int w, h;
|
int w, h;
|
||||||
char *off = "[Off] to stop";
|
char *off = "[Off] to stop";
|
||||||
|
@ -126,6 +127,8 @@ void bounce(void)
|
||||||
lcd_update();
|
lcd_update();
|
||||||
sleep(HZ);
|
sleep(HZ);
|
||||||
loopit();
|
loopit();
|
||||||
|
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "lcd.h"
|
#include "lcd.h"
|
||||||
#include "button.h"
|
#include "button.h"
|
||||||
#include "kernel.h"
|
#include "kernel.h"
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
#ifdef SIMULATOR
|
#ifdef SIMULATOR
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -82,7 +83,7 @@ static void ss_loop(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void boxes(void)
|
Menu boxes(void)
|
||||||
{
|
{
|
||||||
int w, h;
|
int w, h;
|
||||||
char *off = "[Off] to stop";
|
char *off = "[Off] to stop";
|
||||||
|
@ -125,6 +126,8 @@ void boxes(void)
|
||||||
lcd_update();
|
lcd_update();
|
||||||
sleep(HZ/2);
|
sleep(HZ/2);
|
||||||
ss_loop();
|
ss_loop();
|
||||||
|
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -20,7 +20,9 @@
|
||||||
#ifndef __BOXES_H__
|
#ifndef __BOXES_H__
|
||||||
#define __BOXES_H__
|
#define __BOXES_H__
|
||||||
|
|
||||||
void boxes(void);
|
#include "menu.h"
|
||||||
|
|
||||||
|
Menu boxes(void);
|
||||||
|
|
||||||
#endif /* __BOXES_H__ */
|
#endif /* __BOXES_H__ */
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include "lcd.h"
|
#include "lcd.h"
|
||||||
#include "button.h"
|
#include "button.h"
|
||||||
#include "kernel.h"
|
#include "kernel.h"
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
#ifdef SIMULATOR
|
#ifdef SIMULATOR
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -1334,7 +1335,7 @@ void sokoban_loop(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void sokoban(void)
|
Menu sokoban(void)
|
||||||
{
|
{
|
||||||
int w, h;
|
int w, h;
|
||||||
int len = strlen(SOKOBAN_TITLE);
|
int len = strlen(SOKOBAN_TITLE);
|
||||||
|
@ -1371,4 +1372,6 @@ void sokoban(void)
|
||||||
sleep(HZ*2);
|
sleep(HZ*2);
|
||||||
lcd_clear_display();
|
lcd_clear_display();
|
||||||
sokoban_loop();
|
sokoban_loop();
|
||||||
|
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,10 +20,12 @@
|
||||||
#ifndef __SOKOBAN__
|
#ifndef __SOKOBAN__
|
||||||
#define __SOKOBAN__
|
#define __SOKOBAN__
|
||||||
|
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
void load_level(int);
|
void load_level(int);
|
||||||
void update_screen(void);
|
void update_screen(void);
|
||||||
void sokoban_loop(void);
|
void sokoban_loop(void);
|
||||||
void sokoban(void);
|
Menu sokoban(void);
|
||||||
|
|
||||||
#endif /*__SOKOBAN__ */
|
#endif /*__SOKOBAN__ */
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "button.h"
|
#include "button.h"
|
||||||
#include "kernel.h"
|
#include "kernel.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
#ifdef SIMULATOR
|
#ifdef SIMULATOR
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -388,7 +389,7 @@ void init_tetris(void)
|
||||||
next_f = 0;
|
next_f = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void tetris(void)
|
Menu tetris(void)
|
||||||
{
|
{
|
||||||
init_tetris();
|
init_tetris();
|
||||||
|
|
||||||
|
@ -400,6 +401,8 @@ void tetris(void)
|
||||||
next_f = t_rand(block_frames[next_b]);
|
next_f = t_rand(block_frames[next_b]);
|
||||||
new_block();
|
new_block();
|
||||||
game_loop();
|
game_loop();
|
||||||
|
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -30,12 +30,13 @@
|
||||||
#include "sprintf.h"
|
#include "sprintf.h"
|
||||||
|
|
||||||
#include "boxes.h"
|
#include "boxes.h"
|
||||||
extern void bounce(void);
|
extern Menu bounce(void);
|
||||||
extern void blank(void);
|
extern Menu blank(void);
|
||||||
|
|
||||||
void screensavers_menu(void)
|
Menu screensavers_menu(void)
|
||||||
{
|
{
|
||||||
int m;
|
int m;
|
||||||
|
Menu result;
|
||||||
|
|
||||||
struct menu_items items[] = {
|
struct menu_items items[] = {
|
||||||
{ "Boxes", boxes },
|
{ "Boxes", boxes },
|
||||||
|
@ -44,8 +45,10 @@ void screensavers_menu(void)
|
||||||
};
|
};
|
||||||
|
|
||||||
m=menu_init( items, sizeof items / sizeof(struct menu_items) );
|
m=menu_init( items, sizeof items / sizeof(struct menu_items) );
|
||||||
menu_run(m);
|
result = menu_run(m);
|
||||||
menu_exit(m);
|
menu_exit(m);
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#ifndef _SCREENSAVERS_MENU_H
|
#ifndef _SCREENSAVERS_MENU_H
|
||||||
#define _SCREENSAVERS_MENU_H
|
#define _SCREENSAVERS_MENU_H
|
||||||
|
|
||||||
void screensavers_menu(void);
|
Menu screensavers_menu(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -36,39 +36,45 @@
|
||||||
#include "powermgmt.h"
|
#include "powermgmt.h"
|
||||||
#include "rtc.h"
|
#include "rtc.h"
|
||||||
|
|
||||||
static void show_hidden_files(void)
|
static Menu show_hidden_files(void)
|
||||||
{
|
{
|
||||||
set_bool( "[Show hidden files]", &global_settings.show_hidden_files );
|
set_bool( "[Show hidden files]", &global_settings.show_hidden_files );
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void contrast(void)
|
static Menu contrast(void)
|
||||||
{
|
{
|
||||||
set_int( "[Contrast]", "", &global_settings.contrast,
|
set_int( "[Contrast]", "", &global_settings.contrast,
|
||||||
lcd_set_contrast, 1, 0, MAX_CONTRAST_SETTING );
|
lcd_set_contrast, 1, 0, MAX_CONTRAST_SETTING );
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void shuffle(void)
|
static Menu shuffle(void)
|
||||||
{
|
{
|
||||||
set_bool( "[Shuffle]", &global_settings.playlist_shuffle );
|
set_bool( "[Shuffle]", &global_settings.playlist_shuffle );
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mp3_filter(void)
|
static Menu mp3_filter(void)
|
||||||
{
|
{
|
||||||
set_bool( "[MP3/M3U filter]", &global_settings.mp3filter );
|
set_bool( "[MP3/M3U filter]", &global_settings.mp3filter );
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sort_case(void)
|
static Menu sort_case(void)
|
||||||
{
|
{
|
||||||
set_bool( "[Sort case sensitive]", &global_settings.sort_case );
|
set_bool( "[Sort case sensitive]", &global_settings.sort_case );
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void resume(void)
|
static Menu resume(void)
|
||||||
{
|
{
|
||||||
char* names[] = { "off", "ask", "on " };
|
char* names[] = { "off", "ask", "on " };
|
||||||
set_option( "[Resume]", &global_settings.resume, names, 3 );
|
set_option( "[Resume]", &global_settings.resume, names, 3 );
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void backlight_timer(void)
|
static Menu backlight_timer(void)
|
||||||
{
|
{
|
||||||
char* names[] = { "off", "on ",
|
char* names[] = { "off", "on ",
|
||||||
"1s ", "2s ", "3s ", "4s ", "5s ",
|
"1s ", "2s ", "3s ", "4s ", "5s ",
|
||||||
|
@ -77,15 +83,17 @@ static void backlight_timer(void)
|
||||||
"60s", "90s"};
|
"60s", "90s"};
|
||||||
set_option("[Backlight]", &global_settings.backlight, names, 19 );
|
set_option("[Backlight]", &global_settings.backlight, names, 19 );
|
||||||
backlight_time(global_settings.backlight);
|
backlight_time(global_settings.backlight);
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void scroll_speed(void)
|
static Menu scroll_speed(void)
|
||||||
{
|
{
|
||||||
set_int("Scroll speed indicator...", "", &global_settings.scroll_speed,
|
set_int("Scroll speed indicator...", "", &global_settings.scroll_speed,
|
||||||
&lcd_scroll_speed, 1, 1, 20 );
|
&lcd_scroll_speed, 1, 1, 20 );
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wps_set(void)
|
static Menu wps_set(void)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
char* names[] = { "ID3 Tags", "File ", "Parse " };
|
char* names[] = { "ID3 Tags", "File ", "Parse " };
|
||||||
|
@ -102,18 +110,20 @@ static void wps_set(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_CHARGE_CTRL
|
#ifdef HAVE_CHARGE_CTRL
|
||||||
static void deep_discharge(void)
|
static Menu deep_discharge(void)
|
||||||
{
|
{
|
||||||
set_bool( "[Deep discharge]", &global_settings.discharge );
|
set_bool( "[Deep discharge]", &global_settings.discharge );
|
||||||
charge_restart_level = global_settings.discharge ? CHARGE_RESTART_LO : CHARGE_RESTART_HI;
|
charge_restart_level = global_settings.discharge ? CHARGE_RESTART_LO : CHARGE_RESTART_HI;
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_RTC
|
#ifdef HAVE_RTC
|
||||||
static void timedate_set(void)
|
static Menu timedate_set(void)
|
||||||
{
|
{
|
||||||
int timedate[7]; /* hour,minute,second,year,month,day,dayofweek */
|
int timedate[7]; /* hour,minute,second,year,month,day,dayofweek */
|
||||||
|
|
||||||
|
@ -150,18 +160,22 @@ static void timedate_set(void)
|
||||||
rtc_write(0x04, timedate[6] | (rtc_read(0x04) & 0xf8)); /* dayofweek */
|
rtc_write(0x04, timedate[6] | (rtc_read(0x04) & 0xf8)); /* dayofweek */
|
||||||
rtc_write(0x00, 0x00); /* 0.1 + 0.01 seconds */
|
rtc_write(0x00, 0x00); /* 0.1 + 0.01 seconds */
|
||||||
}
|
}
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void ff_rewind(void)
|
static Menu ff_rewind(void)
|
||||||
{
|
{
|
||||||
set_int("[FF/Rewind Step Size]", "s", &global_settings.ff_rewind,
|
set_int("[FF/Rewind Step Size]", "s", &global_settings.ff_rewind,
|
||||||
NULL, 1, 1, 999 );
|
NULL, 1, 1, 999 );
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void settings_menu(void)
|
Menu settings_menu(void)
|
||||||
{
|
{
|
||||||
int m;
|
int m;
|
||||||
|
Menu result;
|
||||||
|
|
||||||
struct menu_items items[] = {
|
struct menu_items items[] = {
|
||||||
{ "Shuffle", shuffle },
|
{ "Shuffle", shuffle },
|
||||||
{ "MP3/M3U filter", mp3_filter },
|
{ "MP3/M3U filter", mp3_filter },
|
||||||
|
@ -183,7 +197,7 @@ void settings_menu(void)
|
||||||
bool old_shuffle = global_settings.playlist_shuffle;
|
bool old_shuffle = global_settings.playlist_shuffle;
|
||||||
|
|
||||||
m=menu_init( items, sizeof items / sizeof(struct menu_items) );
|
m=menu_init( items, sizeof items / sizeof(struct menu_items) );
|
||||||
menu_run(m);
|
result = menu_run(m);
|
||||||
menu_exit(m);
|
menu_exit(m);
|
||||||
|
|
||||||
if (old_shuffle != global_settings.playlist_shuffle)
|
if (old_shuffle != global_settings.playlist_shuffle)
|
||||||
|
@ -197,4 +211,5 @@ void settings_menu(void)
|
||||||
sort_playlist();
|
sort_playlist();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
#ifndef _SETTINGS_MENU_H
|
#ifndef _SETTINGS_MENU_H
|
||||||
#define _SETTINGS_MENU_H
|
#define _SETTINGS_MENU_H
|
||||||
|
|
||||||
void settings_menu(void);
|
#include "menu.h"
|
||||||
|
|
||||||
|
Menu settings_menu(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -145,48 +145,56 @@ void set_sound(char* string,
|
||||||
lcd_stop_scroll();
|
lcd_stop_scroll();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void volume(void)
|
static Menu volume(void)
|
||||||
{
|
{
|
||||||
set_sound("Volume", &global_settings.volume, SOUND_VOLUME);
|
set_sound("Volume", &global_settings.volume, SOUND_VOLUME);
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void balance(void)
|
static Menu balance(void)
|
||||||
{
|
{
|
||||||
set_sound("Balance", &global_settings.balance, SOUND_BALANCE);
|
set_sound("Balance", &global_settings.balance, SOUND_BALANCE);
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bass(void)
|
static Menu bass(void)
|
||||||
{
|
{
|
||||||
set_sound("Bass", &global_settings.bass, SOUND_BASS);
|
set_sound("Bass", &global_settings.bass, SOUND_BASS);
|
||||||
|
return MENU_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void treble(void)
|
static Menu treble(void)
|
||||||
{
|
{
|
||||||
set_sound("Treble", &global_settings.treble, SOUND_TREBLE);
|
set_sound("Treble", &global_settings.treble, SOUND_TREBLE);
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_MAS3587F
|
#ifdef HAVE_MAS3587F
|
||||||
static void loudness(void)
|
static Menu loudness(void)
|
||||||
{
|
{
|
||||||
set_sound("Loudness", &global_settings.loudness, SOUND_LOUDNESS);
|
set_sound("Loudness", &global_settings.loudness, SOUND_LOUDNESS);
|
||||||
|
return MENU_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void bass_boost(void)
|
static Menu bass_boost(void)
|
||||||
{
|
{
|
||||||
set_sound("Bass boost", &global_settings.bass_boost, SOUND_SUPERBASS);
|
set_sound("Bass boost", &global_settings.bass_boost, SOUND_SUPERBASS);
|
||||||
|
return MENU_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void avc(void)
|
static Menu avc(void)
|
||||||
{
|
{
|
||||||
char* names[] = { "off", "2s ", "4s ", "8s " };
|
char* names[] = { "off", "2s ", "4s ", "8s " };
|
||||||
set_option("[AV decay time]", &global_settings.avc, names, 4 );
|
set_option("[AV decay time]", &global_settings.avc, names, 4 );
|
||||||
mpeg_sound_set(SOUND_AVC, global_settings.avc);
|
mpeg_sound_set(SOUND_AVC, global_settings.avc);
|
||||||
|
return MENU_OK;
|
||||||
}
|
}
|
||||||
#endif /* ARCHOS_RECORDER */
|
#endif /* ARCHOS_RECORDER */
|
||||||
|
|
||||||
void sound_menu(void)
|
Menu sound_menu(void)
|
||||||
{
|
{
|
||||||
int m;
|
int m;
|
||||||
|
Menu result;
|
||||||
struct menu_items items[] = {
|
struct menu_items items[] = {
|
||||||
{ "Volume", volume },
|
{ "Volume", volume },
|
||||||
{ "Bass", bass },
|
{ "Bass", bass },
|
||||||
|
@ -200,6 +208,8 @@ void sound_menu(void)
|
||||||
};
|
};
|
||||||
|
|
||||||
m=menu_init( items, sizeof items / sizeof(struct menu_items) );
|
m=menu_init( items, sizeof items / sizeof(struct menu_items) );
|
||||||
menu_run(m);
|
result = menu_run(m);
|
||||||
menu_exit(m);
|
menu_exit(m);
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
#ifndef _SOUND_MENU_H
|
#ifndef _SOUND_MENU_H
|
||||||
#define _SOUND_MENU_H
|
#define _SOUND_MENU_H
|
||||||
|
|
||||||
void sound_menu(void);
|
#include "menu.h"
|
||||||
|
|
||||||
|
Menu sound_menu(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -640,11 +640,13 @@ bool dirbrowse(char *root)
|
||||||
bool lastfilter = global_settings.mp3filter;
|
bool lastfilter = global_settings.mp3filter;
|
||||||
bool lastsortcase = global_settings.sort_case;
|
bool lastsortcase = global_settings.sort_case;
|
||||||
bool show_hidden_files = global_settings.show_hidden_files;
|
bool show_hidden_files = global_settings.show_hidden_files;
|
||||||
|
Menu result;
|
||||||
|
|
||||||
lcd_stop_scroll();
|
lcd_stop_scroll();
|
||||||
main_menu();
|
result = main_menu();
|
||||||
/* do we need to rescan dir? */
|
/* do we need to rescan dir? */
|
||||||
if ( lastfilter != global_settings.mp3filter ||
|
if (result == MENU_REFRESH_DIR ||
|
||||||
|
lastfilter != global_settings.mp3filter ||
|
||||||
lastsortcase != global_settings.sort_case ||
|
lastsortcase != global_settings.sort_case ||
|
||||||
show_hidden_files != global_settings.show_hidden_files)
|
show_hidden_files != global_settings.show_hidden_files)
|
||||||
lastdir[0] = 0;
|
lastdir[0] = 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue