Merge master into feature/GraphingCalculator branch (#660)

This commit is contained in:
Pepe Rivera
2019-09-05 15:01:12 -07:00
committed by GitHub
parent 1c9755d38a
commit 41fbcfe9c5
199 changed files with 5809 additions and 2925 deletions

View File

@@ -70,7 +70,9 @@ MainPage::MainPage()
KeyboardShortcutManager::Initialize();
Application::Current->Suspending += ref new SuspendingEventHandler(this, &MainPage::App_Suspending);
m_model->PropertyChanged += ref new PropertyChangedEventHandler(this, &MainPage::OnAppPropertyChanged);
m_accessibilitySettings = ref new AccessibilitySettings();
double sizeInInches = 0.0;
@@ -196,11 +198,11 @@ void MainPage::OnAppPropertyChanged(_In_ Platform::Object ^ sender, _In_ Windows
void MainPage::ShowHideControls(ViewMode mode)
{
bool isCalcViewMode = NavCategory::IsCalculatorViewMode(mode);
bool isDateCalcViewMode = NavCategory::IsDateCalculatorViewMode(mode);
bool isGraphingCalcViewMode = NavCategory::IsGraphingCalculatorViewMode(mode);
bool isConverterViewMode = NavCategory::IsConverterViewMode(mode);
auto isCalcViewMode = NavCategory::IsCalculatorViewMode(mode);
auto isDateCalcViewMode = NavCategory::IsDateCalculatorViewMode(mode);
auto isGraphingCalcViewMode = NavCategory::IsGraphingCalculatorViewMode(mode);
auto isConverterViewMode = NavCategory::IsConverterViewMode(mode);
if (m_calculator)
{
m_calculator->Visibility = BooleanToVisibilityConverter::Convert(isCalcViewMode);
@@ -254,6 +256,8 @@ void MainPage::OnPageLoaded(_In_ Object ^, _In_ RoutedEventArgs ^ args)
}
m_windowSizeEventToken = Window::Current->SizeChanged += ref new WindowSizeChangedEventHandler(this, &MainPage::WindowSizeChanged);
m_accessibilitySettingsToken = m_accessibilitySettings->HighContrastChanged +=
ref new Windows::Foundation::TypedEventHandler<AccessibilitySettings ^, Object ^>(this, &CalculatorApp::MainPage::OnHighContrastChanged);
UpdateViewState();
SetHeaderAutomationName();
@@ -262,15 +266,23 @@ void MainPage::OnPageLoaded(_In_ Object ^, _In_ RoutedEventArgs ^ args)
// Delay load things later when we get a chance.
this->Dispatcher->RunAsync(
CoreDispatcherPriority::Normal, ref new DispatchedHandler([]() {
if (TraceLogger::GetInstance().UpdateWindowIdLog(ApplicationView::GetApplicationViewIdForWindow(CoreWindow::GetForCurrentThread())))
if (TraceLogger::GetInstance().IsWindowIdInLog(ApplicationView::GetApplicationViewIdForWindow(CoreWindow::GetForCurrentThread())))
{
TraceLogger::GetInstance().LogAppLaunchComplete();
AppLifecycleLogger::GetInstance().LaunchUIResponsive();
AppLifecycleLogger::GetInstance().LaunchVisibleComplete();
}
}));
}
void MainPage::OnHighContrastChanged(_In_ AccessibilitySettings ^ /*sender*/, _In_ Object ^ /*args*/)
{
if (Model->IsAlwaysOnTop && this->ActualHeight < 394)
{
// Sets to default always-on-top size to force re-layout
ApplicationView::GetForCurrentView()->TryResizeView(Size(320, 394));
}
}
void MainPage::SetDefaultFocus()
{
if (m_calculator != nullptr && m_calculator->Visibility == ::Visibility::Visible)
@@ -308,13 +320,16 @@ void MainPage::EnsureCalculator()
Binding ^ isProgramerBinding = ref new Binding();
isProgramerBinding->Path = ref new PropertyPath(L"IsProgrammer");
m_calculator->SetBinding(m_calculator->IsProgrammerProperty, isProgramerBinding);
Binding ^ isAlwaysOnTopBinding = ref new Binding();
isAlwaysOnTopBinding->Path = ref new PropertyPath(L"IsAlwaysOnTop");
m_calculator->SetBinding(m_calculator->IsAlwaysOnTopProperty, isAlwaysOnTopBinding);
m_calculator->Style = CalculatorBaseStyle;
CalcHolder->Child = m_calculator;
// Calculator's "default" state is visible, but if we get delay loaded
// when in converter, we should not be visible. This is not a problem for converter
// since it's default state is hidden.
// since its default state is hidden.
ShowHideControls(this->Model->Mode);
}
@@ -505,6 +520,8 @@ void MainPage::UnregisterEventHandlers()
{
Window::Current->SizeChanged -= m_windowSizeEventToken;
m_windowSizeEventToken.Value = 0;
m_accessibilitySettings->HighContrastChanged -= m_accessibilitySettingsToken;
m_accessibilitySettingsToken.Value = 0;
if (m_calculator != nullptr)
{
@@ -535,7 +552,6 @@ void MainPage::SetHeaderAutomationName()
}
string::size_type found = full.find(L"%1");
assert(found != wstring::npos);
wstring strMode = m_model->CategoryName->Data();
full = full.replace(found, 2, strMode);
@@ -556,3 +572,24 @@ void MainPage::OnNavItemInvoked(MUXC::NavigationView ^ /*sender*/, _In_ MUXC::Na
{
NavView->IsPaneOpen = false;
}
void MainPage::TitleBarAlwaysOnTopButtonClick(_In_ Object ^ /*sender*/, _In_ RoutedEventArgs ^ /*e*/)
{
auto bounds = Window::Current->Bounds;
Model->ToggleAlwaysOnTop(bounds.Width, bounds.Height);
}
void MainPage::AlwaysOnTopButtonClick(_In_ Object ^ /*sender*/, _In_ RoutedEventArgs ^ /*e*/)
{
Model->ToggleAlwaysOnTop(0, 0);
}
void MainPage::App_Suspending(Object ^ sender, Windows::ApplicationModel::SuspendingEventArgs ^ e)
{
if (m_model->IsAlwaysOnTop)
{
ApplicationDataContainer ^ localSettings = ApplicationData::Current->LocalSettings;
localSettings->Values->Insert(ApplicationViewModel::WidthLocalSettings, this->ActualWidth);
localSettings->Values->Insert(ApplicationViewModel::HeightLocalSettings, this->ActualHeight);
}
}