void AddShadow(PreferredTheme preferredTheme)
        {
            if (NavigationBar is null)
            {
                return;
            }

            if (isLightTheme(preferredTheme))
            {
                NavigationBar.Layer.ShadowColor   = UIColor.Gray.CGColor;
                NavigationBar.Layer.ShadowOffset  = new CGSize();
                NavigationBar.Layer.ShadowOpacity = 1;
            }
            else if (isDarkTheme(preferredTheme))
            {
                NavigationBar.Layer.ShadowColor   = UIColor.White.CGColor;
                NavigationBar.Layer.ShadowOffset  = new CGSize(0, -3);
                NavigationBar.Layer.ShadowOpacity = 0;
            }
Пример #2
0
        public void PreferenceTest()
        {
            //Arrange
            PreferredTheme       preferredTheme_Initial, preferredTheme_Final;
            const PreferredTheme expectedFinalPreferredTheme = PreferredTheme.Dark;

            var themeService = ServiceCollection.ServiceProvider.GetRequiredService <ThemeService>();

            //Act
            preferredTheme_Initial = themeService.Preference;

            themeService.Preference = expectedFinalPreferredTheme;

            preferredTheme_Final = themeService.Preference;

            //Assert
            Assert.AreEqual(PreferredTheme.Default, preferredTheme_Initial);
            Assert.AreEqual(expectedFinalPreferredTheme, preferredTheme_Final);
        }
Пример #3
0
        public async Task VerifyThemePicker()
        {
            //Arrange
            PreferredTheme preferredTheme_Initial = SettingsPage.PreferredTheme;
            PreferredTheme preferredTheme_Light, preferredTheme_Dark;

            //Act
            await SettingsPage.SelectTheme(PreferredTheme.Light).ConfigureAwait(false);

            preferredTheme_Light = SettingsPage.PreferredTheme;

            await SettingsPage.SelectTheme(PreferredTheme.Dark).ConfigureAwait(false);

            preferredTheme_Dark = SettingsPage.PreferredTheme;

            //Assert
            Assert.AreEqual(PreferredTheme.Default, preferredTheme_Initial);
            Assert.AreEqual(PreferredTheme.Light, preferredTheme_Light);
            Assert.AreEqual(PreferredTheme.Dark, preferredTheme_Dark);
        }
Пример #4
0
        public Task SelectTheme(PreferredTheme preferredTheme)
        {
            var rowNumber = (int)preferredTheme;
            var totalRows = Enum.GetNames(typeof(PreferredTheme)).Count();

            var rowOffset = App switch
            {
                iOSApp _ => rowNumber.Equals(totalRows - 1) ? -1 : 1,
                AndroidApp _ => 0,
                _ => throw new NotSupportedException()
            };

            try
            {
                App.Tap(_themePicker);
            }
            catch
            {
                App.Tap(_themePickerContainer);
            }

            scrollToRow(App, rowNumber, rowOffset, totalRows, preferredTheme);

            if (App is iOSApp)
            {
                App.Tap(x => x.Marked("Done"));
            }
            else if (App is AndroidApp)
            {
                App.Tap(x => x.Marked("OK"));
            }
            else
            {
                throw new NotSupportedException();
            }


            App.Screenshot($"Selected Row From Picker: {preferredTheme}");

            return(WaitForPageToLoad());
Пример #5
0
 static bool isLightTheme(PreferredTheme preferredTheme) => preferredTheme is PreferredTheme.Light || preferredTheme is PreferredTheme.Default && Xamarin.Forms.Application.Current.RequestedTheme is OSAppTheme.Light;
Пример #6
0
 void HandlePreferenceChanged(object sender, PreferredTheme e) => SetPickerBorder();
 static bool isDarkTheme(PreferredTheme theme) => theme is PreferredTheme.Dark || theme is PreferredTheme.Default && Xamarin.Forms.Application.Current?.RequestedTheme is OSAppTheme.Dark;
 void HandlePreferenceChanged(object sender, PreferredTheme e) => AddShadow(e);
Пример #9
0
 void HandlePreferenceChanged(object sender, PreferredTheme e) => SetBackgroundColor();
Пример #10
0
        public Task SelectTheme(PreferredTheme preferredTheme)
        {
            var isQueryEnabled = App.Query(_themePicker).First().Enabled;

            if (!isQueryEnabled)
            {
                throw new Exception("Theme Picker Disabled");
            }

            var rowNumber = (int)preferredTheme;
            var totalRows = Enum.GetNames(typeof(PreferredTheme)).Count();

            var rowOffset = App switch
            {
                iOSApp _ => rowNumber.Equals(totalRows - 1) ? -1 : 1,
                AndroidApp _ => 0,
                _ => throw new NotSupportedException()
            };

            App.Tap(_themePicker);

            scrollToRow(rowOffset);

            if (App is iOSApp)
            {
                App.Tap(x => x.Marked("Done"));
            }
            else if (App is AndroidApp)
            {
                App.Tap(x => x.Marked("OK"));
            }


            App.Screenshot($"Selected Row From Picker: {preferredTheme}");

            return(WaitForPageToLoad());

            void scrollToRow(int offset)
            {
                switch (App)
                {
                case iOSApp iosApp:
                    iosApp.WaitForElement(x => x.Class("UIPickerView"));
                    iosApp.Query(x => x.Class("UIPickerView").Invoke("selectRow", rowNumber + offset, "inComponent", 0, "animated", true));

                    App.Tap(preferredTheme.ToString());
                    break;

                case AndroidApp androidApp:
                    androidApp.WaitForElement(x => x.Class("android.widget.ScrollView"));

                    while (rowNumber + offset != getCurrentPickerRow(androidApp) && totalRows - 1 != getCurrentPickerRow(androidApp))
                    {
                        androidApp.Query(x => x.Class("android.widget.NumberPicker").Invoke("scrollBy", 0, -50));
                    }

                    while (getCurrentPickerRow(androidApp) != rowNumber)
                    {
                        androidApp.Query(x => x.Class("android.widget.NumberPicker").Invoke("scrollBy", 0, 50));
                    }

                    break;

                default:
                    throw new NotSupportedException($"{App.GetType()} Not Supported");
                }

                App.Screenshot($"Scrolled To Row: {preferredTheme}");
Пример #11
0
 void HandlePreferenceChanged(object sender, PreferredTheme e) => SetBorderColor();