mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2025-01-25 21:31:32 +01:00
take optional os icons
Signed-off-by: Sergey Isakov <isakov-sl@bk.ru>
This commit is contained in:
parent
7b173d7f08
commit
4d9c1efd0c
@ -762,7 +762,9 @@ STATIC LOADER_ENTRY *CreateLoaderEntry(IN CONST CHAR16 *LoaderPath,
|
|||||||
Entry->Image = *Image;
|
Entry->Image = *Image;
|
||||||
} else {
|
} else {
|
||||||
// Entry->Image = ThemeX.GetIcon("unknown"); //no such icon
|
// Entry->Image = ThemeX.GetIcon("unknown"); //no such icon
|
||||||
Entry->Image = ThemeX.GetIcon("vol_internal"_XS);
|
//TODO now we have OSIconName = L"moja,mac"
|
||||||
|
// Entry->Image = ThemeX.GetIcon("vol_internal"_XS);
|
||||||
|
Entry->Image = ThemeX.LoadOSIcon(OSIconName);
|
||||||
}
|
}
|
||||||
// Load DriveImage
|
// Load DriveImage
|
||||||
if (DriveImage) {
|
if (DriveImage) {
|
||||||
|
@ -2660,6 +2660,7 @@ VOID REFIT_MENU_SCREEN::DrawMainMenuEntry(REFIT_ABSTRACT_MENU_ENTRY *Entry, BOOL
|
|||||||
}
|
}
|
||||||
//this should be inited by the Theme
|
//this should be inited by the Theme
|
||||||
if (MainImage.isEmpty()) {
|
if (MainImage.isEmpty()) {
|
||||||
|
DBG(" why MainImage is empty?\n");
|
||||||
if (!IsEmbeddedTheme()) {
|
if (!IsEmbeddedTheme()) {
|
||||||
MainImage = ThemeX.GetIcon("os_mac"_XS);
|
MainImage = ThemeX.GetIcon("os_mac"_XS);
|
||||||
}
|
}
|
||||||
|
@ -193,6 +193,7 @@ void XTheme::Init()
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
static XImage NullIcon;
|
static XImage NullIcon;
|
||||||
|
static XImage DummyIcon;
|
||||||
|
|
||||||
const XImage& XTheme::GetIcon(const XString& Name) const
|
const XImage& XTheme::GetIcon(const XString& Name) const
|
||||||
{
|
{
|
||||||
@ -225,6 +226,33 @@ const XImage& XTheme::GetIcon(INTN Id) const
|
|||||||
}
|
}
|
||||||
return NullIcon;
|
return NullIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const XImage& XTheme::LoadOSIcon(const CHAR16* OSIconName)
|
||||||
|
{
|
||||||
|
// input value can be L"win", L"ubuntu,linux", L"moja,mac" set by GetOSIconName (OSVersion)
|
||||||
|
XString Full = XString().takeValueFrom(OSIconName);
|
||||||
|
XString First;
|
||||||
|
XString Second;
|
||||||
|
const XImage *ReturnImage;
|
||||||
|
UINTN Comma = Full.IdxOf(',');
|
||||||
|
UINTN Size = Full.size();
|
||||||
|
if (Comma != MAX_XSIZE) { //Comma
|
||||||
|
First = "os_"_XS + Full.SubString(0, Comma);
|
||||||
|
ReturnImage = &GetIcon(First);
|
||||||
|
if (!ReturnImage->isEmpty()) return *ReturnImage;
|
||||||
|
//else search second name
|
||||||
|
Second = "os_"_XS + Full.SubString(Comma+1, Size - Comma - 1);
|
||||||
|
ReturnImage = &GetIcon(Second);
|
||||||
|
if (!ReturnImage->isEmpty()) return *ReturnImage;
|
||||||
|
} else {
|
||||||
|
ReturnImage = &GetIcon("os_"_XS + Full);
|
||||||
|
if (!ReturnImage->isEmpty()) return *ReturnImage;
|
||||||
|
}
|
||||||
|
// else something
|
||||||
|
if (DummyIcon.isEmpty()) //initialize once per session
|
||||||
|
DummyIcon.DummyImage(MainEntriesSize);
|
||||||
|
return DummyIcon;
|
||||||
|
}
|
||||||
//
|
//
|
||||||
//void XTheme::AddIcon(Icon& NewIcon)
|
//void XTheme::AddIcon(Icon& NewIcon)
|
||||||
//{
|
//{
|
||||||
|
@ -117,6 +117,7 @@ public:
|
|||||||
// const XImage& GetIcon(const CHAR16* Name);
|
// const XImage& GetIcon(const CHAR16* Name);
|
||||||
const XImage& GetIcon(const XString& Name) const; //get by name
|
const XImage& GetIcon(const XString& Name) const; //get by name
|
||||||
const XImage& GetIcon(INTN Id) const; //get by id
|
const XImage& GetIcon(INTN Id) const; //get by id
|
||||||
|
const XImage& LoadOSIcon(const CHAR16* OSIconName); //TODO make XString provider
|
||||||
|
|
||||||
// void AddIcon(Icon& NewIcon); //return EFI_STATUS?
|
// void AddIcon(Icon& NewIcon); //return EFI_STATUS?
|
||||||
void FillByEmbedded();
|
void FillByEmbedded();
|
||||||
|
Loading…
Reference in New Issue
Block a user