2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
16 constexpr const int GUI_MSG_WINDOW_INIT
= 1; // initialize window
17 constexpr const int GUI_MSG_WINDOW_DEINIT
= 2; // deinit window
18 constexpr const int GUI_MSG_WINDOW_RESET
= 27; // reset window to initial state
20 constexpr const int GUI_MSG_SETFOCUS
= 3; // set focus to control param1=up/down/left/right
21 constexpr const int GUI_MSG_LOSTFOCUS
= 4; // control lost focus
23 constexpr const int GUI_MSG_CLICKED
= 5; // control has been clicked
25 constexpr const int GUI_MSG_VISIBLE
= 6; // set control visible
26 constexpr const int GUI_MSG_HIDDEN
= 7; // set control hidden
28 constexpr const int GUI_MSG_ENABLED
= 8; // enable control
29 constexpr const int GUI_MSG_DISABLED
= 9; // disable control
31 constexpr const int GUI_MSG_SET_SELECTED
= 10; // control = selected
32 constexpr const int GUI_MSG_SET_DESELECTED
= 11; // control = not selected
34 constexpr const int GUI_MSG_LABEL_ADD
= 12; // add label control (for controls supporting more then 1 label)
36 constexpr const int GUI_MSG_LABEL_SET
= 13; // set the label of a control
38 constexpr const int GUI_MSG_LABEL_RESET
= 14; // clear all labels of a control // add label control (for controls supporting more then 1 label)
40 constexpr const int GUI_MSG_ITEM_SELECTED
= 15; // ask control 2 return the selected item
41 constexpr const int GUI_MSG_ITEM_SELECT
= 16; // ask control 2 select a specific item
42 constexpr const int GUI_MSG_LABEL2_SET
= 17;
43 constexpr const int GUI_MSG_SHOWRANGE
= 18;
45 constexpr const int GUI_MSG_FULLSCREEN
= 19; // should go to fullscreen window (vis or video)
46 constexpr const int GUI_MSG_EXECUTE
= 20; // user has clicked on a button with <execute> tag
48 constexpr const int GUI_MSG_NOTIFY_ALL
= 21; // message will be send to all active and inactive(!) windows, all active modal and modeless dialogs
49 // dwParam1 must contain an additional message the windows should react on
51 constexpr const int GUI_MSG_REFRESH_THUMBS
= 22; // message is sent to all windows to refresh all thumbs
53 constexpr const int GUI_MSG_MOVE
= 23; // message is sent to the window from the base control class when it's
54 // been asked to move. dwParam1 contains direction.
56 constexpr const int GUI_MSG_LABEL_BIND
= 24; // bind label control (for controls supporting more then 1 label)
58 constexpr const int GUI_MSG_FOCUSED
= 26; // a control has become focused
60 constexpr const int GUI_MSG_PAGE_CHANGE
= 28; // a page control has changed the page number
62 constexpr const int GUI_MSG_REFRESH_LIST
= 29; // message sent to all listing controls telling them to refresh their item layouts
64 constexpr const int GUI_MSG_PAGE_UP
= 30; // page up
65 constexpr const int GUI_MSG_PAGE_DOWN
= 31; // page down
66 constexpr const int GUI_MSG_MOVE_OFFSET
= 32; // Instruct the control to MoveUp or MoveDown by offset amount
68 constexpr const int GUI_MSG_SET_TYPE
= 33; ///< Instruct a control to set it's type appropriately
71 \brief Message indicating the window has been resized
72 Any controls that keep stored sizing information based on aspect ratio or window size should
73 recalculate sizing information
75 constexpr const int GUI_MSG_WINDOW_RESIZE
= 34;
78 \brief Message indicating loss of renderer, prior to reset
79 Any controls that keep shared resources should free them on receipt of this message, as the renderer
82 constexpr const int GUI_MSG_RENDERER_LOST
= 35;
85 \brief Message indicating regain of renderer, after reset
86 Any controls that keep shared resources may reallocate them now that the renderer is back
88 constexpr const int GUI_MSG_RENDERER_RESET
= 36;
91 \brief A control wishes to have (or release) exclusive access to mouse actions
93 constexpr const int GUI_MSG_EXCLUSIVE_MOUSE
= 37;
96 \brief A request for supported gestures is made
98 constexpr const int GUI_MSG_GESTURE_NOTIFY
= 38;
101 \brief A request to add a control
103 constexpr const int GUI_MSG_ADD_CONTROL
= 39;
106 \brief A request to remove a control
108 constexpr const int GUI_MSG_REMOVE_CONTROL
= 40;
111 \brief A request to unfocus all currently focused controls
113 constexpr const int GUI_MSG_UNFOCUS_ALL
= 41;
115 constexpr const int GUI_MSG_SET_TEXT
= 42;
117 constexpr const int GUI_MSG_WINDOW_LOAD
= 43;
119 constexpr const int GUI_MSG_VALIDITY_CHANGED
= 44;
122 \brief Check whether a button is selected
124 constexpr const int GUI_MSG_IS_SELECTED
= 45;
127 \brief Bind a set of labels to a spin (or similar) control
129 constexpr const int GUI_MSG_SET_LABELS
= 46;
132 \brief Set the filename for an image control
134 constexpr const int GUI_MSG_SET_FILENAME
= 47;
137 \brief Get the filename of an image control
140 constexpr const int GUI_MSG_GET_FILENAME
= 48;
143 \brief The user interface is ready for usage
145 constexpr const int GUI_MSG_UI_READY
= 49;
148 \brief Called every 500ms to allow time dependent updates
150 constexpr const int GUI_MSG_REFRESH_TIMER
= 50;
153 \brief Called if state has changed which could lead to GUI changes
155 constexpr const int GUI_MSG_STATE_CHANGED
= 51;
158 \brief Called when a subtitle download has finished
160 constexpr const int GUI_MSG_SUBTITLE_DOWNLOADED
= 52;
163 * \brief Reset a multiimage to its initial state
165 constexpr const int GUI_MSG_RESET_MULTI_IMAGE
= 53;
167 constexpr const int GUI_MSG_USER
= 1000;
170 \brief Complete to get codingtable page
172 constexpr const int GUI_MSG_CODINGTABLE_LOOKUP_COMPLETED
= 65000;
178 #define CONTROL_SELECT(controlID) \
181 CGUIMessage _msg(GUI_MSG_SET_SELECTED, GetID(), controlID); \
189 #define CONTROL_DESELECT(controlID) \
192 CGUIMessage _msg(GUI_MSG_SET_DESELECTED, GetID(), controlID); \
201 #define CONTROL_ENABLE(controlID) \
204 CGUIMessage _msg(GUI_MSG_ENABLED, GetID(), controlID); \
212 #define CONTROL_DISABLE(controlID) \
215 CGUIMessage _msg(GUI_MSG_DISABLED, GetID(), controlID); \
224 #define CONTROL_ENABLE_ON_CONDITION(controlID, bCondition) \
227 CGUIMessage _msg(bCondition ? GUI_MSG_ENABLED : GUI_MSG_DISABLED, GetID(), controlID); \
236 #define CONTROL_SELECT_ITEM(controlID, iItem) \
239 CGUIMessage _msg(GUI_MSG_ITEM_SELECT, GetID(), controlID, iItem); \
245 \brief Set the label of the current control
247 #define SET_CONTROL_LABEL(controlID, label) \
250 CGUIMessage _msg(GUI_MSG_LABEL_SET, GetID(), controlID); \
251 _msg.SetLabel(label); \
257 \brief Set the label of the current control
259 #define SET_CONTROL_LABEL_THREAD_SAFE(controlID, label) \
261 CGUIMessage _msg(GUI_MSG_LABEL_SET, GetID(), controlID); \
262 _msg.SetLabel(label); \
263 if (CServiceBroker::GetAppMessenger()->IsProcessThread()) \
266 CServiceBroker::GetGUI()->GetWindowManager().SendThreadMessage(_msg, GetID()); \
271 \brief Set the second label of the current control
273 #define SET_CONTROL_LABEL2(controlID, label) \
276 CGUIMessage _msg(GUI_MSG_LABEL2_SET, GetID(), controlID); \
277 _msg.SetLabel(label); \
283 \brief Set a bunch of labels on the given control
285 #define SET_CONTROL_LABELS(controlID, defaultValue, labels) \
288 CGUIMessage _msg(GUI_MSG_SET_LABELS, GetID(), controlID, defaultValue); \
289 _msg.SetPointer(labels); \
295 \brief Set the label of the current control
297 #define SET_CONTROL_FILENAME(controlID, label) \
300 CGUIMessage _msg(GUI_MSG_SET_FILENAME, GetID(), controlID); \
301 _msg.SetLabel(label); \
309 #define SET_CONTROL_HIDDEN(controlID) \
312 CGUIMessage _msg(GUI_MSG_HIDDEN, GetID(), controlID); \
320 #define SET_CONTROL_FOCUS(controlID, dwParam) \
323 CGUIMessage _msg(GUI_MSG_SETFOCUS, GetID(), controlID, dwParam); \
331 #define SET_CONTROL_VISIBLE(controlID) \
334 CGUIMessage _msg(GUI_MSG_VISIBLE, GetID(), controlID); \
338 #define SET_CONTROL_SELECTED(dwSenderId, controlID, bSelect) \
341 CGUIMessage _msg(bSelect ? GUI_MSG_SET_SELECTED : GUI_MSG_SET_DESELECTED, dwSenderId, \
348 \brief Click message sent from controls to windows.
350 #define SEND_CLICK_MESSAGE(id, parentID, action) \
353 CGUIMessage _msg(GUI_MSG_CLICKED, id, parentID, action); \
354 SendWindowMessage(_msg); \
369 class CGUIMessage final
372 CGUIMessage(int dwMsg
, int senderID
, int controlID
, int64_t param1
= 0, int64_t param2
= 0);
374 int msg
, int senderID
, int controlID
, int64_t param1
, int64_t param2
, CFileItemList
* item
);
380 const std::shared_ptr
<CGUIListItem
>& item
);
381 CGUIMessage(const CGUIMessage
& msg
);
383 CGUIMessage
& operator = (const CGUIMessage
& msg
);
385 int GetControlId() const ;
386 int GetMessage() const;
387 void* GetPointer() const;
388 std::shared_ptr
<CGUIListItem
> GetItem() const;
389 int GetParam1() const;
390 int64_t GetParam1AsI64() const;
391 int GetParam2() const;
392 int64_t GetParam2AsI64() const;
393 int GetSenderId() const;
394 void SetParam1(int64_t param1
);
395 void SetParam2(int64_t param2
);
396 void SetPointer(void* pointer
);
397 void SetLabel(const std::string
& strLabel
);
398 void SetLabel(int iString
); // for convenience - looks up in strings.po
399 const std::string
& GetLabel() const;
400 void SetStringParam(const std::string
&strParam
);
401 void SetStringParams(const std::vector
<std::string
> ¶ms
);
402 const std::string
& GetStringParam(size_t param
= 0) const;
403 size_t GetNumStringParams() const;
404 void SetItem(std::shared_ptr
<CGUIListItem
> item
);
407 std::string m_strLabel
;
408 std::vector
<std::string
> m_params
;
415 std::shared_ptr
<CGUIListItem
> m_item
;
417 static std::string empty_string
;