예제 #1
0
void cycleRows() {
    int maxRows = 3;
    int minRows = 1;

    totalRows++;

    if (totalRows > maxRows) {
        totalRows = minRows;
    }

    updateMenuIconPositions(&gridSettingsMenu);
    updateMenuIconPositions(&settingsMenu);
}
예제 #2
0
void settingsToggleShow3DS() {
    show3DSFolder = !show3DSFolder;
    if (foldersMenu.numEntries > 0) {
        foldersMenu.entries[0].hidden = !show3DSFolder;
        updateMenuIconPositions(&foldersMenu);
    }
}
예제 #3
0
void settingsSetMenuStatus(int * status) {
    if (*status == menuStatusThemeSelect) {
        buildThemesList();
        char * currentThemeName = getConfigStringForKey("currentTheme", "Default", configTypeMain);
        updateMenuTicks(&themesMenu, currentThemeName, true);
        checkReturnToGrid(&themesMenu);
        updateMenuIconPositions(&themesMenu);

        if (animatedGrids) {
            startTransition(transitionDirectionDown, themeSettingsMenu.pagePosition, &themeSettingsMenu);
        }
    }
    else if (*status == menuStatusWaterSettings) {
        initWaterMenu();
        updateMenuIconPositions(&waterMenu);
        gotoFirstIcon(&waterMenu);

        if (animatedGrids) {
            startTransition(transitionDirectionDown, settingsMenu.pagePosition, &settingsMenu);
        }
    }
    else if (*status == menuStatusThemeSettings) {
        initThemeSettingsMenu();
        updateMenuIconPositions(&themeSettingsMenu);
        gotoFirstIcon(&themeSettingsMenu);

        if (animatedGrids) {
            startTransition(transitionDirectionDown, settingsMenu.pagePosition, &settingsMenu);
        }
    }
    else if (*status == menuStatusGridSettings) {
        initGridSettingsMenu();
        updateMenuIconPositions(&gridSettingsMenu);
        gotoFirstIcon(&gridSettingsMenu);

        if (animatedGrids) {
            startTransition(transitionDirectionDown, settingsMenu.pagePosition, &settingsMenu);
        }
    }
    else if (*status == menuStatusOpenTitleFiltering) {
        if (titleLoadPaused) {
            cancelTitleLoading();
        }
    }

    setMenuStatus(*status);
}
예제 #4
0
void settingsShowColours() {
    if (colourSelectMenuNeedsInit) {
        initColourSelectMenu();
    }

    updateMenuIconPositions(&colourSelectMenu);
    gotoFirstIcon(&colourSelectMenu);
    setMenuStatus(menuStatusColourSettings);

    if (animatedGrids) {
        startTransition(transitionDirectionDown, themeSettingsMenu.pagePosition, &themeSettingsMenu);
    }
}
예제 #5
0
void scanHomebrewDirectory(menu_s* m, char* path) {
    if(!path)return;

    Handle dirHandle;
    FS_path dirPath=FS_makePath(PATH_CHAR, path);
    FSUSER_OpenDirectory(&dirHandle, sdmcArchive, dirPath);

    static char fullPath[1024][1024];
    u32 entriesRead;
    int totalentries = 0;
    do
    {
        static FS_dirent entry;
        memset(&entry,0,sizeof(FS_dirent));
        entriesRead=0;
        FSDIR_Read(dirHandle, &entriesRead, 1, &entry);
        if(entriesRead)
        {
            strncpy(fullPath[totalentries], path, 1024);
            int n=strlen(fullPath[totalentries]);
            unicodeToChar(&fullPath[totalentries][n], entry.name, 1024-n);
            if(entry.isDirectory) //directories
            {
                //addDirectoryToMenu(m, fullPath[totalentries]);
                totalentries++;
            }else{ //stray executables
                n=strlen(fullPath[totalentries]);
                if(n>5 && !strcmp(".3dsx", &fullPath[totalentries][n-5])){
                    //addFileToMenu(m, fullPath[totalentries]);
                    totalentries++;
                }
                if(n>4 && !strcmp(".xml", &fullPath[totalentries][n-4])) {
                    //addFileToMenu(m, fullPath[totalentries]);
                    totalentries++;
                }
            }
        }
    }while(entriesRead);

    FSDIR_Close(dirHandle);

    bool sortAlpha = getConfigBoolForKey("sortAlpha", false, configTypeMain);
    addMenuEntries(fullPath, totalentries, strlen(path), m, sortAlpha);

    updateMenuIconPositions(m);
}
예제 #6
0
void cycleRows() {
    int maxRows = 3;
    int minRows = 1;

    totalRows++;

    if (totalRows > maxRows) {
        totalRows = minRows;
    }

    updateMenuIconPositions(&colourSelectMenu);
    updateMenuIconPositions(&foldersMenu);
    updateMenuIconPositions(&gridSettingsMenu);
    updateMenuIconPositions(&settingsMenu);
    updateMenuIconPositions(&themeSettingsMenu);
    updateMenuIconPositions(&themesMenu);
    updateMenuIconPositions(&titleMenu);
    updateMenuIconPositions(&waterMenu);
}
예제 #7
0
void buildThemesList() {
    if (themesLoaded) {
        return;
    }

    themesLoaded = true;

    directoryContents * contents = contentsOfDirectoryAtPath(themesPath, true);

    themesMenu.entries=NULL;
    themesMenu.numEntries=0;
    themesMenu.selectedEntry=0;
    themesMenu.scrollLocation=0;
    themesMenu.scrollVelocity=0;
    themesMenu.scrollBarSize=0;
    themesMenu.scrollBarPos=0;
    themesMenu.scrollTarget=0;
    themesMenu.atEquilibrium=false;

    menuEntry_s randomEntry;
    strcpy(randomEntry.name, "Random theme");
    strcpy(randomEntry.description, "A random theme will be selected each time the launcher boots. Excludes the default theme.");
    strcpy(randomEntry.author, "");
    memcpy(randomEntry.iconData, settingsIconRandomTheme_bin, sizeof(randomEntry.iconData));
    randomEntry.hidden = false;
    randomEntry.isTitleEntry = false;
    randomEntry.isShortcut = false;
    randomEntry.isRegionFreeEntry = false;
    randomEntry.drawFirstLetterOfName = false;
    addMenuEntryCopy(&themesMenu, &randomEntry);

    char * smdhName = "/theme.smdh";
    int folderPathLen = strlen(themesPath);

    int i;
    for (i=0; i<contents->numPaths; i++) {
        char * fullPath = contents->paths[i];
        static menuEntry_s me;
        addThemeToList(fullPath, &me, smdhName, folderPathLen);
    }

    updateMenuIconPositions(&themesMenu);
    free(contents);
}