#include "pch.h" #include "Windows.Xbox.UI.SystemUI.h" #include #include "Windows.Xbox.UI.AccountPickerResult.h" #include "Windows.Xbox.UI.SystemUI.g.cpp" void* g_pD3D11XEventFunc = nullptr; void* g_pWDWaitForKeyboardFunc = nullptr; namespace winrt::Windows::Xbox::UI::implementation { winrt::Windows::Xbox::UI::NotificationPositionHint SystemUI::m_notificationPositionHint = winrt::Windows::Xbox::UI::NotificationPositionHint::TopRight; winrt::Windows::Foundation::IAsyncAction SystemUI::ShowEpgAsync(winrt::Windows::Xbox::System::IUser requestingUser, winrt::Windows::Foundation::Collections::IIterable> propertySet) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncAction SystemUI::ShowMiniguideAsync(winrt::Windows::Xbox::System::IUser requestingUser) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncAction SystemUI::ShowProfileCardAsync(winrt::Windows::Xbox::System::IUser requestingUser, hstring targetXuid) { co_return; } winrt::Windows::Foundation::IAsyncAction SystemUI::ShowSendInvitesAsync(winrt::Windows::Xbox::System::IUser requestingUser) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncOperation SystemUI::ShowAccountPickerAsync(winrt::Windows::Xbox::Input::IController controller, winrt::Windows::Xbox::UI::AccountPickerOptions options) { LOG_WARNING("TODO: SystemUI::ShowAccountPickerAsync (this function just returns the first user in User::Users)\n"); co_return winrt::make(); } winrt::Windows::Foundation::IAsyncOperation SystemUI::ShowVirtualKeyboardAsync(hstring defaultText, hstring titleText, hstring descriptionText, winrt::Windows::Xbox::UI::VirtualKeyboardInputScope inputScope) { co_await resume_background(); if (!g_pD3D11XEventFunc && !g_pWDWaitForKeyboardFunc) { g_pD3D11XEventFunc = GetProcAddress(GetModuleHandle(L"d3d11_x.dll"), "WD11XNotify"); g_pWDWaitForKeyboardFunc = GetProcAddress(GetModuleHandle(L"d3d11_x.dll"), "WDWaitForKeyboard"); } reinterpret_cast(g_pD3D11XEventFunc)(1); const char* text = nullptr; reinterpret_cast(g_pWDWaitForKeyboardFunc)(&text); co_return winrt::to_hstring(text); } winrt::Windows::Foundation::IAsyncAction SystemUI::LaunchPartyAsync(winrt::Windows::Xbox::System::IUser requestingUser) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncAction SystemUI::LaunchAchievementsAsync(winrt::Windows::Xbox::System::IUser requestingUser, uint32_t titleId) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncAction SystemUI::ShowPartyAndSendPartyInvitesAsync(winrt::Windows::Xbox::System::IUser requestingUser, winrt::Windows::Foundation::Collections::IVectorView recipientUserIdList) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncAction SystemUI::ShowCreateLookingForGroupAsync(winrt::Windows::Xbox::System::IUser requestingUser, winrt::Windows::Foundation::Collections::IVectorView preselectedTags, hstring preselectedDescription, uint32_t defaultNeedCount) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncAction SystemUI::ShowUserLookingForGroupsAsync(winrt::Windows::Xbox::System::IUser requestingUser) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncAction SystemUI::ShowLookingForGroupResultsAsync(winrt::Windows::Xbox::System::IUser requestingUser, winrt::Windows::Foundation::Collections::IVectorView tags) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncAction SystemUI::LaunchKinectSetupAsync(winrt::Windows::Xbox::System::IUser requestingUser) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncAction SystemUI::LaunchRecentPlayersAsync(winrt::Windows::Xbox::System::IUser requestingUser) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncAction SystemUI::SnapDefaultBroadcastApp(winrt::Windows::Xbox::System::IUser requestingUser) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncAction SystemUI::ShowComposeMessageAsync(winrt::Windows::Xbox::System::IUser requestingUser, hstring defaultMessageText, winrt::Windows::Foundation::Collections::IVector recipientUserIdList) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncOperation SystemUI::ShowAddRemoveFriendAsync(winrt::Windows::Xbox::System::IUser requestingUser, hstring targetUserId) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncOperation> SystemUI::ShowPeoplePickerAsync(winrt::Windows::Xbox::System::IUser requestingUser, hstring promptText, winrt::Windows::Foundation::Collections::IVectorView selectFromUserIdList, winrt::Windows::Foundation::Collections::IVectorView preselectedUserIdList, uint32_t minimumSelectionCount, uint32_t maximumSelectionCount) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncOperation SystemUI::TrySnapSelf() { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncOperation SystemUI::TrySnapOther(winrt::Windows::Foundation::Uri snapTargetUri, winrt::Windows::Xbox::System::IUser user) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncAction SystemUI::ShowMiniguideWithCommandAsync(winrt::Windows::Xbox::System::IUser requestingUser, winrt::Windows::Xbox::UI::MiniguideCommand initialCommand) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncOperation SystemUI::ShowVirtualKeyboardWithOptionsAsync(winrt::Windows::Xbox::UI::KeyboardOptions options) { /* * TODO: Use Options */ co_await resume_background(); if (!g_pD3D11XEventFunc && !g_pWDWaitForKeyboardFunc) { g_pD3D11XEventFunc = GetProcAddress(GetModuleHandle(L"d3d11_x.dll"), "WD11XNotify"); g_pWDWaitForKeyboardFunc = GetProcAddress(GetModuleHandle(L"d3d11_x.dll"), "WDWaitForKeyboard"); } reinterpret_cast(g_pD3D11XEventFunc)(1); const char* text = nullptr; reinterpret_cast(g_pWDWaitForKeyboardFunc)(&text); co_return winrt::to_hstring(text); } void SystemUI::SetNotificationPositionHint(winrt::Windows::Xbox::UI::NotificationPositionHint const& value) { LOG_WARNING("SystemUI::SetNotificationPositionHint called.. Function Stubbed!!!"); switch (value) { case winrt::Windows::Xbox::UI::NotificationPositionHint::BottomCenter: LOG_WARNING("SystemUI::SetNotificationPositionHint: Setting NotificationPositionHint to BottomCenter.\n"); m_notificationPositionHint = value; break; case winrt::Windows::Xbox::UI::NotificationPositionHint::BottomLeft: LOG_WARNING("SystemUI::SetNotificationPositionHint: Setting NotificationPositionHint to BottomLeft.\n"); m_notificationPositionHint = value; break; case winrt::Windows::Xbox::UI::NotificationPositionHint::BottomRight: LOG_WARNING("SystemUI::SetNotificationPositionHint: Setting NotificationPositionHint to BottomRight.\n"); m_notificationPositionHint = value; break; case winrt::Windows::Xbox::UI::NotificationPositionHint::TopCenter: LOG_WARNING("SystemUI::SetNotificationPositionHint: Setting NotificationPositionHint to TopCenter.\n"); m_notificationPositionHint = value; break; case winrt::Windows::Xbox::UI::NotificationPositionHint::TopLeft: LOG_WARNING("SystemUI::SetNotificationPositionHint: Setting NotificationPositionHint to TopLeft.\n"); m_notificationPositionHint = value; break; case winrt::Windows::Xbox::UI::NotificationPositionHint::TopRight: LOG_WARNING("SystemUI::SetNotificationPositionHint: Setting NotificationPositionHint to TopRight.\n"); m_notificationPositionHint = value; break; default: LOG_WARNING("SystemUI::SetNotificationPositionHint: Received unknown value! Defaulting to TopRight.\n"); m_notificationPositionHint = winrt::Windows::Xbox::UI::NotificationPositionHint::TopRight; break; } } winrt::Windows::Foundation::IAsyncOperation SystemUI::AuthenticateAsync(winrt::Windows::Xbox::System::IUser requestingUser, winrt::Windows::Xbox::UI::WebAuthenticationOptions options, winrt::Windows::Foundation::Uri requestUri, winrt::Windows::Foundation::Uri callbackUri) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::IAsyncOperation SystemUI::AuthenticateAsync(winrt::Windows::Xbox::System::IUser requestingUser, winrt::Windows::Xbox::UI::WebAuthenticationOptions options, winrt::Windows::Foundation::Uri requestUri) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } winrt::Windows::Foundation::Uri SystemUI::GetCurrentApplicationCallbackUri(winrt::Windows::Xbox::System::IUser const& requestingUser) { LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented(); } }