summaryrefslogtreecommitdiffstats
path: root/xbmc/interfaces/legacy/WindowDialogMixin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/interfaces/legacy/WindowDialogMixin.cpp')
-rw-r--r--xbmc/interfaces/legacy/WindowDialogMixin.cpp75
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;
+ }
+ }
+}
+
+
+