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; }
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); }
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); }
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());
static bool isLightTheme(PreferredTheme preferredTheme) => preferredTheme is PreferredTheme.Light || preferredTheme is PreferredTheme.Default && Xamarin.Forms.Application.Current.RequestedTheme is OSAppTheme.Light;
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);
void HandlePreferenceChanged(object sender, PreferredTheme e) => SetBackgroundColor();
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}");
void HandlePreferenceChanged(object sender, PreferredTheme e) => SetBorderColor();