diff --git a/build/pipelines/azure-pipelines.ci-internal.yaml b/build/pipelines/azure-pipelines.ci-internal.yaml
index 6014b53..b4e857c 100644
--- a/build/pipelines/azure-pipelines.ci-internal.yaml
+++ b/build/pipelines/azure-pipelines.ci-internal.yaml
@@ -30,6 +30,11 @@ jobs:
platform: x64
runsettingsFileName: CalculatorUITests.release.runsettings
+- template: ./templates/run-ui-tests.yaml
+ parameters:
+ platform: x86
+ runsettingsFileName: CalculatorUITests.release.runsettings
+
- template: ./templates/run-unit-tests.yaml
parameters:
platform: x64
diff --git a/build/pipelines/azure-pipelines.release.yaml b/build/pipelines/azure-pipelines.release.yaml
index 6e049dd..05eec0b 100644
--- a/build/pipelines/azure-pipelines.release.yaml
+++ b/build/pipelines/azure-pipelines.release.yaml
@@ -4,20 +4,13 @@
# Store and the Windows image. This pipeline relies on Microsoft-internal resources to run.
#
-schedules:
-- cron: "0 7 * * *"
- displayName: Daily midnight build
- branches:
- include:
- - master
-
trigger: none
pr: none
variables:
versionMajor: 10
- versionMinor: 2108
- versionBuild: $[counter('10.2108.*', 0)]
+ versionMinor: 2109
+ versionBuild: $[counter('10.2109.*', 0)]
versionPatch: 0
name: '$(versionMajor).$(versionMinor).$(versionBuild).$(versionPatch)'
@@ -26,27 +19,20 @@ jobs:
- template: ./templates/build-app-internal.yaml
parameters:
platform: x64
+ isPublicRelease: true
- template: ./templates/build-app-internal.yaml
parameters:
platform: x86
+ isPublicRelease: true
condition: not(eq(variables['Build.Reason'], 'PullRequest'))
- template: ./templates/build-app-internal.yaml
parameters:
platform: ARM
+ isPublicRelease: true
condition: not(eq(variables['Build.Reason'], 'PullRequest'))
-- template: ./templates/run-ui-tests.yaml
- parameters:
- platform: x64
- runsettingsFileName: CalculatorUITests.release.runsettings
-
-- template: ./templates/run-ui-tests.yaml
- parameters:
- platform: x86
- runsettingsFileName: CalculatorUITests.release.runsettings
-
- template: ./templates/run-unit-tests.yaml
parameters:
platform: x64
diff --git a/build/pipelines/templates/build-app-internal.yaml b/build/pipelines/templates/build-app-internal.yaml
index 69b5262..f09e2cd 100644
--- a/build/pipelines/templates/build-app-internal.yaml
+++ b/build/pipelines/templates/build-app-internal.yaml
@@ -6,6 +6,7 @@
parameters:
platform: ''
condition: ''
+ isPublicRelease: false
jobs:
- job: Build${{ parameters.platform }}
@@ -27,7 +28,10 @@ jobs:
downloadDirectory: $(Build.SourcesDirectory)
vstsFeed: WindowsInboxApps
vstsFeedPackage: calculator-internals
- vstsPackageVersion: 0.0.54
+ ${{ if eq(parameters.isPublicRelease, true) }}:
+ vstsPackageVersion: 0.0.66
+ ${{ if eq(parameters.isPublicRelease, false) }}:
+ vstsPackageVersion: 0.0.65
- template: ./build-single-architecture.yaml
parameters:
diff --git a/build/pipelines/templates/prepare-release-internalonly.yaml b/build/pipelines/templates/prepare-release-internalonly.yaml
index cd383dc..d555140 100644
--- a/build/pipelines/templates/prepare-release-internalonly.yaml
+++ b/build/pipelines/templates/prepare-release-internalonly.yaml
@@ -81,7 +81,7 @@ jobs:
downloadDirectory: $(Build.SourcesDirectory)
vstsFeed: WindowsInboxApps
vstsFeedPackage: calculator-internals
- vstsPackageVersion: 0.0.54
+ vstsPackageVersion: 0.0.66
- powershell: |
# Just modify this line to indicate where your en-us PDP file is. Leave the other lines alone.
diff --git a/src/Calculator/AboutFlyout.xaml b/src/Calculator/AboutFlyout.xaml
deleted file mode 100644
index e9b16a6..0000000
--- a/src/Calculator/AboutFlyout.xaml
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Calculator/App.xaml b/src/Calculator/App.xaml
index b72d6ea..f94645c 100644
--- a/src/Calculator/App.xaml
+++ b/src/Calculator/App.xaml
@@ -3,15 +3,47 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="using:CalculatorApp.Controls"
xmlns:common="using:CalculatorApp.Common"
- xmlns:local="using:CalculatorApp">
+ xmlns:contract7NotPresent="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract,7)"
+ xmlns:contract7Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,7)"
+ xmlns:converters="using:CalculatorApp.Converters"
+ xmlns:local="using:CalculatorApp"
+ xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
+ xmlns:primitives="using:Microsoft.UI.Xaml.Controls.Primitives">
+
+
+
+
+
+
+ 0
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
0,0,0,0
0
#FF000000
@@ -83,9 +115,48 @@
-
+
+
+
+
+
+ #FFFFFF
+
+
+
+
+
+
+
+
+
+ #000000
+
+
+
+
+
+ 0
0,0,0,0
0
#FFF2F2F2
@@ -161,9 +232,48 @@
-
+
+
+
+
+
+ #FFFFFF
+
+
+
+
+
+
+
+
+
+ #000000
+
+
+
+
+
+ 1
0,1,0,0
2
@@ -195,7 +305,25 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -203,36 +331,40 @@
500
320
- ms-appx:///Assets/CalcMDL2.ttf#Calculator MDL2 Assets
+ ms-appx:///Assets/CalculatorIcons.ttf#Calculator Fluent Icons
256
0,1,0,0
- 15
- SemiBold
+ 14
+ Normal
- 64
+ 70
24
24
16
- 64
+ 70
16
20
10
- 38
+ 44
12
16
- 8
+ 12
12
- 15
+ 14
24
-
- 40
- 40
+ 14
+ SemiBold
+
+ 48
+ 48
+
+ 32
34
38
48
@@ -244,25 +376,31 @@
12
14
+ 12
16
+
+
-
@@ -411,59 +583,98 @@
-
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
-
+
+ ContentTransitions="{TemplateBinding ContentTransitions}">
+
+
+
+
+
-
-
+
+
-
-
+
+
+
-
-
+
+
+
+
+
diff --git a/src/Calculator/App.xaml.cs b/src/Calculator/App.xaml.cs
index 73046d9..21702b6 100644
--- a/src/Calculator/App.xaml.cs
+++ b/src/Calculator/App.xaml.cs
@@ -124,7 +124,7 @@ private static Frame CreateFrame()
return frame;
}
- private static void SetMinWindowSizeAndActivate(Frame rootFrame, Size minWindowSize)
+ private static void SetMinWindowSizeAndThemeAndActivate(Frame rootFrame, Size minWindowSize)
{
// SetPreferredMinSize should always be called before Window.Activate
ApplicationView appView = ApplicationView.GetForCurrentView();
@@ -132,6 +132,7 @@ private static void SetMinWindowSizeAndActivate(Frame rootFrame, Size minWindowS
// Place the frame in the current Window
Window.Current.Content = rootFrame;
+ CalculatorApp.Utils.ThemeHelper.InitializeAppTheme();
Window.Current.Activate();
}
@@ -199,7 +200,7 @@ private void OnAppLaunch(IActivatedEventArgs args, string argument)
throw new SystemException();
}
- SetMinWindowSizeAndActivate(rootFrame, minWindowSize);
+ SetMinWindowSizeAndThemeAndActivate(rootFrame, minWindowSize);
m_mainViewId = ApplicationView.GetForCurrentView().Id;
AddWindowToMap(WindowFrameService.CreateNewWindowFrameService(rootFrame, false, weak));
}
@@ -223,7 +224,7 @@ private void OnAppLaunch(IActivatedEventArgs args, string argument)
{
var newRootFrame = App.CreateFrame();
- SetMinWindowSizeAndActivate(newRootFrame, minWindowSize);
+ SetMinWindowSizeAndThemeAndActivate(newRootFrame, minWindowSize);
if (!newRootFrame.Navigate(typeof(MainPage), argument))
{
@@ -439,6 +440,10 @@ private async Task HandleViewReleaseAndRemoveWindowFromMap(WindowFrameService fr
mainPage.UnregisterEventHandlers();
+ // TODO, remove this workaround after Mica fix
+ // Workaround app crash caused by Mica in multi-view case.
+ Microsoft.UI.Xaml.Controls.BackdropMaterial.SetApplyToRootOrPageBackground(mainPage, false);
+
await frameService.HandleViewRelease();
await Task.Run(() =>
{
diff --git a/src/Calculator/Assets/CalcMDL2.ttf b/src/Calculator/Assets/CalcMDL2.ttf
deleted file mode 100644
index 9ee5deb..0000000
Binary files a/src/Calculator/Assets/CalcMDL2.ttf and /dev/null differ
diff --git a/src/Calculator/Assets/CalculatorIcons.ttf b/src/Calculator/Assets/CalculatorIcons.ttf
new file mode 100644
index 0000000..176efcb
Binary files /dev/null and b/src/Calculator/Assets/CalculatorIcons.ttf differ
diff --git a/src/Calculator/Calculator.csproj b/src/Calculator/Calculator.csproj
index 75c5353..ecabb4a 100644
--- a/src/Calculator/Calculator.csproj
+++ b/src/Calculator/Calculator.csproj
@@ -137,9 +137,6 @@
PackageReference
-
- AboutFlyout.xaml
-
App.xaml
@@ -167,10 +164,11 @@
-
+
+
EquationStylePanelControl.xaml
-
+
Calculator.xaml
@@ -232,6 +230,9 @@
OperatorsPanel.xaml
+
+ Settings.xaml
+
CalculatorProgrammerDisplayPanel.xaml
@@ -678,11 +679,7 @@
MSBuild:Compile
Designer
-
- Designer
- MSBuild:Compile
-
-
+
Designer
MSBuild:Compile
@@ -766,6 +763,10 @@
Designer
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
Designer
MSBuild:Compile
@@ -787,7 +788,7 @@
6.2.10
-
+
@@ -804,7 +805,7 @@
-
+
diff --git a/src/Calculator/Common/KeyboardShortcuManager.cs b/src/Calculator/Common/KeyboardShortcuManager.cs
index d657976..c21ac7f 100644
--- a/src/Calculator/Common/KeyboardShortcuManager.cs
+++ b/src/Calculator/Common/KeyboardShortcuManager.cs
@@ -575,6 +575,48 @@ private static void OnVirtualKeyControlShiftChordPropertyChanged(DependencyObjec
}
}
+ private static bool CanNavigateModeByShortcut(MUXC.NavigationView navView, MUXC.NavigationViewItem nvi
+ , ApplicationViewModel vm, ViewMode toMode)
+ {
+ return nvi != null && nvi.IsEnabled && navView.Visibility == Visibility.Visible
+ && !vm.IsAlwaysOnTop && NavCategory.IsValidViewMode(toMode);
+ }
+
+ private static void NavigateModeByShortcut(bool controlKeyPressed, bool shiftKeyPressed, bool altPressed
+ , Windows.System.VirtualKey key, ViewMode? toMode)
+ {
+ var lookupMap = GetCurrentKeyDictionary(controlKeyPressed, shiftKeyPressed, altPressed);
+ if (lookupMap != null)
+ {
+ var listItems = EqualRange(lookupMap, (MyVirtualKey)key);
+ foreach (var itemRef in listItems)
+ {
+ var item = itemRef.Target as MUXC.NavigationView;
+ if (item != null)
+ {
+ var navView = (MUXC.NavigationView)item;
+
+ var menuItems = ((ObservableCollection