mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-12-23 18:31:56 +01:00
*Added Filebrowser from libwiigui 1.03 (modified a bit). It will be used by giantpune later. Right now its not used.
*Created a function to get SVN_REV to avoid long compiling times when small changes are done in the source.
This commit is contained in:
parent
9b051ac7d7
commit
9b8f289ca3
File diff suppressed because one or more lines are too long
235
source/filebrowser.cpp
Normal file
235
source/filebrowser.cpp
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* libwiigui Template
|
||||||
|
* Tantric 2009
|
||||||
|
*
|
||||||
|
* modified by dimok
|
||||||
|
*
|
||||||
|
* filebrowser.cpp
|
||||||
|
*
|
||||||
|
* Generic file routines - reading, writing, browsing
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include <gccore.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <wiiuse/wpad.h>
|
||||||
|
#include <sys/dir.h>
|
||||||
|
#include <malloc.h>
|
||||||
|
|
||||||
|
#include "filebrowser.h"
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
|
BROWSERINFO browser;
|
||||||
|
BROWSERENTRY * browserList = NULL; // list of files/folders in browser
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* ResetBrowser()
|
||||||
|
* Clears the file browser memory, and allocates one initial entry
|
||||||
|
***************************************************************************/
|
||||||
|
void ResetBrowser()
|
||||||
|
{
|
||||||
|
browser.numEntries = 0;
|
||||||
|
browser.selIndex = 0;
|
||||||
|
browser.pageIndex = 0;
|
||||||
|
|
||||||
|
// Clear any existing values
|
||||||
|
if(browserList != NULL)
|
||||||
|
{
|
||||||
|
free(browserList);
|
||||||
|
browserList = NULL;
|
||||||
|
}
|
||||||
|
// set aside space for 1 entry
|
||||||
|
browserList = (BROWSERENTRY *)malloc(sizeof(BROWSERENTRY));
|
||||||
|
memset(browserList, 0, sizeof(BROWSERENTRY));
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* UpdateDirName()
|
||||||
|
* Update curent directory name for file browser
|
||||||
|
***************************************************************************/
|
||||||
|
int UpdateDirName()
|
||||||
|
{
|
||||||
|
int size=0;
|
||||||
|
char * test;
|
||||||
|
char temp[1024];
|
||||||
|
|
||||||
|
/* current directory doesn't change */
|
||||||
|
if (strcmp(browserList[browser.selIndex].filename,".") == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/* go up to parent directory */
|
||||||
|
else if (strcmp(browserList[browser.selIndex].filename,"..") == 0)
|
||||||
|
{
|
||||||
|
/* determine last subdirectory namelength */
|
||||||
|
sprintf(temp,"%s",browser.dir);
|
||||||
|
test = strtok(temp,"/");
|
||||||
|
while (test != NULL)
|
||||||
|
{
|
||||||
|
size = strlen(test);
|
||||||
|
test = strtok(NULL,"/");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* remove last subdirectory name */
|
||||||
|
size = strlen(browser.dir) - size - 1;
|
||||||
|
browser.dir[size] = 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
/* Open a directory */
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* test new directory namelength */
|
||||||
|
if ((strlen(browser.dir)+1+strlen(browserList[browser.selIndex].filename)) < MAXPATHLEN)
|
||||||
|
{
|
||||||
|
/* update current directory name */
|
||||||
|
sprintf(browser.dir, "%s/%s",browser.dir, browserList[browser.selIndex].filename);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* FileSortCallback
|
||||||
|
*
|
||||||
|
* Quick sort callback to sort file entries with the following order:
|
||||||
|
* .
|
||||||
|
* ..
|
||||||
|
* <dirs>
|
||||||
|
* <files>
|
||||||
|
***************************************************************************/
|
||||||
|
int FileSortCallback(const void *f1, const void *f2)
|
||||||
|
{
|
||||||
|
/* Special case for implicit directories */
|
||||||
|
if(((BROWSERENTRY *)f1)->filename[0] == '.' || ((BROWSERENTRY *)f2)->filename[0] == '.')
|
||||||
|
{
|
||||||
|
if(strcmp(((BROWSERENTRY *)f1)->filename, ".") == 0) { return -1; }
|
||||||
|
if(strcmp(((BROWSERENTRY *)f2)->filename, ".") == 0) { return 1; }
|
||||||
|
if(strcmp(((BROWSERENTRY *)f1)->filename, "..") == 0) { return -1; }
|
||||||
|
if(strcmp(((BROWSERENTRY *)f2)->filename, "..") == 0) { return 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If one is a file and one is a directory the directory is first. */
|
||||||
|
if(((BROWSERENTRY *)f1)->isdir && !(((BROWSERENTRY *)f2)->isdir)) return -1;
|
||||||
|
if(!(((BROWSERENTRY *)f1)->isdir) && ((BROWSERENTRY *)f2)->isdir) return 1;
|
||||||
|
|
||||||
|
return stricmp(((BROWSERENTRY *)f1)->filename, ((BROWSERENTRY *)f2)->filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* Browse subdirectories
|
||||||
|
**************************************************************************/
|
||||||
|
int
|
||||||
|
ParseDirectory()
|
||||||
|
{
|
||||||
|
DIR_ITER *dir = NULL;
|
||||||
|
char fulldir[MAXPATHLEN];
|
||||||
|
char filename[MAXPATHLEN];
|
||||||
|
struct stat filestat;
|
||||||
|
|
||||||
|
// reset browser
|
||||||
|
ResetBrowser();
|
||||||
|
|
||||||
|
// open the directory
|
||||||
|
sprintf(fulldir, "%s%s", browser.rootdir, browser.dir); // add currentDevice to path
|
||||||
|
dir = diropen(fulldir);
|
||||||
|
|
||||||
|
// if we can't open the dir, try opening the root dir
|
||||||
|
if (dir == NULL)
|
||||||
|
{
|
||||||
|
sprintf(browser.dir,"/");
|
||||||
|
dir = diropen(browser.rootdir);
|
||||||
|
if (dir == NULL)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// index files/folders
|
||||||
|
int entryNum = 0;
|
||||||
|
|
||||||
|
while(dirnext(dir,filename,&filestat) == 0)
|
||||||
|
{
|
||||||
|
if(strcmp(filename,".") != 0)
|
||||||
|
{
|
||||||
|
BROWSERENTRY * newBrowserList = (BROWSERENTRY *)realloc(browserList, (entryNum+1) * sizeof(BROWSERENTRY));
|
||||||
|
|
||||||
|
if(!newBrowserList) // failed to allocate required memory
|
||||||
|
{
|
||||||
|
ResetBrowser();
|
||||||
|
entryNum = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
browserList = newBrowserList;
|
||||||
|
}
|
||||||
|
memset(&(browserList[entryNum]), 0, sizeof(BROWSERENTRY)); // clear the new entry
|
||||||
|
|
||||||
|
strncpy(browserList[entryNum].filename, filename, MAXJOLIET);
|
||||||
|
|
||||||
|
if(strcmp(filename,"..") == 0)
|
||||||
|
{
|
||||||
|
sprintf(browserList[entryNum].displayname, "..");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strcpy(browserList[entryNum].displayname, filename); // crop name for display
|
||||||
|
}
|
||||||
|
|
||||||
|
browserList[entryNum].length = filestat.st_size;
|
||||||
|
browserList[entryNum].isdir = (filestat.st_mode & _IFDIR) == 0 ? 0 : 1; // flag this as a dir
|
||||||
|
|
||||||
|
entryNum++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// close directory
|
||||||
|
dirclose(dir);
|
||||||
|
|
||||||
|
// Sort the file list
|
||||||
|
qsort(browserList, entryNum, sizeof(BROWSERENTRY), FileSortCallback);
|
||||||
|
|
||||||
|
browser.numEntries = entryNum;
|
||||||
|
return entryNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* BrowserChangeFolder
|
||||||
|
*
|
||||||
|
* Update current directory and set new entry list if directory has changed
|
||||||
|
***************************************************************************/
|
||||||
|
int BrowserChangeFolder()
|
||||||
|
{
|
||||||
|
if(!UpdateDirName())
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
ParseDirectory();
|
||||||
|
|
||||||
|
return browser.numEntries;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* BrowseDevice
|
||||||
|
* Displays a list of files on the selected device
|
||||||
|
***************************************************************************/
|
||||||
|
int BrowseDevice(int device)
|
||||||
|
{
|
||||||
|
sprintf(browser.dir, "/");
|
||||||
|
switch(device)
|
||||||
|
{
|
||||||
|
case SD:
|
||||||
|
sprintf(browser.rootdir, "SD:");
|
||||||
|
break;
|
||||||
|
case USB:
|
||||||
|
sprintf(browser.rootdir, "USB:");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ParseDirectory(); // Parse root directory
|
||||||
|
return browser.numEntries;
|
||||||
|
}
|
55
source/filebrowser.h
Normal file
55
source/filebrowser.h
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* libwiigui Template
|
||||||
|
* Tantric 2009
|
||||||
|
*
|
||||||
|
* modified by dimok
|
||||||
|
*
|
||||||
|
* filebrowser.h
|
||||||
|
*
|
||||||
|
* Generic file routines - reading, writing, browsing
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _FILEBROWSER_H_
|
||||||
|
#define _FILEBROWSER_H_
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <gccore.h>
|
||||||
|
|
||||||
|
#define MAXJOLIET 255
|
||||||
|
#define MAXDISPLAY MAXPATHLEN
|
||||||
|
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SD,
|
||||||
|
USB
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char dir[MAXPATHLEN]; // directory path of browserList
|
||||||
|
char rootdir[10]; // directory path of browserList
|
||||||
|
int numEntries; // # of entries in browserList
|
||||||
|
int selIndex; // currently selected index of browserList
|
||||||
|
int pageIndex; // starting index of browserList page display
|
||||||
|
} BROWSERINFO;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
u64 offset; // DVD offset
|
||||||
|
u64 length; // file length in 64 bytes for sizes higher than 4GB
|
||||||
|
char isdir; // 0 - file, 1 - directory
|
||||||
|
char filename[MAXJOLIET + 1]; // full filename
|
||||||
|
char displayname[MAXDISPLAY + 1]; // name for browser display
|
||||||
|
} BROWSERENTRY;
|
||||||
|
|
||||||
|
extern BROWSERINFO browser;
|
||||||
|
extern BROWSERENTRY * browserList;
|
||||||
|
|
||||||
|
int UpdateDirName();
|
||||||
|
int FileSortCallback(const void *f1, const void *f2);
|
||||||
|
void ResetBrowser();
|
||||||
|
int ParseDirectory();
|
||||||
|
int BrowserChangeFolder();
|
||||||
|
int BrowseDevice(int device);
|
||||||
|
|
||||||
|
#endif
|
@ -101,6 +101,18 @@ extern const u32 bg_options_settings_png_size;
|
|||||||
extern const u8 settings_background_png[];
|
extern const u8 settings_background_png[];
|
||||||
extern const u32 settings_background_png_size;
|
extern const u32 settings_background_png_size;
|
||||||
|
|
||||||
|
extern const u8 bg_browser_png[];
|
||||||
|
extern const u32 bg_browser_png_size;
|
||||||
|
|
||||||
|
extern const u8 folder_png[];
|
||||||
|
extern const u32 folder_png_size;
|
||||||
|
|
||||||
|
extern const u8 bg_browser_selection_png[];
|
||||||
|
extern const u32 bg_browser_selection_png_size;
|
||||||
|
|
||||||
|
extern const u8 addressbar_textbox_png[];
|
||||||
|
extern const u32 addressbar_textbox_png_size;
|
||||||
|
|
||||||
extern const u8 browser_png[];
|
extern const u8 browser_png[];
|
||||||
extern const u32 browser_png_size;
|
extern const u32 browser_png_size;
|
||||||
|
|
||||||
|
7
source/getrev.c
Normal file
7
source/getrev.c
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include "svnrev.h"
|
||||||
|
|
||||||
|
char *GetRev() {
|
||||||
|
|
||||||
|
return SVN_REV;
|
||||||
|
|
||||||
|
}
|
14
source/getrev.h
Normal file
14
source/getrev.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#ifndef GETREV_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char *GetRev();
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
BIN
source/images/addressbar_textbox.png
Normal file
BIN
source/images/addressbar_textbox.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
source/images/bg_browser.png
Normal file
BIN
source/images/bg_browser.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
source/images/bg_browser_selection.png
Normal file
BIN
source/images/bg_browser_selection.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.8 KiB |
BIN
source/images/folder.png
Normal file
BIN
source/images/folder.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
@ -232,6 +232,9 @@ class GuiElement
|
|||||||
//!Set the element's parent
|
//!Set the element's parent
|
||||||
//!\param e Pointer to parent element
|
//!\param e Pointer to parent element
|
||||||
void SetParent(GuiElement * e);
|
void SetParent(GuiElement * e);
|
||||||
|
//!Gets the element's parent
|
||||||
|
//!\return Pointer to parent element
|
||||||
|
GuiElement * GetParent();
|
||||||
//!Gets the current leftmost coordinate of the element
|
//!Gets the current leftmost coordinate of the element
|
||||||
//!Considers horizontal alignment, x offset, width, and parent element's GetLeft() / GetWidth() values
|
//!Considers horizontal alignment, x offset, width, and parent element's GetLeft() / GetWidth() values
|
||||||
//!\return left coordinate
|
//!\return left coordinate
|
||||||
@ -1029,4 +1032,52 @@ class GuiOptionBrowser : public GuiElement
|
|||||||
GuiTrigger * trigB;
|
GuiTrigger * trigB;
|
||||||
GuiTrigger * trigHeldA;
|
GuiTrigger * trigHeldA;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//!Display a list of files
|
||||||
|
class GuiFileBrowser : public GuiElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GuiFileBrowser(int w, int h);
|
||||||
|
~GuiFileBrowser();
|
||||||
|
void DisableTriggerUpdate(bool set);
|
||||||
|
void ResetState();
|
||||||
|
void SetFocus(int f);
|
||||||
|
void Draw();
|
||||||
|
void TriggerUpdate();
|
||||||
|
void Update(GuiTrigger * t);
|
||||||
|
GuiButton * fileList[PAGESIZE];
|
||||||
|
protected:
|
||||||
|
int selectedItem;
|
||||||
|
bool listChanged;
|
||||||
|
bool triggerdisabled;
|
||||||
|
|
||||||
|
GuiText * fileListText[PAGESIZE];
|
||||||
|
GuiText * fileListTextOver[PAGESIZE];
|
||||||
|
GuiImage * fileListBg[PAGESIZE];
|
||||||
|
GuiImage * fileListFolder[PAGESIZE];
|
||||||
|
|
||||||
|
GuiButton * arrowUpBtn;
|
||||||
|
GuiButton * arrowDownBtn;
|
||||||
|
GuiButton * scrollbarBoxBtn;
|
||||||
|
|
||||||
|
GuiImage * bgFileSelectionImg;
|
||||||
|
GuiImage * scrollbarImg;
|
||||||
|
GuiImage * arrowDownImg;
|
||||||
|
GuiImage * arrowUpImg;
|
||||||
|
GuiImage * scrollbarBoxImg;
|
||||||
|
|
||||||
|
GuiImageData * bgFileSelection;
|
||||||
|
GuiImageData * bgFileSelectionEntry;
|
||||||
|
GuiImageData * fileFolder;
|
||||||
|
GuiImageData * scrollbar;
|
||||||
|
GuiImageData * arrowDown;
|
||||||
|
GuiImageData * arrowUp;
|
||||||
|
GuiImageData * scrollbarBox;
|
||||||
|
|
||||||
|
GuiSound * btnSoundOver;
|
||||||
|
GuiSound * btnSoundClick;
|
||||||
|
GuiTrigger * trigA;
|
||||||
|
GuiTrigger * trigHeldA;
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -80,6 +80,11 @@ void GuiElement::SetParent(GuiElement * e)
|
|||||||
LOCK(this);
|
LOCK(this);
|
||||||
parentElement = e;
|
parentElement = e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GuiElement * GuiElement::GetParent()
|
||||||
|
{
|
||||||
|
return parentElement;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Get the left position of the GuiElement.
|
* Get the left position of the GuiElement.
|
||||||
* @see SetLeft()
|
* @see SetLeft()
|
||||||
|
402
source/libwiigui/gui_filebrowser.cpp
Normal file
402
source/libwiigui/gui_filebrowser.cpp
Normal file
@ -0,0 +1,402 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* libwiigui
|
||||||
|
*
|
||||||
|
* Tantric 2009
|
||||||
|
*
|
||||||
|
* gui_filebrowser.cpp
|
||||||
|
*
|
||||||
|
* GUI class definitions
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "gui.h"
|
||||||
|
#include "filebrowser.h"
|
||||||
|
|
||||||
|
#define FILEBROWSERSIZE 8
|
||||||
|
/**
|
||||||
|
* Constructor for the GuiFileBrowser class.
|
||||||
|
*/
|
||||||
|
GuiFileBrowser::GuiFileBrowser(int w, int h)
|
||||||
|
{
|
||||||
|
width = w;
|
||||||
|
height = h;
|
||||||
|
selectedItem = 0;
|
||||||
|
selectable = true;
|
||||||
|
listChanged = true; // trigger an initial list update
|
||||||
|
triggerdisabled = false; // trigger disable
|
||||||
|
focus = 1; // allow focus
|
||||||
|
|
||||||
|
trigA = new GuiTrigger;
|
||||||
|
trigA->SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
||||||
|
|
||||||
|
trigHeldA = new GuiTrigger;
|
||||||
|
trigHeldA->SetHeldTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
||||||
|
|
||||||
|
btnSoundOver = new GuiSound(button_over_pcm, button_over_pcm_size, SOUND_PCM);
|
||||||
|
btnSoundClick = new GuiSound(button_click_pcm, button_click_pcm_size, SOUND_PCM);
|
||||||
|
|
||||||
|
bgFileSelection = new GuiImageData(bg_browser_png);
|
||||||
|
bgFileSelectionImg = new GuiImage(bgFileSelection);
|
||||||
|
bgFileSelectionImg->SetParent(this);
|
||||||
|
bgFileSelectionImg->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
|
|
||||||
|
bgFileSelectionEntry = new GuiImageData(bg_browser_selection_png);
|
||||||
|
fileFolder = new GuiImageData(folder_png);
|
||||||
|
|
||||||
|
scrollbar = new GuiImageData(scrollbar_png);
|
||||||
|
scrollbarImg = new GuiImage(scrollbar);
|
||||||
|
scrollbarImg->SetParent(this);
|
||||||
|
scrollbarImg->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
|
||||||
|
scrollbarImg->SetPosition(0, 30);
|
||||||
|
|
||||||
|
arrowDown = new GuiImageData(scrollbar_arrowdown_png);
|
||||||
|
arrowDownImg = new GuiImage(arrowDown);
|
||||||
|
arrowUp = new GuiImageData(scrollbar_arrowup_png);
|
||||||
|
arrowUpImg = new GuiImage(arrowUp);
|
||||||
|
scrollbarBox = new GuiImageData(scrollbar_box_png);
|
||||||
|
scrollbarBoxImg = new GuiImage(scrollbarBox);
|
||||||
|
|
||||||
|
arrowUpBtn = new GuiButton(arrowUpImg->GetWidth(), arrowUpImg->GetHeight());
|
||||||
|
arrowUpBtn->SetParent(this);
|
||||||
|
arrowUpBtn->SetImage(arrowUpImg);
|
||||||
|
arrowUpBtn->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
|
||||||
|
arrowUpBtn->SetSelectable(false);
|
||||||
|
arrowUpBtn->SetClickable(false);
|
||||||
|
arrowUpBtn->SetHoldable(true);
|
||||||
|
arrowUpBtn->SetTrigger(trigHeldA);
|
||||||
|
arrowUpBtn->SetSoundOver(btnSoundOver);
|
||||||
|
arrowUpBtn->SetSoundClick(btnSoundClick);
|
||||||
|
|
||||||
|
arrowDownBtn = new GuiButton(arrowDownImg->GetWidth(), arrowDownImg->GetHeight());
|
||||||
|
arrowDownBtn->SetParent(this);
|
||||||
|
arrowDownBtn->SetImage(arrowDownImg);
|
||||||
|
arrowDownBtn->SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
|
||||||
|
arrowDownBtn->SetSelectable(false);
|
||||||
|
arrowDownBtn->SetClickable(false);
|
||||||
|
arrowDownBtn->SetHoldable(true);
|
||||||
|
arrowDownBtn->SetTrigger(trigHeldA);
|
||||||
|
arrowDownBtn->SetSoundOver(btnSoundOver);
|
||||||
|
arrowDownBtn->SetSoundClick(btnSoundClick);
|
||||||
|
|
||||||
|
scrollbarBoxBtn = new GuiButton(scrollbarBoxImg->GetWidth(), scrollbarBoxImg->GetHeight());
|
||||||
|
scrollbarBoxBtn->SetParent(this);
|
||||||
|
scrollbarBoxBtn->SetImage(scrollbarBoxImg);
|
||||||
|
scrollbarBoxBtn->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
|
||||||
|
scrollbarBoxBtn->SetMinY(0);
|
||||||
|
scrollbarBoxBtn->SetMaxY(136);
|
||||||
|
scrollbarBoxBtn->SetSelectable(false);
|
||||||
|
scrollbarBoxBtn->SetClickable(false);
|
||||||
|
scrollbarBoxBtn->SetHoldable(true);
|
||||||
|
scrollbarBoxBtn->SetTrigger(trigHeldA);
|
||||||
|
|
||||||
|
for(int i=0; i<FILEBROWSERSIZE; i++)
|
||||||
|
{
|
||||||
|
fileListText[i] = new GuiText(NULL,20, (GXColor){0, 0, 0, 0xff});
|
||||||
|
fileListText[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
|
fileListText[i]->SetPosition(5,0);
|
||||||
|
fileListText[i]->SetMaxWidth(bgFileSelectionImg->GetWidth() - (arrowDownImg->GetWidth()+20), GuiText::DOTTED);
|
||||||
|
|
||||||
|
fileListTextOver[i] = new GuiText(NULL,20, (GXColor){0, 0, 0, 0xff});
|
||||||
|
fileListTextOver[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
|
fileListTextOver[i]->SetPosition(5,0);
|
||||||
|
fileListTextOver[i]->SetMaxWidth(bgFileSelectionImg->GetWidth() - (arrowDownImg->GetWidth()+20), GuiText::SCROLL);
|
||||||
|
|
||||||
|
fileListBg[i] = new GuiImage(bgFileSelectionEntry);
|
||||||
|
fileListFolder[i] = new GuiImage(fileFolder);
|
||||||
|
|
||||||
|
fileList[i] = new GuiButton(512,30);
|
||||||
|
fileList[i]->SetParent(this);
|
||||||
|
fileList[i]->SetLabel(fileListText[i]);
|
||||||
|
fileList[i]->SetLabelOver(fileListTextOver[i]);
|
||||||
|
fileList[i]->SetImageOver(fileListBg[i]);
|
||||||
|
fileList[i]->SetPosition(2,30*i+3);
|
||||||
|
fileList[i]->SetTrigger(trigA);
|
||||||
|
fileList[i]->SetRumble(false);
|
||||||
|
fileList[i]->SetSoundClick(btnSoundClick);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destructor for the GuiFileBrowser class.
|
||||||
|
*/
|
||||||
|
GuiFileBrowser::~GuiFileBrowser()
|
||||||
|
{
|
||||||
|
delete arrowUpBtn;
|
||||||
|
delete arrowDownBtn;
|
||||||
|
delete scrollbarBoxBtn;
|
||||||
|
|
||||||
|
delete bgFileSelectionImg;
|
||||||
|
delete scrollbarImg;
|
||||||
|
delete arrowDownImg;
|
||||||
|
delete arrowUpImg;
|
||||||
|
delete scrollbarBoxImg;
|
||||||
|
|
||||||
|
delete bgFileSelection;
|
||||||
|
delete bgFileSelectionEntry;
|
||||||
|
delete fileFolder;
|
||||||
|
delete scrollbar;
|
||||||
|
delete arrowDown;
|
||||||
|
delete arrowUp;
|
||||||
|
delete scrollbarBox;
|
||||||
|
|
||||||
|
delete btnSoundOver;
|
||||||
|
delete btnSoundClick;
|
||||||
|
delete trigHeldA;
|
||||||
|
delete trigA;
|
||||||
|
|
||||||
|
for(int i=0; i<FILEBROWSERSIZE; i++)
|
||||||
|
{
|
||||||
|
delete fileListText[i];
|
||||||
|
delete fileListTextOver[i];
|
||||||
|
delete fileList[i];
|
||||||
|
delete fileListBg[i];
|
||||||
|
delete fileListFolder[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GuiFileBrowser::SetFocus(int f)
|
||||||
|
{
|
||||||
|
focus = f;
|
||||||
|
|
||||||
|
for(int i=0; i<FILEBROWSERSIZE; i++)
|
||||||
|
fileList[i]->ResetState();
|
||||||
|
|
||||||
|
if(f == 1)
|
||||||
|
fileList[selectedItem]->SetState(STATE_SELECTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GuiFileBrowser::DisableTriggerUpdate(bool set)
|
||||||
|
{
|
||||||
|
triggerdisabled = set;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GuiFileBrowser::ResetState()
|
||||||
|
{
|
||||||
|
state = STATE_DEFAULT;
|
||||||
|
stateChan = -1;
|
||||||
|
selectedItem = 0;
|
||||||
|
|
||||||
|
for(int i=0; i<FILEBROWSERSIZE; i++)
|
||||||
|
{
|
||||||
|
fileList[i]->ResetState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GuiFileBrowser::TriggerUpdate()
|
||||||
|
{
|
||||||
|
listChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draw the button on screen
|
||||||
|
*/
|
||||||
|
void GuiFileBrowser::Draw()
|
||||||
|
{
|
||||||
|
if(!this->IsVisible())
|
||||||
|
return;
|
||||||
|
|
||||||
|
bgFileSelectionImg->Draw();
|
||||||
|
|
||||||
|
for(int i=0; i<FILEBROWSERSIZE; i++)
|
||||||
|
{
|
||||||
|
fileList[i]->Draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollbarImg->Draw();
|
||||||
|
arrowUpBtn->Draw();
|
||||||
|
arrowDownBtn->Draw();
|
||||||
|
scrollbarBoxBtn->Draw();
|
||||||
|
|
||||||
|
this->UpdateEffects();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GuiFileBrowser::Update(GuiTrigger * t)
|
||||||
|
{
|
||||||
|
if(state == STATE_DISABLED || !t || triggerdisabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int position = 0;
|
||||||
|
int positionWiimote = 0;
|
||||||
|
|
||||||
|
arrowUpBtn->Update(t);
|
||||||
|
arrowDownBtn->Update(t);
|
||||||
|
scrollbarBoxBtn->Update(t);
|
||||||
|
|
||||||
|
// move the file listing to respond to wiimote cursor movement
|
||||||
|
if(scrollbarBoxBtn->GetState() == STATE_HELD &&
|
||||||
|
scrollbarBoxBtn->GetStateChan() == t->chan &&
|
||||||
|
t->wpad.ir.valid &&
|
||||||
|
browser.numEntries > FILEBROWSERSIZE
|
||||||
|
)
|
||||||
|
{
|
||||||
|
scrollbarBoxBtn->SetPosition(0,0);
|
||||||
|
positionWiimote = t->wpad.ir.y - 60 - scrollbarBoxBtn->GetTop();
|
||||||
|
|
||||||
|
if(positionWiimote < scrollbarBoxBtn->GetMinY())
|
||||||
|
positionWiimote = scrollbarBoxBtn->GetMinY();
|
||||||
|
else if(positionWiimote > scrollbarBoxBtn->GetMaxY())
|
||||||
|
positionWiimote = scrollbarBoxBtn->GetMaxY();
|
||||||
|
|
||||||
|
browser.pageIndex = (positionWiimote * browser.numEntries)/136.0 - selectedItem;
|
||||||
|
|
||||||
|
if(browser.pageIndex <= 0)
|
||||||
|
{
|
||||||
|
browser.pageIndex = 0;
|
||||||
|
}
|
||||||
|
else if(browser.pageIndex+FILEBROWSERSIZE >= browser.numEntries)
|
||||||
|
{
|
||||||
|
browser.pageIndex = browser.numEntries-FILEBROWSERSIZE;
|
||||||
|
}
|
||||||
|
listChanged = true;
|
||||||
|
focus = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(arrowDownBtn->GetState() == STATE_HELD && arrowDownBtn->GetStateChan() == t->chan)
|
||||||
|
{
|
||||||
|
t->wpad.btns_h |= WPAD_BUTTON_DOWN;
|
||||||
|
if(!this->IsFocused())
|
||||||
|
((GuiWindow *)this->GetParent())->ChangeFocus(this);
|
||||||
|
}
|
||||||
|
else if(arrowUpBtn->GetState() == STATE_HELD && arrowUpBtn->GetStateChan() == t->chan)
|
||||||
|
{
|
||||||
|
t->wpad.btns_h |= WPAD_BUTTON_UP;
|
||||||
|
if(!this->IsFocused())
|
||||||
|
((GuiWindow *)this->GetParent())->ChangeFocus(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
// pad/joystick navigation
|
||||||
|
if(!focus)
|
||||||
|
{
|
||||||
|
goto endNavigation; // skip navigation
|
||||||
|
listChanged = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(t->Right())
|
||||||
|
{
|
||||||
|
if(browser.pageIndex < browser.numEntries && browser.numEntries > FILEBROWSERSIZE)
|
||||||
|
{
|
||||||
|
browser.pageIndex += FILEBROWSERSIZE;
|
||||||
|
if(browser.pageIndex+FILEBROWSERSIZE >= browser.numEntries)
|
||||||
|
browser.pageIndex = browser.numEntries-FILEBROWSERSIZE;
|
||||||
|
listChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(t->Left())
|
||||||
|
{
|
||||||
|
if(browser.pageIndex > 0)
|
||||||
|
{
|
||||||
|
browser.pageIndex -= FILEBROWSERSIZE;
|
||||||
|
if(browser.pageIndex < 0)
|
||||||
|
browser.pageIndex = 0;
|
||||||
|
listChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(t->Down())
|
||||||
|
{
|
||||||
|
if(browser.pageIndex + selectedItem + 1 < browser.numEntries)
|
||||||
|
{
|
||||||
|
if(selectedItem == FILEBROWSERSIZE-1)
|
||||||
|
{
|
||||||
|
// move list down by 1
|
||||||
|
browser.pageIndex++;
|
||||||
|
listChanged = true;
|
||||||
|
}
|
||||||
|
else if(fileList[selectedItem+1]->IsVisible())
|
||||||
|
{
|
||||||
|
fileList[selectedItem]->ResetState();
|
||||||
|
fileList[++selectedItem]->SetState(STATE_SELECTED, t->chan);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(t->Up())
|
||||||
|
{
|
||||||
|
if(selectedItem == 0 && browser.pageIndex + selectedItem > 0)
|
||||||
|
{
|
||||||
|
// move list up by 1
|
||||||
|
browser.pageIndex--;
|
||||||
|
listChanged = true;
|
||||||
|
}
|
||||||
|
else if(selectedItem > 0)
|
||||||
|
{
|
||||||
|
fileList[selectedItem]->ResetState();
|
||||||
|
fileList[--selectedItem]->SetState(STATE_SELECTED, t->chan);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
endNavigation:
|
||||||
|
|
||||||
|
for(int i=0; i<FILEBROWSERSIZE; i++)
|
||||||
|
{
|
||||||
|
if(listChanged)
|
||||||
|
{
|
||||||
|
if(browser.pageIndex+i < browser.numEntries)
|
||||||
|
{
|
||||||
|
if(fileList[i]->GetState() == STATE_DISABLED)
|
||||||
|
fileList[i]->SetState(STATE_DEFAULT);
|
||||||
|
|
||||||
|
fileList[i]->SetVisible(true);
|
||||||
|
|
||||||
|
fileListText[i]->SetText(browserList[browser.pageIndex+i].displayname);
|
||||||
|
fileListTextOver[i]->SetText(browserList[browser.pageIndex+i].displayname);
|
||||||
|
|
||||||
|
if(browserList[browser.pageIndex+i].isdir) // directory
|
||||||
|
{
|
||||||
|
fileList[i]->SetIcon(fileListFolder[i]);
|
||||||
|
fileListText[i]->SetPosition(30,0);
|
||||||
|
fileListTextOver[i]->SetPosition(30,0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fileList[i]->SetIcon(NULL);
|
||||||
|
fileListText[i]->SetPosition(10,0);
|
||||||
|
fileListTextOver[i]->SetPosition(10,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fileList[i]->SetVisible(false);
|
||||||
|
fileList[i]->SetState(STATE_DISABLED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i != selectedItem && fileList[i]->GetState() == STATE_SELECTED)
|
||||||
|
fileList[i]->ResetState();
|
||||||
|
else if(focus && i == selectedItem && fileList[i]->GetState() == STATE_DEFAULT)
|
||||||
|
fileList[selectedItem]->SetState(STATE_SELECTED, t->chan);
|
||||||
|
|
||||||
|
int currChan = t->chan;
|
||||||
|
|
||||||
|
if(t->wpad.ir.valid && !fileList[i]->IsInside(t->wpad.ir.x, t->wpad.ir.y))
|
||||||
|
t->chan = -1;
|
||||||
|
|
||||||
|
fileList[i]->Update(t);
|
||||||
|
t->chan = currChan;
|
||||||
|
|
||||||
|
if(fileList[i]->GetState() == STATE_SELECTED)
|
||||||
|
{
|
||||||
|
selectedItem = i;
|
||||||
|
browser.selIndex = browser.pageIndex + i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// update the location of the scroll box based on the position in the file list
|
||||||
|
if(positionWiimote > 0)
|
||||||
|
{
|
||||||
|
position = positionWiimote; // follow wiimote cursor
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
position = 136*(browser.pageIndex + FILEBROWSERSIZE/2.0) / (browser.numEntries*1.0);
|
||||||
|
|
||||||
|
if(browser.pageIndex/(FILEBROWSERSIZE/2.0) < 1)
|
||||||
|
position = 0;
|
||||||
|
else if((browser.pageIndex+FILEBROWSERSIZE)/(FILEBROWSERSIZE*1.0) >= (browser.numEntries)/(FILEBROWSERSIZE*1.0))
|
||||||
|
position = 136;
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollbarBoxBtn->SetPosition(0,position+36);
|
||||||
|
|
||||||
|
listChanged = false;
|
||||||
|
|
||||||
|
if(updateCB)
|
||||||
|
updateCB(this);
|
||||||
|
}
|
@ -16,7 +16,7 @@
|
|||||||
#include "settings/cfg.h"
|
#include "settings/cfg.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "http.h"
|
#include "http.h"
|
||||||
#include "svnrev.h"
|
#include "getrev.h"
|
||||||
|
|
||||||
#define PORT 4299
|
#define PORT 4299
|
||||||
|
|
||||||
@ -271,7 +271,7 @@ int CheckUpdate()
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
int revnumber = 0;
|
int revnumber = 0;
|
||||||
int currentrev = atoi(SVN_REV);
|
int currentrev = atoi(GetRev());
|
||||||
|
|
||||||
#ifdef NOTFULLCHANNEL
|
#ifdef NOTFULLCHANNEL
|
||||||
struct block file = downloadfile("http://www.techjawa.com/usbloadergx/rev.txt");
|
struct block file = downloadfile("http://www.techjawa.com/usbloadergx/rev.txt");
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
#include "wad/wad.h"
|
#include "wad/wad.h"
|
||||||
#include "unzip/unzip.h"
|
#include "unzip/unzip.h"
|
||||||
#include "zlib.h"
|
#include "zlib.h"
|
||||||
#include "svnrev.h"
|
#include "getrev.h"
|
||||||
|
|
||||||
|
|
||||||
/*** Variables that are also used extern ***/
|
/*** Variables that are also used extern ***/
|
||||||
@ -174,11 +174,11 @@ void WindowCredits()
|
|||||||
|
|
||||||
#ifdef NOTFULLCHANNEL
|
#ifdef NOTFULLCHANNEL
|
||||||
char SvnRev[30];
|
char SvnRev[30];
|
||||||
snprintf(SvnRev,sizeof(SvnRev), "Rev%s IOS%u (Rev %u)", SVN_REV, IOS_GetVersion(), IOS_GetRevision());
|
snprintf(SvnRev,sizeof(SvnRev), "Rev%s IOS%u (Rev %u)", GetRev(), IOS_GetVersion(), IOS_GetRevision());
|
||||||
#else
|
#else
|
||||||
char svnTmp[4];//did this to hide the M after the rev# that is made by altering it
|
char svnTmp[4];//did this to hide the M after the rev# that is made by altering it
|
||||||
//to be ready to be in a full channel
|
//to be ready to be in a full channel
|
||||||
snprintf(svnTmp,sizeof(svnTmp), "%s", SVN_REV);
|
snprintf(svnTmp,sizeof(svnTmp), "%s", GetRev());
|
||||||
char SvnRev[30];
|
char SvnRev[30];
|
||||||
snprintf(SvnRev,sizeof(SvnRev), "Rev%sc IOS%u (Rev %u)", svnTmp, IOS_GetVersion(), IOS_GetRevision());
|
snprintf(SvnRev,sizeof(SvnRev), "Rev%sc IOS%u (Rev %u)", svnTmp, IOS_GetVersion(), IOS_GetRevision());
|
||||||
#endif
|
#endif
|
||||||
|
4
source/svnrev.h
Normal file
4
source/svnrev.h
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#ifndef SVNREV_H
|
||||||
|
#define SVNREV_H
|
||||||
|
#define SVN_REV "643M"
|
||||||
|
#endif /* SVNREV_H */
|
134
source/testfilebrowser.cpp
Normal file
134
source/testfilebrowser.cpp
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
#include <gccore.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "language/gettext.h"
|
||||||
|
#include "prompts/PromptWindows.h"
|
||||||
|
#include "libwiigui/gui.h"
|
||||||
|
#include "filebrowser.h"
|
||||||
|
#include "menu.h"
|
||||||
|
#include "sys.h"
|
||||||
|
|
||||||
|
/*** Extern variables ***/
|
||||||
|
extern GuiWindow * mainWindow;
|
||||||
|
extern u8 shutdown;
|
||||||
|
extern u8 reset;
|
||||||
|
|
||||||
|
/*** Extern functions ***/
|
||||||
|
extern void ResumeGui();
|
||||||
|
extern void HaltGui();
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* MenuBrowseDevice
|
||||||
|
***************************************************************************/
|
||||||
|
int MenuBrowseDevice()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char currentdir[50];
|
||||||
|
|
||||||
|
// populate initial directory listing
|
||||||
|
if(BrowseDevice(SD) <= 0)
|
||||||
|
{
|
||||||
|
int choice = WindowPrompt("Error",
|
||||||
|
"Unable to load device.",
|
||||||
|
"Retry",
|
||||||
|
"Change Settings");
|
||||||
|
|
||||||
|
if(choice) {
|
||||||
|
return MENU_DISCLIST;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu = MENU_NONE;
|
||||||
|
|
||||||
|
GuiText titleTxt("Browse Files", 28, (GXColor){0, 0, 0, 230});
|
||||||
|
titleTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||||
|
titleTxt.SetPosition(70,20);
|
||||||
|
|
||||||
|
GuiTrigger trigA;
|
||||||
|
trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
||||||
|
GuiTrigger trigPlus;
|
||||||
|
trigPlus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS, 0);
|
||||||
|
GuiTrigger trigMinus;
|
||||||
|
trigMinus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS, 0);
|
||||||
|
|
||||||
|
GuiFileBrowser fileBrowser(552, 248);
|
||||||
|
fileBrowser.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||||
|
fileBrowser.SetPosition(0, 100);
|
||||||
|
|
||||||
|
GuiImageData btnOutline(button_dialogue_box_png);
|
||||||
|
GuiText ExitBtnTxt("Exit", 24, (GXColor){0, 0, 0, 255});
|
||||||
|
GuiImage ExitBtnImg(&btnOutline);
|
||||||
|
GuiButton ExitBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||||
|
ExitBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
||||||
|
ExitBtn.SetPosition(100, -35);
|
||||||
|
ExitBtn.SetLabel(&ExitBtnTxt);
|
||||||
|
ExitBtn.SetImage(&ExitBtnImg);
|
||||||
|
ExitBtn.SetTrigger(&trigA);
|
||||||
|
ExitBtn.SetEffectGrow();
|
||||||
|
|
||||||
|
GuiImageData Address(addressbar_textbox_png);
|
||||||
|
snprintf(currentdir, sizeof(currentdir), "%s%s", browser.rootdir, browser.dir);
|
||||||
|
GuiText AdressText(currentdir, 20, (GXColor) {0, 0, 0, 255});
|
||||||
|
AdressText.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
|
AdressText.SetPosition(20, 0);
|
||||||
|
AdressText.SetMaxWidth(Address.GetWidth()-40, GuiText::SCROLL);
|
||||||
|
GuiImage AdressbarImg(&Address);
|
||||||
|
GuiButton Adressbar(Address.GetWidth(), Address.GetHeight());
|
||||||
|
Adressbar.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||||
|
Adressbar.SetPosition(60, fileBrowser.GetTop()-45);
|
||||||
|
Adressbar.SetImage(&AdressbarImg);
|
||||||
|
Adressbar.SetLabel(&AdressText);
|
||||||
|
|
||||||
|
HaltGui();
|
||||||
|
GuiWindow w(screenwidth, screenheight);
|
||||||
|
w.Append(&ExitBtn);
|
||||||
|
w.Append(&titleTxt);
|
||||||
|
w.Append(&fileBrowser);
|
||||||
|
w.Append(&Adressbar);
|
||||||
|
mainWindow->Append(&w);
|
||||||
|
ResumeGui();
|
||||||
|
|
||||||
|
while(menu == MENU_NONE)
|
||||||
|
{
|
||||||
|
VIDEO_WaitVSync();
|
||||||
|
|
||||||
|
if(shutdown == 1)
|
||||||
|
Sys_Shutdown();
|
||||||
|
|
||||||
|
if(reset == 1)
|
||||||
|
Sys_Reboot();
|
||||||
|
|
||||||
|
for(i=0; i<PAGESIZE; i++)
|
||||||
|
{
|
||||||
|
if(fileBrowser.fileList[i]->GetState() == STATE_CLICKED)
|
||||||
|
{
|
||||||
|
fileBrowser.fileList[i]->ResetState();
|
||||||
|
// check corresponding browser entry
|
||||||
|
if(browserList[browser.selIndex].isdir)
|
||||||
|
{
|
||||||
|
if(BrowserChangeFolder())
|
||||||
|
{
|
||||||
|
fileBrowser.ResetState();
|
||||||
|
fileBrowser.fileList[0]->SetState(STATE_SELECTED);
|
||||||
|
fileBrowser.TriggerUpdate();
|
||||||
|
AdressText.SetTextf("%s%s", browser.rootdir, browser.dir);
|
||||||
|
} else {
|
||||||
|
menu = MENU_DISCLIST;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
mainWindow->SetState(STATE_DISABLED);
|
||||||
|
mainWindow->SetState(STATE_DEFAULT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ExitBtn.GetState() == STATE_CLICKED)
|
||||||
|
menu = MENU_DISCLIST;
|
||||||
|
}
|
||||||
|
HaltGui();
|
||||||
|
mainWindow->Remove(&w);
|
||||||
|
ResumeGui();
|
||||||
|
|
||||||
|
return menu;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user