[cosmetics] update date in GPL header
[vuplus_xbmc] / xbmc / interfaces / legacy / WindowDialogMixin.cpp
1  /*
2  *      Copyright (C) 2005-2013 Team XBMC
3  *      http://www.xbmc.org
4  *
5  *  This Program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2, or (at your option)
8  *  any later version.
9  *
10  *  This Program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with XBMC; see the file COPYING.  If not, write to
17  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
18  *  http://www.gnu.org/copyleft/gpl.html
19  *
20  */
21
22 #include "WindowDialogMixin.h"
23 #include "WindowInterceptor.h"
24
25 #include "ApplicationMessenger.h"
26 #include "guilib/GUIWindowManager.h"
27
28 namespace XBMCAddon
29 {
30   namespace xbmcgui
31   {
32     void WindowDialogMixin::show()
33     {
34       TRACE;
35       ThreadMessage tMsg = {TMSG_GUI_PYTHON_DIALOG, HACK_CUSTOM_ACTION_OPENING, 0u};
36       tMsg.lpVoid = w->window->get();
37       CApplicationMessenger::Get().SendMessage(tMsg, true);
38     }
39
40     void WindowDialogMixin::close()
41     {
42       TRACE;
43       w->bModal = false;
44       w->PulseActionEvent();
45
46       ThreadMessage tMsg = {TMSG_GUI_PYTHON_DIALOG, HACK_CUSTOM_ACTION_CLOSING, 0};
47       tMsg.lpVoid = w->window->get();
48       CApplicationMessenger::Get().SendMessage(tMsg, true);
49
50       w->iOldWindowId = 0;
51     }
52
53     bool WindowDialogMixin::IsDialogRunning() const { TRACE; return w->window->isActive(); }
54
55     bool WindowDialogMixin::OnAction(const CAction &action)
56     {
57       TRACE;
58       switch (action.GetID())
59       {
60       case HACK_CUSTOM_ACTION_OPENING:
61         {
62           // This is from the CGUIPythonWindowXMLDialog::Show_Internal
63           g_windowManager.RouteToWindow(w->window->get());
64           // active this dialog...
65           CGUIMessage msg(GUI_MSG_WINDOW_INIT,0,0);
66           w->OnMessage(msg);
67           w->window->setActive(true);
68           // TODO: Figure out how to clean up the CAction
69           return true;
70         }
71         break;
72         
73       case HACK_CUSTOM_ACTION_CLOSING:
74         {
75           // This is from the CGUIPythonWindowXMLDialog::Show_Internal
76           w->window->get()->Close();
77           return true;
78         }
79         break;
80       }
81
82       return false;
83     }
84   }
85 }
86
87
88