Run C# import cleanup based on the Solution files (#1838)

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-06-14 03:56:37 -04:00 коммит произвёл GitHub
Родитель 6430551167
Коммит 91adfd8e9e
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
86 изменённых файлов: 682 добавлений и 1087 удалений

Просмотреть файл

@ -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;
}

Просмотреть файл

@ -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" />

Просмотреть файл

@ -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);
}

Просмотреть файл

@ -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);
}
}

Просмотреть файл

@ -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;
@ -585,7 +580,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
@ -604,10 +599,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)
@ -668,7 +662,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;
}
@ -699,7 +693,7 @@ namespace CalculatorApp
}
var buttons = EqualRange(lookupMap, (MyVirtualKey)myVirtualKey);
if (buttons.Count() <= 0)
if (!buttons.Any())
{
return;
}
@ -754,7 +748,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);
}
}
@ -835,18 +829,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();

Просмотреть файл

@ -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)

Просмотреть файл

@ -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);
}
}
}

Просмотреть файл

@ -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;
}

Просмотреть файл

@ -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()

Просмотреть файл

@ -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...

Просмотреть файл

@ -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)

Просмотреть файл

@ -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...

Просмотреть файл

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

Просмотреть файл

@ -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...

Просмотреть файл

@ -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...

Просмотреть файл

@ -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;

Просмотреть файл

@ -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()

Просмотреть файл

@ -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
{

Просмотреть файл

@ -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);
}
}

Просмотреть файл

@ -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()
{

Просмотреть файл

@ -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;
}
}

Просмотреть файл

@ -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);
}
}
}

Просмотреть файл

@ -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; }
}
}
}

Просмотреть файл

@ -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);
}

Просмотреть файл

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

Просмотреть файл

@ -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;
}

Просмотреть файл

@ -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

Просмотреть файл

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

Просмотреть файл

@ -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);
}

Просмотреть файл

@ -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;
}
}

Просмотреть файл

@ -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);

Просмотреть файл

@ -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;
}

Просмотреть файл

@ -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;

Просмотреть файл

@ -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;
}

Просмотреть файл

@ -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
{

Просмотреть файл

@ -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...

Просмотреть файл

@ -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";

Просмотреть файл

@ -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";

Просмотреть файл

@ -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...

Просмотреть файл

@ -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)

Просмотреть файл

@ -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
{

Просмотреть файл

@ -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;

Просмотреть файл

@ -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...

Просмотреть файл

@ -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();
}

Просмотреть файл

@ -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;
}

Просмотреть файл

@ -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;
};
}

Просмотреть файл

@ -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)

Просмотреть файл

@ -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...

Просмотреть файл

@ -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;
}
}

Просмотреть файл

@ -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...

Просмотреть файл

@ -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...

Просмотреть файл

@ -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)

Просмотреть файл

@ -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)
{

Просмотреть файл

@ -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)));

Просмотреть файл

@ -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...

Просмотреть файл

@ -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...

Просмотреть файл

@ -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...

Просмотреть файл

@ -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;
}
}

Просмотреть файл

@ -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;

Просмотреть файл

@ -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>();
}
}

Просмотреть файл

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

Просмотреть файл

@ -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
{

Просмотреть файл

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

Просмотреть файл

@ -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;

Просмотреть файл

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

Просмотреть файл

@ -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;

Просмотреть файл

@ -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";

Просмотреть файл

@ -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)));
}
}
}

Просмотреть файл

@ -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

Просмотреть файл

@ -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
{
@ -192,7 +187,7 @@ namespace CalculatorUITestFramework
else
{
throw new NotFoundException("Could not find word size buttons in page source");
}
}
}
public void ResetNumberSystem()
{

Просмотреть файл

@ -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

Просмотреть файл

@ -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)

Просмотреть файл

@ -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

Просмотреть файл

@ -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
{

Просмотреть файл

@ -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
{

Просмотреть файл

@ -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

Просмотреть файл

@ -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);
}

Просмотреть файл

@ -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()
{

Просмотреть файл

@ -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;
}

Просмотреть файл

@ -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;

Просмотреть файл

@ -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('.');

Просмотреть файл

@ -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.

Просмотреть файл

@ -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.

Просмотреть файл

@ -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>

Просмотреть файл

@ -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.

Просмотреть файл

@ -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.