コード例 #1
0
        public void SetVisualStyle(VisualOverride style)
        {
            if (Options.Verbose)
            {
                Console.WriteLine($"Setting visual style to: {style}");
            }

            SetVisualStyleImpl(style);
        }
コード例 #2
0
        private void SetVisualStyleTo(VisualOverride style)
        {
            AppCompatDelegate.DefaultNightMode = _styleMappings[style];

            if (CrossCurrentActivity.Current.Activity is AppCompatActivity activity)
            {
                activity.Delegate.ApplyDayNight();
            }
        }
コード例 #3
0
        public void SetOverrideMode(VisualOverride mode)
        {
            switch (mode)
            {
            case VisualOverride.Toggle:
                StartToggle();
                return;

            default:
                StopToggle();
                SetVisualStyle(mode);
                return;
            }
        }
コード例 #4
0
ファイル: Env.cs プロジェクト: rdavisau/lightswitch
        public async Task SetVisualOverride(VisualOverride @override, int?interval = null)
        {
            var nextInterval = interval ?? CurrentInterval;

            var cmd = SetOverrideCommand.Create(@override, nextInterval);
            await Sender.SendCommand(cmd);

            CurrentOverride = @override;
            CurrentInterval = nextInterval;

            VisualOverrideChanged?.Invoke(
                this,
                VisualOverrideChangedEventArgs.Create(@override));
        }
コード例 #5
0
        private void SetVisualStyleTo(VisualOverride style)
        {
            var interfaceStyle = _styleMappings[style];
            var target         = Options.TargetElementGetter == null
                ? UIApplication.SharedApplication.KeyWindow
                : Options.TargetElementGetter();

            switch (target)
            {
            case null:
                Console.WriteLine("No element found to override interface style, ensure KeyWindow is set or Options.TargetElementGetter returns a value.");
                break;

            case object o when HasOverrideUserInterfaceStyleProperty(target, out var prop):
                prop.SetValue(o, interfaceStyle);

                break;

            default:
                throw new Exception($"Don't know how to override visual style on object {target}");
            }
        }
コード例 #6
0
        protected override void SetVisualStyleImpl(VisualOverride style)
        {
            var currentActivity = CrossCurrentActivity.Current.Activity as AppCompatActivity;

            currentActivity?.RunOnUiThread(() => SetVisualStyleTo(style));
        }
コード例 #7
0
 protected abstract void SetVisualStyleImpl(VisualOverride style);
コード例 #8
0
 public static VisualOverrideChangedEventArgs Create(VisualOverride newVisualOverride)
 => new VisualOverrideChangedEventArgs
 {
     NewVisualOverride = newVisualOverride
 };
コード例 #9
0
 protected override void SetVisualStyleImpl(VisualOverride style)
 {
     Debug.WriteLine(style);
 }
コード例 #10
0
 public static SetOverrideCommand Create(VisualOverride @override, int intervalMilliseconds)
 => new SetOverrideCommand
 {
     Override       = @override,
     ToggleInterval = TimeSpan.FromMilliseconds(intervalMilliseconds)
 };
コード例 #11
0
 public void Deconstruct(out VisualOverride @override, out TimeSpan interval)
 {
     @override = Override;
     interval  = ToggleInterval;
 }
コード例 #12
0
 protected override void SetVisualStyleImpl(VisualOverride style)
 {
     throw new NotImplementedException();
 }
コード例 #13
0
 protected override void SetVisualStyleImpl(VisualOverride style)
 => UIApplication
 .SharedApplication
 .BeginInvokeOnMainThread(() => SetVisualStyleTo(style));