This repository has been archived by the owner on Apr 15, 2023. It is now read-only.
/
AddonCallbacksGUI.h
182 lines (161 loc) · 9.19 KB
/
AddonCallbacksGUI.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#pragma once
/*
* Copyright (C) 2005-2010 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This Program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with XBMC; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
* http://www.gnu.org/copyleft/gpl.html
*
*/
#include "AddonCallbacks.h"
#include "windows/GUIMediaWindow.h"
#include "threads/Event.h"
class CGUISpinControlEx;
class CGUIButtonControl;
class CGUIRadioButtonControl;
class CGUISettingsSliderControl;
class CGUIEditControl;
namespace ADDON
{
class CAddonCallbacksGUI
{
public:
CAddonCallbacksGUI(CAddon* addon);
~CAddonCallbacksGUI();
/**! \name General Functions */
CB_GUILib *GetCallbacks() { return m_callbacks; }
static void Lock();
static void Unlock();
static int GetScreenHeight();
static int GetScreenWidth();
static int GetVideoResolution();
static GUIHANDLE Window_New(void *addonData, const char *xmlFilename, const char *defaultSkin, bool forceFallback, bool asDialog);
static void Window_Delete(void *addonData, GUIHANDLE handle);
static void Window_SetCallbacks(void *addonData, GUIHANDLE handle, GUIHANDLE clienthandle, bool (*initCB)(GUIHANDLE), bool (*clickCB)(GUIHANDLE, int), bool (*focusCB)(GUIHANDLE, int), bool (*onActionCB)(GUIHANDLE handle, int));
static bool Window_Show(void *addonData, GUIHANDLE handle);
static bool Window_Close(void *addonData, GUIHANDLE handle);
static bool Window_DoModal(void *addonData, GUIHANDLE handle);
static bool Window_SetFocusId(void *addonData, GUIHANDLE handle, int iControlId);
static int Window_GetFocusId(void *addonData, GUIHANDLE handle);
static bool Window_SetCoordinateResolution(void *addonData, GUIHANDLE handle, int res);
static void Window_SetProperty(void *addonData, GUIHANDLE handle, const char *key, const char *value);
static void Window_SetPropertyInt(void *addonData, GUIHANDLE handle, const char *key, int value);
static void Window_SetPropertyBool(void *addonData, GUIHANDLE handle, const char *key, bool value);
static void Window_SetPropertyDouble(void *addonData, GUIHANDLE handle, const char *key, double value);
static const char * Window_GetProperty(void *addonData, GUIHANDLE handle, const char *key);
static int Window_GetPropertyInt(void *addonData, GUIHANDLE handle, const char *key);
static bool Window_GetPropertyBool(void *addonData, GUIHANDLE handle, const char *key);
static double Window_GetPropertyDouble(void *addonData, GUIHANDLE handle, const char *key);
static void Window_ClearProperties(void *addonData, GUIHANDLE handle);
static int Window_GetListSize(void *addonData, GUIHANDLE handle);
static void Window_ClearList(void *addonData, GUIHANDLE handle);
static GUIHANDLE Window_AddItem(void *addonData, GUIHANDLE handle, GUIHANDLE item, int itemPosition);
static GUIHANDLE Window_AddStringItem(void *addonData, GUIHANDLE handle, const char *itemName, int itemPosition);
static void Window_RemoveItem(void *addonData, GUIHANDLE handle, int itemPosition);
static GUIHANDLE Window_GetListItem(void *addonData, GUIHANDLE handle, int listPos);
static void Window_SetCurrentListPosition(void *addonData, GUIHANDLE handle, int listPos);
static int Window_GetCurrentListPosition(void *addonData, GUIHANDLE handle);
static GUIHANDLE Window_GetControl_Spin(void *addonData, GUIHANDLE handle, int controlId);
static GUIHANDLE Window_GetControl_Button(void *addonData, GUIHANDLE handle, int controlId);
static GUIHANDLE Window_GetControl_RadioButton(void *addonData, GUIHANDLE handle, int controlId);
static GUIHANDLE Window_GetControl_Edit(void *addonData, GUIHANDLE handle, int controlId);
static GUIHANDLE Window_GetControl_Progress(void *addonData, GUIHANDLE handle, int controlId);
static void Window_SetControlLabel(void *addonData, GUIHANDLE handle, int controlId, const char *label);
static void Control_Spin_SetVisible(void *addonData, GUIHANDLE spinhandle, bool yesNo);
static void Control_Spin_SetText(void *addonData, GUIHANDLE spinhandle, const char *label);
static void Control_Spin_Clear(void *addonData, GUIHANDLE spinhandle);
static void Control_Spin_AddLabel(void *addonData, GUIHANDLE spinhandle, const char *label, int iValue);
static int Control_Spin_GetValue(void *addonData, GUIHANDLE spinhandle);
static void Control_Spin_SetValue(void *addonData, GUIHANDLE spinhandle, int iValue);
static void Control_RadioButton_SetVisible(void *addonData, GUIHANDLE handle, bool yesNo);
static void Control_RadioButton_SetText(void *addonData, GUIHANDLE handle, const char *label);
static void Control_RadioButton_SetSelected(void *addonData, GUIHANDLE handle, bool yesNo);
static bool Control_RadioButton_IsSelected(void *addonData, GUIHANDLE handle);
static void Control_Progress_SetPercentage(void *addonData, GUIHANDLE handle, float fPercent);
static float Control_Progress_GetPercentage(void *addonData, GUIHANDLE handle);
static void Control_Progress_SetInfo(void *addonData, GUIHANDLE handle, int iInfo);
static int Control_Progress_GetInfo(void *addonData, GUIHANDLE handle);
static const char * Control_Progress_GetDescription(void *addonData, GUIHANDLE handle);
static GUIHANDLE ListItem_Create(void *addonData, const char *label, const char *label2, const char *iconImage, const char *thumbnailImage, const char *path);
static const char * ListItem_GetLabel(void *addonData, GUIHANDLE handle);
static void ListItem_SetLabel(void *addonData, GUIHANDLE handle, const char *label);
static const char * ListItem_GetLabel2(void *addonData, GUIHANDLE handle);
static void ListItem_SetLabel2(void *addonData, GUIHANDLE handle, const char *label);
static void ListItem_SetIconImage(void *addonData, GUIHANDLE handle, const char *image);
static void ListItem_SetThumbnailImage(void *addonData, GUIHANDLE handle, const char *image);
static void ListItem_SetInfo(void *addonData, GUIHANDLE handle, const char *info);
static void ListItem_SetProperty(void *addonData, GUIHANDLE handle, const char *key, const char *value);
static const char * ListItem_GetProperty(void *addonData, GUIHANDLE handle, const char *key);
static void ListItem_SetPath(void *addonData, GUIHANDLE handle, const char *path);
private:
CB_GUILib *m_callbacks;
CAddon *m_addon;
};
class CGUIAddonWindow : public CGUIMediaWindow
{
friend class CAddonCallbacksGUI;
public:
CGUIAddonWindow(int id, CStdString strXML, CAddon* addon);
virtual ~CGUIAddonWindow(void);
virtual bool OnMessage(CGUIMessage& message);
virtual bool OnAction(const CAction &action);
virtual void AllocResources(bool forceLoad = false);
virtual void FreeResources(bool forceUnLoad = false);
virtual void Render();
void WaitForActionEvent(unsigned int timeout);
void PulseActionEvent();
void AddItem(CFileItemPtr fileItem, int itemPosition);
void RemoveItem(int itemPosition);
void ClearList();
CFileItemPtr GetListItem(int position);
int GetListSize();
int GetCurrentListPosition();
void SetCurrentListPosition(int item);
virtual bool OnClick(int iItem);
protected:
virtual void Update();
virtual void GetContextButtons(int itemNumber, CContextButtons &buttons);
void ClearAddonStrings();
void SetupShares();
bool (*CBOnInit)(GUIHANDLE cbhdl);
bool (*CBOnFocus)(GUIHANDLE cbhdl, int controlId);
bool (*CBOnClick)(GUIHANDLE cbhdl, int controlId);
bool (*CBOnAction)(GUIHANDLE cbhdl, int);
GUIHANDLE m_clientHandle;
const int m_iWindowId;
int m_iOldWindowId;
bool m_bModal;
bool m_bIsDialog;
private:
CEvent m_actionEvent;
CAddon *m_addon;
CStdString m_mediaDir;
};
class CGUIAddonWindowDialog : public CGUIAddonWindow
{
public:
CGUIAddonWindowDialog(int id, CStdString strXML, CAddon* addon);
virtual ~CGUIAddonWindowDialog(void);
void Show(bool show = true);
virtual bool OnMessage(CGUIMessage &message);
virtual bool IsDialogRunning() const { return m_bRunning; }
virtual bool IsDialog() const { return true;};
virtual bool IsModalDialog() const { return true; };
virtual bool IsMediaWindow() const { return false; };
void Show_Internal(bool show = true);
private:
bool m_bRunning;
};
}; /* namespace ADDON */