* its name[rows][columns] you drongo!
* make custom viewer icons work slightly better * minor nit-picks to keep crop happy * create a /.rockbox/themes/default_rockbox_icons.cfg to restore the default icons easily git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13183 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
b6658bbeef
commit
a9c1df4001
6 changed files with 44 additions and 13 deletions
|
@ -63,6 +63,8 @@ struct file_type {
|
||||||
char* extension; /* NULL for none */
|
char* extension; /* NULL for none */
|
||||||
};
|
};
|
||||||
static struct file_type filetypes[MAX_FILETYPES];
|
static struct file_type filetypes[MAX_FILETYPES];
|
||||||
|
static int custom_filetype_icons[MAX_FILETYPES];
|
||||||
|
static bool custom_icons_loaded = false;
|
||||||
static int filetype_count = 0;
|
static int filetype_count = 0;
|
||||||
static unsigned char heighest_attr = 0;
|
static unsigned char heighest_attr = 0;
|
||||||
|
|
||||||
|
@ -81,6 +83,10 @@ void read_viewer_theme_file(void)
|
||||||
int fd;
|
int fd;
|
||||||
char *ext, *icon;
|
char *ext, *icon;
|
||||||
int i;
|
int i;
|
||||||
|
custom_icons_loaded = false;
|
||||||
|
for (i=0; i<filetype_count; i++)
|
||||||
|
custom_filetype_icons[i] = Icon_Questionmark;
|
||||||
|
|
||||||
snprintf(buffer, MAX_PATH, "%s/%s.icons", ICON_DIR,
|
snprintf(buffer, MAX_PATH, "%s/%s.icons", ICON_DIR,
|
||||||
global_settings.viewers_icon_file);
|
global_settings.viewers_icon_file);
|
||||||
fd = open(buffer, O_RDONLY);
|
fd = open(buffer, O_RDONLY);
|
||||||
|
@ -95,16 +101,17 @@ void read_viewer_theme_file(void)
|
||||||
if (filetypes[i].extension && !strcasecmp(ext, filetypes[i].extension))
|
if (filetypes[i].extension && !strcasecmp(ext, filetypes[i].extension))
|
||||||
{
|
{
|
||||||
if (*icon == '*')
|
if (*icon == '*')
|
||||||
filetypes[i].icon = atoi(icon+1);
|
custom_filetype_icons[i] = atoi(icon+1);
|
||||||
else if (*icon == '-')
|
else if (*icon == '-')
|
||||||
filetypes[i].icon = Icon_NOICON;
|
custom_filetype_icons[i] = Icon_NOICON;
|
||||||
else if (*icon >= '0' && *icon <= '9')
|
else if (*icon >= '0' && *icon <= '9')
|
||||||
filetypes[i].icon = Icon_Last_Themeable + atoi(icon);
|
custom_filetype_icons[i] = Icon_Last_Themeable + atoi(icon);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
|
custom_icons_loaded = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -258,6 +265,8 @@ int filetype_get_icon(int attr)
|
||||||
int index = find_attr(attr);
|
int index = find_attr(attr);
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
return Icon_NOICON;
|
return Icon_NOICON;
|
||||||
|
if (custom_icons_loaded)
|
||||||
|
return custom_filetype_icons[index];
|
||||||
return filetypes[index].icon;
|
return filetypes[index].icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,11 +74,11 @@ static const int default_height[NB_SCREENS] = {
|
||||||
|
|
||||||
#define IMG_BUFSIZE (MAX_ICON_HEIGHT * MAX_ICON_WIDTH * \
|
#define IMG_BUFSIZE (MAX_ICON_HEIGHT * MAX_ICON_WIDTH * \
|
||||||
Icon_Last_Themeable *LCD_DEPTH/8)
|
Icon_Last_Themeable *LCD_DEPTH/8)
|
||||||
static unsigned char icon_buffer[IMG_BUFSIZE][NB_SCREENS];
|
static unsigned char icon_buffer[NB_SCREENS][IMG_BUFSIZE];
|
||||||
static bool custom_icons_loaded[NB_SCREENS] = {false};
|
static bool custom_icons_loaded[NB_SCREENS] = {false};
|
||||||
static struct bitmap user_iconset[NB_SCREENS];
|
static struct bitmap user_iconset[NB_SCREENS];
|
||||||
|
|
||||||
static unsigned char viewer_icon_buffer[IMG_BUFSIZE][NB_SCREENS];
|
static unsigned char viewer_icon_buffer[NB_SCREENS][IMG_BUFSIZE];
|
||||||
static bool viewer_icons_loaded[NB_SCREENS] = {false};
|
static bool viewer_icons_loaded[NB_SCREENS] = {false};
|
||||||
static struct bitmap viewer_iconset[NB_SCREENS];
|
static struct bitmap viewer_iconset[NB_SCREENS];
|
||||||
|
|
||||||
|
@ -252,13 +252,15 @@ void icons_init(void)
|
||||||
{
|
{
|
||||||
snprintf(path, MAX_PATH, "%s/%s.bmp",
|
snprintf(path, MAX_PATH, "%s/%s.bmp",
|
||||||
ICON_DIR, global_settings.icon_file);
|
ICON_DIR, global_settings.icon_file);
|
||||||
load_icons(path, Iconset_Mainscreen);
|
load_icons((global_settings.icon_file[0] == '-')?NULL:path,
|
||||||
|
Iconset_Mainscreen);
|
||||||
}
|
}
|
||||||
if (global_settings.viewers_icon_file[0])
|
if (global_settings.viewers_icon_file[0])
|
||||||
{
|
{
|
||||||
snprintf(path, MAX_PATH, "%s/%s.bmp",
|
snprintf(path, MAX_PATH, "%s/%s.bmp",
|
||||||
ICON_DIR, global_settings.viewers_icon_file);
|
ICON_DIR, global_settings.viewers_icon_file);
|
||||||
load_icons(path, Iconset_Mainscreen_viewers);
|
load_icons((global_settings.viewers_icon_file[0] == '-')?NULL:path,
|
||||||
|
Iconset_Mainscreen_viewers);
|
||||||
read_viewer_theme_file();
|
read_viewer_theme_file();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -268,13 +270,15 @@ void icons_init(void)
|
||||||
{
|
{
|
||||||
snprintf(path, MAX_PATH, "%s/%s.bmp",
|
snprintf(path, MAX_PATH, "%s/%s.bmp",
|
||||||
ICON_DIR, global_settings.remote_icon_file);
|
ICON_DIR, global_settings.remote_icon_file);
|
||||||
load_icons(path, Iconset_Remotescreen);
|
load_icons((global_settings.remote_icon_file[0] == '-')?NULL:path,
|
||||||
|
Iconset_Remotescreen);
|
||||||
}
|
}
|
||||||
if (global_settings.remote_viewers_icon_file[0])
|
if (global_settings.remote_viewers_icon_file[0])
|
||||||
{
|
{
|
||||||
snprintf(path, MAX_PATH, "%s/%s.bmp",
|
snprintf(path, MAX_PATH, "%s/%s.bmp",
|
||||||
ICON_DIR, global_settings.remote_viewers_icon_file);
|
ICON_DIR, global_settings.remote_viewers_icon_file);
|
||||||
load_icons(path, Iconset_Remotescreen_viewers);
|
load_icons((global_settings.remote_viewers_icon_file[0] == '-')?NULL:path,
|
||||||
|
Iconset_Remotescreen_viewers);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
load_icons(DEFAULT_REMOTE_VIEWER_BMP, Iconset_Remotescreen_viewers);
|
load_icons(DEFAULT_REMOTE_VIEWER_BMP, Iconset_Remotescreen_viewers);
|
||||||
|
|
|
@ -24,15 +24,14 @@
|
||||||
* char-based displays and bitmap displays */
|
* char-based displays and bitmap displays */
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
typedef const unsigned char * ICON;
|
typedef const unsigned char * ICON;
|
||||||
#define NOICON Icon_NOICON
|
|
||||||
#else
|
#else
|
||||||
typedef long ICON;
|
typedef long ICON;
|
||||||
#define NOICON Icon_NOICON
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define NOICON Icon_NOICON
|
||||||
#define FORCE_INBUILT_ICON 0x80000000
|
#define FORCE_INBUILT_ICON 0x80000000
|
||||||
/* Don't #ifdef icon values, or we wont be able to use the same
|
/* Don't #ifdef icon values, or we wont be able to use the same
|
||||||
cmp for every target. */
|
bmp for every target. */
|
||||||
enum themable_icons {
|
enum themable_icons {
|
||||||
Icon_NOICON = -1, /* Dont put this in a .bmp */
|
Icon_NOICON = -1, /* Dont put this in a .bmp */
|
||||||
Icon_Audio,
|
Icon_Audio,
|
||||||
|
|
|
@ -708,8 +708,10 @@ struct user_settings
|
||||||
int alarm_wake_up_screen;
|
int alarm_wake_up_screen;
|
||||||
#endif
|
#endif
|
||||||
/* customizable icons */
|
/* customizable icons */
|
||||||
|
#ifdef HAVE_LCD_BITMAP
|
||||||
unsigned char icon_file[MAX_FILENAME+1];
|
unsigned char icon_file[MAX_FILENAME+1];
|
||||||
unsigned char viewers_icon_file[MAX_FILENAME+1];
|
unsigned char viewers_icon_file[MAX_FILENAME+1];
|
||||||
|
#endif
|
||||||
#ifdef HAVE_REMOTE_LCD
|
#ifdef HAVE_REMOTE_LCD
|
||||||
unsigned char remote_icon_file[MAX_FILENAME+1];
|
unsigned char remote_icon_file[MAX_FILENAME+1];
|
||||||
unsigned char remote_viewers_icon_file[MAX_FILENAME+1];
|
unsigned char remote_viewers_icon_file[MAX_FILENAME+1];
|
||||||
|
|
|
@ -1167,13 +1167,13 @@ const struct settings_list settings[] = {
|
||||||
ICON_DIR "/", ".bmp", MAX_FILENAME+1),
|
ICON_DIR "/", ".bmp", MAX_FILENAME+1),
|
||||||
FILENAME_SETTING(F_THEMESETTING, viewers_icon_file, "viewers iconset", "",
|
FILENAME_SETTING(F_THEMESETTING, viewers_icon_file, "viewers iconset", "",
|
||||||
ICON_DIR "/", ".bmp", MAX_FILENAME+1),
|
ICON_DIR "/", ".bmp", MAX_FILENAME+1),
|
||||||
|
#endif
|
||||||
#ifdef HAVE_REMOTE_LCD
|
#ifdef HAVE_REMOTE_LCD
|
||||||
FILENAME_SETTING(F_THEMESETTING, remote_icon_file, "remote iconset", "",
|
FILENAME_SETTING(F_THEMESETTING, remote_icon_file, "remote iconset", "",
|
||||||
ICON_DIR "/", ".bmp", MAX_FILENAME+1),
|
ICON_DIR "/", ".bmp", MAX_FILENAME+1),
|
||||||
FILENAME_SETTING(F_THEMESETTING, remote_viewers_icon_file,
|
FILENAME_SETTING(F_THEMESETTING, remote_viewers_icon_file,
|
||||||
"remote viewers iconset", "",
|
"remote viewers iconset", "",
|
||||||
ICON_DIR "/", ".bmp", MAX_FILENAME+1),
|
ICON_DIR "/", ".bmp", MAX_FILENAME+1),
|
||||||
#endif
|
|
||||||
#endif /* HAVE_REMOTE_LCD */
|
#endif /* HAVE_REMOTE_LCD */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,23 @@ sub buildzip {
|
||||||
|
|
||||||
mkdir ".rockbox/wps", 0777;
|
mkdir ".rockbox/wps", 0777;
|
||||||
mkdir ".rockbox/themes", 0777;
|
mkdir ".rockbox/themes", 0777;
|
||||||
|
if ($bitmap) {
|
||||||
|
open(THEME, ">.rockbox/themes/rockbox_default_icons.cfg");
|
||||||
|
print THEME <<STOP
|
||||||
|
# this config file was auto-generated to make it
|
||||||
|
# easy to reset the icons back to default
|
||||||
|
iconset: -
|
||||||
|
# taken from apps/gui/icon.c
|
||||||
|
viewers iconset: /.rockbox/icons/viewers.bmp
|
||||||
|
remote iconset: -
|
||||||
|
# taken from apps/gui/icon.c
|
||||||
|
remote viewers iconset: /.rockbox/icons/remote_viewers.bmp
|
||||||
|
|
||||||
|
STOP
|
||||||
|
;
|
||||||
|
close(THEME);
|
||||||
|
}
|
||||||
|
|
||||||
mkdir ".rockbox/codepages", 0777;
|
mkdir ".rockbox/codepages", 0777;
|
||||||
|
|
||||||
if($bitmap) {
|
if($bitmap) {
|
||||||
|
|
Loading…
Reference in a new issue