150 lines
6.2 KiB
C#
150 lines
6.2 KiB
C#
using Xamarin.Essentials;
|
|
using Xamarin.Forms;
|
|
|
|
namespace Gallery.UI
|
|
{
|
|
public static class StyleDefinition
|
|
{
|
|
public const double FontSizeTitle = 18.0;
|
|
|
|
public static readonly Thickness ScreenBottomPadding;
|
|
public static readonly Thickness TopOffset16 = new Thickness(0, 16, 0, 0);
|
|
public static readonly Thickness TopOffset32 = new Thickness(0, 32, 0, 0);
|
|
public static readonly Thickness TopOffset37 = new Thickness(0, 37, 0, 0);
|
|
public static readonly Color ColorLightShadow = Color.FromRgba(0, 0, 0, 0x20);
|
|
public static readonly Color ColorDeepShadow = Color.FromRgba(0, 0, 0, 0x50);
|
|
public static readonly Color ColorRedBackground = Color.FromRgb(0xfd, 0x43, 0x63);
|
|
public static readonly Color ColorDownloadBackground = Color.FromRgb(0xd7, 0xd9, 0xe0);
|
|
public static readonly ImageSource DownloadBackground = ImageSource.FromFile("download.png");
|
|
public static readonly ImageSource ProfileNone = ImageSource.FromFile("no_profile.png");
|
|
public static readonly double FontSizeMicro = Device.GetNamedSize(NamedSize.Micro, typeof(Label));
|
|
public static readonly double FontSizeSmall = Device.GetNamedSize(NamedSize.Small, typeof(Label));
|
|
|
|
#if __IOS__
|
|
public const string IconLightFontFamily = "FontAwesome5Pro-Light";
|
|
public const string IconRegularFontFamily = "FontAwesome5Pro-Regular";
|
|
public const string IconSolidFontFamily = "FontAwesome5Pro-Solid";
|
|
|
|
public const string IconLeft = "\uf104";
|
|
#elif __ANDROID__
|
|
public const string IconLightFontFamily = "fa-light-300.ttf#FontAwesome5Pro-Light";
|
|
public const string IconRegularFontFamily = "fa-regular-400.ttf#FontAwesome5Pro-Regular";
|
|
public const string IconSolidFontFamily = "fa-solid-900.ttf#FontAwesome5Pro-Solid";
|
|
|
|
public const string IconLeft = "\uf053";
|
|
#endif
|
|
|
|
public const string IconUser = "\uf007";
|
|
public const string IconSparkles = "\uf890";
|
|
public const string IconOrder = "\uf88f";
|
|
public const string IconLayer = "\uf302";
|
|
public const string IconRefresh = "\uf2f9";
|
|
public const string IconLove = "\uf004";
|
|
public const string IconCircleLove = "\uf4c7";
|
|
public const string IconOption = "\uf013";
|
|
public const string IconFavorite = "\uf02e";
|
|
public const string IconShare = "\uf1e0";
|
|
public const string IconCaretDown = "\uf0d7";
|
|
//public const string IconCaretUp = "\uf0d8";
|
|
public const string IconCircleCheck = "\uf058";
|
|
public const string IconPlay = "\uf04b";
|
|
public const string IconPause = "\uf04c";
|
|
public const string IconMore = "\uf142";
|
|
public const string IconCaretCircleLeft = "\uf32e";
|
|
public const string IconCaretCircleRight = "\uf330";
|
|
public const string IconCalendarDay = "\uf783";
|
|
public const string IconClose = "\uf057";
|
|
public const string IconCloudDownload = "\uf381";
|
|
|
|
static StyleDefinition()
|
|
{
|
|
_ = IsFullscreenDevice;
|
|
if (_isBottomPadding)
|
|
{
|
|
if (DeviceInfo.Idiom == DeviceIdiom.Phone)
|
|
{
|
|
ScreenBottomPadding = new Thickness(0, 0, 0, 26);
|
|
}
|
|
else
|
|
{
|
|
ScreenBottomPadding = new Thickness(0, 0, 0, 16);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static bool _isBottomPadding;
|
|
private static bool? _isFullscreenDevice;
|
|
public static bool IsFullscreenDevice
|
|
{
|
|
get
|
|
{
|
|
if (_isFullscreenDevice != null)
|
|
{
|
|
return _isFullscreenDevice.Value;
|
|
}
|
|
#if __IOS__
|
|
try
|
|
{
|
|
var model = DeviceInfo.Model;
|
|
if (model == "iPhone10,3")
|
|
{
|
|
// iPhone X
|
|
_isFullscreenDevice = true;
|
|
_isBottomPadding = true;
|
|
}
|
|
else if (model.StartsWith("iPhone"))
|
|
{
|
|
var vs = model.Substring(6).Split(',');
|
|
if (vs.Length == 2 && int.TryParse(vs[0], out int main) && int.TryParse(vs[1], out int sub))
|
|
{
|
|
// iPhone X/XS/XR or iPhone 11
|
|
var flag = (main == 10 && sub >= 6) || (main > 10);
|
|
_isFullscreenDevice = flag;
|
|
_isBottomPadding = flag;
|
|
}
|
|
else
|
|
{
|
|
_isFullscreenDevice = false;
|
|
}
|
|
}
|
|
else if (model.StartsWith("iPad8,"))
|
|
{
|
|
// iPad 11-inch or 12.9-inch (3rd+)
|
|
//_isFullscreenDevice = true;
|
|
_isBottomPadding = true;
|
|
}
|
|
#if DEBUG
|
|
else
|
|
{
|
|
// iPad or Simulator
|
|
var name = DeviceInfo.Name;
|
|
var flag = name.StartsWith("iPhone X")
|
|
|| name.StartsWith("iPhone 11")
|
|
|| name.StartsWith("iPhone 12");
|
|
_isFullscreenDevice = flag;
|
|
_isBottomPadding = flag
|
|
|| name.StartsWith("iPad Pro (11-inch)")
|
|
|| name.StartsWith("iPad Pro (12.9-inch) (3rd generation)")
|
|
|| name.StartsWith("iPad Pro (12.9-inch) (4th generation)");
|
|
}
|
|
#endif
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
App.DebugError("device.get", $"failed to get the device model. {ex.Message}");
|
|
}
|
|
#else
|
|
// TODO:
|
|
_isFullscreenDevice = false;
|
|
_isBottomPadding = false;
|
|
#endif
|
|
if (_isFullscreenDevice == null)
|
|
{
|
|
_isFullscreenDevice = false;
|
|
}
|
|
return _isFullscreenDevice.Value;
|
|
}
|
|
}
|
|
}
|
|
}
|