refactoring menu

Signed-off-by: Sergey Isakov <isakov-sl@bk.ru>
This commit is contained in:
Sergey Isakov 2020-03-03 12:45:07 +03:00
parent 416fb4aa77
commit 24e779c6f8
4 changed files with 448 additions and 476 deletions

View File

@ -7,10 +7,14 @@ extern "C" {
* memset and memcpy has to be provided for clang
*/
#if !defined(_MSC_VER)
#if 1 //!defined(_MSC_VER)
#ifdef __GNUC__
void* memset(void* dst, int ch, UINT64 count) __attribute__ ((used));
void* memcpy(void* dst, const void* src, UINT64 count) __attribute__ ((used));
#else
void* memset(void* dst, int ch, UINT64 count);
void* memcpy(void* dst, const void* src, UINT64 count);
#endif
void* memset(void* dst, int ch, UINT64 count)
{

View File

@ -149,8 +149,8 @@ LOADER_ENTRY * DuplicateLoaderEntry(IN LOADER_ENTRY *Entry)
return NULL;
}
DuplicateEntry = (__typeof__(DuplicateEntry))AllocateZeroPool(sizeof(LOADER_ENTRY));
// DuplicateEntry = new LOADER_ENTRY();
// DuplicateEntry = (__typeof__(DuplicateEntry))AllocateZeroPool(sizeof(LOADER_ENTRY));
DuplicateEntry = new LOADER_ENTRY();
if (DuplicateEntry) {
// DuplicateEntry->Tag = Entry->Tag;
DuplicateEntry->AtClick = ActionEnter;
@ -179,7 +179,8 @@ CHAR16 *AddLoadOption(IN CONST CHAR16 *LoadOptions, IN CONST CHAR16 *LoadOption)
return EfiStrDuplicate(LoadOption);
}
// If there is no option or it is already present duplicate original
else if ((LoadOption == NULL) || StrStr(LoadOptions, LoadOption)) return EfiStrDuplicate(LoadOptions);
else if ((LoadOption == NULL) || StrStr(LoadOptions, LoadOption))
return EfiStrDuplicate(LoadOptions);
// Otherwise add option
return PoolPrint(L"%s %s", LoadOptions, LoadOption);
}

View File

@ -68,6 +68,8 @@
//#define TAG_EXIT_OLD (101)
//#define TAG_RETURN_OLD ((UINTN)(-1))
typedef VOID(*MENU_STYLE_FUNC)(IN UINTN Function, IN CONST CHAR16 *ParamText);
//typedef struct _refit_menu_screen REFIT_MENU_SCREEN;
class REFIT_MENU_SCREEN;
class REFIT_MENU_SWITCH;
@ -395,14 +397,14 @@ public:
ACTION mAction;
UINTN mItemID;
XPointer *mPointer;
SCROLL_STATE *ScrollState,
SCROLL_STATE ScrollState,
REFIT_MENU_SCREEN()
: ID(0), Title(0), TitleImage(0),
TimeoutSeconds(0), TimeoutText(0), Theme(0), AnimeRun(0),
Once(0), LastDraw(0), CurrentFrame(0),
Frames(0), FrameTime(0), FilmPlace({0,0,0,0}),
Film(0), PointerLive(false)
Film(0)
{};
REFIT_MENU_SCREEN( UINTN ID_,
@ -426,7 +428,7 @@ public:
TimeoutText(TimeoutText_), Theme(Theme_), AnimeRun(AnimeRun_),
Once(Once_), LastDraw(LastDraw_), CurrentFrame(CurrentFrame_),
Frames(Frames_), FrameTime(FrameTime_), FilmPlace(FilmPlace_),
Film(Film_), PointerLive(false)
Film(Film_)
{};
REFIT_MENU_SCREEN( UINTN ID_,
@ -451,7 +453,7 @@ public:
TimeoutText(TimeoutText_), Theme(Theme_), AnimeRun(AnimeRun_),
Once(Once_), LastDraw(LastDraw_), CurrentFrame(CurrentFrame_),
Frames(Frames_), FrameTime(FrameTime_), FilmPlace(FilmPlace_),
Film(Film_), PointerLive(false)
Film(Film_)
{
Entries.AddReference(entry, false);
};
@ -479,7 +481,7 @@ public:
TimeoutText(TimeoutText_), Theme(Theme_), AnimeRun(AnimeRun_),
Once(Once_), LastDraw(LastDraw_), CurrentFrame(CurrentFrame_),
Frames(Frames_), FrameTime(FrameTime_), FilmPlace(FilmPlace_),
Film(Film_), PointerLive(false)
Film(Film_)
{
Entries.AddReference(entry1, false);
Entries.AddReference(entry2, false);
@ -487,9 +489,28 @@ public:
//Scroll functions
VOID InitScroll(IN INTN ItemCount, IN UINTN MaxCount,
IN UINTN VisibleSpace, IN INTN Selected);
VOID UpdateScroll(IN OUT SCROLL_STATE *State, IN UINTN Movement);
VOID UpdateScroll(IN UINTN Movement);
VOID HidePointer();
EFI_STATUS MouseBirth();
VOID KillMouse();
VOID AddMenuInfo(CONST CHAR16 *Line);
VOID AddMenuInfoLine(IN CONST CHAR16 *InfoLine);
VOID AddMenuEntry(IN REFIT_MENU_ENTRY *Entry, bool freeIt);
VOID FreeMenu();
INTN FindMenuShortcutEntry(IN CHAR16 Shortcut);
UINTN InputDialog(IN MENU_STYLE_FUNC StyleFunc);
UINTN RunGenericMenu(IN MENU_STYLE_FUNC StyleFunc, IN OUT INTN *DefaultEntryIndex, OUT REFIT_ABSTRACT_MENU_ENTRY **ChosenEntry);
UINTN RunMenu(OUT REFIT_ABSTRACT_MENU_ENTRY **ChosenEntry);
UINTN RunMainMenu(IN INTN DefaultSelection, OUT REFIT_ABSTRACT_MENU_ENTRY **ChosenEntry);
VOID DrawMainMenuLabel(IN CONST CHAR16 *Text, IN INTN XPos, IN INTN YPos);
VOID CountItems();
//Style functions
virtual VOID MainMenuStyle(IN UINTN Function, IN CONST CHAR16 *ParamText);
virtual VOID MainMenuVerticalStyle(IN UINTN Function, IN CONST CHAR16 *ParamText);
virtual VOID GraphicsMenuStyle(IN UINTN Function, IN CONST CHAR16 *ParamText);
virtual VOID TextMenuStyle(IN UINTN Function, IN CONST CHAR16 *ParamText);
};
#endif

File diff suppressed because it is too large Load Diff