added some minor touch ups to the Theme Switcher Menu
This commit is contained in:
parent
93ee023d10
commit
2f887cc3e8
@ -309,15 +309,25 @@ const char* const g_strings[StrId_Max][16] =
|
|||||||
STR_KO("확인"),
|
STR_KO("확인"),
|
||||||
STR_TW("確認"),
|
STR_TW("確認"),
|
||||||
},
|
},
|
||||||
|
|
||||||
[StrId_Actions_Apply] =
|
[StrId_Actions_Apply] =
|
||||||
{
|
{
|
||||||
STR_EN("Apply"),
|
STR_EN("Apply"),
|
||||||
STR_ES("Aplicar"),
|
STR_ES("Aplicar"),
|
||||||
STR_JP("適用"),
|
STR_JP("適用"),
|
||||||
STR_KO("대다"),
|
STR_KO("대다"),
|
||||||
STR_TW("應用"),
|
STR_TW("应用"),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
[StrId_Actions_Theme_Menu] =
|
||||||
|
{
|
||||||
|
STR_EN("Theme Switcher V1.0"),
|
||||||
|
STR_ES("Versión 1,0 del cambiador de tema"),
|
||||||
|
STR_JP("テーマスイッチャー版1.0"),
|
||||||
|
STR_KO("테마 스위처 에디션 1.0"),
|
||||||
|
STR_TW("主题切换器版本1。0"),
|
||||||
|
},
|
||||||
/*[StrId_Reboot] =
|
/*[StrId_Reboot] =
|
||||||
{
|
{
|
||||||
STR_EN(
|
STR_EN(
|
||||||
|
@ -43,6 +43,8 @@ typedef enum
|
|||||||
StrId_NetLoaderActive,
|
StrId_NetLoaderActive,
|
||||||
StrId_NetLoaderTransferring,
|
StrId_NetLoaderTransferring,
|
||||||
|
|
||||||
|
StrId_Actions_Theme_Menu,
|
||||||
|
|
||||||
StrId_Max,
|
StrId_Max,
|
||||||
} StrId;
|
} StrId;
|
||||||
|
|
||||||
|
@ -500,6 +500,8 @@ void menuLoop() {
|
|||||||
|
|
||||||
if(active_entry != NULL) {
|
if(active_entry != NULL) {
|
||||||
if(active_entry->type == ENTRY_TYPE_THEME){
|
if(active_entry->type == ENTRY_TYPE_THEME){
|
||||||
|
int getX = getXCoordinate(interuiregular18,1180,textGetString(StrId_Actions_Theme_Menu),'r');
|
||||||
|
DrawText(interuiregular18, getX , 0 + 47, themeCurrent.textColor, textGetString(StrId_Actions_Theme_Menu));
|
||||||
DrawText(fontscale7, 1280 - 126 - 30 - 32, 720 - 47 + 24, themeCurrent.textColor, themeCurrent.buttonAText);
|
DrawText(fontscale7, 1280 - 126 - 30 - 32, 720 - 47 + 24, themeCurrent.textColor, themeCurrent.buttonAText);
|
||||||
DrawText(interuiregular18, 1280 - 90 - 30 - 32, 720 - 47 + 24, themeCurrent.textColor, textGetString(StrId_Actions_Apply));
|
DrawText(interuiregular18, 1280 - 90 - 30 - 32, 720 - 47 + 24, themeCurrent.textColor, textGetString(StrId_Actions_Apply));
|
||||||
}
|
}
|
||||||
@ -521,4 +523,4 @@ void menuLoop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
menuDrawMsgBox();
|
menuDrawMsgBox();
|
||||||
}
|
}
|
@ -114,7 +114,7 @@ static inline char* getSlash(const char* str)
|
|||||||
static inline char* removeExtension(const char* str){
|
static inline char* removeExtension(const char* str){
|
||||||
const char* p;
|
const char* p;
|
||||||
char* copy = calloc(strlen(str)+1,sizeof(char));
|
char* copy = calloc(strlen(str)+1,sizeof(char));
|
||||||
char *copyHead = copy;
|
char *copyHead = copy;/*Get copy of the head of the char* to return, otherwise it will return copy->null */
|
||||||
for (p = str; p <= (str+strlen(str)) && *p != '.'; p++){
|
for (p = str; p <= (str+strlen(str)) && *p != '.'; p++){
|
||||||
*copy = *p;
|
*copy = *p;
|
||||||
copy++;
|
copy++;
|
||||||
|
@ -42,3 +42,49 @@ const char* textGetString(StrId id) {
|
|||||||
u64 textGetLanguageCode(void) {
|
u64 textGetLanguageCode(void) {
|
||||||
return s_textLanguageCode;
|
return s_textLanguageCode;
|
||||||
}
|
}
|
||||||
|
/*Automatically gives you the desired x-coordinate
|
||||||
|
*based on the string length and desired alignmenr
|
||||||
|
*rY=reference point... where to align around
|
||||||
|
*align='t','b','c' translates too (top,bottom,center)
|
||||||
|
*'t' aligned, top of text aligns with rY,
|
||||||
|
*you get the rest....
|
||||||
|
*/
|
||||||
|
uint32_t getYCoordinate(u32 font,uint32_t rY,const char* text, const char align){
|
||||||
|
uint32_t height_o,width;
|
||||||
|
GetTextDimensions(font,text,&width,&height_o);
|
||||||
|
uint32_t height = (uint32_t)height_o;
|
||||||
|
uint32_t fC = (rY-height);
|
||||||
|
switch(align){
|
||||||
|
case 't':
|
||||||
|
default:
|
||||||
|
return rY;
|
||||||
|
case 'c':
|
||||||
|
return (rY+(height/2U));
|
||||||
|
case 'b':
|
||||||
|
if(fC<=0U) return 0U;
|
||||||
|
else return fC;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*Automatically gives you the desired x-coordinate
|
||||||
|
*based on the string length and desired alignmenr
|
||||||
|
*rX=reference point... where to align around
|
||||||
|
*text=string you want to display
|
||||||
|
*align='r','l','c' translates too (right,left,center)
|
||||||
|
*'r' aligned, rX location = end of string, you get the rest...
|
||||||
|
*/
|
||||||
|
uint32_t getXCoordinate(u32 font,uint32_t rX, const char* text ,const char align){
|
||||||
|
uint32_t height,width_o;
|
||||||
|
GetTextDimensions(font,text,&width_o,&height);
|
||||||
|
uint32_t fC = (rX-width_o);
|
||||||
|
switch(align){
|
||||||
|
case 'r':
|
||||||
|
if(fC<0U) return 0U;
|
||||||
|
else return fC;
|
||||||
|
case 'c':
|
||||||
|
return (rX+(width_o/2U));
|
||||||
|
case 'l':
|
||||||
|
default:
|
||||||
|
return rX;
|
||||||
|
}
|
||||||
|
}
|
@ -6,3 +6,5 @@ void textInit(void);
|
|||||||
int textGetLang(void);
|
int textGetLang(void);
|
||||||
const char* textGetString(StrId id);
|
const char* textGetString(StrId id);
|
||||||
u64 textGetLanguageCode(void);
|
u64 textGetLanguageCode(void);
|
||||||
|
uint32_t getXCoordinate(u32 font,uint32_t rX, const char* text,const char align);
|
||||||
|
uint32_t getYCoordinate(u32 font,uint32_t rY, const char* text,const char align);
|
||||||
|
@ -15,8 +15,8 @@ bool colorFromSetting(config_setting_t *rgba, color_t *col) {
|
|||||||
|
|
||||||
void themeStartup(ThemePreset preset) {
|
void themeStartup(ThemePreset preset) {
|
||||||
globalPreset = preset;
|
globalPreset = preset;
|
||||||
char* buttonAText = calloc(7,sizeof(char));
|
char* buttonAText = calloc(7,sizeof(char));/*Must initialize the character arrays on the heap*/
|
||||||
char* buttonBText = calloc(7,sizeof(char));
|
char* buttonBText = calloc(7,sizeof(char));/*so that they are not destroyed whenever themeStartup function ends*/
|
||||||
switch (preset) {
|
switch (preset) {
|
||||||
case THEME_PRESET_LIGHT:
|
case THEME_PRESET_LIGHT:
|
||||||
default:
|
default:
|
||||||
@ -37,8 +37,8 @@ void themeStartup(ThemePreset preset) {
|
|||||||
.highlightColor = MakeColor(91, 237, 224, 255),
|
.highlightColor = MakeColor(91, 237, 224, 255),
|
||||||
.separatorColor = MakeColor(219, 218, 219, 255),
|
.separatorColor = MakeColor(219, 218, 219, 255),
|
||||||
.enableWaveBlending = 0,
|
.enableWaveBlending = 0,
|
||||||
.buttonAText = buttonAText,
|
.buttonAText = buttonAText,/*setting the buttonAText = "\uE0E0" directly allocates the literal on the stack */
|
||||||
.buttonBText = buttonBText,
|
.buttonBText = buttonBText,/*and sets the buttonAText to point to the address of the literal which is why calloc is used above*/
|
||||||
//.buttonAImage = button_a_light_bin,
|
//.buttonAImage = button_a_light_bin,
|
||||||
//.buttonBImage = button_b_light_bin,
|
//.buttonBImage = button_b_light_bin,
|
||||||
.hbmenuLogoImage = hbmenu_logo_light_bin
|
.hbmenuLogoImage = hbmenu_logo_light_bin
|
||||||
@ -63,10 +63,10 @@ void themeStartup(ThemePreset preset) {
|
|||||||
char tmp_path[PATH_MAX] = {0};
|
char tmp_path[PATH_MAX] = {0};
|
||||||
|
|
||||||
#ifdef __SWITCH__
|
#ifdef __SWITCH__
|
||||||
tmp_path[0] = '/';
|
tmp_path[0] = '/';/*will this work on the windows version?*/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
strncat(tmp_path, "config/nx-hbmenu/themes/theme.cfg", sizeof(tmp_path)-2);
|
strncat(tmp_path, "config/nx-hbmenu/themes/theme.cfg", sizeof(tmp_path)-2);/*Same thing here? will it work on windows?*/
|
||||||
|
|
||||||
theme_t *themeDefault;
|
theme_t *themeDefault;
|
||||||
config_t cfg = {0};
|
config_t cfg = {0};
|
||||||
@ -76,10 +76,10 @@ void themeStartup(ThemePreset preset) {
|
|||||||
int waveBlending;
|
int waveBlending;
|
||||||
const char *AText, *BText;
|
const char *AText, *BText;
|
||||||
bool good_cfg = config_read_file(&cfg, tmp_path);
|
bool good_cfg = config_read_file(&cfg, tmp_path);
|
||||||
struct stat buffer;
|
if(!good_cfg){//config file is messed up
|
||||||
if(!good_cfg){
|
|
||||||
config_t tmp = {0};
|
config_t tmp = {0};
|
||||||
cfg = tmp;//clear the config
|
cfg = tmp;//clear the config
|
||||||
|
config_init(&cfg);/*reinitize so that we can create the theme.cfg with the default theme (TODO:NightlyFox)*/
|
||||||
}
|
}
|
||||||
switch (preset) {
|
switch (preset) {
|
||||||
case THEME_PRESET_LIGHT:
|
case THEME_PRESET_LIGHT:
|
||||||
@ -88,8 +88,9 @@ void themeStartup(ThemePreset preset) {
|
|||||||
if (good_cfg)
|
if (good_cfg)
|
||||||
theme = config_lookup(&cfg, "lightTheme");
|
theme = config_lookup(&cfg, "lightTheme");
|
||||||
else{
|
else{
|
||||||
if(stat(tmp_path,&buffer)==0);
|
/*(TODO:NightlyFox)
|
||||||
//TODO: theme.cfg file does not exist or is corrupted/misconfigured! overwrite with default theme.
|
theme.cfg file does not exist or is corrupted/misconfigured!
|
||||||
|
setup config here with default themes*/
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -98,12 +99,14 @@ void themeStartup(ThemePreset preset) {
|
|||||||
if (good_cfg)
|
if (good_cfg)
|
||||||
theme = config_lookup(&cfg, "darkTheme");
|
theme = config_lookup(&cfg, "darkTheme");
|
||||||
else{
|
else{
|
||||||
if(stat(tmp_path,&buffer)==0);
|
/*(TODO:NightlyFox) theme.cfg
|
||||||
//TODO: theme.cfg file does not exist or is corrupted/misconfigured! overwrite with default theme.
|
file does not exist or is corrupted/misconfigured!
|
||||||
|
setup config here with default themes*/
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/*(TODO:NightlyFox) write the config here
|
||||||
|
so you only have to do it once*/
|
||||||
if (good_cfg) {
|
if (good_cfg) {
|
||||||
if (theme != NULL) {
|
if (theme != NULL) {
|
||||||
if (!colorFromSetting(config_setting_lookup(theme, "textColor"), &text))
|
if (!colorFromSetting(config_setting_lookup(theme, "textColor"), &text))
|
||||||
|
Loading…
Reference in New Issue
Block a user