| File: OnIdiom.cs | Web Access |
| Project: src\src\Controls\src\Core\Controls.Core.csproj (Microsoft.Maui.Controls) |
#nullable disable using Microsoft.Maui.Devices; namespace Microsoft.Maui.Controls { public class OnIdiom<T> : IWrappedValue { T _phone; T _tablet; T _desktop; T _tV; T _watch; T _default; bool _isPhoneSet; bool _isTabletSet; bool _isDesktopSet; bool _isTVSet; bool _isWatchSet; bool _isDefaultSet; public T Phone { get => _phone; set { _phone = value; _isPhoneSet = true; } } public T Tablet { get => _tablet; set { _tablet = value; _isTabletSet = true; } } public T Desktop { get => _desktop; set { _desktop = value; _isDesktopSet = true; } } public T TV { get => _tV; set { _tV = value; _isTVSet = true; } } public T Watch { get => _watch; set { _watch = value; _isWatchSet = true; } } public T Default { get => _default; set { _default = value; _isDefaultSet = true; } } public static implicit operator T(OnIdiom<T> onIdiom) { var idiom = DeviceInfo.Idiom; if (idiom == DeviceIdiom.Tablet) return onIdiom._isTabletSet ? onIdiom.Tablet : (onIdiom._isDefaultSet ? onIdiom.Default : default(T)); else if (idiom == DeviceIdiom.Desktop) return onIdiom._isDesktopSet ? onIdiom.Desktop : (onIdiom._isDefaultSet ? onIdiom.Default : default(T)); else if (idiom == DeviceIdiom.TV) return onIdiom._isTVSet ? onIdiom.TV : (onIdiom._isDefaultSet ? onIdiom.Default : default(T)); else if (idiom == DeviceIdiom.Watch) return onIdiom._isWatchSet ? onIdiom.Watch : (onIdiom._isDefaultSet ? onIdiom.Default : default(T)); else return onIdiom._isPhoneSet ? onIdiom.Phone : (onIdiom._isDefaultSet ? onIdiom.Default : default(T)); } object IWrappedValue.Value => (T)this; System.Type IWrappedValue.ValueType => typeof(T); } }