Finished 'More' item. Added FILE_COLOR.

This commit is contained in:
TheFloW 2016-09-07 22:36:37 +02:00
parent 54d0b657db
commit 0771d498b2
8 changed files with 89 additions and 51 deletions

View File

@ -79,7 +79,6 @@ void loadLanguage(int id) {
LANGUAGE_ENTRY(RENAME),
LANGUAGE_ENTRY(NEW_FOLDER),
LANGUAGE_ENTRY(MORE),
LANGUAGE_ENTRY(BACK),
LANGUAGE_ENTRY(INSTALL_ALL),
LANGUAGE_ENTRY(CALCULATE_SHA1),
LANGUAGE_ENTRY(COPIED_FILE),

View File

@ -37,7 +37,6 @@ enum LanguageContainer {
RENAME,
NEW_FOLDER,
MORE,
BACK,
INSTALL_ALL,
CALCULATE_SHA1,
COPIED_FILE,

106
main.c
View File

@ -48,8 +48,6 @@
int _newlib_heap_size_user = 64 * 1024 * 1024;
#define CONTEXT_MENU_MORE_WIDTH 180.0f
#define MAX_DIR_LEVELS 1024
// File lists
@ -77,6 +75,7 @@ static int ctx_menu_pos = -1;
static int ctx_menu_more_pos = -1;
static float ctx_menu_width = 0;
static float ctx_menu_max_width = 0;
static float ctx_menu_more_max_width = 0;
// Net info
static SceNetEtherAddr mac;
@ -469,42 +468,17 @@ MenuEntry menu_entries[] = {
#define N_MENU_ENTRIES (sizeof(menu_entries) / sizeof(MenuEntry))
enum MenuMoreEntrys {
MENU_MORE_ENTRY_BACK,
MENU_MORE_ENTRY_EMPTY_1,
MENU_MORE_ENTRY_INSTALL_ALL,
MENU_MORE_ENTRY_CALCULATE_SHA1,
};
MenuEntry menu_more_entries[] = {
{ BACK, VISIBILITY_INVISIBLE },
{ -1, VISIBILITY_UNUSED },
{ INSTALL_ALL, VISIBILITY_INVISIBLE },
{ CALCULATE_SHA1, VISIBILITY_INVISIBLE },
};
#define N_MENU_MORE_ENTRIES (sizeof(menu_more_entries) / sizeof(MenuEntry))
void initContextMenuMore() {
int i;
// All visible
for (i = 0; i < N_MENU_MORE_ENTRIES; i++) {
if (menu_more_entries[i].visibility == VISIBILITY_INVISIBLE)
menu_more_entries[i].visibility = VISIBILITY_VISIBLE;
}
// Go to first entry
for (i = 0; i < N_MENU_MORE_ENTRIES; i++) {
if (menu_more_entries[i].visibility == VISIBILITY_VISIBLE) {
ctx_menu_more_pos = i;
break;
}
}
if (i == N_MENU_MORE_ENTRIES)
ctx_menu_more_pos = -1;
}
void initContextMenu() {
int i;
@ -554,15 +528,6 @@ void initContextMenu() {
menu_entries[MENU_ENTRY_DELETE].visibility = VISIBILITY_INVISIBLE;
menu_entries[MENU_ENTRY_RENAME].visibility = VISIBILITY_INVISIBLE;
menu_entries[MENU_ENTRY_NEW_FOLDER].visibility = VISIBILITY_INVISIBLE;
//menu_entries[MENU_ENTRY_CALCULATE_SHA1].visibility = VISIBILITY_INVISIBLE;
}
if(file_entry->is_folder) {
//menu_entries[MENU_ENTRY_CALCULATE_SHA1].visibility = VISIBILITY_INVISIBLE;
}
if(file_entry->type != FILE_TYPE_VPK) {
//menu_entries[MENU_ENTRY_INSTALL_ALL].visibility = VISIBILITY_INVISIBLE;
}
// Mark/Unmark all text
@ -589,6 +554,42 @@ void initContextMenu() {
ctx_menu_pos = -1;
}
void initContextMenuMore() {
int i;
// All visible
for (i = 0; i < N_MENU_MORE_ENTRIES; i++) {
if (menu_more_entries[i].visibility == VISIBILITY_INVISIBLE)
menu_more_entries[i].visibility = VISIBILITY_VISIBLE;
}
FileListEntry *file_entry = fileListGetNthEntry(&file_list, base_pos + rel_pos);
// Invisble write operations in archives
if (isInArchive()) {
menu_more_entries[MENU_MORE_ENTRY_CALCULATE_SHA1].visibility = VISIBILITY_INVISIBLE;
}
if(file_entry->is_folder) {
menu_more_entries[MENU_MORE_ENTRY_CALCULATE_SHA1].visibility = VISIBILITY_INVISIBLE;
}
if(file_entry->type != FILE_TYPE_VPK) {
menu_more_entries[MENU_MORE_ENTRY_INSTALL_ALL].visibility = VISIBILITY_INVISIBLE;
}
// Go to first entry
for (i = 0; i < N_MENU_MORE_ENTRIES; i++) {
if (menu_more_entries[i].visibility == VISIBILITY_VISIBLE) {
ctx_menu_more_pos = i;
break;
}
}
if (i == N_MENU_MORE_ENTRIES)
ctx_menu_more_pos = -1;
}
float easeOut(float x0, float x1, float a) {
float dx = (x1 - x0);
return ((dx * a) > 0.5f) ? (dx * a) : dx;
@ -624,8 +625,8 @@ void drawContextMenu() {
// Opening context menu 'More'
if (ctx_menu_mode == CONTEXT_MENU_MORE_OPENING) {
if (ctx_menu_width < ctx_menu_max_width + CONTEXT_MENU_MORE_WIDTH) {
ctx_menu_width += easeOut(ctx_menu_width, ctx_menu_max_width + CONTEXT_MENU_MORE_WIDTH, 0.375f);
if (ctx_menu_width < ctx_menu_max_width + ctx_menu_more_max_width) {
ctx_menu_width += easeOut(ctx_menu_width, ctx_menu_max_width + ctx_menu_more_max_width, 0.375f);
} else {
ctx_menu_mode = CONTEXT_MENU_MORE_OPENED;
}
@ -637,7 +638,7 @@ void drawContextMenu() {
vita2d_draw_texture_part(context_image, SCREEN_WIDTH - ctx_menu_width, 0.0f, 0.0f, 0.0f, ctx_menu_width, SCREEN_HEIGHT);
} else {
vita2d_draw_texture_part(context_image, SCREEN_WIDTH - ctx_menu_width, 0.0f, 0.0f, 0.0f, ctx_menu_max_width, SCREEN_HEIGHT);
vita2d_draw_texture_part(context_image, SCREEN_WIDTH - ctx_menu_width + ctx_menu_max_width, 0.0f, 0.0f, 0.0f, CONTEXT_MENU_MORE_WIDTH, SCREEN_HEIGHT); // TODO: another image
vita2d_draw_texture_part(context_more_image, SCREEN_WIDTH - ctx_menu_width + ctx_menu_max_width, 0.0f, 0.0f, 0.0f, ctx_menu_more_max_width, SCREEN_HEIGHT);
}
int i;
@ -649,8 +650,11 @@ void drawContextMenu() {
uint32_t color = GENERAL_COLOR;
if (i == ctx_menu_pos)
color = FOCUS_COLOR;
if (i == ctx_menu_pos) {
if (ctx_menu_mode != CONTEXT_MENU_MORE_OPENED && ctx_menu_mode != CONTEXT_MENU_MORE_OPENING) {
color = FOCUS_COLOR;
}
}
if (menu_entries[i].visibility == VISIBILITY_INVISIBLE)
color = INVISIBLE_COLOR;
@ -667,13 +671,16 @@ void drawContextMenu() {
uint32_t color = GENERAL_COLOR;
if (i == ctx_menu_more_pos)
color = FOCUS_COLOR;
if (i == ctx_menu_more_pos) {
if (ctx_menu_mode != CONTEXT_MENU_MORE_CLOSING) {
color = FOCUS_COLOR;
}
}
if (menu_more_entries[i].visibility == VISIBILITY_INVISIBLE)
color = INVISIBLE_COLOR;
pgf_draw_text(SCREEN_WIDTH - ctx_menu_width + CONTEXT_MENU_MARGIN + CONTEXT_MENU_MORE_WIDTH, y, color, FONT_SIZE, language_container[menu_more_entries[i].name]);
pgf_draw_text(SCREEN_WIDTH - ctx_menu_width + ctx_menu_max_width + CONTEXT_MENU_MARGIN, y, color, FONT_SIZE, language_container[menu_more_entries[i].name]);
}
}
}
@ -1463,7 +1470,7 @@ int shellMain() {
int i;
for (i = 0; i < MAX_ENTRIES && (base_pos + i) < file_list.length; i++) {
uint32_t color = GENERAL_COLOR;
uint32_t color = FILE_COLOR;
float y = START_Y + (i * FONT_Y_SPACE);
vita2d_texture *icon = NULL;
@ -1505,6 +1512,7 @@ int shellMain() {
break;
default:
color = FILE_COLOR;
icon = file_icon;
break;
}
@ -1607,6 +1615,14 @@ void initShell() {
ctx_menu_max_width += 2.0f * CONTEXT_MENU_MARGIN;
ctx_menu_max_width = MAX(ctx_menu_max_width, CONTEXT_MENU_MIN_WIDTH);
for (i = 0; i < N_MENU_MORE_ENTRIES; i++) {
if (menu_more_entries[i].visibility != VISIBILITY_UNUSED)
ctx_menu_more_max_width = MAX(ctx_menu_more_max_width, vita2d_pgf_text_width(font, FONT_SIZE, language_container[menu_more_entries[i].name]));
}
ctx_menu_more_max_width += 2.0f * CONTEXT_MENU_MARGIN;
ctx_menu_more_max_width = MAX(ctx_menu_more_max_width, CONTEXT_MENU_MORE_MIN_WIDTH);
}
void getNetInfo() {

1
main.h
View File

@ -116,6 +116,7 @@
#define SCROLL_BAR_MIN_HEIGHT 4.0f
// Context menu
#define CONTEXT_MENU_MORE_MIN_WIDTH 210.0f
#define CONTEXT_MENU_MIN_WIDTH 180.0f
#define CONTEXT_MENU_MARGIN 20.0f
#define CONTEXT_MENU_VELOCITY 10.0f

View File

@ -7,15 +7,17 @@ TITLE_COLOR = 0xFFFF007F # Violet
PATH_COLOR = 0xFFBFBFBF # Litegray
DATE_TIME_COLOR = 0xFFFFFFFF # White
FOCUS_COLOR = 0xFF00FF00 # Green
FILE_COLOR = 0xFFFFFFFF # White
FOLDER_COLOR = 0xFFFFFF00 # Cyan
IMAGE_COLOR = 0xFF7F00FF # Rose
ARCHIVE_COLOR = 0xFF007FFF # Orange
SCROLL_BAR_COLOR = 0xFFFF7F00 # Azure
SCROLL_BAR_BG_COLOR = 0xFF7F7F7F # Gray
MARKED_COLOR = 0x4FFF7F00 # Azure
MARKED_COLOR = 0x4FFF7F00 # Azure with alpha
INVISIBLE_COLOR = 0xFF3F3F3F # Darkgray #1
DIALOG_BG_COLOR = 0xFF2F2F2F # Darkgray #2
CONTEXT_MENU_COLOR = 0xFA2F2F2F # Darkgray #2 with alpha
CONTEXT_MENU_MORE_COLOR = 0xFA282828 # Darkgray #3 with alpha
PROGRESS_BAR_COLOR = 0xFF00FF7F # Chartreuse
PROGRESS_BAR_BG_COLOR = 0xFF7F7F7F # Gray
HEX_OFFSET_COLOR = 0xFFFFFF00 # Cyan

View File

@ -17,7 +17,6 @@ DELETE = "Delete"
RENAME = "Rename"
NEW_FOLDER = "New folder"
MORE = "More ▶"
BACK = "◀ Back"
INSTALL_ALL = "Install all"
CALCULATE_SHA1 = "Calculate SHA1"
COPIED_FILE = "Copied %d file."

22
theme.c
View File

@ -44,6 +44,7 @@ int TITLE_COLOR;
int PATH_COLOR;
int DATE_TIME_COLOR;
int FOCUS_COLOR;
int FILE_COLOR;
int FOLDER_COLOR;
int IMAGE_COLOR;
int ARCHIVE_COLOR;
@ -53,13 +54,14 @@ int MARKED_COLOR;
int INVISIBLE_COLOR;
int DIALOG_BG_COLOR;
int CONTEXT_MENU_COLOR;
int CONTEXT_MENU_MORE_COLOR;
int PROGRESS_BAR_COLOR;
int PROGRESS_BAR_BG_COLOR;
int HEX_OFFSET_COLOR;
int HEX_NIBBLE_COLOR;
vita2d_texture *folder_icon = NULL, *file_icon = NULL, *archive_icon = NULL, *image_icon = NULL, *audio_icon = NULL, *sfo_icon = NULL, *text_icon = NULL,
*ftp_image = NULL, *dialog_image = NULL, *context_image = NULL, *battery_image = NULL, *battery_bar_red_image = NULL,
*ftp_image = NULL, *dialog_image = NULL, *context_image = NULL, *context_more_image = NULL, *battery_image = NULL, *battery_bar_red_image = NULL,
*battery_bar_green_image = NULL, *battery_bar_charge_image = NULL, *bg_browser_image = NULL, *bg_hex_image = NULL,
*bg_text_image = NULL, *bg_photo_image = NULL;
@ -78,6 +80,7 @@ void loadTheme() {
COLOR_ENTRY(PATH_COLOR),
COLOR_ENTRY(DATE_TIME_COLOR),
COLOR_ENTRY(FOCUS_COLOR),
COLOR_ENTRY(FILE_COLOR),
COLOR_ENTRY(FOLDER_COLOR),
COLOR_ENTRY(IMAGE_COLOR),
COLOR_ENTRY(ARCHIVE_COLOR),
@ -87,6 +90,7 @@ void loadTheme() {
COLOR_ENTRY(INVISIBLE_COLOR),
COLOR_ENTRY(DIALOG_BG_COLOR),
COLOR_ENTRY(CONTEXT_MENU_COLOR),
COLOR_ENTRY(CONTEXT_MENU_MORE_COLOR),
COLOR_ENTRY(PROGRESS_BAR_COLOR),
COLOR_ENTRY(PROGRESS_BAR_BG_COLOR),
COLOR_ENTRY(HEX_OFFSET_COLOR),
@ -144,6 +148,9 @@ void loadTheme() {
snprintf(path, MAX_PATH_LENGTH, "ux0:VitaShell/theme/%s/context.png", theme_name);
context_image = vita2d_load_PNG_file(path);
snprintf(path, MAX_PATH_LENGTH, "ux0:VitaShell/theme/%s/context_more.png", theme_name);
context_more_image = vita2d_load_PNG_file(path);
snprintf(path, MAX_PATH_LENGTH, "ux0:VitaShell/theme/%s/battery.png", theme_name);
battery_image = vita2d_load_PNG_file(path);
@ -241,6 +248,19 @@ void loadTheme() {
}
}
if (!context_more_image) {
context_more_image = vita2d_create_empty_texture(SCREEN_WIDTH, SCREEN_HEIGHT);
void *data = vita2d_texture_get_datap(context_more_image);
int y;
for (y = 0; y < SCREEN_HEIGHT; y++) {
int x;
for (x = 0; x < SCREEN_WIDTH; x++) {
((uint32_t *)data)[x + SCREEN_WIDTH * y] = CONTEXT_MENU_MORE_COLOR;
}
}
}
if (!battery_image)
battery_image = vita2d_load_PNG_buffer(&_binary_resources_battery_png_start);

View File

@ -27,6 +27,7 @@ extern int TITLE_COLOR;
extern int PATH_COLOR;
extern int DATE_TIME_COLOR;
extern int FOCUS_COLOR;
extern int FILE_COLOR;
extern int FOLDER_COLOR;
extern int IMAGE_COLOR;
extern int ARCHIVE_COLOR;
@ -36,13 +37,14 @@ extern int MARKED_COLOR;
extern int INVISIBLE_COLOR;
extern int DIALOG_BG_COLOR;
extern int CONTEXT_MENU_COLOR;
extern int CONTEXT_MENU_MORE_COLOR;
extern int PROGRESS_BAR_COLOR;
extern int PROGRESS_BAR_BG_COLOR;
extern int HEX_OFFSET_COLOR;
extern int HEX_NIBBLE_COLOR;
extern vita2d_texture *folder_icon, *file_icon, *archive_icon, *image_icon, *audio_icon, *sfo_icon, *text_icon,
*ftp_image, *dialog_image, *context_image, *battery_image, *battery_bar_red_image, *battery_bar_green_image,
*ftp_image, *dialog_image, *context_image, *context_more_image, *battery_image, *battery_bar_red_image, *battery_bar_green_image,
*battery_bar_charge_image, *bg_browser_image, *bg_hex_image, *bg_text_image, *bg_photo_image;
extern vita2d_texture *wallpaper_image[MAX_WALLPAPERS];