diff options
Diffstat (limited to 'xbmc/interfaces/legacy/WindowDialogMixin.cpp')
-rw-r--r-- | xbmc/interfaces/legacy/WindowDialogMixin.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/xbmc/interfaces/legacy/WindowDialogMixin.cpp b/xbmc/interfaces/legacy/WindowDialogMixin.cpp new file mode 100644 index 0000000..32d6fa9 --- /dev/null +++ b/xbmc/interfaces/legacy/WindowDialogMixin.cpp @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2005-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#include "WindowDialogMixin.h" + +#include "ServiceBroker.h" +#include "WindowInterceptor.h" +#include "guilib/GUIComponent.h" +#include "guilib/GUIWindowManager.h" +#include "messaging/ApplicationMessenger.h" + +namespace XBMCAddon +{ + namespace xbmcgui + { + void WindowDialogMixin::show() + { + XBMC_TRACE; + CServiceBroker::GetAppMessenger()->SendMsg(TMSG_GUI_PYTHON_DIALOG, HACK_CUSTOM_ACTION_OPENING, + 0, static_cast<void*>(w->window->get())); + } + + void WindowDialogMixin::close() + { + XBMC_TRACE; + w->bModal = false; + w->PulseActionEvent(); + + CServiceBroker::GetAppMessenger()->SendMsg(TMSG_GUI_PYTHON_DIALOG, HACK_CUSTOM_ACTION_CLOSING, + 0, static_cast<void*>(w->window->get())); + + w->iOldWindowId = 0; + } + + bool WindowDialogMixin::IsDialogRunning() const { XBMC_TRACE; return w->window->isActive(); } + + bool WindowDialogMixin::OnAction(const CAction &action) + { + XBMC_TRACE; + switch (action.GetID()) + { + case HACK_CUSTOM_ACTION_OPENING: + { + // This is from the CGUIPythonWindowXMLDialog::Show_Internal + CServiceBroker::GetGUI()->GetWindowManager().RegisterDialog(w->window->get()); + // active this dialog... + CGUIMessage msg(GUI_MSG_WINDOW_INIT,0,0); + w->OnMessage(msg); + w->window->setActive(true); + //! @todo Figure out how to clean up the CAction + return true; + } + break; + + case HACK_CUSTOM_ACTION_CLOSING: + { + // This is from the CGUIPythonWindowXMLDialog::Show_Internal + w->window->get()->Close(); + return true; + } + break; + } + + return false; + } + } +} + + + |