added TMSG_OPTICAL_MOUNT and TMSG_OPTICAL_UNMOUNT to our application messenger (thank...
[xbmc:xbmc-antiquated.git] / XBMC / xbmc / ApplicationMessenger.h
1 #pragma once
2
3 /*
4  *      Copyright (C) 2005-2008 Team XBMC
5  *      http://www.xbmc.org
6  *
7  *  This Program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 2, or (at your option)
10  *  any later version.
11  *
12  *  This Program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with XBMC; see the file COPYING.  If not, write to
19  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
20  *  http://www.gnu.org/copyleft/gpl.html
21  *
22  */
23
24 class CFileItem;
25 class CGUIDialog;
26
27 // defines here
28 #define TMSG_DIALOG_DOMODAL       100
29 #define TMSG_WRITE_SCRIPT_OUTPUT  101
30 #define TMSG_EXECUTE_SCRIPT       102
31 #define TMSG_EXECUTE_BUILT_IN     103
32 #define TMSG_EXECUTE_OS           104
33
34 #define TMSG_MEDIA_PLAY           200
35 #define TMSG_MEDIA_STOP           201
36 #define TMSG_MEDIA_PAUSE          202
37 #define TMSG_MEDIA_RESTART        203
38
39 #define TMSG_PLAYLISTPLAYER_PLAY  210
40 #define TMSG_PLAYLISTPLAYER_NEXT  211
41 #define TMSG_PLAYLISTPLAYER_PREV  212
42
43 #define TMSG_PICTURE_SHOW         220
44 #define TMSG_PICTURE_SLIDESHOW    221
45 #define TMSG_SLIDESHOW_SCREENSAVER  222
46
47 #define TMSG_SHUTDOWN             300
48 #define TMSG_POWERDOWN            301
49 #define TMSG_QUIT                 302
50 #define TMSG_DASHBOARD            TMSG_QUIT
51 #define TMSG_HIBERNATE            303
52 #define TMSG_SUSPEND              304
53 #define TMSG_RESTART              305
54 #define TMSG_RESET                306
55 #define TMSG_RESTARTAPP           307
56 #define TMSG_SWITCHTOFULLSCREEN   308
57 #define TMSG_MINIMIZE             309
58
59 #define TMSG_HTTPAPI              400
60
61 #define TMSG_NETWORKMESSAGE         500
62
63 #define TMSG_GUI_DO_MODAL             600
64 #define TMSG_GUI_SHOW                 601
65 #define TMSG_GUI_WIN_MANAGER_PROCESS  602
66 #define TMSG_GUI_WIN_MANAGER_RENDER   603
67 #define TMSG_GUI_ACTIVATE_WINDOW      604
68
69 #define TMSG_OPTICAL_MOUNT        700 
70 #define TMSG_OPTICAL_UNMOUNT      701 
71
72 typedef struct
73 {
74   DWORD dwMessage;
75   DWORD dwParam1;
76   DWORD dwParam2;
77   std::string strParam;
78   HANDLE hWaitEvent;
79   LPVOID lpVoid;
80 }
81 ThreadMessage;
82
83 class CApplicationMessenger
84 {
85
86 public:
87   ~CApplicationMessenger();
88
89   void Cleanup();
90   // if a message has to be send to the gui, use MSG_TYPE_WINDOW instead
91   void SendMessage(ThreadMessage& msg, bool wait = false);
92   void ProcessMessages(); // only call from main thread.
93   void ProcessWindowMessages();
94
95
96   void MediaPlay(std::string filename);
97   void MediaPlay(const CFileItem &item);
98   void MediaStop();
99   void MediaPause();
100   void MediaRestart(bool bWait);
101
102   void PlayListPlayerPlay();
103   void PlayListPlayerPlay(int iSong);
104   void PlayListPlayerNext();
105   void PlayListPlayerPrevious();
106   void PlayFile(const CFileItem &item, bool bRestart = false); // thread safe version of g_application.PlayFile()
107   void PictureShow(std::string filename);
108   void PictureSlideShow(std::string pathname, bool bScreensaver = false);
109   void Shutdown();
110   void Powerdown();
111   void Quit();
112   void Hibernate();
113   void Suspend();
114   void Restart();
115   void RebootToDashBoard();
116   void RestartApp();
117   void Reset();
118   void SwitchToFullscreen(); //
119   void Minimize(bool wait = false); 
120   void ExecOS(const CStdString command, bool waitExit = false);  
121
122   CStdString GetResponse();
123   int SetResponse(CStdString response);
124   void HttpApi(std::string cmd, bool wait = false);
125   void ExecBuiltIn(const CStdString &command);
126
127   void NetworkMessage(DWORD dwMessage, DWORD dwParam = 0);
128
129   void DoModal(CGUIDialog *pDialog, int iWindowID, const CStdString &param = "");
130   void Show(CGUIDialog *pDialog);
131   void WindowManagerProcess(bool renderOnly = false); // will call m_gWindowManager.Process on the rendering thread
132   void Render(); // will call m_gWindowManager.Render on the rendering thread
133   void ActivateWindow(int windowID, const CStdString &path, bool swappingWindows);
134
135   void OpticalMount(CStdString device); 
136         void OpticalUnMount(CStdString device);
137
138 private:
139   void ProcessMessage(ThreadMessage *pMsg);
140
141
142   std::queue<ThreadMessage*> m_vecMessages;
143   std::queue<ThreadMessage*> m_vecWindowMessages;
144   CCriticalSection m_critSection;
145   CCriticalSection m_critBuffer;
146   CStdString bufferResponse;
147
148 };