Merge master into feature/GraphingCalculator branch (#660)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user