using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace Sarand.Net.Mobile.Maui.App
{
// Colour references:
// http://www.html-color-names.com/skyblue.php
// http://www.html-color-names.com/lightsteelblue.php
public static class Sam
{
// --- Configuration ---
// Values in this class are intended to be configured during application
// startup. Controls normally copy visual defaults when they are created;
// changing a value later does not automatically update existing controls.
// --- Definitions ---
public enum Platform
{
Unknown = 0,
Android,
IOS,
MacCatalyst,
Windows
}
/// Shared random-number generator for common MAUI code.
public static Random Random { get; set; } = new Random();
// --- Localisation ---
/// Application-wide culture settings used by consumers that opt in.
public static class Locale
{
/// The culture used for application-level formatting.
public static CultureInfo CultureInfo { get; set; } = CultureInfo.CurrentCulture;
/// Text rules associated with .
public static TextInfo TextInfo { get; set; } = CultureInfo.TextInfo;
}
// --- Visuals ---
/// Supported positions for optional page content.
public enum DisplayPosition { None, Left, Middle, Right }
/// Shared visual defaults for common MAUI components.
public static class Visuals
{
// --- Application styling ---
public static class Application
{
// --- Application bar ---
public static class Bar
{
public static double Height { get; set; } = 28;
public static Color BackgroundColor { get; set; } = Color.FromArgb("#558395");
public static Color TextColor { get; set; } = Color.FromArgb("#f8f8f8");
public static double TextSizeRatio { get; set; } = 1.5;
public static Color BorderColor { get; set; } = Colors.DarkSlateBlue;
public static double BorderBottom { get; set; } = 1.0;
}
// --- Menu ---
public static class Menu
{
public static Color BorderColor { get; set; } = Colors.DarkSlateBlue;
public static double Border { get; set; } = 1.0;
public static Color BackgroundColor { get; set; } = Color.FromArgb("#F0F0F0");
public static Color HeaderBackgroundColor { get; set; } = Color.FromArgb("#E0E0E0");
}
}
// --- Page layout ---
public static class Page
{
public static Color BaseColor { get; set; } = Color.FromArgb("#c8e8f5");
public static Color BackgroundColor { get; set; } = Color.FromArgb("#e9f6fb");
// --- Header ---
public static class Header
{
// --- Text ---
public static String TextLeft { get; set; } = "";
public static String TextRight { get; set; } = "";
// --- Toolbar ---
public static DisplayPosition ToolbarDisplay { get; set; } = Sam.DisplayPosition.None;
public static bool Display_ToolbarItem_Back { get; set; } = false;
// --- Styling ---
public static Color BackgroundColor { get; set; } = Colors.Honeydew;
public static Color BorderColor { get; set; } = Colors.LightSlateGray;
public static double BorderStrokeWidthTop { get; set; } = 2.0;
public static double BorderStrokeWidthBottom { get; set; } = 1.0;
public static Thickness Padding { get; set; } = new Thickness(8, 4);
}
// --- Caption ---
public static class Caption
{
public static Color BackgroundColor { get; set; } = Color.FromArgb("#558395");
public static double PaddingHorizontal { get; set; } = 4.0;
public static double PaddingVertical { get; set; } = 8.0;
public static Color TextColor { get; set; } = Color.FromArgb("#f8f8f8");
public static double TextSizeRatio { get; set; } = 1.25;
}
// --- Navigation ---
public static class Navigation
{
public static double BorderTopWidth { get; set; } = 0.75;
public static double PaddingVertical { get; set; } = 4.0;
public static Color BorderColor { get; set; } = Color.FromArgb("#808080");
public static Color BackgroundColor { get; set; } = Color.FromArgb("#e9f6fb");
}
// --- Body ---
public static class Body
{
public static double PaddingVerticalMin { get; set; } = 4.0;
public static double PaddingHorizontalMin { get; set; } = 4.0;
}
// --- Footer ---
public static class Footer
{
public static String TextLeft { get; set; } = "";
public static String TextMiddle { get; set; } = "";
public static String TextRight { get; set; } = "";
public static String DateTimeFormat { get; set; } = "ddd d-MMM-yyyy HH:mm:ss";
public static DisplayPosition DateTimeDisplay { get; set; } = DisplayPosition.None;
public static Color BackgroundColor { get; set; } = Colors.Honeydew;
public static Color BorderColor { get; set; } = Colors.LightSlateGray;
public static double BorderStrokeWidthTop { get; set; } = 1.0;
public static double BorderStrokeWidthBottom { get; set; } = 2.0;
public static Thickness Padding { get; set; } = new Thickness(8, 4);
}
}
// --- Fonts ---
public static class Fonts
{
// Values are calculated from the current device dimensions and are not
// copied from a mutable setting.
// --- Dynamic font sizing ---
public static string HtmlFontSize
{
get
{
if (SamApplication.MinDeviceDimensionPx > 2000) return "14pt";
if (SamApplication.MinDeviceDimensionPx > 1600) return "13pt";
if (SamApplication.MinDeviceDimensionPx > 1200) return "12pt";
if (SamApplication.MinDeviceDimensionPx > 1000) return "11pt";
return "10pt";
}
}
public static double FontSizeRatio
{
get
{
if (SamApplication.MinDeviceDimensionPx > 2000) return 1.75;
if (SamApplication.MinDeviceDimensionPx > 1600) return 1.50;
if (SamApplication.MinDeviceDimensionPx > 1200) return 1.25;
return 1.0;
}
}
}
// --- Data display visuals ---
public static class Data
{
// --- Item list ---
public static class ItemList
{
public static double HeaderBorderWidth { get; set; } = 2.0;
public static float HeaderBorderRadius { get; set; } = 6.0f;
public static Color HeaderBorderColor { get; set; } = Sam.Visuals.Application.Bar.BackgroundColor;
public static Color HeaderBackgroundColor { get; set; } = Color.FromArgb("#F0F0F0");
}
// --- Associated items panel ---
public static class AssociatedItems
{
public static Color CaptionBackgroundColor { get; set; } = Color.FromArgb("#becee4");
public static Color CaptionTextColor { get; set; } = Color.FromArgb("#f8f8f8");
public static double CaptionTextSizeRatio { get; set; } = 1.2;
public static Color BackgroundColor { get; set; } = Color.FromArgb("#dbe4f0");
}
}
// --- Form ---
public static class Form
{
public static Color BackgroundColor { get; set; } = Color.FromArgb("#e9f6fb");
public static double GridRowSpacing { get; set; } = 4.0;
public static double GridColumnSpacing { get; set; } = 4.0;
// --- Label ---
public static class Label
{
public static Thickness Margin { get; set; } = new Thickness(8.0, 4.0, 8.0, 2.0);
}
// --- Controls ---
public static class Controls
{
public static Thickness Padding { get; set; } = new Thickness(4.0, 2.0, 4.0, 1.0);
public static Color BackgroundColor { get; set; } = Color.FromArgb("#F8F8F8");
public static Color BorderColor { get; set; } = Color.FromArgb("#E0E0E0");
public static double BorderWidth { get; set; } = 0.5;
// --- Native behaviour modified by SamHandler ---
public static bool NativeNoBorder { get; set; } = false;
public static bool NativeNoUnderline { get; set; } = false;
public static bool NativeBackgroundClear { get; set; } = false;
}
// --- Tab controls ---
public static class TabControl
{
public static Color HeaderBackgroundColor { get; set; } = Colors.Transparent;
public static Color CaptionBackgroundColor { get; set; } = Color.FromArgb("#E0E0E0");
public static Color BodyBackgroundColor { get; set; } = Color.FromArgb("#F8F8F8");
public static Thickness BodyPadding { get; set; } = new Thickness(4.0);
}
}
}
// --- The End ---
}
}