Run C# import cleanup based on the Solution files

This is to make the style consistent with the rest of the project as well as removing unused imports.
This commit is contained in:
Rose 2022-05-27 16:51:45 -04:00
commit 49fcb7bb97
86 changed files with 682 additions and 1087 deletions

View file

@ -8,6 +8,7 @@
using CalculatorApp.ViewModel.Common;
using CalculatorApp.ViewModel.Common.Automation;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@ -29,7 +30,7 @@ namespace CalculatorApp
{
namespace ApplicationResourceKeys
{
static public partial class Globals
public static partial class Globals
{
public static readonly string AppMinWindowHeight = "AppMinWindowHeight";
public static readonly string AppMinWindowWidth = "AppMinWindowWidth";
@ -39,7 +40,7 @@ namespace CalculatorApp
/// <summary>
/// Provides application-specific behavior to supplement the default Application class.
/// </summary>
sealed partial class App
public sealed partial class App
{
/// <summary>
/// Initializes the singleton application object. This is the first line of authored code
@ -124,8 +125,10 @@ namespace CalculatorApp
private static Frame CreateFrame()
{
var frame = new Frame();
frame.FlowDirection = LocalizationService.GetInstance().GetFlowDirection();
var frame = new Frame
{
FlowDirection = LocalizationService.GetInstance().GetFlowDirection()
};
return frame;
}
@ -224,8 +227,7 @@ namespace CalculatorApp
_ = newCoreAppView.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal, async () =>
{
var that = weak.Target as App;
if (that != null)
if (weak.Target is App that)
{
var newRootFrame = App.CreateFrame();
@ -399,9 +401,9 @@ namespace CalculatorApp
Dispose();
}
private WindowFrameService m_frameService;
private readonly WindowFrameService m_frameService;
private bool m_frameOpenedInWindow;
private App m_parent;
private readonly App m_parent;
};
private async Task SetupJumpList()
@ -502,7 +504,7 @@ namespace CalculatorApp
}
private readonly ReaderWriterLockSlim m_windowsMapLock = new ReaderWriterLockSlim();
private Dictionary<int, WindowFrameService> m_secondaryWindows = new Dictionary<int, WindowFrameService>();
private readonly Dictionary<int, WindowFrameService> m_secondaryWindows = new Dictionary<int, WindowFrameService>();
private int m_mainViewId;
private bool m_preLaunched;
}

View file

@ -145,7 +145,6 @@
<Compile Include="Common\AppLifecycleLogger.cs" />
<Compile Include="Common\KeyboardShortcutManager.cs" />
<Compile Include="Common\ValidatingConverters.cs" />
<Compile Include="Common\ViewState.cs" />
<Compile Include="Controls\CalculationResult.cs" />
<Compile Include="Controls\CalculationResultAutomationPeer.cs" />
<Compile Include="Controls\CalculatorButton.cs" />

View file

@ -4,6 +4,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml.Data;
@ -12,15 +13,14 @@ namespace CalculatorApp
{
namespace Common
{
sealed class AlwaysSelectedCollectionView : Windows.UI.Xaml.DependencyObject, Windows.UI.Xaml.Data.ICollectionView
internal sealed class AlwaysSelectedCollectionView : Windows.UI.Xaml.DependencyObject, Windows.UI.Xaml.Data.ICollectionView
{
internal AlwaysSelectedCollectionView(IList source)
{
m_currentPosition = -1;
CurrentPosition = -1;
m_source = source;
var observable = source as Windows.UI.Xaml.Interop.IBindableObservableVector;
if (observable != null)
if (source is Windows.UI.Xaml.Interop.IBindableObservableVector observable)
{
observable.VectorChanged += OnSourceBindableVectorChanged;
}
@ -33,7 +33,7 @@ namespace CalculatorApp
int newCurrentPosition = m_source.IndexOf(item);
if (newCurrentPosition != -1)
{
m_currentPosition = newCurrentPosition;
CurrentPosition = newCurrentPosition;
CurrentChanged?.Invoke(this, null);
return true;
}
@ -42,7 +42,7 @@ namespace CalculatorApp
// The item is not in the collection
// We're going to schedule a call back later so we
// restore the selection to the way we wanted it to begin with
if (m_currentPosition >= 0 && m_currentPosition < m_source.Count)
if (CurrentPosition >= 0 && CurrentPosition < m_source.Count)
{
Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(() =>
{
@ -59,7 +59,7 @@ namespace CalculatorApp
return false;
}
m_currentPosition = index;
CurrentPosition = index;
CurrentChanged?.Invoke(this, null);
return true;
}
@ -132,73 +132,34 @@ namespace CalculatorApp
public object this[int index]
{
get
{
return m_source[index];
}
get => m_source[index];
set => throw new NotImplementedException();
}
public int Count
{
get
{
return m_source.Count;
}
}
public int Count => m_source.Count;
public IObservableVector<object> CollectionGroups
{
get
{
return (IObservableVector<object>)new List<object>();
}
}
public IObservableVector<object> CollectionGroups => (IObservableVector<object>)new List<object>();
public object CurrentItem
{
get
{
if (m_currentPosition >= 0 && m_currentPosition < m_source.Count)
if (CurrentPosition >= 0 && CurrentPosition < m_source.Count)
{
return m_source[m_currentPosition];
return m_source[CurrentPosition];
}
return null;
}
}
public int CurrentPosition
{
get
{
return m_currentPosition;
}
}
public int CurrentPosition { get; private set; }
public bool HasMoreItems
{
get
{
return false;
}
}
public bool HasMoreItems => false;
public bool IsCurrentAfterLast
{
get
{
return m_currentPosition >= m_source.Count;
}
}
public bool IsCurrentAfterLast => CurrentPosition >= m_source.Count;
public bool IsCurrentBeforeFirst
{
get
{
return m_currentPosition < 0;
}
}
public bool IsCurrentBeforeFirst => CurrentPosition < 0;
public int IndexOf(object item)
{
@ -216,7 +177,7 @@ namespace CalculatorApp
}
// Event handlers
void OnSourceBindableVectorChanged(Windows.UI.Xaml.Interop.IBindableObservableVector source, object e)
private void OnSourceBindableVectorChanged(Windows.UI.Xaml.Interop.IBindableObservableVector source, object e)
{
Windows.Foundation.Collections.IVectorChangedEventArgs args = (Windows.Foundation.Collections.IVectorChangedEventArgs)e;
VectorChanged?.Invoke(this, args);
@ -230,8 +191,7 @@ namespace CalculatorApp
remove => throw new NotImplementedException();
}
IList m_source;
int m_currentPosition;
private readonly IList m_source;
}
public sealed class AlwaysSelectedCollectionViewConverter : Windows.UI.Xaml.Data.IValueConverter
@ -242,8 +202,7 @@ namespace CalculatorApp
public object Convert(object value, Type targetType, object parameter, string language)
{
var result = value as IList;
if (result != null)
if (value is IList result)
{
return new AlwaysSelectedCollectionView(result);
}

View file

@ -1,9 +1,10 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using CalculatorApp.ViewModel.Common;
using System;
using CalculatorApp.ViewModel.Common;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Core;
using Windows.Foundation.Diagnostics;
@ -11,7 +12,7 @@ using Windows.UI.ViewManagement;
namespace CalculatorApp
{
static public partial class Globals
public static class Globals
{
#if SEND_DIAGNOSTICS
// c.f. WINEVENT_KEYWORD_RESERVED_63-56 0xFF00000000000000 // Bits 63-56 - channel keywords
@ -29,7 +30,7 @@ namespace CalculatorApp
#endif
}
class AppLifecycleLogger
internal class AppLifecycleLogger
{
public static AppLifecycleLogger GetInstance()
{
@ -145,7 +146,7 @@ namespace CalculatorApp
fields.AddString("PsmKey", psmKey);
}
private LoggingChannel m_appLifecycleProvider;
private readonly LoggingChannel m_appLifecycleProvider;
private static readonly Lazy<AppLifecycleLogger> s_selfInstance = new Lazy<AppLifecycleLogger>(() => new AppLifecycleLogger(), true);
}
}

View file

@ -3,39 +3,39 @@
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using Windows.Foundation.Collections;
using Windows.UI.Core;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using MUXC = Microsoft.UI.Xaml.Controls;
namespace CalculatorApp
{
namespace Common
{
static partial class KeyboardShortcutManagerLocals
internal static class KeyboardShortcutManagerLocals
{
// Lights up all of the buttons in the given range
// The range is defined by a pair of iterators
static public void LightUpButtons(IEnumerable<WeakReference> buttons)
public static void LightUpButtons(IEnumerable<WeakReference> buttons)
{
foreach (var button in buttons)
{
var btn = button.Target as ButtonBase;
if (btn != null && btn.IsEnabled)
if (button.Target is ButtonBase btn && btn.IsEnabled)
{
LightUpButton(btn);
}
}
}
static public void LightUpButton(ButtonBase button)
public static void LightUpButton(ButtonBase button)
{
// If the button is a toggle button then we don't need
// to change the UI of the button
@ -58,14 +58,12 @@ namespace CalculatorApp
var buttonWeakReference = new WeakReference(button);
timer.Tick += (sender, args) =>
{
var btn = buttonWeakReference.Target as ButtonBase;
if (btn != null)
if (buttonWeakReference.Target is ButtonBase btn)
{
VisualStateManager.GoToState(button, "Normal", true);
}
var tmr = timerWeakReference.Target as DispatcherTimer;
if (tmr != null)
if (timerWeakReference.Target is DispatcherTimer tmr)
{
tmr.Stop();
}
@ -77,12 +75,11 @@ namespace CalculatorApp
// and execute its command.
// NOTE: It is assumed that all buttons associated with a particular
// key have the same command
static public void RunFirstEnabledButtonCommand(IEnumerable<WeakReference> buttons)
public static void RunFirstEnabledButtonCommand(IEnumerable<WeakReference> buttons)
{
foreach (var button in buttons)
{
var btn = button.Target as ButtonBase;
if (btn != null && btn.IsEnabled)
if (button.Target is ButtonBase btn && btn.IsEnabled)
{
RunButtonCommand(btn);
break;
@ -90,7 +87,7 @@ namespace CalculatorApp
}
}
static public void RunButtonCommand(ButtonBase button)
public static void RunButtonCommand(ButtonBase button)
{
if (button.IsEnabled)
{
@ -101,15 +98,13 @@ namespace CalculatorApp
command.Execute(parameter);
}
var radio = (button as RadioButton);
if (radio != null)
if (button is RadioButton radio)
{
radio.IsChecked = true;
return;
}
var toggle = (button as ToggleButton);
if (toggle != null)
if (button is ToggleButton toggle)
{
toggle.IsChecked = !(toggle.IsChecked != null && toggle.IsChecked.Value);
return;
@ -578,7 +573,7 @@ namespace CalculatorApp
private static bool CanNavigateModeByShortcut(MUXC.NavigationView navView, object nvi
, ApplicationViewModel vm, ViewMode toMode)
{
if(nvi != null && nvi is NavCategory navCategory)
if (nvi != null && nvi is NavCategory navCategory)
{
return navCategory.IsEnabled
&& navView.Visibility == Visibility.Visible
@ -597,10 +592,9 @@ namespace CalculatorApp
var listItems = EqualRange(lookupMap, (MyVirtualKey)key);
foreach (var itemRef in listItems)
{
var item = itemRef.Target as MUXC.NavigationView;
if (item != null)
if (itemRef.Target is MUXC.NavigationView item)
{
var navView = (MUXC.NavigationView)item;
var navView = item;
var menuItems = ((List<object>)navView.MenuItemsSource);
if (menuItems != null)
@ -659,7 +653,7 @@ namespace CalculatorApp
// Handle Ctrl + E for DateCalculator
if ((key == Windows.System.VirtualKey.E) && isControlKeyPressed && !isShiftKeyPressed && !isAltKeyPressed)
{
NavigateModeByShortcut(isControlKeyPressed, isShiftKeyPressed, false, key, ViewMode.Date);
NavigateModeByShortcut(true, false, false, key, ViewMode.Date);
return;
}
@ -690,7 +684,7 @@ namespace CalculatorApp
}
var buttons = EqualRange(lookupMap, (MyVirtualKey)myVirtualKey);
if (buttons.Count() <= 0)
if (!buttons.Any())
{
return;
}
@ -735,7 +729,7 @@ namespace CalculatorApp
}
bool shiftKeyPressed = (Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.Shift) & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
NavigateModeByShortcut(controlKeyPressed, shiftKeyPressed, altPressed, key, null);
NavigateModeByShortcut(false, shiftKeyPressed, true, key, null);
}
}
@ -816,18 +810,18 @@ namespace CalculatorApp
}
}
private static SortedDictionary<int, SortedDictionary<char, List<WeakReference>>> s_characterForButtons = new SortedDictionary<int, SortedDictionary<char, List<WeakReference>>>();
private static SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>> s_virtualKey = new SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>>();
private static SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>> s_VirtualKeyControlChordsForButtons = new SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>>();
private static SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>> s_VirtualKeyShiftChordsForButtons = new SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>>();
private static SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>> s_VirtualKeyAltChordsForButtons = new SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>>();
private static SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>> s_VirtualKeyControlShiftChordsForButtons = new SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>>();
private static readonly SortedDictionary<int, SortedDictionary<char, List<WeakReference>>> s_characterForButtons = new SortedDictionary<int, SortedDictionary<char, List<WeakReference>>>();
private static readonly SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>> s_virtualKey = new SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>>();
private static readonly SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>> s_VirtualKeyControlChordsForButtons = new SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>>();
private static readonly SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>> s_VirtualKeyShiftChordsForButtons = new SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>>();
private static readonly SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>> s_VirtualKeyAltChordsForButtons = new SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>>();
private static readonly SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>> s_VirtualKeyControlShiftChordsForButtons = new SortedDictionary<int, SortedDictionary<MyVirtualKey, List<WeakReference>>>();
private static SortedDictionary<int, bool> s_IsDropDownOpen = new SortedDictionary<int, bool>();
private static SortedDictionary<int, bool> s_ignoreNextEscape = new SortedDictionary<int, bool>();
private static SortedDictionary<int, bool> s_keepIgnoringEscape = new SortedDictionary<int, bool>();
private static SortedDictionary<int, bool> s_fHonorShortcuts = new SortedDictionary<int, bool>();
private static SortedDictionary<int, bool> s_fDisableShortcuts = new SortedDictionary<int, bool>();
private static readonly SortedDictionary<int, bool> s_IsDropDownOpen = new SortedDictionary<int, bool>();
private static readonly SortedDictionary<int, bool> s_ignoreNextEscape = new SortedDictionary<int, bool>();
private static readonly SortedDictionary<int, bool> s_keepIgnoringEscape = new SortedDictionary<int, bool>();
private static readonly SortedDictionary<int, bool> s_fHonorShortcuts = new SortedDictionary<int, bool>();
private static readonly SortedDictionary<int, bool> s_fDisableShortcuts = new SortedDictionary<int, bool>();
//private static Concurrency.reader_writer_lock s_keyboardShortcutMapLock;
private static readonly object s_keyboardShortcutMapLockMutex = new object();

View file

@ -46,8 +46,7 @@ namespace CalculatorApp
// extract that value and ensure it is valid, ie >= 0
if (value != null)
{
var box = value as Windows.Foundation.IPropertyValue;
if (box != null && box.Type == Windows.Foundation.PropertyType.Int32)
if (value is Windows.Foundation.IPropertyValue box && box.Type == Windows.Foundation.PropertyType.Int32)
{
int index = box.GetInt32();
if (index >= 0)

View file

@ -1,17 +0,0 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
namespace CalculatorApp
{
static class ViewState
{
public static readonly string Snap = "Snap";
public static readonly string DockedView = "DockedView";
public static bool IsValidViewState(string viewState)
{
return (viewState == Snap) || (viewState == DockedView);
}
}
}

View file

@ -1,27 +1,15 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.Controls;
using CalculatorApp.ViewModel.Common;
using Windows.Devices.Input;
using Windows.Foundation;
using Windows.Foundation.Collections;
using System;
using System.Diagnostics;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Automation.Peers;
using System.Reflection;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
namespace CalculatorApp
{
@ -39,8 +27,8 @@ namespace CalculatorApp
public double MinFontSize
{
get { return (double)GetValue(MinFontSizeProperty); }
set { SetValue(MinFontSizeProperty, value); }
get => (double)GetValue(MinFontSizeProperty);
set => SetValue(MinFontSizeProperty, value);
}
// Using a DependencyProperty as the backing store for MinFontSize. This enables animation, styling, binding, etc...
@ -53,8 +41,8 @@ namespace CalculatorApp
public double MaxFontSize
{
get { return (double)GetValue(MaxFontSizeProperty); }
set { SetValue(MaxFontSizeProperty, value); }
get => (double)GetValue(MaxFontSizeProperty);
set => SetValue(MaxFontSizeProperty, value);
}
// Using a DependencyProperty as the backing store for MaxFontSize. This enables animation, styling, binding, etc...
@ -67,8 +55,8 @@ namespace CalculatorApp
public Thickness DisplayMargin
{
get { return (Thickness)GetValue(DisplayMarginProperty); }
set { SetValue(DisplayMarginProperty, value); }
get => (Thickness)GetValue(DisplayMarginProperty);
set => SetValue(DisplayMarginProperty, value);
}
// Using a DependencyProperty as the backing store for DisplayMargin. This enables animation, styling, binding, etc...
@ -77,8 +65,8 @@ namespace CalculatorApp
public bool IsActive
{
get { return (bool)GetValue(IsActiveProperty); }
set { SetValue(IsActiveProperty, value); }
get => (bool)GetValue(IsActiveProperty);
set => SetValue(IsActiveProperty, value);
}
// Using a DependencyProperty as the backing store for IsActive. This enables animation, styling, binding, etc...
@ -91,8 +79,8 @@ namespace CalculatorApp
public string DisplayValue
{
get { return (string)GetValue(DisplayValueProperty); }
set { SetValue(DisplayValueProperty, value); }
get => (string)GetValue(DisplayValueProperty);
set => SetValue(DisplayValueProperty, value);
}
// Using a DependencyProperty as the backing store for DisplayValue. This enables animation, styling, binding, etc...
@ -105,8 +93,8 @@ namespace CalculatorApp
public bool IsInError
{
get { return (bool)GetValue(IsInErrorProperty); }
set { SetValue(IsInErrorProperty, value); }
get => (bool)GetValue(IsInErrorProperty);
set => SetValue(IsInErrorProperty, value);
}
// Using a DependencyProperty as the backing store for IsInError. This enables animation, styling, binding, etc...
@ -119,8 +107,8 @@ namespace CalculatorApp
public bool IsOperatorCommand
{
get { return (bool)GetValue(IsOperatorCommandProperty); }
set { SetValue(IsOperatorCommandProperty, value); }
get => (bool)GetValue(IsOperatorCommandProperty);
set => SetValue(IsOperatorCommandProperty, value);
}
// Using a DependencyProperty as the backing store for IsOperatorCommand. This enables animation, styling, binding, etc...
@ -278,7 +266,7 @@ namespace CalculatorApp
{
var requestedElement = e.OriginalSource;
if (requestedElement.Equals(m_textBlock as object))
if (requestedElement.Equals(m_textBlock))
{
m_textBlock.Focus(FocusState.Programmatic);
}
@ -364,14 +352,7 @@ namespace CalculatorApp
private void UpdateVisualState()
{
if (IsActive)
{
VisualStateManager.GoToState(this, "Active", true);
}
else
{
VisualStateManager.GoToState(this, "Normal", true);
}
VisualStateManager.GoToState(this, IsActive ? "Active" : "Normal", true);
}
private void OnScrollLeftClick(object sender, RoutedEventArgs e)
@ -387,14 +368,13 @@ namespace CalculatorApp
private void ModifyFontAndMargin(TextBlock textBox, double fontChange)
{
double cur = textBox.FontSize;
double newFontSize = 0.0;
double scaleFactor = SCALEFACTOR;
if (m_textContainer.ActualHeight <= HEIGHTCUTOFF)
{
scaleFactor = SMALLHEIGHTSCALEFACTOR;
}
newFontSize = Math.Min(Math.Max(cur + fontChange, MinFontSize), MaxFontSize);
double newFontSize = Math.Min(Math.Max(cur + fontChange, MinFontSize), MaxFontSize);
m_textContainer.Padding = new Thickness(0, 0, 0, scaleFactor * Math.Abs(cur - newFontSize));
textBox.FontSize = newFontSize;
}

View file

@ -1,10 +1,6 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation.Peers;
@ -26,12 +22,7 @@ namespace CalculatorApp
protected override object GetPatternCore(PatternInterface pattern)
{
if (pattern == PatternInterface.Invoke)
{
return this;
}
return base.GetPatternCore(pattern);
return pattern == PatternInterface.Invoke ? this : base.GetPatternCore(pattern);
}
public void Invoke()

View file

@ -1,19 +1,12 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.Controls;
using CalculatorApp.ViewModel.Common;
using Windows.System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Data;
using Windows.Foundation.Collections;
using Windows.Storage.Pickers;
using Windows.UI.Xaml.Input;
namespace CalculatorApp
{
@ -25,15 +18,17 @@ namespace CalculatorApp
{
// Set the default bindings for this button, these can be overwritten by Xaml if needed
// These are a replacement for binding in styles
Binding commandBinding = new Binding();
commandBinding.Path = new PropertyPath("ButtonPressed");
Binding commandBinding = new Binding
{
Path = new PropertyPath("ButtonPressed")
};
this.SetBinding(CommandProperty, commandBinding);
}
public NumbersAndOperatorsEnum ButtonId
{
get { return (NumbersAndOperatorsEnum)GetValue(ButtonIdProperty); }
set { SetValue(ButtonIdProperty, value); }
get => (NumbersAndOperatorsEnum)GetValue(ButtonIdProperty);
set => SetValue(ButtonIdProperty, value);
}
// Using a DependencyProperty as the backing store for ButtonId. This enables animation, styling, binding, etc...
@ -46,8 +41,8 @@ namespace CalculatorApp
public string AuditoryFeedback
{
get { return (string)GetValue(AuditoryFeedbackProperty); }
set { SetValue(AuditoryFeedbackProperty, value); }
get => (string)GetValue(AuditoryFeedbackProperty);
set => SetValue(AuditoryFeedbackProperty, value);
}
// Using a DependencyProperty as the backing store for AuditoryFeedback. This enables animation, styling, binding, etc...
@ -60,8 +55,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Media.Brush HoverBackground
{
get { return (Windows.UI.Xaml.Media.Brush)GetValue(HoverBackgroundProperty); }
set { SetValue(HoverBackgroundProperty, value); }
get => (Windows.UI.Xaml.Media.Brush)GetValue(HoverBackgroundProperty);
set => SetValue(HoverBackgroundProperty, value);
}
// Using a DependencyProperty as the backing store for HoverBackground. This enables animation, styling, binding, etc...
@ -70,8 +65,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Media.Brush HoverForeground
{
get { return (Windows.UI.Xaml.Media.Brush)GetValue(HoverForegroundProperty); }
set { SetValue(HoverForegroundProperty, value); }
get => (Windows.UI.Xaml.Media.Brush)GetValue(HoverForegroundProperty);
set => SetValue(HoverForegroundProperty, value);
}
// Using a DependencyProperty as the backing store for HoverForeground. This enables animation, styling, binding, etc...
@ -80,8 +75,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Media.Brush PressBackground
{
get { return (Windows.UI.Xaml.Media.Brush)GetValue(PressBackgroundProperty); }
set { SetValue(PressBackgroundProperty, value); }
get => (Windows.UI.Xaml.Media.Brush)GetValue(PressBackgroundProperty);
set => SetValue(PressBackgroundProperty, value);
}
// Using a DependencyProperty as the backing store for PressBackground. This enables animation, styling, binding, etc...
@ -90,8 +85,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Media.Brush PressForeground
{
get { return (Windows.UI.Xaml.Media.Brush)GetValue(PressForegroundProperty); }
set { SetValue(PressForegroundProperty, value); }
get => (Windows.UI.Xaml.Media.Brush)GetValue(PressForegroundProperty);
set => SetValue(PressForegroundProperty, value);
}
// Using a DependencyProperty as the backing store for PressForeground. This enables animation, styling, binding, etc...
@ -100,8 +95,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Media.Brush DisabledBackground
{
get { return (Windows.UI.Xaml.Media.Brush)GetValue(DisabledBackgroundProperty); }
set { SetValue(DisabledBackgroundProperty, value); }
get => (Windows.UI.Xaml.Media.Brush)GetValue(DisabledBackgroundProperty);
set => SetValue(DisabledBackgroundProperty, value);
}
// Using a DependencyProperty as the backing store for DisabledBackground. This enables animation, styling, binding, etc...
@ -110,8 +105,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Media.Brush DisabledForeground
{
get { return (Windows.UI.Xaml.Media.Brush)GetValue(DisabledForegroundProperty); }
set { SetValue(DisabledForegroundProperty, value); }
get => (Windows.UI.Xaml.Media.Brush)GetValue(DisabledForegroundProperty);
set => SetValue(DisabledForegroundProperty, value);
}
// Using a DependencyProperty as the backing store for DisabledForeground. This enables animation, styling, binding, etc...

View file

@ -2,7 +2,7 @@
// Licensed under the MIT License.
using CalculatorApp.ViewModel.Common;
using System;
using Windows.UI.Text;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation;
@ -22,8 +22,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Media.SolidColorBrush EquationColor
{
get { return (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(EquationColorProperty); }
set { SetValue(EquationColorProperty, value); }
get => (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(EquationColorProperty);
set => SetValue(EquationColorProperty, value);
}
// Using a DependencyProperty as the backing store for EquationColor. This enables animation, styling, binding, etc...
@ -32,8 +32,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Media.SolidColorBrush EquationButtonForegroundColor
{
get { return (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(EquationButtonForegroundColorProperty); }
set { SetValue(EquationButtonForegroundColorProperty, value); }
get => (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(EquationButtonForegroundColorProperty);
set => SetValue(EquationButtonForegroundColorProperty, value);
}
// Using a DependencyProperty as the backing store for EquationButtonForegroundColor. This enables animation, styling, binding, etc...
@ -42,8 +42,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Controls.Flyout ColorChooserFlyout
{
get { return (Windows.UI.Xaml.Controls.Flyout)GetValue(ColorChooserFlyoutProperty); }
set { SetValue(ColorChooserFlyoutProperty, value); }
get => (Windows.UI.Xaml.Controls.Flyout)GetValue(ColorChooserFlyoutProperty);
set => SetValue(ColorChooserFlyoutProperty, value);
}
// Using a DependencyProperty as the backing store for ColorChooserFlyout. This enables animation, styling, binding, etc...
@ -52,8 +52,8 @@ namespace CalculatorApp
public string EquationButtonContentIndex
{
get { return (string)GetValue(EquationButtonContentIndexProperty); }
set { SetValue(EquationButtonContentIndexProperty, value); }
get => (string)GetValue(EquationButtonContentIndexProperty);
set => SetValue(EquationButtonContentIndexProperty, value);
}
// Using a DependencyProperty as the backing store for EquationButtonContentIndex. This enables animation, styling, binding, etc...
@ -66,8 +66,8 @@ namespace CalculatorApp
public string MathEquation
{
get { return (string)GetValue(MathEquationProperty); }
set { SetValue(MathEquationProperty, value); }
get => (string)GetValue(MathEquationProperty);
set => SetValue(MathEquationProperty, value);
}
// Using a DependencyProperty as the backing store for MathEquation. This enables animation, styling, binding, etc...
@ -76,8 +76,8 @@ namespace CalculatorApp
public bool HasError
{
get { return (bool)GetValue(HasErrorProperty); }
set { SetValue(HasErrorProperty, value); }
get => (bool)GetValue(HasErrorProperty);
set => SetValue(HasErrorProperty, value);
}
// Using a DependencyProperty as the backing store for HasError. This enables animation, styling, binding, etc...
@ -90,8 +90,8 @@ namespace CalculatorApp
public bool IsAddEquationMode
{
get { return (bool)GetValue(IsAddEquationModeProperty); }
set { SetValue(IsAddEquationModeProperty, value); }
get => (bool)GetValue(IsAddEquationModeProperty);
set => SetValue(IsAddEquationModeProperty, value);
}
// Using a DependencyProperty as the backing store for IsAddEquationMode. This enables animation, styling, binding, etc...
@ -104,8 +104,8 @@ namespace CalculatorApp
public string ErrorText
{
get { return (string)GetValue(ErrorTextProperty); }
set { SetValue(ErrorTextProperty, value); }
get => (string)GetValue(ErrorTextProperty);
set => SetValue(ErrorTextProperty, value);
}
// Using a DependencyProperty as the backing store for ErrorText. This enables animation, styling, binding, etc...
@ -114,19 +114,15 @@ namespace CalculatorApp
public bool IsEquationLineDisabled
{
get { return (bool)GetValue(IsEquationLineDisabledProperty); }
set { SetValue(IsEquationLineDisabledProperty, value); }
get => (bool)GetValue(IsEquationLineDisabledProperty);
set => SetValue(IsEquationLineDisabledProperty, value);
}
// Using a DependencyProperty as the backing store for IsEquationLineDisabled. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsEquationLineDisabledProperty =
DependencyProperty.Register(nameof(IsEquationLineDisabled), typeof(bool), typeof(EquationTextBox), new PropertyMetadata(default(bool)));
public bool HasFocus
{
get => m_HasFocus;
}
private bool m_HasFocus;
private bool HasFocus { get; set; }
public event Windows.UI.Xaml.RoutedEventHandler RemoveButtonClicked;
public event Windows.UI.Xaml.RoutedEventHandler KeyGraphFeaturesButtonClicked;
@ -296,18 +292,18 @@ namespace CalculatorApp
private void UpdateCommonVisualState()
{
string state = null;
string state;
bool richEditHasContent = RichEditHasContent();
if (m_HasFocus && HasError)
if (HasFocus && HasError)
{
state = "FocusedError";
}
else if (IsAddEquationMode && m_HasFocus && !richEditHasContent)
else if (IsAddEquationMode && HasFocus && !richEditHasContent)
{
state = "AddEquationFocused";
}
else if (m_HasFocus)
else if (HasFocus)
{
state = "Focused";
}
@ -342,7 +338,7 @@ namespace CalculatorApp
{
string state;
if (m_HasFocus && RichEditHasContent())
if (HasFocus && RichEditHasContent())
{
state = "ButtonVisible";
}
@ -361,16 +357,13 @@ namespace CalculatorApp
private bool RichEditHasContent()
{
string text = null;
if (m_richEditBox != null)
{
m_richEditBox.TextDocument.GetText(Windows.UI.Text.TextGetOptions.NoHidden, out text);
}
m_richEditBox?.TextDocument.GetText(Windows.UI.Text.TextGetOptions.NoHidden, out text);
return !string.IsNullOrEmpty(text);
}
private void OnRichEditBoxGotFocus(object sender, RoutedEventArgs e)
{
m_HasFocus = true;
HasFocus = true;
UpdateCommonVisualState();
UpdateButtonsVisualState();
}
@ -379,7 +372,7 @@ namespace CalculatorApp
{
if (!m_richEditBox.ContextFlyout.IsOpen)
{
m_HasFocus = false;
HasFocus = false;
}
UpdateCommonVisualState();
@ -458,10 +451,7 @@ namespace CalculatorApp
private void OnFunctionMenuButtonClicked(object sender, RoutedEventArgs e)
{
// Submit the equation before trying to analyze it if invoked from context menu
if (m_richEditBox != null)
{
m_richEditBox.SubmitEquation(EquationSubmissionSource.FOCUS_LOST);
}
m_richEditBox?.SubmitEquation(EquationSubmissionSource.FOCUS_LOST);
KeyGraphFeaturesButtonClicked?.Invoke(this, new RoutedEventArgs());
}
@ -475,7 +465,7 @@ namespace CalculatorApp
if (m_kgfEquationMenuItem != null)
{
m_kgfEquationMenuItem.IsEnabled = m_HasFocus && !HasError && RichEditHasContent();
m_kgfEquationMenuItem.IsEnabled = HasFocus && !HasError && RichEditHasContent();
}
if (m_colorChooserMenuItem != null)
@ -506,42 +496,27 @@ namespace CalculatorApp
private void OnCutClicked(object sender, RoutedEventArgs e)
{
if (m_richEditBox != null)
{
m_richEditBox.TextDocument.Selection.Cut();
}
m_richEditBox?.TextDocument.Selection.Cut();
}
private void OnCopyClicked(object sender, RoutedEventArgs e)
{
if (m_richEditBox != null)
{
m_richEditBox.TextDocument.Selection.Copy();
}
m_richEditBox?.TextDocument.Selection.Copy();
}
private void OnPasteClicked(object sender, RoutedEventArgs e)
{
if (m_richEditBox != null)
{
m_richEditBox.TextDocument.Selection.Paste(0);
}
m_richEditBox?.TextDocument.Selection.Paste(0);
}
private void OnUndoClicked(object sender, RoutedEventArgs e)
{
if (m_richEditBox != null)
{
m_richEditBox.TextDocument.Undo();
}
m_richEditBox?.TextDocument.Undo();
}
private void OnSelectAllClicked(object sender, RoutedEventArgs e)
{
if (m_richEditBox != null)
{
m_richEditBox.TextDocument.Selection.SetRange(0, m_richEditBox.TextDocument.Selection.EndPosition);
}
m_richEditBox?.TextDocument.Selection.SetRange(0, m_richEditBox.TextDocument.Selection.EndPosition);
}
private void OnColorFlyoutOpened(object sender, object e)

View file

@ -2,6 +2,7 @@
// Licensed under the MIT License.
using CalculatorApp.ViewModel.Common;
using Windows.System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Input;
@ -14,8 +15,8 @@ namespace CalculatorApp
{
public NumbersAndOperatorsEnum ButtonId
{
get { return (NumbersAndOperatorsEnum)GetValue(ButtonIdProperty); }
set { SetValue(ButtonIdProperty, value); }
get => (NumbersAndOperatorsEnum)GetValue(ButtonIdProperty);
set => SetValue(ButtonIdProperty, value);
}
// Using a DependencyProperty as the backing store for ButtonId. This enables animation, styling, binding, etc...
@ -24,8 +25,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Media.Brush HoverBackground
{
get { return (Windows.UI.Xaml.Media.Brush)GetValue(HoverBackgroundProperty); }
set { SetValue(HoverBackgroundProperty, value); }
get => (Windows.UI.Xaml.Media.Brush)GetValue(HoverBackgroundProperty);
set => SetValue(HoverBackgroundProperty, value);
}
// Using a DependencyProperty as the backing store for HoverBackground. This enables animation, styling, binding, etc...
@ -34,8 +35,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Media.Brush HoverForeground
{
get { return (Windows.UI.Xaml.Media.Brush)GetValue(HoverForegroundProperty); }
set { SetValue(HoverForegroundProperty, value); }
get => (Windows.UI.Xaml.Media.Brush)GetValue(HoverForegroundProperty);
set => SetValue(HoverForegroundProperty, value);
}
// Using a DependencyProperty as the backing store for HoverForeground. This enables animation, styling, binding, etc...
@ -44,8 +45,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Media.Brush PressBackground
{
get { return (Windows.UI.Xaml.Media.Brush)GetValue(PressBackgroundProperty); }
set { SetValue(PressBackgroundProperty, value); }
get => (Windows.UI.Xaml.Media.Brush)GetValue(PressBackgroundProperty);
set => SetValue(PressBackgroundProperty, value);
}
// Using a DependencyProperty as the backing store for PressBackground. This enables animation, styling, binding, etc...
@ -54,8 +55,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Media.Brush PressForeground
{
get { return (Windows.UI.Xaml.Media.Brush)GetValue(PressForegroundProperty); }
set { SetValue(PressForegroundProperty, value); }
get => (Windows.UI.Xaml.Media.Brush)GetValue(PressForegroundProperty);
set => SetValue(PressForegroundProperty, value);
}
// Using a DependencyProperty as the backing store for PressForeground. This enables animation, styling, binding, etc...

View file

@ -7,6 +7,7 @@
//
using System;
using Windows.Foundation;
using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Automation.Peers;

View file

@ -3,12 +3,13 @@
using System;
using System.Runtime.InteropServices;
using Windows.ApplicationModel;
using Windows.System;
using Windows.UI.Core;
using Windows.UI.Text;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Input;
using Windows.ApplicationModel;
namespace CalculatorApp
{
@ -16,14 +17,14 @@ namespace CalculatorApp
{
namespace Windows_2004_Prerelease
{
public enum RichEditMathMode : int
public enum RichEditMathMode
{
NoMath,
MathOnly
}
[Guid("619c20f2-cb3b-4521-981f-2865b1b93f04")]
interface ITextDocument4
internal interface ITextDocument4
{
int SetMath(string value);
int GetMath(out string value);
@ -40,44 +41,29 @@ namespace CalculatorApp
public sealed class MathRichEditBoxSubmission
{
public bool HasTextChanged
{
get => m_HasTextChanged;
}
public bool HasTextChanged { get; }
public EquationSubmissionSource Source
{
get => m_Source;
}
public EquationSubmissionSource Source { get; }
public MathRichEditBoxSubmission(bool hasTextChanged, EquationSubmissionSource source)
{
m_HasTextChanged = hasTextChanged;
m_Source = source;
HasTextChanged = hasTextChanged;
Source = source;
}
private bool m_HasTextChanged;
private EquationSubmissionSource m_Source;
}
public sealed class MathRichEditBoxFormatRequest
{
public string OriginalText
{
get => m_OriginalText;
}
public string OriginalText { get; }
public string FormattedText
{
get => m_FormattedText;
set => m_FormattedText = value;
}
public string FormattedText { get; set; }
public MathRichEditBoxFormatRequest(string originalText)
{
m_OriginalText = originalText;
OriginalText = originalText;
}
private string m_OriginalText;
private string m_FormattedText;
}
public sealed class MathRichEditBox : Windows.UI.Xaml.Controls.RichEditBox
@ -86,14 +72,14 @@ namespace CalculatorApp
{
string packageName = Package.Current.Id.Name;
if(packageName == "Microsoft.WindowsCalculator.Dev")
if (packageName == "Microsoft.WindowsCalculator.Dev")
{
LimitedAccessFeatures.TryUnlockFeature(
"com.microsoft.windows.richeditmath",
"BeDD/jxKhz/yfVNA11t4uA==", // Microsoft.WindowsCalculator.Dev
"8wekyb3d8bbwe has registered their use of com.microsoft.windows.richeditmath with Microsoft and agrees to the terms of use.");
}
else if(packageName == "Microsoft.WindowsCalculator")
else if (packageName == "Microsoft.WindowsCalculator")
{
LimitedAccessFeatures.TryUnlockFeature(
"com.microsoft.windows.richeditmath",
@ -108,8 +94,8 @@ namespace CalculatorApp
public string MathText
{
get { return (string)GetValue(MathTextProperty); }
set { SetValue(MathTextProperty, value); }
get => (string)GetValue(MathTextProperty);
set => SetValue(MathTextProperty, value);
}
// Using a DependencyProperty as the backing store for MathText. This enables animation, styling, binding, etc...

View file

@ -1,19 +1,8 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using Windows.Foundation;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
using CalculatorApp;
using CalculatorApp.Common;
using CalculatorApp.Controls;
namespace CalculatorApp
{
@ -27,8 +16,8 @@ namespace CalculatorApp
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
get => (string)GetValue(TextProperty);
set => SetValue(TextProperty, value);
}
// Using a DependencyProperty as the backing store for Text. This enables animation, styling, binding, etc...
@ -37,8 +26,8 @@ namespace CalculatorApp
public string Glyph
{
get { return (string)GetValue(GlyphProperty); }
set { SetValue(GlyphProperty, value); }
get => (string)GetValue(GlyphProperty);
set => SetValue(GlyphProperty, value);
}
// Using a DependencyProperty as the backing store for Glyph. This enables animation, styling, binding, etc...
@ -47,8 +36,8 @@ namespace CalculatorApp
public double GlyphFontSize
{
get { return (double)GetValue(GlyphFontSizeProperty); }
set { SetValue(GlyphFontSizeProperty, value); }
get => (double)GetValue(GlyphFontSizeProperty);
set => SetValue(GlyphFontSizeProperty, value);
}
// Using a DependencyProperty as the backing store for GlyphFontSize. This enables animation, styling, binding, etc...
@ -57,8 +46,8 @@ namespace CalculatorApp
public double ChevronFontSize
{
get { return (double)GetValue(ChevronFontSizeProperty); }
set { SetValue(ChevronFontSizeProperty, value); }
get => (double)GetValue(ChevronFontSizeProperty);
set => SetValue(ChevronFontSizeProperty, value);
}
// Using a DependencyProperty as the backing store for ChevronFontSize. This enables animation, styling, binding, etc...
@ -67,8 +56,8 @@ namespace CalculatorApp
public Flyout FlyoutMenu
{
get { return (Flyout)GetValue(FlyoutMenuProperty); }
set { SetValue(FlyoutMenuProperty, value); }
get => (Flyout)GetValue(FlyoutMenuProperty);
set => SetValue(FlyoutMenuProperty, value);
}
// Using a DependencyProperty as the backing store for FlyoutMenu. This enables animation, styling, binding, etc...

View file

@ -1,18 +1,10 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.Controls;
using Windows.Foundation;
using Windows.Devices.Input;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
namespace CalculatorApp
{
@ -151,7 +143,7 @@ namespace CalculatorApp
m_scrollViewer.ChangeView(offset, null, null);
}
private double scrollRatio = 0.7;
private readonly double scrollRatio = 0.7;
private bool m_isPointerEntered;

View file

@ -1,33 +1,17 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.Common;
using CalculatorApp.Controls;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Devices.Input;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Automation.Peers;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.ApplicationModel.Store;
namespace CalculatorApp
{
namespace Controls
{
public enum OverflowButtonPlacement : int
public enum OverflowButtonPlacement
{
InLine,
Above
@ -47,8 +31,8 @@ namespace CalculatorApp
public bool TokensUpdated
{
get { return (bool)GetValue(TokensUpdatedProperty); }
set { SetValue(TokensUpdatedProperty, value); }
get => (bool)GetValue(TokensUpdatedProperty);
set => SetValue(TokensUpdatedProperty, value);
}
// Using a DependencyProperty as the backing store for TokensUpdated. This enables animation, styling, binding, etc...
@ -61,8 +45,8 @@ namespace CalculatorApp
public OverflowButtonPlacement ScrollButtonsPlacement
{
get { return (OverflowButtonPlacement)GetValue(ScrollButtonsPlacementProperty); }
set { SetValue(ScrollButtonsPlacementProperty, value); }
get => (OverflowButtonPlacement)GetValue(ScrollButtonsPlacementProperty);
set => SetValue(ScrollButtonsPlacementProperty, value);
}
// Using a DependencyProperty as the backing store for ScrollButtonsPlacement. This enables animation, styling, binding, etc...
@ -75,8 +59,8 @@ namespace CalculatorApp
public bool IsActive
{
get { return (bool)GetValue(IsActiveProperty); }
set { SetValue(IsActiveProperty, value); }
get => (bool)GetValue(IsActiveProperty);
set => SetValue(IsActiveProperty, value);
}
// Using a DependencyProperty as the backing store for IsActive. This enables animation, styling, binding, etc...
@ -85,8 +69,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Style TextStyle
{
get { return (Style)GetValue(TextStyleProperty); }
set { SetValue(TextStyleProperty, value); }
get => (Style)GetValue(TextStyleProperty);
set => SetValue(TextStyleProperty, value);
}
// Using a DependencyProperty as the backing store for TextStyle. This enables animation, styling, binding, etc...
@ -95,8 +79,8 @@ namespace CalculatorApp
public double ScrollButtonsWidth
{
get { return (double)GetValue(ScrollButtonsWidthProperty); }
set { SetValue(ScrollButtonsWidthProperty, value); }
get => (double)GetValue(ScrollButtonsWidthProperty);
set => SetValue(ScrollButtonsWidthProperty, value);
}
// Using a DependencyProperty as the backing store for ScrollButtonsWidth. This enables animation, styling, binding, etc...
@ -105,8 +89,8 @@ namespace CalculatorApp
public double ScrollButtonsFontSize
{
get { return (double)GetValue(ScrollButtonsFontSizeProperty); }
set { SetValue(ScrollButtonsFontSizeProperty, value); }
get => (double)GetValue(ScrollButtonsFontSizeProperty);
set => SetValue(ScrollButtonsFontSizeProperty, value);
}
// Using a DependencyProperty as the backing store for ScrollButtonsFontSize. This enables animation, styling, binding, etc...
@ -279,14 +263,7 @@ namespace CalculatorApp
private void UpdateVisualState()
{
if (IsActive)
{
VisualStateManager.GoToState(this, "Active", true);
}
else
{
VisualStateManager.GoToState(this, "Normal", true);
}
VisualStateManager.GoToState(this, IsActive ? "Active" : "Normal", true);
}
private void UpdateAllState()

View file

@ -1,12 +1,9 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using Windows.UI.Xaml.Automation.Peers;
using Windows.Foundation.Collections;
namespace CalculatorApp
{

View file

@ -1,4 +1,4 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using CalculatorApp.ViewModel.Common;
@ -14,7 +14,7 @@ namespace CalculatorApp
internal string GetRawDisplayValue()
{
string radixContent = Content.ToString();
string radixContent = Content?.ToString();
return LocalizationSettings.GetInstance().RemoveGroupSeparators(radixContent);
}
}

View file

@ -1,22 +1,14 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.Controls;
using CalculatorApp.ViewModel;
using Windows.System;
using System.Collections.Generic;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Automation.Peers;
using Windows.Foundation.Collections;
using Windows.UI.Xaml.Controls;
namespace CalculatorApp
{
@ -37,8 +29,7 @@ namespace CalculatorApp
{
base.PrepareContainerForItemOverride(element, item);
var supplementaryResult = item as SupplementaryResult;
if (supplementaryResult != null)
if (item is SupplementaryResult supplementaryResult)
{
AutomationProperties.SetName(element, supplementaryResult.GetLocalizedAutomationName());
}
@ -57,7 +48,7 @@ namespace CalculatorApp
}
}
sealed class SupplementaryContentPresenterAP : FrameworkElementAutomationPeer
internal sealed class SupplementaryContentPresenterAP : FrameworkElementAutomationPeer
{
protected override AutomationControlType GetAutomationControlTypeCore()
{

View file

@ -1,4 +1,4 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
@ -15,15 +15,13 @@ namespace CalculatorApp
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var boxedBool = value as bool?;
var boolValue = (boxedBool != null && boxedBool.Value);
var boolValue = (value is bool boxedBool && boxedBool);
return !boolValue;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
var boxedBool = (value as bool?);
var boolValue = (boxedBool != null && boxedBool.Value);
var boolValue = (value is bool boxedBool && boxedBool);
return !boolValue;
}
}

View file

@ -1,7 +1,8 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using Windows.UI.Xaml;
namespace CalculatorApp
@ -21,15 +22,13 @@ namespace CalculatorApp
public object Convert(object value, Type targetType, object parameter, string language)
{
var boxedBool = (value as bool?);
var boolValue = (boxedBool != null && boxedBool.Value);
var boolValue = (value is bool boxedBool && boxedBool);
return BooleanToVisibilityConverter.Convert(boolValue);
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
var visibility = (value as Visibility?);
return (visibility != null && visibility.Value == Visibility.Visible);
return (value is Visibility visibility && visibility == Visibility.Visible);
}
}
@ -41,15 +40,13 @@ namespace CalculatorApp
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var boxedBool = (value as bool?);
var boolValue = (boxedBool != null && boxedBool.Value);
var boolValue = (value is bool boxedBool && boxedBool);
return BooleanToVisibilityConverter.Convert(!boolValue);
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
var visibility = (value as Visibility?);
return (visibility != null && visibility.Value != Visibility.Visible);
return (value is Visibility visibility && visibility != Visibility.Visible);
}
}
}

View file

@ -2,7 +2,9 @@
// Licensed under the MIT License.
using CalculatorApp.ViewModel.Common;
using System;
using Windows.UI.Xaml;
namespace CalculatorApp
@ -22,61 +24,24 @@ namespace CalculatorApp
switch (type)
{
case TokenType.Operator:
return m_operatorTemplate;
return OperatorTemplate;
case TokenType.Operand:
return m_operandTemplate;
return OperandTemplate;
case TokenType.Separator:
return m_separatorTemplate;
return SeparatorTemplate;
default:
throw new Exception("Invalid token type");
}
}
return m_separatorTemplate;
return SeparatorTemplate;
}
public Windows.UI.Xaml.DataTemplate OperatorTemplate
{
get
{
return m_operatorTemplate;
}
public Windows.UI.Xaml.DataTemplate OperatorTemplate { get; set; }
set
{
m_operatorTemplate = value;
}
}
public Windows.UI.Xaml.DataTemplate OperandTemplate { get; set; }
public Windows.UI.Xaml.DataTemplate OperandTemplate
{
get
{
return m_operandTemplate;
}
set
{
m_operandTemplate = value;
}
}
public Windows.UI.Xaml.DataTemplate SeparatorTemplate
{
get
{
return m_separatorTemplate;
}
set
{
m_separatorTemplate = value;
}
}
private Windows.UI.Xaml.DataTemplate m_operatorTemplate;
private Windows.UI.Xaml.DataTemplate m_operandTemplate;
private Windows.UI.Xaml.DataTemplate m_separatorTemplate;
public Windows.UI.Xaml.DataTemplate SeparatorTemplate { get; set; }
}
}
}

View file

@ -1,4 +1,4 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
@ -12,8 +12,7 @@ namespace CalculatorApp
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var items = (value as int?);
var boolValue = (items != null && (items.Value == 0));
var boolValue = (value is int items && (items == 0));
return BooleanToVisibilityConverter.Convert(boolValue);
}
@ -27,8 +26,7 @@ namespace CalculatorApp
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var items = (value as int?);
var boolValue = (items != null && (items.Value > 0));
var boolValue = (value is int items && (items > 0));
return BooleanToVisibilityConverter.Convert(boolValue);
}

View file

@ -2,6 +2,7 @@
// Licensed under the MIT License.
using CalculatorApp.ViewModel.Common;
using System;
namespace CalculatorApp

View file

@ -1,7 +1,8 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using Windows.UI.Xaml;
namespace CalculatorApp
@ -16,8 +17,7 @@ namespace CalculatorApp
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var boxedVisibility = (value as Visibility?);
if (boxedVisibility != null && boxedVisibility.Value == Visibility.Collapsed)
if (value is Visibility boxedVisibility && boxedVisibility == Visibility.Collapsed)
{
return Visibility.Visible;
}

View file

@ -1,5 +1,4 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following

View file

@ -2,7 +2,9 @@
// Licensed under the MIT License.
using CalculatorApp.ViewModel.Common;
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

View file

@ -1,12 +1,13 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using CalculatorApp.ViewModel.Common;
using System;
namespace CalculatorApp.Utils
{
static class DelegateCommandUtils
internal static class DelegateCommandUtils
{
public static DelegateCommand MakeDelegateCommand<TTarget>(TTarget target, Action<TTarget, object> handler)
where TTarget : class
@ -14,8 +15,7 @@ namespace CalculatorApp.Utils
WeakReference weakTarget = new WeakReference(target);
return new DelegateCommand(param =>
{
TTarget thatTarget = weakTarget.Target as TTarget;
if(null != thatTarget)
if (weakTarget.Target is TTarget thatTarget)
{
handler.Invoke(thatTarget, param);
}

View file

@ -2,6 +2,7 @@
// Licensed under the MIT License.
using System;
using Windows.UI.Xaml;
namespace CalculatorApp
@ -12,8 +13,10 @@ namespace CalculatorApp
public DispatcherTimerDelayer(TimeSpan timeSpan)
{
m_timer = new DispatcherTimer();
m_timer.Interval = timeSpan;
m_timer = new DispatcherTimer
{
Interval = timeSpan
};
var interval = m_timer.Interval;
m_timer.Tick += Timer_Tick;
}
@ -40,6 +43,6 @@ namespace CalculatorApp
Action?.Invoke(this, null);
}
private DispatcherTimer m_timer;
private readonly DispatcherTimer m_timer;
}
}

View file

@ -3,9 +3,8 @@
using System;
using System.Reflection;
using Windows.Storage;
using Windows.UI;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
@ -71,13 +70,13 @@ namespace CalculatorApp.Utils
public static ThemeChangedCallbackToken RegisterAppThemeChangedCallback(DependencyPropertyChangedCallback callback)
{
Frame rootFrame = Window.Current.Content as Frame;
long token = rootFrame.RegisterPropertyChangedCallback(Frame.RequestedThemeProperty, callback);
return new ThemeChangedCallbackToken{ RootFrame = new WeakReference(rootFrame), Token = token };
long token = rootFrame.RegisterPropertyChangedCallback(FrameworkElement.RequestedThemeProperty, callback);
return new ThemeChangedCallbackToken { RootFrame = new WeakReference(rootFrame), Token = token };
}
public static void UnregisterAppThemeChangedCallback(ThemeChangedCallbackToken callbackToken)
{
if(callbackToken.RootFrame.IsAlive)
if (callbackToken.RootFrame.IsAlive)
{
Frame rootFrame = callbackToken.RootFrame.Target as Frame;
rootFrame.UnregisterPropertyChangedCallback(Frame.RequestedThemeProperty, callbackToken.Token);

View file

@ -2,6 +2,7 @@
// Licensed under the MIT License.
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Media;
@ -14,7 +15,7 @@ namespace Calculator.Utils
/// <summary>
/// Defines a collection of extensions methods for UI.
/// </summary>
sealed class VisualTree
internal static class VisualTree
{
/// <summary>
/// Find descendant <see cref="Windows.UI.Xaml.FrameworkElement ^"/> control using its name.
@ -29,14 +30,13 @@ namespace Calculator.Utils
return null;
}
var frameworkElement = (element as FrameworkElement);
if (frameworkElement != null && name.Equals(frameworkElement.Name))
if (element is FrameworkElement frameworkElement && name.Equals(frameworkElement.Name))
{
return frameworkElement;
}
var childCount = VisualTreeHelper.GetChildrenCount(element);
for (int i = 0; i < childCount; i++)
for (var i = 0; i < childCount; i++)
{
var result = FindDescendantByName(VisualTreeHelper.GetChild(element, i), name);
if (result != null)
@ -52,7 +52,7 @@ namespace Calculator.Utils
/// Find first descendant control of a specified type.
/// </summary>
/// <param name="element">Parent element.</param>
/// <param name="type">Type of descendant.</param>
/// <param name="typeName">Type of descendant.</param>
/// <returns>Descendant control or null if not found.</returns>
private static DependencyObject FindDescendant(DependencyObject element, Type typeName)
{
@ -98,8 +98,8 @@ namespace Calculator.Utils
{
return null;
}
var frameworkElement = (parent as FrameworkElement);
if (frameworkElement != null && name.Equals(frameworkElement.Name))
if (parent is FrameworkElement frameworkElement && name.Equals(frameworkElement.Name))
{
return frameworkElement;
}

View file

@ -1,33 +1,21 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.Converters;
using CalculatorApp.Controls;
using CalculatorApp.Utils;
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using System;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Globalization.NumberFormatting;
using Windows.System;
using Windows.UI.Core;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Automation.Peers;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.System.Threading;
using Windows.UI.ViewManagement;
namespace CalculatorApp
{
@ -74,15 +62,12 @@ namespace CalculatorApp
this.SizeChanged += Calculator_SizeChanged;
}
public CalculatorApp.ViewModel.StandardCalculatorViewModel Model
{
get => (StandardCalculatorViewModel)this.DataContext;
}
public CalculatorApp.ViewModel.StandardCalculatorViewModel Model => (StandardCalculatorViewModel)this.DataContext;
public bool IsStandard
{
get { return (bool)GetValue(IsStandardProperty); }
set { SetValue(IsStandardProperty, value); }
get => (bool)GetValue(IsStandardProperty);
set => SetValue(IsStandardProperty, value);
}
// Using a DependencyProperty as the backing store for IsStandard. This enables animation, styling, binding, etc...
@ -95,8 +80,8 @@ namespace CalculatorApp
public bool IsScientific
{
get { return (bool)GetValue(IsScientificProperty); }
set { SetValue(IsScientificProperty, value); }
get => (bool)GetValue(IsScientificProperty);
set => SetValue(IsScientificProperty, value);
}
// Using a DependencyProperty as the backing store for IsScientific. This enables animation, styling, binding, etc...
@ -109,8 +94,8 @@ namespace CalculatorApp
public bool IsProgrammer
{
get { return (bool)GetValue(IsProgrammerProperty); }
set { SetValue(IsProgrammerProperty, value); }
get => (bool)GetValue(IsProgrammerProperty);
set => SetValue(IsProgrammerProperty, value);
}
// Using a DependencyProperty as the backing store for IsProgrammer. This enables animation, styling, binding, etc...
@ -123,8 +108,8 @@ namespace CalculatorApp
public bool IsAlwaysOnTop
{
get { return (bool)GetValue(IsAlwaysOnTopProperty); }
set { SetValue(IsAlwaysOnTopProperty, value); }
get => (bool)GetValue(IsAlwaysOnTopProperty);
set => SetValue(IsAlwaysOnTopProperty, value);
}
// Using a DependencyProperty as the backing store for IsAlwaysOnTop. This enables animation, styling, binding, etc...
@ -152,7 +137,7 @@ namespace CalculatorApp
}
private System.Windows.Input.ICommand donotuse_HistoryButtonPressed;
private static UISettings uiSettings = new UISettings();
private static readonly UISettings uiSettings = new UISettings();
public void AnimateCalculator(bool resultAnimate)
{
if (uiSettings.AnimationsEnabled)
@ -174,8 +159,10 @@ namespace CalculatorApp
{
if (m_historyList == null)
{
m_historyList = new HistoryList();
m_historyList.DataContext = historyVM;
m_historyList = new HistoryList
{
DataContext = historyVM
};
historyVM.HideHistoryClicked += OnHideHistoryClicked;
historyVM.HistoryItemClicked += OnHistoryItemClicked;
}
@ -247,11 +234,11 @@ namespace CalculatorApp
// Delay load things later when we get a chance.
WeakReference weakThis = new WeakReference(this);
_ = this.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal, new DispatchedHandler(() => {
CoreDispatcherPriority.Normal, new DispatchedHandler(() =>
{
if (TraceLogger.GetInstance().IsWindowIdInLog(ApplicationView.GetApplicationViewIdForWindow(CoreWindow.GetForCurrentThread())))
{
var refThis = weakThis.Target as Calculator;
if (refThis != null)
if (weakThis.Target is Calculator refThis)
{
refThis.GetMemory();
}
@ -361,8 +348,7 @@ namespace CalculatorApp
PasteMenuItem.IsEnabled = CopyPasteManager.HasStringToPaste();
Point point;
if (e.TryGetPosition(requestedElement, out point))
if (e.TryGetPosition(requestedElement, out Point point))
{
m_displayFlyout.ShowAt(requestedElement, point);
}
@ -629,7 +615,7 @@ namespace CalculatorApp
}
}
private Windows.UI.Xaml.Controls.MenuFlyout m_displayFlyout;
private readonly Windows.UI.Xaml.Controls.MenuFlyout m_displayFlyout;
private bool m_doAnimate;
private bool m_resultAnimate;
private bool m_isLastAnimatedInScientific;

View file

@ -8,20 +8,14 @@
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.Controls;
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using System.Diagnostics;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
namespace CalculatorApp
@ -41,10 +35,7 @@ namespace CalculatorApp
return index <= GetIndexOfLastBit(length);
}
public StandardCalculatorViewModel Model
{
get { return (StandardCalculatorViewModel)this.DataContext; }
}
public StandardCalculatorViewModel Model => (StandardCalculatorViewModel)this.DataContext;
private void OnLoaded(object sender, RoutedEventArgs e)
{
@ -276,7 +267,7 @@ namespace CalculatorApp
}
private static readonly uint s_numBits = 64;
private FlipButtons[] m_flipButtons = new FlipButtons[s_numBits];
private readonly FlipButtons[] m_flipButtons = new FlipButtons[s_numBits];
private bool m_updatingCheckedStates;
private BitLength m_currentValueBitLength;
}

View file

@ -1,9 +1,11 @@
using CalculatorApp.Utils;
using CalculatorApp.ViewModel.Common;
using System.Diagnostics;
using System.Windows.Input;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using CalculatorApp.Utils;
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
@ -41,10 +43,7 @@ namespace CalculatorApp
public bool IsErrorVisualState
{
get
{
return m_isErrorVisualState;
}
get => m_isErrorVisualState;
set
{

View file

@ -1,29 +1,13 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.Controls;
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using Windows.Devices.Input;
using Windows.Foundation;
using Windows.Foundation.Collections;
using System.Diagnostics;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Automation.Peers;
using Windows.UI.ViewManagement;
using Windows.UI.Core;
namespace CalculatorApp
{
@ -37,15 +21,12 @@ namespace CalculatorApp
CopyMenuItem.Text = AppResourceProvider.GetInstance().GetResourceString("copyMenuItem");
}
public StandardCalculatorViewModel Model
{
get { return (StandardCalculatorViewModel)this.DataContext; }
}
public StandardCalculatorViewModel Model => (StandardCalculatorViewModel)this.DataContext;
public Style SymbolButtonStyle
{
get { return (Style)GetValue(SymbolButtonStyleProperty); }
set { SetValue(SymbolButtonStyleProperty, value); }
get => (Style)GetValue(SymbolButtonStyleProperty);
set => SetValue(SymbolButtonStyleProperty, value);
}
// Using a DependencyProperty as the backing store for SymbolButtonStyle. This enables animation, styling, binding, etc...

View file

@ -1,21 +1,11 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using CalculatorApp.Common;
using Windows.UI.Xaml.Media;
namespace CalculatorApp
{
@ -29,17 +19,14 @@ namespace CalculatorApp
LoadResourceStrings();
}
public StandardCalculatorViewModel Model
{
get { return (StandardCalculatorViewModel)this.DataContext; }
}
public StandardCalculatorViewModel Model => (StandardCalculatorViewModel)this.DataContext;
public bool IsErrorVisualState
{
get => m_isErrorVisualState;
set
{
if(m_isErrorVisualState != value)
if (m_isErrorVisualState != value)
{
m_isErrorVisualState = value;
string newState = m_isErrorVisualState ? "ErrorLayout" : "NoErrorLayout";

View file

@ -6,26 +6,11 @@
// Declaration of the CalculatorScientificAngleButtons class
//
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.Utils;
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.ViewManagement;
using Windows.UI.Core;
namespace CalculatorApp
{
@ -38,10 +23,7 @@ namespace CalculatorApp
InitializeComponent();
}
public StandardCalculatorViewModel Model
{
get { return (StandardCalculatorViewModel)this.DataContext; }
}
public StandardCalculatorViewModel Model => (StandardCalculatorViewModel)this.DataContext;
public System.Windows.Input.ICommand ButtonPressed
{
@ -50,7 +32,7 @@ namespace CalculatorApp
if (donotuse_ButtonPressed == null)
{
donotuse_ButtonPressed = DelegateCommandUtils.MakeDelegateCommand(this,
(that, param)=>
(that, param) =>
{
that.OnAngleButtonPressed(param);
});
@ -65,7 +47,7 @@ namespace CalculatorApp
get => m_isErrorVisualState;
set
{
if(m_isErrorVisualState != value)
if (m_isErrorVisualState != value)
{
m_isErrorVisualState = value;
string newState = m_isErrorVisualState ? "ErrorFlyout" : "NoErrorFlyout";

View file

@ -6,26 +6,11 @@
// Declaration of the CalculatorScientificOperators class
//
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.Common;
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Core;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
namespace CalculatorApp
{
@ -39,15 +24,12 @@ namespace CalculatorApp
ExpButton.SetValue(KeyboardShortcutManager.VirtualKeyProperty, MyVirtualKey.E);
}
public StandardCalculatorViewModel Model
{
get { return (StandardCalculatorViewModel)this.DataContext; }
}
public StandardCalculatorViewModel Model => (StandardCalculatorViewModel)this.DataContext;
public bool IsErrorVisualState
{
get { return (bool)GetValue(IsErrorVisualStateProperty); }
set { SetValue(IsErrorVisualStateProperty, value); }
get => (bool)GetValue(IsErrorVisualStateProperty);
set => SetValue(IsErrorVisualStateProperty, value);
}
// Using a DependencyProperty as the backing store for IsErrorVisualState. This enables animation, styling, binding, etc...

View file

@ -6,21 +6,7 @@
// Declaration of the CalculatorStandardOperators class
//
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
namespace CalculatorApp
{
@ -35,7 +21,7 @@ namespace CalculatorApp
public bool IsErrorVisualState
{
get { return m_isErrorVisualState; }
get => m_isErrorVisualState;
set
{
if (m_isErrorVisualState != value)

View file

@ -8,30 +8,17 @@
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using Windows.Foundation;
using Windows.Foundation.Collections;
using System;
using Windows.Globalization;
using Windows.Globalization.DateTimeFormatting;
using Windows.System.UserProfile;
using Windows.UI.Core;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Automation.Peers;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
namespace CalculatorApp
{

View file

@ -1,29 +1,28 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using Calculator.Utils;
using CalculatorApp.Controls;
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using CalculatorApp.ViewModel.Common.Automation;
using GraphControl;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.Common;
using CalculatorApp.ViewModel.Common;
using CalculatorApp.ViewModel.Common.Automation;
using GraphControl;
using CalculatorApp.ViewModel;
using CalculatorApp.Controls;
using Windows.Foundation;
using Windows.System;
using Windows.UI;
using Windows.UI.Core;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Input;
using Calculator.Utils;
using Windows.UI.Xaml.Media;
namespace CalculatorApp
{
@ -56,7 +55,7 @@ namespace CalculatorApp
public Windows.Foundation.Collections.IObservableVector<ViewModel.EquationViewModel> Equations
{
get { return m_Equations; }
get => m_Equations;
set
{
if (m_Equations != value)
@ -70,7 +69,7 @@ namespace CalculatorApp
public Windows.Foundation.Collections.IObservableVector<ViewModel.VariableViewModel> Variables
{
get { return m_Variables; }
get => m_Variables;
set
{
if (m_Variables != value)
@ -84,7 +83,7 @@ namespace CalculatorApp
public ObservableCollection<SolidColorBrush> AvailableColors
{
get { return m_AvailableColors; }
get => m_AvailableColors;
set
{
if (m_AvailableColors != value)
@ -99,7 +98,7 @@ namespace CalculatorApp
public bool IsMatchAppTheme
{
get { return m_IsMatchAppTheme; }
get => m_IsMatchAppTheme;
set
{
if (m_IsMatchAppTheme != value)
@ -156,8 +155,7 @@ namespace CalculatorApp
{
return;
}
var equationTextBox = equationInput as EquationTextBox;
if (equationTextBox != null)
if (equationInput is EquationTextBox equationTextBox)
{
equationTextBox.FocusTextBox();
}
@ -225,8 +223,10 @@ namespace CalculatorApp
colorIndex = colorAssignmentMapping[colorIndex];
}
var eq = new EquationViewModel(new Equation(), ++m_lastFunctionLabelIndex, AvailableColors[colorIndex].Color, colorIndex);
eq.IsLastItemInList = true;
var eq = new EquationViewModel(new Equation(), ++m_lastFunctionLabelIndex, AvailableColors[colorIndex].Color, colorIndex)
{
IsLastItemInList = true
};
m_equationToFocus = eq;
Equations.Add(eq);
}
@ -355,13 +355,13 @@ namespace CalculatorApp
{
WeakReference weakThis = new WeakReference(this);
_ = this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() => {
var refThis = weakThis.Target as EquationInputArea;
if (refThis != null && refThis.m_isHighContrast == refThis.m_accessibilitySettings.HighContrast)
{
refThis.ReloadAvailableColors(false, false);
}
}));
_ = this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() =>
{
if (weakThis.Target is EquationInputArea refThis && refThis.m_isHighContrast == refThis.m_accessibilitySettings.HighContrast)
{
refThis.ReloadAvailableColors(false, false);
}
}));
}
private void EquationTextBox_RemoveButtonClicked(object sender, RoutedEventArgs e)
@ -416,7 +416,7 @@ namespace CalculatorApp
var eq = GetViewModelFromEquationTextBox(sender);
eq.IsLineEnabled = !eq.IsLineEnabled;
CalculatorApp.ViewModel.Common.TraceLogger.GetInstance().LogShowHideButtonClicked(eq.IsLineEnabled ? false : true);
CalculatorApp.ViewModel.Common.TraceLogger.GetInstance().LogShowHideButtonClicked(!eq.IsLineEnabled);
}
private void EquationTextBox_Loaded(object sender, RoutedEventArgs e)
@ -594,7 +594,8 @@ namespace CalculatorApp
{
TimeSpan timeSpan = new TimeSpan(10000000); // 1 tick = 100 nanoseconds, and 10000000 ticks = 1 second.
DispatcherTimerDelayer delayer = new DispatcherTimerDelayer(timeSpan);
delayer.Action += new EventHandler<object>((object s, object arg) => {
delayer.Action += new EventHandler<object>((object s, object arg) =>
{
CalculatorApp.ViewModel.Common.TraceLogger.GetInstance().LogVariableChanged("Slider", name);
variableSliders.Remove(name);
});
@ -641,8 +642,8 @@ namespace CalculatorApp
private const string EquationsPropertyName = "Equations";
private const string IsMatchAppThemePropertyName = "IsMatchAppTheme";
private Windows.UI.ViewManagement.AccessibilitySettings m_accessibilitySettings;
private Windows.UI.ViewManagement.UISettings m_uiSettings;
private readonly Windows.UI.ViewManagement.AccessibilitySettings m_accessibilitySettings;
private readonly Windows.UI.ViewManagement.UISettings m_uiSettings;
private int m_lastLineColorIndex;
private int m_lastFunctionLabelIndex;
private bool m_isHighContrast;

View file

@ -1,8 +1,9 @@
using CalculatorApp.ViewModel.Common;
using GraphControl;
using System;
using System.Collections.Generic;
using System.Linq;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
@ -18,18 +19,20 @@ namespace CalculatorApp
{
InitializeComponent();
var allStyles = new List<EquationLineStyle>();
allStyles.Add(EquationLineStyle.Solid);
allStyles.Add(EquationLineStyle.Dash);
allStyles.Add(EquationLineStyle.Dot);
var allStyles = new List<EquationLineStyle>
{
EquationLineStyle.Solid,
EquationLineStyle.Dash,
EquationLineStyle.Dot
};
StyleChooserBox.ItemsSource = allStyles;
}
public Windows.UI.Color SelectedColor
{
get { return (Windows.UI.Color)GetValue(SelectedColorProperty); }
set { SetValue(SelectedColorProperty, value); }
get => (Windows.UI.Color)GetValue(SelectedColorProperty);
set => SetValue(SelectedColorProperty, value);
}
// Using a DependencyProperty as the backing store for SelectedColor. This enables animation, styling, binding, etc...
@ -42,8 +45,8 @@ namespace CalculatorApp
public GraphControl.EquationLineStyle SelectedStyle
{
get { return (GraphControl.EquationLineStyle)GetValue(SelectedStyleProperty); }
set { SetValue(SelectedStyleProperty, value); }
get => (GraphControl.EquationLineStyle)GetValue(SelectedStyleProperty);
set => SetValue(SelectedStyleProperty, value);
}
// Using a DependencyProperty as the backing store for SelectedStyle. This enables animation, styling, binding, etc...
@ -56,8 +59,8 @@ namespace CalculatorApp
public int SelectedColorIndex
{
get { return (int)GetValue(SelectedColorIndexProperty); }
set { SetValue(SelectedColorIndexProperty, value); }
get => (int)GetValue(SelectedColorIndexProperty);
set => SetValue(SelectedColorIndexProperty, value);
}
// Using a DependencyProperty as the backing store for SelectedColorIndex. This enables animation, styling, binding, etc...
@ -66,8 +69,8 @@ namespace CalculatorApp
public IList<Windows.UI.Xaml.Media.SolidColorBrush> AvailableColors
{
get { return (IList<Windows.UI.Xaml.Media.SolidColorBrush>)GetValue(AvailableColorsProperty); }
set { SetValue(AvailableColorsProperty, value); }
get => (IList<Windows.UI.Xaml.Media.SolidColorBrush>)GetValue(AvailableColorsProperty);
set => SetValue(AvailableColorsProperty, value);
}
// Using a DependencyProperty as the backing store for AvailableColors. This enables animation, styling, binding, etc...
@ -76,8 +79,8 @@ namespace CalculatorApp
public bool EnableLineStylePicker
{
get { return (bool)GetValue(EnableLineStylePickerProperty); }
set { SetValue(EnableLineStylePickerProperty, value); }
get => (bool)GetValue(EnableLineStylePickerProperty);
set => SetValue(EnableLineStylePickerProperty, value);
}
// Using a DependencyProperty as the backing store for EnableLineStylePicker. This enables animation, styling, binding, etc...

View file

@ -1,38 +1,30 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.Common;
using CalculatorApp.ViewModel.Common;
using CalculatorApp.ViewModel.Common.Automation;
using CalculatorApp.Controls;
using CalculatorApp.Utils;
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using CalculatorApp.ViewModel.Common.Automation;
using GraphControl;
using System;
using Windows.ApplicationModel.DataTransfer;
using Windows.ApplicationModel.Resources;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage;
using Windows.Storage.Streams;
using Windows.System;
using Windows.UI.Core;
using Windows.UI.Input;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Automation.Peers;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
using Windows.UI.Popups;
namespace CalculatorApp
{
@ -62,14 +54,18 @@ namespace CalculatorApp
GraphingControl.UseCommaDecimalSeperator = LocalizationSettings.GetInstance().GetDecimalSeparator() == ',';
// OemMinus and OemAdd aren't declared in the VirtualKey enum, we can't add this accelerator XAML-side
var virtualKey = new KeyboardAccelerator();
virtualKey.Key = (VirtualKey)189; // OemPlus key
virtualKey.Modifiers = VirtualKeyModifiers.Control;
var virtualKey = new KeyboardAccelerator
{
Key = (VirtualKey)189, // OemPlus key
Modifiers = VirtualKeyModifiers.Control
};
ZoomOutButton.KeyboardAccelerators.Add(virtualKey);
virtualKey = new KeyboardAccelerator();
virtualKey.Key = (VirtualKey)187; // OemAdd key
virtualKey.Modifiers = VirtualKeyModifiers.Control;
virtualKey = new KeyboardAccelerator
{
Key = (VirtualKey)187, // OemAdd key
Modifiers = VirtualKeyModifiers.Control
};
ZoomInButton.KeyboardAccelerators.Add(virtualKey);
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.UI.Xaml.Media.ThemeShadow"))
@ -144,7 +140,7 @@ namespace CalculatorApp
public bool IsKeyGraphFeaturesVisible
{
get { return m_IsKeyGraphFeaturesVisible; }
get => m_IsKeyGraphFeaturesVisible;
private set
{
if (m_IsKeyGraphFeaturesVisible != value)
@ -158,8 +154,8 @@ namespace CalculatorApp
public bool IsSmallState
{
get { return (bool)GetValue(IsSmallStateProperty); }
set { SetValue(IsSmallStateProperty, value); }
get => (bool)GetValue(IsSmallStateProperty);
set => SetValue(IsSmallStateProperty, value);
}
// Using a DependencyProperty as the backing store for IsSmallState. This enables animation, styling, binding, etc...
@ -168,8 +164,8 @@ namespace CalculatorApp
public string GraphControlAutomationName
{
get { return (string)GetValue(GraphControlAutomationNameProperty); }
set { SetValue(GraphControlAutomationNameProperty, value); }
get => (string)GetValue(GraphControlAutomationNameProperty);
set => SetValue(GraphControlAutomationNameProperty, value);
}
// Using a DependencyProperty as the backing store for GraphControlAutomationName. This enables animation, styling, binding, etc...
@ -178,7 +174,7 @@ namespace CalculatorApp
public bool IsMatchAppTheme
{
get { return m_IsMatchAppTheme; }
get => m_IsMatchAppTheme;
private set
{
if (m_IsMatchAppTheme != value)
@ -192,7 +188,7 @@ namespace CalculatorApp
public bool IsManualAdjustment
{
get { return m_IsManualAdjustment; }
get => m_IsManualAdjustment;
set
{
if (m_IsManualAdjustment != value)
@ -206,7 +202,7 @@ namespace CalculatorApp
public CalculatorApp.ViewModel.GraphingCalculatorViewModel ViewModel
{
get { return m_viewModel; }
get => m_viewModel;
set
{
if (m_viewModel != value)
@ -239,7 +235,7 @@ namespace CalculatorApp
return numberOfVariables == 0 ? Visibility.Collapsed : Visibility.Visible;
}
public static String GetTracingLegend(bool? isTracing)
public static string GetTracingLegend(bool? isTracing)
{
var resProvider = AppResourceProvider.GetInstance();
return isTracing != null && isTracing.Value ? resProvider.GetResourceString("disableTracingButtonToolTip")
@ -374,8 +370,7 @@ namespace CalculatorApp
private void OnTracePointChanged(double xPointValue, double yPointValue)
{
double xAxisMin, xAxisMax, yAxisMin, yAxisMax;
GraphingControl.GetDisplayRanges(out xAxisMin, out xAxisMax, out yAxisMin, out yAxisMax);
GraphingControl.GetDisplayRanges(out double xAxisMin, out double xAxisMax, out double yAxisMin, out double yAxisMax);
TraceValue.Text = "(" + xPointValue.ToString("R") + ", " + yPointValue.ToString("N15") + ")";
@ -523,8 +518,7 @@ namespace CalculatorApp
private void GraphingControl_LosingFocus(UIElement sender, LosingFocusEventArgs args)
{
var newFocusElement = args.NewFocusedElement as FrameworkElement;
if (newFocusElement == null || newFocusElement.Name == null)
if (!(args.NewFocusedElement is FrameworkElement newFocusElement) || newFocusElement.Name == null)
{
// Because clicking on the swap chain panel will try to move focus to a control that can't actually take focus
// we will get a null destination. So we are going to try and cancel that request.
@ -676,7 +670,7 @@ namespace CalculatorApp
private void SwitchModeToggleButton_Toggled(object sender, RoutedEventArgs e)
{
var narratorNotifier = new NarratorNotifier();
String announcementText;
string announcementText;
if (SwitchModeToggleButton.IsOn)
{
announcementText = AppResourceProvider.GetInstance().GetResourceString("GraphSwitchedToEquationModeAnnouncement");
@ -700,15 +694,19 @@ namespace CalculatorApp
if (m_graphFlyout == null)
{
m_graphFlyout = new Flyout();
m_graphFlyout.Content = m_graphSettings;
m_graphFlyout = new Flyout
{
Content = m_graphSettings
};
}
m_graphSettings.SetGrapher(this.GraphingControl);
m_graphSettings.IsMatchAppTheme = IsMatchAppTheme;
var options = new FlyoutShowOptions();
options.Placement = FlyoutPlacementMode.BottomEdgeAlignedRight;
var options = new FlyoutShowOptions
{
Placement = FlyoutPlacementMode.BottomEdgeAlignedRight
};
m_graphFlyout.ShowAt(GraphSettingsButton, options);
}
@ -730,7 +728,6 @@ namespace CalculatorApp
private void UpdateGraphAutomationName()
{
int numEquations = 0;
double xAxisMin, xAxisMax, yAxisMin, yAxisMax;
// Only count equations that are graphed
foreach (var equation in ViewModel.Equations)
@ -741,7 +738,7 @@ namespace CalculatorApp
}
}
GraphingControl.GetDisplayRanges(out xAxisMin, out xAxisMax, out yAxisMin, out yAxisMax);
GraphingControl.GetDisplayRanges(out double xAxisMin, out double xAxisMax, out double yAxisMin, out double yAxisMax);
GraphControlAutomationName = LocalizationStringUtil.GetLocalizedString(
AppResourceProvider.GetInstance().GetResourceString("graphAutomationName"),
@ -755,9 +752,9 @@ namespace CalculatorApp
private void OnColorValuesChanged(UISettings sender, object args)
{
WeakReference weakThis = new WeakReference(this);
_ = this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() => {
GraphingCalculator refThis = weakThis.Target as GraphingCalculator;
if (refThis != null && IsMatchAppTheme)
_ = this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() =>
{
if (weakThis.Target is GraphingCalculator refThis && IsMatchAppTheme)
{
refThis.UpdateGraphTheme();
}
@ -793,8 +790,7 @@ namespace CalculatorApp
WeakReference weakThis = new WeakReference(this);
_ = this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() =>
{
var refThis = weakThis.Target as GraphingCalculator;
if (refThis != null)
if (weakThis.Target is GraphingCalculator refThis)
{
refThis.UpdateGraphTheme();
}
@ -807,9 +803,9 @@ namespace CalculatorApp
private const string sc_IsGraphThemeMatchApp = "IsGraphThemeMatchApp";
private CalculatorApp.ViewModel.GraphingCalculatorViewModel m_viewModel;
private Windows.UI.ViewManagement.AccessibilitySettings m_accessibilitySettings;
private readonly Windows.UI.ViewManagement.AccessibilitySettings m_accessibilitySettings;
private bool m_cursorShadowInitialized;
private Windows.UI.ViewManagement.UISettings m_uiSettings;
private readonly Windows.UI.ViewManagement.UISettings m_uiSettings;
private Windows.UI.Xaml.Controls.Flyout m_graphFlyout;
private CalculatorApp.GraphingSettings m_graphSettings;
@ -843,8 +839,10 @@ namespace CalculatorApp
private void GraphMenuFlyoutItem_Click(object sender, RoutedEventArgs e)
{
var dataPackage = new DataPackage();
dataPackage.RequestedOperation = DataPackageOperation.Copy;
var dataPackage = new DataPackage
{
RequestedOperation = DataPackageOperation.Copy
};
var bitmapStream = GraphingControl.GetGraphBitmapStream();
dataPackage.SetBitmap(bitmapStream);
@ -882,9 +880,11 @@ namespace CalculatorApp
{
// Something went wrong, notify the user.
var resourceLoader = ResourceLoader.GetForCurrentView();
var errDialog = new ContentDialog();
errDialog.Content = resourceLoader.GetString("ShareActionErrorMessage");
errDialog.CloseButtonText = resourceLoader.GetString("ShareActionErrorOk");
var errDialog = new ContentDialog
{
Content = resourceLoader.GetString("ShareActionErrorMessage"),
CloseButtonText = resourceLoader.GetString("ShareActionErrorOk")
};
_ = errDialog.ShowAsync();
}

View file

@ -1,22 +1,15 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.ViewModel.Common;
using Windows.Foundation;
using Windows.Foundation.Collections;
using System;
using System.Collections.Generic;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
namespace CalculatorApp
{
@ -152,8 +145,7 @@ namespace CalculatorApp
var mathRichEdit = GetActiveRichEdit();
if (mathRichEdit != null)
{
string text;
mathRichEdit.TextDocument.GetText(Windows.UI.Text.TextGetOptions.NoHidden, out text);
mathRichEdit.TextDocument.GetText(Windows.UI.Text.TextGetOptions.NoHidden, out string text);
if (!string.IsNullOrEmpty(text))
{
@ -189,8 +181,7 @@ namespace CalculatorApp
// Adding event because the ShowMode property is ignored in xaml.
private void Flyout_Opening(object sender, object e)
{
var flyout = sender as Flyout;
if (flyout != null)
if (sender is Flyout flyout)
{
flyout.ShowMode = FlyoutShowMode.Transient;
}
@ -269,8 +260,7 @@ namespace CalculatorApp
private static Tuple<string, int, int> GetButtonOutput(NumbersAndOperatorsEnum id)
{
Tuple<string, int, int> output;
if (buttonOutput.TryGetValue(id, out output))
if (buttonOutput.TryGetValue(id, out Tuple<string, int, int> output))
{
return output;
}

View file

@ -3,28 +3,15 @@
// Declaration of the MyUserControl class
//
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
//using Graphing;
using GraphControl;
using CalculatorApp;
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage;
using Windows.System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
namespace CalculatorApp
{
@ -33,20 +20,16 @@ namespace CalculatorApp
{
public GraphingSettings()
{
m_ViewModel = new GraphingSettingsViewModel();
ViewModel = new GraphingSettingsViewModel();
m_IsMatchAppTheme = false;
InitializeComponent();
}
public CalculatorApp.ViewModel.GraphingSettingsViewModel ViewModel
{
get { return m_ViewModel; }
set { m_ViewModel = value; }
}
public CalculatorApp.ViewModel.GraphingSettingsViewModel ViewModel { get; set; }
public bool IsMatchAppTheme
{
get { return m_IsMatchAppTheme; }
get => m_IsMatchAppTheme;
set
{
if (m_IsMatchAppTheme == value)
@ -73,7 +56,7 @@ namespace CalculatorApp
public void SetGrapher(GraphControl.Grapher grapher)
{
m_ViewModel.SetGrapher(grapher);
ViewModel.SetGrapher(grapher);
}
public void RefreshRanges()
@ -133,6 +116,5 @@ namespace CalculatorApp
}
private bool m_IsMatchAppTheme;
private CalculatorApp.ViewModel.GraphingSettingsViewModel m_ViewModel;
};
}

View file

@ -1,18 +1,10 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
using CalculatorApp;
using CalculatorApp.ViewModel;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using System.ComponentModel;
using Windows.UI.Xaml;
namespace CalculatorApp
{
public sealed partial class KeyGraphFeaturesPanel : System.ComponentModel.INotifyPropertyChanged
@ -33,7 +25,7 @@ namespace CalculatorApp
public CalculatorApp.ViewModel.EquationViewModel ViewModel
{
get { return m_viewModel; }
get => m_viewModel;
set
{
if (m_viewModel != value)

View file

@ -1,8 +1,9 @@
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using MUXC = Microsoft.UI.Xaml.Controls;
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
@ -19,10 +20,7 @@ namespace CalculatorApp
HistoryEmpty.FlowDirection = LocalizationService.GetInstance().GetFlowDirection();
}
public CalculatorApp.ViewModel.HistoryViewModel Model
{
get => (CalculatorApp.ViewModel.HistoryViewModel)DataContext;
}
public CalculatorApp.ViewModel.HistoryViewModel Model => (CalculatorApp.ViewModel.HistoryViewModel)DataContext;
public void ScrollToBottom()
{
@ -35,8 +33,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.GridLength RowHeight
{
get { return (Windows.UI.Xaml.GridLength)GetValue(RowHeightProperty); }
set { SetValue(RowHeightProperty, value); }
get => (Windows.UI.Xaml.GridLength)GetValue(RowHeightProperty);
set => SetValue(RowHeightProperty, value);
}
// Using a DependencyProperty as the backing store for RowHeight. This enables animation, styling, binding, etc...

View file

@ -3,9 +3,11 @@ using CalculatorApp.Converters;
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using CalculatorApp.ViewModel.Common.Automation;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using Windows.Foundation;
using Windows.Graphics.Display;
using Windows.Storage;
@ -17,6 +19,7 @@ using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Navigation;
using MUXC = Microsoft.UI.Xaml.Controls;
namespace CalculatorApp
@ -31,27 +34,27 @@ namespace CalculatorApp
public List<object> NavViewCategoriesSource
{
get { return (List<object>)GetValue(NavViewCategoriesSourceProperty); }
set { SetValue(NavViewCategoriesSourceProperty, value); }
get => (List<object>)GetValue(NavViewCategoriesSourceProperty);
set => SetValue(NavViewCategoriesSourceProperty, value);
}
public ApplicationViewModel Model => m_model;
public ApplicationViewModel Model { get; }
public MainPage()
{
m_model = new ApplicationViewModel();
Model = new ApplicationViewModel();
InitializeNavViewCategoriesSource();
InitializeComponent();
KeyboardShortcutManager.Initialize();
Application.Current.Suspending += App_Suspending;
m_model.PropertyChanged += OnAppPropertyChanged;
Model.PropertyChanged += OnAppPropertyChanged;
m_accessibilitySettings = new AccessibilitySettings();
if(Utilities.GetIntegratedDisplaySize(out var sizeInInches))
if (Utilities.GetIntegratedDisplaySize(out var sizeInInches))
{
if(sizeInInches < 7.0) // If device's display size (diagonal length) is less than 7 inches then keep the calc always in Portrait mode only
if (sizeInInches < 7.0) // If device's display size (diagonal length) is less than 7 inches then keep the calc always in Portrait mode only
{
DisplayInformation.AutoRotationPreferences = DisplayOrientations.Portrait | DisplayOrientations.PortraitFlipped;
}
@ -91,7 +94,7 @@ namespace CalculatorApp
public void SetHeaderAutomationName()
{
ViewMode mode = m_model.Mode;
ViewMode mode = Model.Mode;
var resProvider = AppResourceProvider.GetInstance();
string name;
@ -110,7 +113,7 @@ namespace CalculatorApp
{
full = resProvider.GetResourceString("HeaderAutomationName_Converter");
}
name = LocalizationStringUtil.GetLocalizedString(full, m_model.CategoryName);
name = LocalizationStringUtil.GetLocalizedString(full, Model.CategoryName);
}
AutomationProperties.SetName(Header, name);
@ -134,7 +137,7 @@ namespace CalculatorApp
}
}
m_model.Initialize(initialMode);
Model.Initialize(initialMode);
}
private void InitializeNavViewCategoriesSource()
@ -150,7 +153,7 @@ namespace CalculatorApp
{
var graphCategory = (NavCategory)NavViewCategoriesSource.Find(x =>
{
if(x is NavCategory category)
if (x is NavCategory category)
{
return category.ViewMode == ViewMode.Graphing;
}
@ -166,10 +169,10 @@ namespace CalculatorApp
private List<object> ExpandNavViewCategoryGroups(IEnumerable<NavCategoryGroup> groups)
{
var result = new List<object>();
foreach(var group in groups)
foreach (var group in groups)
{
result.Add(group);
foreach(var category in group.Categories)
foreach (var category in group.Categories)
{
result.Add(category);
}
@ -179,7 +182,7 @@ namespace CalculatorApp
private void UpdatePopupSize(Windows.UI.Core.WindowSizeChangedEventArgs e)
{
if(PopupContent != null)
if (PopupContent != null)
{
PopupContent.Width = e.Size.Width;
PopupContent.Height = e.Size.Height;
@ -198,43 +201,43 @@ namespace CalculatorApp
string propertyName = e.PropertyName;
if (propertyName == ApplicationViewModel.ModePropertyName)
{
ViewMode newValue = m_model.Mode;
ViewMode previousMode = m_model.PreviousMode;
ViewMode newValue = Model.Mode;
ViewMode previousMode = Model.PreviousMode;
KeyboardShortcutManager.DisableShortcuts(false);
if (newValue == ViewMode.Standard)
{
EnsureCalculator();
m_model.CalculatorViewModel.HistoryVM.AreHistoryShortcutsEnabled = true;
Model.CalculatorViewModel.HistoryVM.AreHistoryShortcutsEnabled = true;
m_calculator.AnimateCalculator(NavCategory.IsConverterViewMode(previousMode));
m_model.CalculatorViewModel.HistoryVM.ReloadHistory(newValue);
Model.CalculatorViewModel.HistoryVM.ReloadHistory(newValue);
}
else if (newValue == ViewMode.Scientific)
{
EnsureCalculator();
m_model.CalculatorViewModel.HistoryVM.AreHistoryShortcutsEnabled = true;
if (m_model.PreviousMode != ViewMode.Scientific)
Model.CalculatorViewModel.HistoryVM.AreHistoryShortcutsEnabled = true;
if (Model.PreviousMode != ViewMode.Scientific)
{
m_calculator.AnimateCalculator(NavCategory.IsConverterViewMode(previousMode));
}
m_model.CalculatorViewModel.HistoryVM.ReloadHistory(newValue);
Model.CalculatorViewModel.HistoryVM.ReloadHistory(newValue);
}
else if (newValue == ViewMode.Programmer)
{
m_model.CalculatorViewModel.HistoryVM.AreHistoryShortcutsEnabled = false;
Model.CalculatorViewModel.HistoryVM.AreHistoryShortcutsEnabled = false;
EnsureCalculator();
if (m_model.PreviousMode != ViewMode.Programmer)
if (Model.PreviousMode != ViewMode.Programmer)
{
m_calculator.AnimateCalculator(NavCategory.IsConverterViewMode(previousMode));
}
}
else if (NavCategory.IsDateCalculatorViewMode(newValue))
{
if (m_model.CalculatorViewModel != null)
if (Model.CalculatorViewModel != null)
{
m_model.CalculatorViewModel.HistoryVM.AreHistoryShortcutsEnabled = false;
Model.CalculatorViewModel.HistoryVM.AreHistoryShortcutsEnabled = false;
}
EnsureDateCalculator();
}
@ -245,9 +248,9 @@ namespace CalculatorApp
}
else if (NavCategory.IsConverterViewMode(newValue))
{
if (m_model.CalculatorViewModel != null)
if (Model.CalculatorViewModel != null)
{
m_model.CalculatorViewModel.HistoryVM.AreHistoryShortcutsEnabled = false;
Model.CalculatorViewModel.HistoryVM.AreHistoryShortcutsEnabled = false;
}
EnsureConverter();
@ -359,7 +362,7 @@ namespace CalculatorApp
private void OnNavSelectionChanged(object sender, MUXC.NavigationViewSelectionChangedEventArgs e)
{
if(e.IsSettingsSelected)
if (e.IsSettingsSelected)
{
ShowSettingsPopup();
return;
@ -423,10 +426,10 @@ namespace CalculatorApp
private void UpdateViewState()
{
// All layout related view states are now handled only inside individual controls (standard, scientific, programmer, date, converter)
if (NavCategory.IsConverterViewMode(m_model.Mode))
if (NavCategory.IsConverterViewMode(Model.Mode))
{
int modeIndex = NavCategoryStates.GetIndexInGroup(m_model.Mode, CategoryGroupType.Converter);
m_model.ConverterViewModel.CurrentCategory = m_model.ConverterViewModel.Categories[modeIndex];
int modeIndex = NavCategoryStates.GetIndexInGroup(Model.Mode, CategoryGroupType.Converter);
Model.ConverterViewModel.CurrentCategory = Model.ConverterViewModel.Categories[modeIndex];
}
}
@ -453,7 +456,7 @@ namespace CalculatorApp
{
// We have just launched into our default mode (standard calc) so ensure calc is loaded
EnsureCalculator();
m_model.CalculatorViewModel.IsStandard = true;
Model.CalculatorViewModel.IsStandard = true;
}
Window.Current.SizeChanged += WindowSizeChanged;
@ -477,7 +480,7 @@ namespace CalculatorApp
private void App_Suspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e)
{
if (m_model.IsAlwaysOnTop)
if (Model.IsAlwaysOnTop)
{
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
localSettings.Values[ApplicationViewModel.WidthLocalSettings] = ActualWidth;
@ -490,20 +493,30 @@ namespace CalculatorApp
if (m_calculator == null)
{
// delay load calculator.
m_calculator = new Calculator();
m_calculator.Name = "Calculator";
m_calculator.DataContext = m_model.CalculatorViewModel;
Binding isStandardBinding = new Binding();
isStandardBinding.Path = new PropertyPath("IsStandard");
m_calculator = new Calculator
{
Name = "Calculator",
DataContext = Model.CalculatorViewModel
};
Binding isStandardBinding = new Binding
{
Path = new PropertyPath("IsStandard")
};
m_calculator.SetBinding(Calculator.IsStandardProperty, isStandardBinding);
Binding isScientificBinding = new Binding();
isScientificBinding.Path = new PropertyPath("IsScientific");
Binding isScientificBinding = new Binding
{
Path = new PropertyPath("IsScientific")
};
m_calculator.SetBinding(Calculator.IsScientificProperty, isScientificBinding);
Binding isProgramerBinding = new Binding();
isProgramerBinding.Path = new PropertyPath("IsProgrammer");
Binding isProgramerBinding = new Binding
{
Path = new PropertyPath("IsProgrammer")
};
m_calculator.SetBinding(Calculator.IsProgrammerProperty, isProgramerBinding);
Binding isAlwaysOnTopBinding = new Binding();
isAlwaysOnTopBinding.Path = new PropertyPath("IsAlwaysOnTop");
Binding isAlwaysOnTopBinding = new Binding
{
Path = new PropertyPath("IsAlwaysOnTop")
};
m_calculator.SetBinding(Calculator.IsAlwaysOnTopProperty, isAlwaysOnTopBinding);
m_calculator.Style = CalculatorBaseStyle;
@ -526,9 +539,11 @@ namespace CalculatorApp
if (m_dateCalculator == null)
{
// delay loading converter
m_dateCalculator = new DateCalculator();
m_dateCalculator.Name = "dateCalculator";
m_dateCalculator.DataContext = m_model.DateCalcViewModel;
m_dateCalculator = new DateCalculator
{
Name = "dateCalculator",
DataContext = Model.DateCalcViewModel
};
DateCalcHolder.Child = m_dateCalculator;
}
@ -544,9 +559,11 @@ namespace CalculatorApp
{
if (m_graphingCalculator == null)
{
m_graphingCalculator = new GraphingCalculator();
m_graphingCalculator.Name = "GraphingCalculator";
m_graphingCalculator.DataContext = m_model.GraphingCalcViewModel;
m_graphingCalculator = new GraphingCalculator
{
Name = "GraphingCalculator",
DataContext = Model.GraphingCalcViewModel
};
GraphingCalcHolder.Child = m_graphingCalculator;
}
@ -557,10 +574,12 @@ namespace CalculatorApp
if (m_converter == null)
{
// delay loading converter
m_converter = new CalculatorApp.UnitConverter();
m_converter.Name = "unitConverter";
m_converter.DataContext = m_model.ConverterViewModel;
m_converter.Style = UnitConverterBaseStyle;
m_converter = new CalculatorApp.UnitConverter
{
Name = "unitConverter",
DataContext = Model.ConverterViewModel,
Style = UnitConverterBaseStyle
};
ConverterHolder.Child = m_converter;
}
}
@ -596,7 +615,6 @@ namespace CalculatorApp
private GraphingCalculator m_graphingCalculator;
private UnitConverter m_converter;
private DateCalculator m_dateCalculator;
private ApplicationViewModel m_model;
private AccessibilitySettings m_accessibilitySettings;
private readonly AccessibilitySettings m_accessibilitySettings;
}
}

View file

@ -1,6 +1,6 @@
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
@ -17,18 +17,12 @@ namespace CalculatorApp
MemoryPaneEmpty.FlowDirection = LocalizationService.GetInstance().GetFlowDirection();
}
public CalculatorApp.ViewModel.StandardCalculatorViewModel Model
{
get
{
return (CalculatorApp.ViewModel.StandardCalculatorViewModel)this.DataContext;
}
}
public CalculatorApp.ViewModel.StandardCalculatorViewModel Model => (CalculatorApp.ViewModel.StandardCalculatorViewModel)this.DataContext;
public GridLength RowHeight
{
get { return (GridLength)GetValue(RowHeightProperty); }
set { SetValue(RowHeightProperty, value); }
get => (GridLength)GetValue(RowHeightProperty);
set => SetValue(RowHeightProperty, value);
}
// Using a DependencyProperty as the backing store for RowHeight. This enables animation, styling, binding, etc...

View file

@ -1,5 +1,4 @@
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
@ -16,8 +15,8 @@ namespace CalculatorApp
public CalculatorApp.ViewModel.MemoryItemViewModel Model
{
get { return (CalculatorApp.ViewModel.MemoryItemViewModel)GetValue(ModelProperty); }
set { SetValue(ModelProperty, value); }
get => (CalculatorApp.ViewModel.MemoryItemViewModel)GetValue(ModelProperty);
set => SetValue(ModelProperty, value);
}
// Using a DependencyProperty as the backing store for Model. This enables animation, styling, binding, etc...

View file

@ -1,4 +1,5 @@
using CalculatorApp.ViewModel.Common;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
@ -30,8 +31,8 @@ namespace CalculatorApp
public Windows.UI.Xaml.Style ButtonStyle
{
get { return (Windows.UI.Xaml.Style)GetValue(ButtonStyleProperty); }
set { SetValue(ButtonStyleProperty, value); }
get => (Windows.UI.Xaml.Style)GetValue(ButtonStyleProperty);
set => SetValue(ButtonStyleProperty, value);
}
// Using a DependencyProperty as the backing store for ButtonStyle. This enables animation, styling, binding, etc...
@ -40,8 +41,8 @@ namespace CalculatorApp
public CalculatorApp.ViewModel.Common.NumberBase CurrentRadixType
{
get { return (CalculatorApp.ViewModel.Common.NumberBase)GetValue(CurrentRadixTypeProperty); }
set { SetValue(CurrentRadixTypeProperty, value); }
get => (CalculatorApp.ViewModel.Common.NumberBase)GetValue(CurrentRadixTypeProperty);
set => SetValue(CurrentRadixTypeProperty, value);
}
// Using a DependencyProperty as the backing store for CurrentRadixType. This enables animation, styling, binding, etc...
@ -54,7 +55,7 @@ namespace CalculatorApp
public bool IsErrorVisualState
{
get { return m_isErrorVisualState; }
get => m_isErrorVisualState;
set
{
if (m_isErrorVisualState != value)

View file

@ -8,10 +8,7 @@ namespace CalculatorApp
[Windows.Foundation.Metadata.WebHostHidden]
public sealed partial class OperatorsPanel : UserControl
{
public CalculatorApp.ViewModel.StandardCalculatorViewModel Model
{
get => (CalculatorApp.ViewModel.StandardCalculatorViewModel)DataContext;
}
public CalculatorApp.ViewModel.StandardCalculatorViewModel Model => (CalculatorApp.ViewModel.StandardCalculatorViewModel)DataContext;
public OperatorsPanel()
{
@ -20,8 +17,8 @@ namespace CalculatorApp
public bool IsBitFlipChecked
{
get { return (bool)GetValue(IsBitFlipCheckedProperty); }
set { SetValue(IsBitFlipCheckedProperty, value); }
get => (bool)GetValue(IsBitFlipCheckedProperty);
set => SetValue(IsBitFlipCheckedProperty, value);
}
// Using a DependencyProperty as the backing store for IsBitFlipChecked. This enables animation, styling, binding, etc...
@ -34,8 +31,8 @@ namespace CalculatorApp
public bool IsErrorVisualState
{
get { return (bool)GetValue(IsErrorVisualStateProperty); }
set { SetValue(IsErrorVisualStateProperty, value); }
get => (bool)GetValue(IsErrorVisualStateProperty);
set => SetValue(IsErrorVisualStateProperty, value);
}
// Using a DependencyProperty as the backing store for IsErrorVisualState. This enables animation, styling, binding, etc...
@ -46,7 +43,7 @@ namespace CalculatorApp
self.OnIsErrorVisualStatePropertyChanged((bool)args.OldValue, (bool)args.NewValue);
}));
void OnIsBitFlipCheckedPropertyChanged(bool oldValue, bool newValue)
private void OnIsBitFlipCheckedPropertyChanged(bool oldValue, bool newValue)
{
if (newValue)
{

View file

@ -1,21 +1,18 @@
using CalculatorApp.Utils;
using CalculatorApp.ViewModel.Common;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.ApplicationModel;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using CalculatorApp.ViewModel.Common.Automation;
using System;
using System.Diagnostics;
using System.Linq;
using Windows.ApplicationModel;
using Windows.System;
using Windows.UI.Core;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation.Peers;
using Windows.UI.Xaml.Automation.Provider;
using Windows.UI.Xaml.Controls;
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
@ -29,8 +26,8 @@ namespace CalculatorApp
public GridLength TitleBarHeight
{
get { return (GridLength)GetValue(TitleBarHeightProperty); }
set { SetValue(TitleBarHeightProperty, value); }
get => (GridLength)GetValue(TitleBarHeightProperty);
set => SetValue(TitleBarHeightProperty, value);
}
public static readonly DependencyProperty TitleBarHeightProperty =
DependencyProperty.Register(nameof(TitleBarHeight), typeof(GridLength), typeof(Settings), new PropertyMetadata(default(GridLength)));

View file

@ -30,8 +30,8 @@ namespace CalculatorApp.Views.StateTriggers
/* The source for which this class will respond to size changed events. */
public FrameworkElement Source
{
get { return (FrameworkElement)GetValue(SourceProperty); }
set { SetValue(SourceProperty, value); }
get => (FrameworkElement)GetValue(SourceProperty);
set => SetValue(SourceProperty, value);
}
// Using a DependencyProperty as the backing store for Source. This enables animation, styling, binding, etc...
@ -46,8 +46,8 @@ namespace CalculatorApp.Views.StateTriggers
the aspect ratio. */
public Aspect NumeratorAspect
{
get { return (Aspect)GetValue(NumeratorAspectProperty); }
set { SetValue(NumeratorAspectProperty, value); }
get => (Aspect)GetValue(NumeratorAspectProperty);
set => SetValue(NumeratorAspectProperty, value);
}
// Using a DependencyProperty as the backing store for NumeratorAspect This enables animation, styling, binding, etc...
@ -57,8 +57,8 @@ namespace CalculatorApp.Views.StateTriggers
/* The threshold that will cause the trigger to fire when the aspect ratio exceeds this value. */
public double Threshold
{
get { return (double)GetValue(ThresholdProperty); }
set { SetValue(ThresholdProperty, value); }
get => (double)GetValue(ThresholdProperty);
set => SetValue(ThresholdProperty, value);
}
// Using a DependencyProperty as the backing store for Threshold. This enables animation, styling, binding, etc...
@ -68,8 +68,8 @@ namespace CalculatorApp.Views.StateTriggers
/* If true, the trigger will fire if the aspect ratio is greater than or equal to the threshold. */
public bool ActiveIfEqual
{
get { return (bool)GetValue(ActiveIfEqualProperty); }
set { SetValue(ActiveIfEqualProperty, value); }
get => (bool)GetValue(ActiveIfEqualProperty);
set => SetValue(ActiveIfEqualProperty, value);
}
// Using a DependencyProperty as the backing store for ActiveEqual. This enables animation, styling, binding, etc...

View file

@ -1,8 +1,6 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using Windows.Foundation;
using Windows.UI.Xaml;
@ -17,8 +15,8 @@ namespace CalculatorApp.Views.StateTriggers
public FrameworkElement Source
{
get { return (FrameworkElement)GetValue(SourceProperty); }
set { SetValue(SourceProperty, value); }
get => (FrameworkElement)GetValue(SourceProperty);
set => SetValue(SourceProperty, value);
}
// Using a DependencyProperty as the backing store for Source. This enables animation, styling, binding, etc...
@ -31,8 +29,8 @@ namespace CalculatorApp.Views.StateTriggers
public double MinHeight
{
get { return (double)GetValue(MinHeightProperty); }
set { SetValue(MinHeightProperty, value); }
get => (double)GetValue(MinHeightProperty);
set => SetValue(MinHeightProperty, value);
}
// Using a DependencyProperty as the backing store for MinHeight. This enables animation, styling, binding, etc...
@ -41,8 +39,8 @@ namespace CalculatorApp.Views.StateTriggers
public double MinWidth
{
get { return (double)GetValue(MinWidthProperty); }
set { SetValue(MinWidthProperty, value); }
get => (double)GetValue(MinWidthProperty);
set => SetValue(MinWidthProperty, value);
}
// Using a DependencyProperty as the backing store for MinWidth. This enables animation, styling, binding, etc...

View file

@ -1,7 +1,9 @@
using CalculatorApp.ViewModel;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
@ -13,8 +15,10 @@ namespace CalculatorApp
{
public DelighterUnitToStyleConverter()
{
m_delighters = new Windows.UI.Xaml.ResourceDictionary();
m_delighters.Source = new Uri(@"ms-appx:///Views/DelighterUnitStyles.xaml");
m_delighters = new Windows.UI.Xaml.ResourceDictionary
{
Source = new Uri(@"ms-appx:///Views/DelighterUnitStyles.xaml")
};
}
public object Convert(object value, Type targetType, object parameter, string language)
@ -37,7 +41,7 @@ namespace CalculatorApp
return null;
}
private Windows.UI.Xaml.ResourceDictionary m_delighters;
private readonly Windows.UI.Xaml.ResourceDictionary m_delighters;
}
public sealed class SupplementaryResultDataTemplateSelector : Windows.UI.Xaml.Controls.DataTemplateSelector
@ -45,17 +49,9 @@ namespace CalculatorApp
public SupplementaryResultDataTemplateSelector()
{ }
public Windows.UI.Xaml.DataTemplate RegularTemplate
{
get => m_regularTemplate;
set => m_regularTemplate = value;
}
public Windows.UI.Xaml.DataTemplate RegularTemplate { get; set; }
public Windows.UI.Xaml.DataTemplate DelighterTemplate
{
get => m_delighterTemplate;
set => m_delighterTemplate = value;
}
public Windows.UI.Xaml.DataTemplate DelighterTemplate { get; set; }
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
@ -69,9 +65,6 @@ namespace CalculatorApp
return RegularTemplate;
}
}
private Windows.UI.Xaml.DataTemplate m_regularTemplate;
private Windows.UI.Xaml.DataTemplate m_delighterTemplate;
}
public sealed class SupplementaryResultNoOverflowStackPanel : CalculatorApp.Controls.HorizontalNoOverflowStackPanel
@ -83,14 +76,12 @@ namespace CalculatorApp
return false;
}
var lastChild = Children[Children.Count - 1] as FrameworkElement;
if (lastChild == null)
if (!(Children[Children.Count - 1] is FrameworkElement lastChild))
{
return false;
}
var suppResult = lastChild.DataContext as SupplementaryResult;
return suppResult == null ? false : suppResult.IsWhimsical();
return lastChild.DataContext is SupplementaryResult suppResult && suppResult.IsWhimsical();
}
}
@ -104,8 +95,8 @@ namespace CalculatorApp
public IEnumerable<ViewModel.SupplementaryResult> Results
{
get { return (IEnumerable<ViewModel.SupplementaryResult>)GetValue(ResultsProperty); }
set { SetValue(ResultsProperty, value); }
get => (IEnumerable<ViewModel.SupplementaryResult>)GetValue(ResultsProperty);
set => SetValue(ResultsProperty, value);
}
// Using a DependencyProperty as the backing store for Results. This enables animation, styling, binding, etc...

View file

@ -1,4 +1,5 @@
using CalculatorApp.ViewModel.Common;
using Windows.ApplicationModel.Core;
using Windows.System.Profile;
using Windows.UI.Core;
@ -34,8 +35,8 @@ namespace CalculatorApp
public bool IsAlwaysOnTopMode
{
get { return (bool)GetValue(IsAlwaysOnTopModeProperty); }
set { SetValue(IsAlwaysOnTopModeProperty, value); }
get => (bool)GetValue(IsAlwaysOnTopModeProperty);
set => SetValue(IsAlwaysOnTopModeProperty, value);
}
// Using a DependencyProperty as the backing store for IsAlwaysOnTopMode. This enables animation, styling, binding, etc...
@ -89,7 +90,7 @@ namespace CalculatorApp
private void RootFrame_RequestedThemeChanged(DependencyObject sender, DependencyProperty dp)
{
if(Frame.RequestedThemeProperty == dp)
if (Frame.RequestedThemeProperty == dp)
{
_ = Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() => { SetTitleBarControlColors(); }));
}
@ -210,64 +211,64 @@ namespace CalculatorApp
// Dependency properties for the color of the system title bar buttons
public Windows.UI.Xaml.Media.SolidColorBrush ButtonBackground
{
get { return (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonBackgroundProperty); }
set { SetValue(ButtonBackgroundProperty, value); }
get => (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonBackgroundProperty);
set => SetValue(ButtonBackgroundProperty, value);
}
public static readonly DependencyProperty ButtonBackgroundProperty =
DependencyProperty.Register(nameof(ButtonBackground), typeof(Windows.UI.Xaml.Media.SolidColorBrush), typeof(TitleBar), new PropertyMetadata(null));
public Windows.UI.Xaml.Media.SolidColorBrush ButtonForeground
{
get { return (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonForegroundProperty); }
set { SetValue(ButtonForegroundProperty, value); }
get => (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonForegroundProperty);
set => SetValue(ButtonForegroundProperty, value);
}
public static readonly DependencyProperty ButtonForegroundProperty =
DependencyProperty.Register(nameof(ButtonForeground), typeof(Windows.UI.Xaml.Media.SolidColorBrush), typeof(TitleBar), new PropertyMetadata(null));
public Windows.UI.Xaml.Media.SolidColorBrush ButtonInactiveBackground
{
get { return (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonInactiveBackgroundProperty); }
set { SetValue(ButtonInactiveBackgroundProperty, value); }
get => (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonInactiveBackgroundProperty);
set => SetValue(ButtonInactiveBackgroundProperty, value);
}
public static readonly DependencyProperty ButtonInactiveBackgroundProperty =
DependencyProperty.Register(nameof(ButtonInactiveBackground), typeof(Windows.UI.Xaml.Media.SolidColorBrush), typeof(TitleBar), new PropertyMetadata(null));
public Windows.UI.Xaml.Media.SolidColorBrush ButtonInactiveForeground
{
get { return (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonInactiveForegroundProperty); }
set { SetValue(ButtonInactiveForegroundProperty, value); }
get => (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonInactiveForegroundProperty);
set => SetValue(ButtonInactiveForegroundProperty, value);
}
public static readonly DependencyProperty ButtonInactiveForegroundProperty =
DependencyProperty.Register(nameof(ButtonInactiveForeground), typeof(Windows.UI.Xaml.Media.SolidColorBrush), typeof(TitleBar), new PropertyMetadata(null));
public Windows.UI.Xaml.Media.SolidColorBrush ButtonHoverBackground
{
get { return (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonHoverBackgroundProperty); }
set { SetValue(ButtonHoverBackgroundProperty, value); }
get => (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonHoverBackgroundProperty);
set => SetValue(ButtonHoverBackgroundProperty, value);
}
public static readonly DependencyProperty ButtonHoverBackgroundProperty =
DependencyProperty.Register(nameof(ButtonHoverBackground), typeof(Windows.UI.Xaml.Media.SolidColorBrush), typeof(TitleBar), new PropertyMetadata(null));
public Windows.UI.Xaml.Media.SolidColorBrush ButtonHoverForeground
{
get { return (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonHoverForegroundProperty); }
set { SetValue(ButtonHoverForegroundProperty, value); }
get => (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonHoverForegroundProperty);
set => SetValue(ButtonHoverForegroundProperty, value);
}
public static readonly DependencyProperty ButtonHoverForegroundProperty =
DependencyProperty.Register(nameof(ButtonHoverForeground), typeof(Windows.UI.Xaml.Media.SolidColorBrush), typeof(TitleBar), new PropertyMetadata(null));
public Windows.UI.Xaml.Media.SolidColorBrush ButtonPressedBackground
{
get { return (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonPressedBackgroundProperty); }
set { SetValue(ButtonPressedBackgroundProperty, value); }
get => (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonPressedBackgroundProperty);
set => SetValue(ButtonPressedBackgroundProperty, value);
}
public static readonly DependencyProperty ButtonPressedBackgroundProperty =
DependencyProperty.Register(nameof(ButtonPressedBackground), typeof(Windows.UI.Xaml.Media.SolidColorBrush), typeof(TitleBar), new PropertyMetadata(null));
public Windows.UI.Xaml.Media.SolidColorBrush ButtonPressedForeground
{
get { return (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonPressedForegroundProperty); }
set { SetValue(ButtonPressedForegroundProperty, value); }
get => (Windows.UI.Xaml.Media.SolidColorBrush)GetValue(ButtonPressedForegroundProperty);
set => SetValue(ButtonPressedForegroundProperty, value);
}
public static readonly DependencyProperty ButtonPressedForegroundProperty =
DependencyProperty.Register(nameof(ButtonPressedForeground), typeof(Windows.UI.Xaml.Media.SolidColorBrush), typeof(TitleBar), new PropertyMetadata(null));
@ -280,15 +281,16 @@ namespace CalculatorApp
public static readonly DependencyProperty BackButtonSpaceReservedProperty =
DependencyProperty.Register(
nameof(BackButtonSpaceReserved), typeof(bool), typeof(TitleBar),
new PropertyMetadata(false, new PropertyChangedCallback((sender, args)=> {
new PropertyMetadata(false, new PropertyChangedCallback((sender, args) =>
{
var self = sender as TitleBar;
VisualStateManager.GoToState(
self, (bool)args.NewValue ? self.BackButtonVisible.Name : self.BackButtonCollapsed.Name, true);
})));
private Windows.ApplicationModel.Core.CoreApplicationViewTitleBar m_coreTitleBar;
private Windows.UI.ViewManagement.UISettings m_uiSettings;
private Windows.UI.ViewManagement.AccessibilitySettings m_accessibilitySettings;
private readonly Windows.ApplicationModel.Core.CoreApplicationViewTitleBar m_coreTitleBar;
private readonly Windows.UI.ViewManagement.UISettings m_uiSettings;
private readonly Windows.UI.ViewManagement.AccessibilitySettings m_accessibilitySettings;
private Utils.ThemeHelper.ThemeChangedCallbackToken m_rootFrameRequestedThemeCallbackToken;
}
}

View file

@ -2,10 +2,12 @@ using CalculatorApp.Common;
using CalculatorApp.Controls;
using CalculatorApp.ViewModel;
using CalculatorApp.ViewModel.Common;
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Threading.Tasks;
using Windows.Foundation;
using Windows.System;
using Windows.UI.ViewManagement;
@ -18,7 +20,7 @@ using Windows.UI.Xaml.Input;
namespace CalculatorApp
{
class Activatable : ViewModel.IActivatable
internal class Activatable : ViewModel.IActivatable
{
public Activatable(Func<bool> getter, Action<bool> setter)
{
@ -32,8 +34,8 @@ namespace CalculatorApp
set => m_setter(value);
}
private Func<bool> m_getter;
private Action<bool> m_setter;
private readonly Func<bool> m_getter;
private readonly Action<bool> m_setter;
}
public sealed partial class UnitConverter : UserControl
@ -41,8 +43,8 @@ namespace CalculatorApp
public UnitConverter()
{
m_meteredConnectionOverride = false;
m_layoutDirection = LocalizationService.GetInstance().GetFlowDirection();
m_FlowDirectionHorizontalAlignment = m_layoutDirection == FlowDirection.RightToLeft ? HorizontalAlignment.Right : HorizontalAlignment.Left;
LayoutDirection = LocalizationService.GetInstance().GetFlowDirection();
FlowDirectionHorizontalAlignment = LayoutDirection == FlowDirection.RightToLeft ? HorizontalAlignment.Right : HorizontalAlignment.Left;
InitializeComponent();
@ -68,12 +70,7 @@ namespace CalculatorApp
PasteMenuItem.Text = resLoader.GetResourceString("pasteMenuItem");
}
public Windows.UI.Xaml.HorizontalAlignment FlowDirectionHorizontalAlignment
{
get => this.m_FlowDirectionHorizontalAlignment;
}
private Windows.UI.Xaml.HorizontalAlignment m_FlowDirectionHorizontalAlignment = default(HorizontalAlignment);
public Windows.UI.Xaml.HorizontalAlignment FlowDirectionHorizontalAlignment { get; } = default;
public void AnimateConverter()
{
@ -83,15 +80,9 @@ namespace CalculatorApp
}
}
public CalculatorApp.ViewModel.UnitConverterViewModel Model
{
get => (CalculatorApp.ViewModel.UnitConverterViewModel)this.DataContext;
}
public CalculatorApp.ViewModel.UnitConverterViewModel Model => (CalculatorApp.ViewModel.UnitConverterViewModel)this.DataContext;
public Windows.UI.Xaml.FlowDirection LayoutDirection
{
get => this.m_layoutDirection;
}
public Windows.UI.Xaml.FlowDirection LayoutDirection { get; } = default;
public void SetDefaultFocus()
{
@ -121,8 +112,7 @@ namespace CalculatorApp
PasteMenuItem.IsEnabled = CopyPasteManager.HasStringToPaste();
Point point;
if (e.TryGetPosition(requestedElement, out point))
if (e.TryGetPosition(requestedElement, out Point point))
{
m_resultsFlyout.ShowAt(requestedElement, point);
}
@ -146,7 +136,7 @@ namespace CalculatorApp
CopyPasteManager.CopyToClipboard(calcResult.GetRawDisplayValue());
}
void OnPasteMenuItemClicked(object sender, RoutedEventArgs e)
private void OnPasteMenuItemClicked(object sender, RoutedEventArgs e)
{
UnitConverter that = this;
_ = Task.Run(async () =>
@ -276,7 +266,7 @@ namespace CalculatorApp
}
}
void OnOptInNetworkAccess()
private void OnOptInNetworkAccess()
{
CurrencyRefreshBlockControl.Visibility = Visibility.Visible;
OfflineBlock.Visibility = Visibility.Collapsed;
@ -291,7 +281,7 @@ namespace CalculatorApp
}
}
void OnOfflineNetworkAccess()
private void OnOfflineNetworkAccess()
{
CurrencyRefreshBlockControl.Visibility = Visibility.Collapsed;
OfflineBlock.Visibility = Visibility.Visible;
@ -361,8 +351,10 @@ namespace CalculatorApp
TimeSpan delay = TimeSpan.FromMilliseconds(500);
m_delayTimer = new DispatcherTimer();
m_delayTimer.Interval = delay;
m_delayTimer = new DispatcherTimer
{
Interval = delay
};
m_delayTimer.Tick += OnDelayTimerTick;
m_delayTimer.Start();
@ -396,12 +388,11 @@ namespace CalculatorApp
TraceLogger.GetInstance().LogVisualStateChanged(mode, e.NewState.Name, false);
}
private static Lazy<UISettings> uiSettings = new Lazy<UISettings>(true);
private Windows.UI.Xaml.FlowDirection m_layoutDirection = default(FlowDirection);
private Windows.UI.Xaml.Controls.MenuFlyout m_resultsFlyout = default(MenuFlyout);
private static readonly Lazy<UISettings> uiSettings = new Lazy<UISettings>(true);
private readonly Windows.UI.Xaml.Controls.MenuFlyout m_resultsFlyout = default;
private string m_chargesMayApplyText = string.Empty;
private string m_failedToRefreshText = string.Empty;
private readonly string m_chargesMayApplyText = string.Empty;
private readonly string m_failedToRefreshText = string.Empty;
private bool m_meteredConnectionOverride;

View file

@ -3,11 +3,13 @@
using CalculatorApp.Common;
using CalculatorApp.ViewModel.Common;
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Threading.Tasks;
using Windows.ApplicationModel.Core;
using Windows.UI.Core;
using Windows.UI.ViewManagement;
@ -164,8 +166,7 @@ namespace CalculatorApp
// Returns nullptr if no service is registered with the specified id
private object TryResolveRuntimeWindowService(Type serviceId)
{
object retval;
if (m_runtimeServicesMap.TryGetValue(serviceId.Name, out retval))
if (m_runtimeServicesMap.TryGetValue(serviceId.Name, out object retval))
{
return retval;
}
@ -175,14 +176,14 @@ namespace CalculatorApp
}
}
private Windows.UI.Core.CoreWindow m_currentWindow;
private Windows.UI.Core.CoreDispatcher m_coreDispatcher;
private readonly Windows.UI.Core.CoreWindow m_currentWindow;
private readonly Windows.UI.Core.CoreDispatcher m_coreDispatcher;
private Windows.UI.Xaml.Controls.Frame m_frame;
private int m_viewId;
private WeakReference m_parent;
private readonly int m_viewId;
private readonly WeakReference m_parent;
private Dictionary<string, object> m_runtimeServicesMap = new Dictionary<string, object>();
private List<Action> m_onWindowClosingHandlers = new List<Action>();
private readonly Dictionary<string, object> m_runtimeServicesMap = new Dictionary<string, object>();
private readonly List<Action> m_onWindowClosingHandlers = new List<Action>();
}
}

View file

@ -2,6 +2,7 @@
// Licensed under the MIT License.
using OpenQA.Selenium;
using OpenQA.Selenium.Appium.Windows;
using System.Drawing;
namespace CalculatorUITestFramework

View file

@ -1,9 +1,10 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium.Appium.Windows;
using System;
using OpenQA.Selenium.Interactions;
namespace CalculatorUITestFramework
{

View file

@ -2,9 +2,6 @@
// Licensed under the MIT License.
using OpenQA.Selenium.Appium;
using System;
using System.Collections.Generic;
using System.Text;
namespace CalculatorUITestFramework
{

View file

@ -2,11 +2,10 @@
// Licensed under the MIT License.
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Windows;
using OpenQA.Selenium.Interactions;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
using System.Linq;

View file

@ -2,9 +2,6 @@
// Licensed under the MIT License.
using OpenQA.Selenium.Appium;
using System;
using System.Collections.Generic;
using System.Text;
namespace CalculatorUITestFramework
{

View file

@ -2,12 +2,12 @@
// Licensed under the MIT License.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Windows;
using OpenQA.Selenium.Interactions;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
using System.Linq;

View file

@ -2,6 +2,7 @@
// Licensed under the MIT License.
using OpenQA.Selenium.Appium.Windows;
using System;
namespace CalculatorUITestFramework
@ -44,7 +45,7 @@ namespace CalculatorUITestFramework
switch (mode)
{
case CalculatorMode.StandardCalculator:
modeAccessibilityId = "Standard";
modeAccessibilityId = "Standard";
break;
case CalculatorMode.ScientificCalculator:
modeAccessibilityId = "Scientific";

View file

@ -2,6 +2,7 @@
// Licensed under the MIT License.
using OpenQA.Selenium.Appium.Windows;
using System;
using System.Globalization;
@ -76,7 +77,7 @@ namespace CalculatorUITestFramework
this.NegateButton.Click();
break;
default:
throw (new ArgumentException(String.Format("{0} is not valid", digit)));
throw (new ArgumentException(string.Format("{0} is not valid", digit)));
}
}
}

View file

@ -1,7 +1,6 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium.Appium.Windows;
namespace CalculatorUITestFramework

View file

@ -3,11 +3,6 @@
using OpenQA.Selenium;
using OpenQA.Selenium.Appium.Windows;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Runtime.InteropServices.ComTypes;
using System;
using System.Diagnostics;
namespace CalculatorUITestFramework
{

View file

@ -1,7 +1,6 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium.Appium.Windows;
namespace CalculatorUITestFramework

View file

@ -3,11 +3,8 @@
using OpenQA.Selenium;
using OpenQA.Selenium.Appium.Windows;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Runtime.InteropServices.ComTypes;
using System;
using System.Diagnostics;
namespace CalculatorUITestFramework
{
@ -112,25 +109,25 @@ namespace CalculatorUITestFramework
public void SetAngleOperator(AngleOperatorState value)
{
//set the desired string value for the button
string desiredId;
switch (value)
{
case AngleOperatorState.Degrees:
desiredId = "degButton";
break;
case AngleOperatorState.Gradians:
desiredId = "gradButton";
break;
case AngleOperatorState.Radians:
desiredId = "radButton";
break;
default:
throw new NotImplementedException();
}
while (this.DegRadGradButton.GetAttribute("AutomationId") != desiredId)
{
this.DegRadGradButton.Click();
}
string desiredId;
switch (value)
{
case AngleOperatorState.Degrees:
desiredId = "degButton";
break;
case AngleOperatorState.Gradians:
desiredId = "gradButton";
break;
case AngleOperatorState.Radians:
desiredId = "radButton";
break;
default:
throw new NotImplementedException();
}
while (this.DegRadGradButton.GetAttribute("AutomationId") != desiredId)
{
this.DegRadGradButton.Click();
}
}
public void ResetFEButton(FEButtonState value)

View file

@ -1,10 +1,12 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Windows;
using OpenQA.Selenium.Interactions;
using System.Drawing;
namespace CalculatorUITestFramework

View file

@ -1,9 +1,6 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using OpenQA.Selenium.Appium.Windows;
using System;
using System.Collections.Generic;
using System.Text;
namespace CalculatorUITestFramework
{

View file

@ -1,9 +1,6 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using OpenQA.Selenium.Appium.Windows;
using System;
using System.Collections.Generic;
using System.Text;
namespace CalculatorUITestFramework
{

View file

@ -1,9 +1,9 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium.Appium.Windows;
using System;
using OpenQA.Selenium.Interactions;
using System.Text.RegularExpressions;
namespace CalculatorUITestFramework

View file

@ -2,10 +2,11 @@
// Licensed under the MIT License.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Windows;
using System;
using System.Diagnostics;
namespace CalculatorUITestFramework
{
@ -41,7 +42,7 @@ namespace CalculatorUITestFramework
this.windowsDriverService.OutputDataReceived += (sender, e) =>
{
var outputData = e.Data?.Replace("\0", string.Empty);
if (!String.IsNullOrEmpty(outputData))
if (!string.IsNullOrEmpty(outputData))
{
Console.WriteLine(outputData);
}

View file

@ -24,10 +24,10 @@ namespace CalculatorUITestFramework
{
public class WindowsDriverLocalService : IDisposable
{
private FileInfo FileName;
private string Arguments;
private IPAddress IP;
private int Port;
private readonly FileInfo FileName;
private readonly string Arguments;
private readonly IPAddress IP;
private readonly int Port;
private TimeSpan InitializationTimeout;
private Process Service;
@ -119,11 +119,7 @@ namespace CalculatorUITestFramework
GC.SuppressFinalize(this);
}
public Uri ServiceUrl
{
// Note: append /wd/hub to the URL if you're directing the test at Appium
get { return new Uri($"http://{this.IP}:{Convert.ToString(this.Port)}"); }
}
public Uri ServiceUrl => new Uri($"http://{this.IP}:{Convert.ToString(this.Port)}");
private void DestroyProcess()
{

View file

@ -39,11 +39,7 @@ namespace CalculatorUITestFramework
public WindowsDriverServiceBuilder WithFileInfo(FileInfo fileInfo)
{
if (fileInfo == null)
{
throw new ArgumentNullException("FileInfo should not be NULL");
}
this.FileInfo = fileInfo;
this.FileInfo = fileInfo ?? throw new ArgumentNullException("FileInfo should not be NULL");
return this;
}

View file

@ -3,8 +3,9 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting.Logging;
using OpenQA.Selenium.Appium.Windows;
using System;
using System.Diagnostics;
using System.Threading;

View file

@ -1,16 +1,15 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using CalculatorUITestFramework;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using System;
namespace CalculatorUITests
{
[TestClass]
public class CurrencyConverterFunctionalTests
{
private static UnitConverterPage page = new UnitConverterPage();
private static readonly UnitConverterPage page = new UnitConverterPage();
public TestContext TestContext { get; set; }
@ -64,7 +63,7 @@ namespace CalculatorUITests
}
else
{
parts[1] = parts[1].Substring(0, fractionDigits);
parts[1] = parts[1][..fractionDigits];
}
return $"{parts[0]}.{parts[1]}".TrimEnd('.');

View file

@ -2,9 +2,12 @@
// Licensed under the MIT License.
using CalculatorUITestFramework;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
using System;
namespace CalculatorUITests
@ -12,7 +15,7 @@ namespace CalculatorUITests
[TestClass]
public class HistoryFunctionalTests
{
private static StandardCalculatorPage page = new StandardCalculatorPage();
private static readonly StandardCalculatorPage page = new StandardCalculatorPage();
/// <summary>
/// Initializes the WinAppDriver web driver session.

View file

@ -2,9 +2,12 @@
// Licensed under the MIT License.
using CalculatorUITestFramework;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
using System;
namespace CalculatorUITests
@ -12,7 +15,7 @@ namespace CalculatorUITests
[TestClass]
public class MemoryFunctionalTests
{
private static StandardCalculatorPage page = new StandardCalculatorPage();
private static readonly StandardCalculatorPage page = new StandardCalculatorPage();
/// <summary>
/// Initializes the WinAppDriver web driver session.

View file

@ -2,8 +2,11 @@
// Licensed under the MIT License.
using CalculatorUITestFramework;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using System;
namespace CalculatorUITests
@ -11,7 +14,7 @@ namespace CalculatorUITests
[TestClass]
public class ProgrammerModeFunctionalTests
{
private static ProgrammerCalculatorPage page = new ProgrammerCalculatorPage();
private static readonly ProgrammerCalculatorPage page = new ProgrammerCalculatorPage();
/// <summary>
/// Initializes the WinAppDriver web driver session.
@ -637,7 +640,7 @@ namespace CalculatorUITests
page.ProgrammerOperators.RightShiftLogicalButton.Click();
page.StandardOperators.NumberPad.Input(1);
page.StandardOperators.EqualButton.Click();
Assert.IsTrue(String.Equals(page.CalculatorResults.GetCalculatorResultText(), "0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1", StringComparison.OrdinalIgnoreCase));
Assert.IsTrue(string.Equals(page.CalculatorResults.GetCalculatorResultText(), "0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1", StringComparison.OrdinalIgnoreCase));
}
/// <summary>

View file

@ -2,18 +2,15 @@
// Licensed under the MIT License.
using CalculatorUITestFramework;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium.Windows;
using System;
using System.Collections.Generic;
namespace CalculatorUITests
{
[TestClass]
public class ScientificModeFunctionalTests
{
private static ScientificCalculatorPage page = new ScientificCalculatorPage();
private static readonly ScientificCalculatorPage page = new ScientificCalculatorPage();
/// <summary>
/// Initializes the WinAppDriver web driver session.

View file

@ -2,8 +2,11 @@
// Licensed under the MIT License.
using CalculatorUITestFramework;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using System;
using System.Text.RegularExpressions;
@ -12,7 +15,7 @@ namespace CalculatorUITests
[TestClass]
public class StandardModeFunctionalTests
{
private static StandardCalculatorPage page = new StandardCalculatorPage();
private static readonly StandardCalculatorPage page = new StandardCalculatorPage();
/// <summary>
/// Initializes the WinAppDriver web driver session.