mirror of
https://github.com/Microsoft/calculator.git
synced 2025-08-21 22:03:11 -07:00
Convert NarratorNotifier to C#
This commit is contained in:
parent
62ca1ddf1c
commit
313aecde55
16 changed files with 64 additions and 141 deletions
|
@ -301,7 +301,6 @@
|
|||
<ClInclude Include="ApplicationViewModel.h" />
|
||||
<ClInclude Include="Common\AppResourceProvider.h" />
|
||||
<ClInclude Include="Common\Automation\NarratorAnnouncement.h" />
|
||||
<ClInclude Include="Common\Automation\NarratorNotifier.h" />
|
||||
<ClInclude Include="Common\BitLength.h" />
|
||||
<ClInclude Include="Common\CalculatorButtonPressedEventArgs.h" />
|
||||
<ClInclude Include="Common\CalculatorButtonUser.h" />
|
||||
|
@ -346,7 +345,6 @@
|
|||
<ClCompile Include="ApplicationViewModel.cpp" />
|
||||
<ClCompile Include="Common\AppResourceProvider.cpp" />
|
||||
<ClCompile Include="Common\Automation\NarratorAnnouncement.cpp" />
|
||||
<ClCompile Include="Common\Automation\NarratorNotifier.cpp" />
|
||||
<ClCompile Include="Common\CalculatorButtonPressedEventArgs.cpp" />
|
||||
<ClCompile Include="Common\CalculatorDisplay.cpp" />
|
||||
<ClCompile Include="Common\CopyPasteManager.cpp" />
|
||||
|
@ -417,4 +415,4 @@
|
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
|
@ -61,9 +61,6 @@
|
|||
<ClCompile Include="Common\Automation\NarratorAnnouncement.cpp">
|
||||
<Filter>Common\Automation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Common\Automation\NarratorNotifier.cpp">
|
||||
<Filter>Common\Automation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="DataLoaders\CurrencyDataLoader.cpp">
|
||||
<Filter>DataLoaders</Filter>
|
||||
</ClCompile>
|
||||
|
@ -161,9 +158,6 @@
|
|||
<ClInclude Include="Common\Automation\NarratorAnnouncement.h">
|
||||
<Filter>Common\Automation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Common\Automation\NarratorNotifier.h">
|
||||
<Filter>Common\Automation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="DataLoaders\CurrencyDataLoader.h">
|
||||
<Filter>DataLoaders</Filter>
|
||||
</ClInclude>
|
||||
|
@ -209,4 +203,7 @@
|
|||
<Filter>DataLoaders</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="CalcViewModel.rc" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,56 +0,0 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
// Implementation of the NarratorNotifier class.
|
||||
|
||||
#include "pch.h"
|
||||
#include "NarratorNotifier.h"
|
||||
|
||||
using namespace CalculatorApp::ViewModelNative::Common::Automation;
|
||||
using namespace Platform;
|
||||
using namespace Windows::UI::Xaml;
|
||||
using namespace Windows::UI::Xaml::Automation;
|
||||
using namespace Windows::UI::Xaml::Automation::Peers;
|
||||
|
||||
DependencyProperty ^ NarratorNotifier::s_announcementProperty;
|
||||
|
||||
NarratorNotifier::NarratorNotifier()
|
||||
{
|
||||
}
|
||||
|
||||
void NarratorNotifier::Announce(NarratorAnnouncement ^ announcement)
|
||||
{
|
||||
if (NarratorAnnouncement::IsValid(announcement))
|
||||
{
|
||||
if (m_announcementElement == nullptr)
|
||||
{
|
||||
m_announcementElement = ref new Windows::UI::Xaml::Controls::TextBlock();
|
||||
}
|
||||
|
||||
auto peer = FrameworkElementAutomationPeer::FromElement(m_announcementElement);
|
||||
if (peer != nullptr)
|
||||
{
|
||||
peer->RaiseNotificationEvent(announcement->Kind, announcement->Processing, announcement->Announcement, announcement->ActivityId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void NarratorNotifier::RegisterDependencyProperties()
|
||||
{
|
||||
s_announcementProperty = DependencyProperty::Register(
|
||||
L"Announcement", // The name of the dependency property.
|
||||
NarratorAnnouncement::typeid, // The type of the dependency property.
|
||||
NarratorNotifier::typeid, // The owner of the dependency property.
|
||||
ref new PropertyMetadata(
|
||||
nullptr, // Default value of the dependency property.
|
||||
ref new PropertyChangedCallback(OnAnnouncementChanged)));
|
||||
}
|
||||
|
||||
void NarratorNotifier::OnAnnouncementChanged(_In_ DependencyObject ^ dependencyObject, _In_ DependencyPropertyChangedEventArgs ^ e)
|
||||
{
|
||||
auto instance = safe_cast<NarratorNotifier ^>(dependencyObject);
|
||||
if (instance != nullptr)
|
||||
{
|
||||
instance->Announce(safe_cast<NarratorAnnouncement ^>(e->NewValue));
|
||||
}
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
// Declaration of the NarratorNotifier class.
|
||||
|
||||
#pragma once
|
||||
#include "NarratorAnnouncement.h"
|
||||
|
||||
namespace CalculatorApp::ViewModelNative::Common::Automation
|
||||
{
|
||||
public
|
||||
ref class NarratorNotifier sealed : public Windows::UI::Xaml::DependencyObject
|
||||
{
|
||||
public:
|
||||
NarratorNotifier();
|
||||
|
||||
void Announce(NarratorAnnouncement ^ announcement);
|
||||
|
||||
property NarratorAnnouncement^ Announcement
|
||||
{
|
||||
NarratorAnnouncement^ get() { return GetAnnouncement(this); }
|
||||
void set(NarratorAnnouncement^ value)
|
||||
{
|
||||
SetAnnouncement(this, value);
|
||||
}
|
||||
}
|
||||
|
||||
static void RegisterDependencyProperties();
|
||||
|
||||
static property Windows::UI::Xaml::DependencyProperty
|
||||
^ AnnouncementProperty { Windows::UI::Xaml::DependencyProperty ^ get() { return s_announcementProperty; } }
|
||||
|
||||
static NarratorAnnouncement
|
||||
^ GetAnnouncement(
|
||||
Windows::UI::Xaml::DependencyObject ^ element) { return safe_cast<NarratorAnnouncement ^>(element->GetValue(s_announcementProperty)); }
|
||||
|
||||
static void SetAnnouncement(Windows::UI::Xaml::DependencyObject ^ element, NarratorAnnouncement ^ value)
|
||||
{
|
||||
element->SetValue(s_announcementProperty, value);
|
||||
}
|
||||
|
||||
private:
|
||||
static void OnAnnouncementChanged(
|
||||
_In_ Windows::UI::Xaml::DependencyObject ^ dependencyObject,
|
||||
_In_ Windows::UI::Xaml::DependencyPropertyChangedEventArgs ^ eventArgs);
|
||||
|
||||
static Windows::UI::Xaml::DependencyProperty ^ s_announcementProperty;
|
||||
|
||||
private:
|
||||
Windows::UI::Xaml::UIElement ^ m_announcementElement;
|
||||
};
|
||||
}
|
|
@ -296,7 +296,6 @@
|
|||
<ClInclude Include="..\CalcViewModel\Common\AlwaysSelectedCollectionView.h" />
|
||||
<ClInclude Include="..\CalcViewModel\Common\AppResourceProvider.h" />
|
||||
<ClInclude Include="..\CalcViewModel\Common\Automation\NarratorAnnouncement.h" />
|
||||
<ClInclude Include="..\CalcViewModel\Common\Automation\NarratorNotifier.h" />
|
||||
<ClInclude Include="..\CalcViewModel\Common\BitLength.h" />
|
||||
<ClInclude Include="..\CalcViewModel\Common\CalculatorButtonPressedEventArgs.h" />
|
||||
<ClInclude Include="..\CalcViewModel\Common\CalculatorButtonUser.h" />
|
||||
|
@ -341,7 +340,6 @@
|
|||
<ClCompile Include="..\CalcViewModel\ApplicationViewModel.cpp" />
|
||||
<ClCompile Include="..\CalcViewModel\Common\AppResourceProvider.cpp" />
|
||||
<ClCompile Include="..\CalcViewModel\Common\Automation\NarratorAnnouncement.cpp" />
|
||||
<ClCompile Include="..\CalcViewModel\Common\Automation\NarratorNotifier.cpp" />
|
||||
<ClCompile Include="..\CalcViewModel\Common\CalculatorButtonPressedEventArgs.cpp" />
|
||||
<ClCompile Include="..\CalcViewModel\Common\CalculatorDisplay.cpp" />
|
||||
<ClCompile Include="..\CalcViewModel\Common\CopyPasteManager.cpp" />
|
||||
|
@ -411,4 +409,4 @@
|
|||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets" />
|
||||
</Project>
|
||||
</Project>
|
|
@ -21,9 +21,6 @@
|
|||
<ClCompile Include="..\CalcViewModel\Common\Automation\NarratorAnnouncement.cpp">
|
||||
<Filter>Common\Automation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\CalcViewModel\Common\Automation\NarratorNotifier.cpp">
|
||||
<Filter>Common\Automation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\CalcViewModel\ApplicationViewModel.cpp" />
|
||||
<ClCompile Include="..\CalcViewModel\DateCalculatorViewModel.cpp" />
|
||||
<ClCompile Include="..\CalcViewModel\HistoryItemViewModel.cpp" />
|
||||
|
@ -95,9 +92,6 @@
|
|||
<ClInclude Include="..\CalcViewModel\Common\Automation\NarratorAnnouncement.h">
|
||||
<Filter>Common\Automation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\CalcViewModel\Common\Automation\NarratorNotifier.h">
|
||||
<Filter>Common\Automation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\CalcViewModel\ApplicationViewModel.h" />
|
||||
<ClInclude Include="..\CalcViewModel\DateCalculatorViewModel.h" />
|
||||
<ClInclude Include="..\CalcViewModel\HistoryItemViewModel.h" />
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
//
|
||||
|
||||
using CalculatorApp.ViewModelNative.Common;
|
||||
using CalculatorApp.ViewModelNative.Common.Automation;
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
@ -52,8 +51,6 @@ namespace CalculatorApp
|
|||
|
||||
m_preLaunched = false;
|
||||
|
||||
RegisterDependencyProperties();
|
||||
|
||||
// TODO: MSFT 14645325: Set this directly from XAML.
|
||||
// Currently this is bugged so the property is only respected from code-behind.
|
||||
HighContrastAdjustment = ApplicationHighContrastAdjustment.None;
|
||||
|
@ -360,11 +357,6 @@ namespace CalculatorApp
|
|||
_ = SetupJumpList();
|
||||
}
|
||||
|
||||
private void RegisterDependencyProperties()
|
||||
{
|
||||
NarratorNotifier.RegisterDependencyProperties();
|
||||
}
|
||||
|
||||
private void OnSuspending(object sender, SuspendingEventArgs args)
|
||||
{
|
||||
TraceLogger.GetInstance().LogButtonUsage();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<UserControl x:Class="CalculatorApp.Calculator"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:automation="using:CalculatorApp.ViewModelNative.Common.Automation"
|
||||
xmlns:automation="using:CalculatorApp.ViewModel.Common.Automation"
|
||||
xmlns:common="using:CalculatorApp.ViewModelNative.Common"
|
||||
xmlns:contract7Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,7)"
|
||||
xmlns:contract8NotPresent="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract,8)"
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
using Calculator.Utils;
|
||||
|
||||
using CalculatorApp.Controls;
|
||||
using CalculatorApp.ViewModel.Common.Automation;
|
||||
using CalculatorApp.ViewModelNative;
|
||||
using CalculatorApp.ViewModelNative.Common;
|
||||
using CalculatorApp.ViewModelNative.Common.Automation;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
using CalculatorApp.Common;
|
||||
using CalculatorApp.Controls;
|
||||
using CalculatorApp.Utils;
|
||||
using CalculatorApp.ViewModel.Common.Automation;
|
||||
using CalculatorApp.ViewModelNative;
|
||||
using CalculatorApp.ViewModelNative.Common;
|
||||
using CalculatorApp.ViewModelNative.Common.Automation;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<UserControl x:Class="CalculatorApp.HistoryList"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:automation="using:CalculatorApp.ViewModelNative.Common.Automation"
|
||||
xmlns:automation="using:CalculatorApp.ViewModel.Common.Automation"
|
||||
xmlns:converters="using:CalculatorApp.Converters"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="using:CalculatorApp"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<Page x:Class="CalculatorApp.MainPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:automation="using:CalculatorApp.ViewModelNative.Common.Automation"
|
||||
xmlns:automation="using:CalculatorApp.ViewModel.Common.Automation"
|
||||
xmlns:converters="using:CalculatorApp.Converters"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="using:CalculatorApp"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<UserControl x:Class="CalculatorApp.Settings"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:automation="using:CalculatorApp.ViewModelNative.Common.Automation"
|
||||
xmlns:automation="using:CalculatorApp.ViewModel.Common.Automation"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<UserControl x:Class="CalculatorApp.UnitConverter"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:automation="using:CalculatorApp.ViewModelNative.Common.Automation"
|
||||
xmlns:automation="using:CalculatorApp.ViewModel.Common.Automation"
|
||||
xmlns:common="using:CalculatorApp.Common"
|
||||
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)"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
|
@ -101,6 +101,7 @@
|
|||
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Common\Automation\NarratorNotifier.cs" />
|
||||
<Compile Include="Common\Utilities.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Properties\Calculator.ViewModel.rd.xml" />
|
||||
|
@ -131,4 +132,4 @@
|
|||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
</Project>
|
|
@ -0,0 +1,49 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
using CalculatorApp.ViewModelNative.Common.Automation;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Automation.Peers;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
|
||||
namespace CalculatorApp.ViewModel.Common.Automation
|
||||
{
|
||||
public class NarratorNotifier : DependencyObject
|
||||
{
|
||||
public static readonly DependencyProperty AnnouncementProperty =
|
||||
DependencyProperty.Register(nameof(Announcement), typeof(NarratorAnnouncement), typeof(NarratorNotifier), new PropertyMetadata(null, (sender, args) =>
|
||||
{
|
||||
var self = (NarratorNotifier)sender;
|
||||
self.Announce((NarratorAnnouncement)args.NewValue);
|
||||
}));
|
||||
|
||||
public NarratorAnnouncement Announcement
|
||||
{
|
||||
get => (NarratorAnnouncement)GetValue(AnnouncementProperty);
|
||||
set => SetValue(AnnouncementProperty, value);
|
||||
}
|
||||
|
||||
public NarratorNotifier()
|
||||
{
|
||||
}
|
||||
|
||||
public void Announce(NarratorAnnouncement announcement)
|
||||
{
|
||||
if (NarratorAnnouncement.IsValid(announcement))
|
||||
{
|
||||
if (this.announcementElement == null)
|
||||
{
|
||||
this.announcementElement = new TextBlock();
|
||||
}
|
||||
|
||||
var peer = FrameworkElementAutomationPeer.FromElement(this.announcementElement);
|
||||
if (peer != null)
|
||||
{
|
||||
peer.RaiseNotificationEvent(announcement.Kind, announcement.Processing, announcement.Announcement, announcement.ActivityId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private UIElement announcementElement;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue