mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-26 13:34:22 +01:00
Refactor disc browser a bit (file browsing is really general, so add a base
class for it)
This commit is contained in:
parent
b52c401665
commit
a2d9a82c9d
3
Makefile
3
Makefile
@ -8,7 +8,8 @@ all: menu
|
|||||||
menu.oo: menu.cpp menu.hh utils.hh font.hh Makefile
|
menu.oo: menu.cpp menu.hh utils.hh font.hh Makefile
|
||||||
|
|
||||||
gui.oo: Makefile gui.cpp gui.hh font.hh menu.hh sdl_ttf_font.hh \
|
gui.oo: Makefile gui.cpp gui.hh font.hh menu.hh sdl_ttf_font.hh \
|
||||||
dialogue_box.hh help_box.hh main_menu.cpp disc_menu.cpp
|
dialogue_box.hh help_box.hh main_menu.cpp disc_menu.cpp \
|
||||||
|
file_browser.hh
|
||||||
|
|
||||||
utils.oo: utils.cpp utils.hh Makefile
|
utils.oo: utils.cpp utils.hh Makefile
|
||||||
|
|
||||||
|
@ -1,23 +1,22 @@
|
|||||||
#include "menu.hh"
|
#include "menu.hh"
|
||||||
|
#include "file_browser.hh"
|
||||||
|
|
||||||
|
static const char *game_exts[] = {".d64", ".D64", ".t64", ".T64",
|
||||||
|
".prg",".PRG", ".p00", ".P00", NULL};
|
||||||
|
|
||||||
class DiscView;
|
class DiscView;
|
||||||
class DiscMenu : public Menu
|
class DiscMenu : public FileBrowser
|
||||||
{
|
{
|
||||||
friend class DiscView;
|
friend class DiscView;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DiscMenu(Font *font, GuiView *parent) : Menu(font)
|
DiscMenu(Font *font, GuiView *parent) :
|
||||||
|
FileBrowser(game_exts, font, parent)
|
||||||
{
|
{
|
||||||
this->parent = parent;
|
|
||||||
this->path = NULL;
|
|
||||||
|
|
||||||
/* If nothing else: Set the default list */
|
|
||||||
this->setDefaultFileList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~DiscMenu()
|
~DiscMenu()
|
||||||
{
|
{
|
||||||
this->freeFileList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void selectCallback(int which)
|
virtual void selectCallback(int which)
|
||||||
@ -25,18 +24,6 @@ public:
|
|||||||
printf("entry %d selected: %s\n", which, this->pp_msgs[which]);
|
printf("entry %d selected: %s\n", which, this->pp_msgs[which]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setDirectory(const char *path)
|
|
||||||
{
|
|
||||||
const char *exts[] = {".d64", ".D64", ".t64", ".T64", ".prg",
|
|
||||||
".PRG", ".p00", ".P00"};
|
|
||||||
|
|
||||||
this->freeFileList();
|
|
||||||
this->file_list = get_file_list(path, exts);
|
|
||||||
if (!this->file_list)
|
|
||||||
this->setDefaultFileList();
|
|
||||||
this->setText(this->file_list);
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void hoverCallback(int which)
|
virtual void hoverCallback(int which)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -45,26 +32,6 @@ public:
|
|||||||
{
|
{
|
||||||
Gui::gui->exitMenu();
|
Gui::gui->exitMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
void setDefaultFileList()
|
|
||||||
{
|
|
||||||
this->file_list = (const char **)xmalloc(2 * sizeof(char*));
|
|
||||||
this->file_list[0] = xstrdup("None");
|
|
||||||
}
|
|
||||||
|
|
||||||
void freeFileList()
|
|
||||||
{
|
|
||||||
if (!this->file_list)
|
|
||||||
return;
|
|
||||||
for (int i = 0; this->file_list[i]; i++)
|
|
||||||
free((void*)this->file_list[i]);
|
|
||||||
free(this->file_list);
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *path;
|
|
||||||
const char **file_list;
|
|
||||||
GuiView *parent;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
51
file_browser.hh
Normal file
51
file_browser.hh
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#include "menu.hh"
|
||||||
|
#include "gui.hh"
|
||||||
|
|
||||||
|
class FileBrowser : public Menu
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FileBrowser(const char **exts, Font *font, GuiView *parent) : Menu(font)
|
||||||
|
{
|
||||||
|
this->parent = parent;
|
||||||
|
this->path = NULL;
|
||||||
|
this->exts = exts;
|
||||||
|
|
||||||
|
/* If nothing else: Set the default list */
|
||||||
|
this->setDefaultFileList();
|
||||||
|
}
|
||||||
|
|
||||||
|
~FileBrowser()
|
||||||
|
{
|
||||||
|
this->freeFileList();
|
||||||
|
}
|
||||||
|
|
||||||
|
void setDirectory(const char *path)
|
||||||
|
{
|
||||||
|
this->freeFileList();
|
||||||
|
this->file_list = get_file_list(path, this->exts);
|
||||||
|
if (!this->file_list)
|
||||||
|
this->setDefaultFileList();
|
||||||
|
this->setText(this->file_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void setDefaultFileList()
|
||||||
|
{
|
||||||
|
this->file_list = (const char **)xmalloc(2 * sizeof(char*));
|
||||||
|
this->file_list[0] = xstrdup("None");
|
||||||
|
}
|
||||||
|
|
||||||
|
void freeFileList()
|
||||||
|
{
|
||||||
|
if (!this->file_list)
|
||||||
|
return;
|
||||||
|
for (int i = 0; this->file_list[i]; i++)
|
||||||
|
free((void*)this->file_list[i]);
|
||||||
|
free(this->file_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *path;
|
||||||
|
const char **file_list;
|
||||||
|
const char **exts;
|
||||||
|
GuiView *parent;
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user