diff --git a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/CountingWidgetImpl.cpp b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/CountingWidgetImpl.cpp index 5c4773a2f..9e8a85865 100644 --- a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/CountingWidgetImpl.cpp +++ b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/CountingWidgetImpl.cpp @@ -3,6 +3,7 @@ #include "pch.h" #include "CountingWidgetImpl.h" +#include CountingWidget::CountingWidget(winrt::hstring const& id, winrt::hstring const& state) : WidgetImplBase(id, state) { @@ -77,6 +78,11 @@ void CountingWidget::Deactivate() m_isActivated = false; } +void CountingWidget::OnCustomizationRequested(winrt::WidgetCustomizationRequestedArgs args) +{ + std::wcout << args.CustomState().c_str() << std::endl; +} + winrt::hstring CountingWidget::GetDefaultTemplate() { auto uri = winrt::Uri(L"ms-appx:///Templates/CountingWidgetTemplate.json"); diff --git a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/CountingWidgetImpl.h b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/CountingWidgetImpl.h index 7c7d8dd71..7943b9dd8 100644 --- a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/CountingWidgetImpl.h +++ b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/CountingWidgetImpl.h @@ -14,6 +14,7 @@ class CountingWidget : public WidgetImplBase void OnWidgetContextChanged(winrt::WidgetContextChangedArgs contextChangedArgs); void Activate(); void Deactivate(); + void OnCustomizationRequested(winrt::WidgetCustomizationRequestedArgs args); winrt::hstring GetTemplateForWidget(); winrt::hstring GetDataForWidget(); private: diff --git a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/Microsoft.Windows.Widgets.winmd b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/Microsoft.Windows.Widgets.winmd new file mode 100644 index 000000000..db63b803f Binary files /dev/null and b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/Microsoft.Windows.Widgets.winmd differ diff --git a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/SampleWidgetProviderApp.vcxproj b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/SampleWidgetProviderApp.vcxproj index d6a248d7b..d9e1a6bd1 100644 --- a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/SampleWidgetProviderApp.vcxproj +++ b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/SampleWidgetProviderApp.vcxproj @@ -1,5 +1,6 @@ + ..\packages @@ -141,7 +142,7 @@ - + @@ -152,7 +153,7 @@ - - + + \ No newline at end of file diff --git a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/SampleWidgetProviderApp.vcxproj.filters b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/SampleWidgetProviderApp.vcxproj.filters index b74b3f79b..0dcb89217 100644 --- a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/SampleWidgetProviderApp.vcxproj.filters +++ b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/SampleWidgetProviderApp.vcxproj.filters @@ -31,4 +31,7 @@ {6631e18a-745d-4d25-bfb5-a8c377b47a07} + + + \ No newline at end of file diff --git a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WeatherWidgetImpl.cpp b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WeatherWidgetImpl.cpp index d7f515b77..2e03331ea 100644 --- a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WeatherWidgetImpl.cpp +++ b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WeatherWidgetImpl.cpp @@ -39,6 +39,10 @@ void WeatherWidget::Deactivate() m_isActivated = false; } +void WeatherWidget::OnCustomizationRequested(winrt::WidgetCustomizationRequestedArgs args) +{ +} + winrt::hstring WeatherWidget::GetDefaultTemplate() { auto uri = winrt::Uri(L"ms-appx:///Templates/WeatherWidgetTemplate.json"); diff --git a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WeatherWidgetImpl.h b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WeatherWidgetImpl.h index 4b74067ff..73dbb9d01 100644 --- a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WeatherWidgetImpl.h +++ b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WeatherWidgetImpl.h @@ -14,6 +14,7 @@ class WeatherWidget : public WidgetImplBase void OnWidgetContextChanged(winrt::WidgetContextChangedArgs contextChangedArgs); void Activate(); void Deactivate(); + void OnCustomizationRequested(winrt::WidgetCustomizationRequestedArgs args); winrt::hstring GetTemplateForWidget(); winrt::hstring GetDataForWidget(); private: diff --git a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WidgetImplBase.h b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WidgetImplBase.h index d0cd80305..cb214c1d1 100644 --- a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WidgetImplBase.h +++ b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WidgetImplBase.h @@ -19,6 +19,9 @@ class WidgetImplBase virtual void Deactivate(winrt::hstring) {}; virtual void OnActionInvoked(winrt::WidgetActionInvokedArgs actionInvokedArgs) {}; virtual void OnWidgetContextChanged(winrt::WidgetContextChangedArgs contextChangedArgs) {}; + + virtual void OnCustomizationRequested(winrt::WidgetCustomizationRequestedArgs args) {}; + virtual winrt::hstring GetTemplateForWidget() = 0; virtual winrt::hstring GetDataForWidget() = 0; diff --git a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WidgetProvider.cpp b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WidgetProvider.cpp index 4a78debd1..797034f66 100644 --- a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WidgetProvider.cpp +++ b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WidgetProvider.cpp @@ -3,6 +3,7 @@ #include "pch.h" #include "WidgetProvider.h" +#include using CreateWidgetImplFn = std::function(winrt::WidgetContext, winrt::hstring)>; @@ -142,6 +143,36 @@ void WidgetProvider::Deactivate(winrt::hstring widgetId) } } +// Handle the OnCustomizationRequested call. This function is called when widgets host stops listening +// to the widget updates. It generally happens when the widget is not visible to the user +// anymore and any further updates won't be displayed until the widget is visible again. +// It's recommended to stop sending updates until Activate function was called. +void WidgetProvider::OnCustomizationRequested(winrt::WidgetCustomizationRequestedArgs const& args) +{ + if (const auto& runningWidget = FindRunningWidget(args.WidgetContext().Id())) + { + runningWidget->OnCustomizationRequested(args); + } +} + +// Handle the OnCustomizationRequested call. This function is called when widgets host stops listening +// to the widget updates. It generally happens when the widget is not visible to the user +// anymore and any further updates won't be displayed until the widget is visible again. +// It's recommended to stop sending updates until Activate function was called. +void WidgetProvider::OnAnalyticsInfoReported(winrt::WidgetAnalyticsInfoReportedArgs const& args) +{ + std::wcout << args.AnalyticsJson().c_str() << std::endl; +} + +// Handle the OnCustomizationRequested call. This function is called when widgets host stops listening +// to the widget updates. It generally happens when the widget is not visible to the user +// anymore and any further updates won't be displayed until the widget is visible again. +// It's recommended to stop sending updates until Activate function was called. +void WidgetProvider::OnErrorInfoReported(winrt::WidgetErrorInfoReportedArgs const& args) +{ + std::wcout << args.ErrorJson().c_str() << std::endl; +} + // This function will be called in WidgetProvider Constructor // to get information about all the widgets that this provider // is currently providing. It's helpful in case of the Provider diff --git a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WidgetProvider.h b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WidgetProvider.h index 2ed083838..53daafec1 100644 --- a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WidgetProvider.h +++ b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderApp/WidgetProvider.h @@ -4,7 +4,10 @@ #pragma once #include "WidgetImplBase.h" -struct WidgetProvider : winrt::implements +struct WidgetProvider : winrt::implements { WidgetProvider(); @@ -17,6 +20,18 @@ struct WidgetProvider : winrt::implements - + \ No newline at end of file diff --git a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderAppPackage/Package.appxmanifest b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderAppPackage/Package.appxmanifest index 0950683c7..727b9eab8 100644 --- a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderAppPackage/Package.appxmanifest +++ b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderAppPackage/Package.appxmanifest @@ -8,6 +8,18 @@ xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" IgnorableNamespaces="uap uap3 rescap"> + + + + Microsoft.Windows.Widgets.winmd + + + + + + + + + + + 15.0 + + + + Debug + x86 + + + Release + x86 + + + Debug + x64 + + + Release + x64 + + + Debug + ARM + + + Release + ARM + + + Debug + ARM64 + + + Release + ARM64 + + + + $(MSBuildExtensionsPath)\Microsoft\DesktopBridge\ + + + + 7C9DBD64-9DC7-4706-8FDA-8Df2A43184FE + 10.0.22000.0 + 10.0.17763.0 + net6.0-windows$(TargetPlatformVersion);$(AssetTargetFallback) + en-US + false + ..\SampleWidgetProviderApp\SampleWidgetProviderApp.vcxproj + + + + Designer + + + + + + + + + + + + + + + + + + + + + + + build + + + + + + \ No newline at end of file diff --git a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderAppPackage/SampleWidgetProviderAppPackage.wapproj b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderAppPackage/SampleWidgetProviderAppPackage.wapproj index 311755271..6407d3ec6 100644 --- a/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderAppPackage/SampleWidgetProviderAppPackage.wapproj +++ b/Samples/Widgets/cpp-win32-packaged/SampleWidgetProviderAppPackage/SampleWidgetProviderAppPackage.wapproj @@ -49,6 +49,7 @@ en-US false ..\SampleWidgetProviderApp\SampleWidgetProviderApp.vcxproj + 46dcaee8-712c-4246-88c2-4e8e9d01d721 @@ -70,12 +71,15 @@ + + + - + + build -