Merge pull request #4594 from FernetMenta/paplayer
[xbmc.git] / xbmc / GUIInfoManager.h
blob0c9328b5e70e25e83b0f938cd236933435f4894c
1 /*!
2 \file GUIInfoManager.h
3 \brief
4 */
6 #ifndef GUIINFOMANAGER_H_
7 #define GUIINFOMANAGER_H_
9 /*
10 * Copyright (C) 2005-2013 Team XBMC
11 * http://xbmc.org
13 * This Program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2, or (at your option)
16 * any later version.
18 * This Program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
23 * You should have received a copy of the GNU General Public License
24 * along with XBMC; see the file COPYING. If not, see
25 * <http://www.gnu.org/licenses/>.
29 #include "Temperature.h"
30 #include "threads/CriticalSection.h"
31 #include "guilib/IMsgTargetCallback.h"
32 #include "inttypes.h"
33 #include "XBDateTime.h"
34 #include "utils/Observer.h"
35 #include "interfaces/info/InfoBool.h"
36 #include "interfaces/info/SkinVariable.h"
37 #include "cores/IPlayer.h"
39 #include <list>
40 #include <map>
42 namespace MUSIC_INFO
44 class CMusicInfoTag;
46 class CVideoInfoTag;
47 class CFileItem;
48 class CGUIListItem;
49 class CDateTime;
50 namespace INFO
52 class InfoSingle;
55 // conditions for window retrieval
56 #define WINDOW_CONDITION_HAS_LIST_ITEMS 1
57 #define WINDOW_CONDITION_IS_MEDIA_WINDOW 2
59 #define PLAYER_HAS_MEDIA 1
60 #define PLAYER_HAS_AUDIO 2
61 #define PLAYER_HAS_VIDEO 3
62 #define PLAYER_PLAYING 4
63 #define PLAYER_PAUSED 5
64 #define PLAYER_REWINDING 6
65 #define PLAYER_REWINDING_2x 7
66 #define PLAYER_REWINDING_4x 8
67 #define PLAYER_REWINDING_8x 9
68 #define PLAYER_REWINDING_16x 10
69 #define PLAYER_REWINDING_32x 11
70 #define PLAYER_FORWARDING 12
71 #define PLAYER_FORWARDING_2x 13
72 #define PLAYER_FORWARDING_4x 14
73 #define PLAYER_FORWARDING_8x 15
74 #define PLAYER_FORWARDING_16x 16
75 #define PLAYER_FORWARDING_32x 17
76 #define PLAYER_CAN_RECORD 18
77 #define PLAYER_RECORDING 19
78 #define PLAYER_CACHING 20
79 #define PLAYER_DISPLAY_AFTER_SEEK 21
80 #define PLAYER_PROGRESS 22
81 #define PLAYER_SEEKBAR 23
82 #define PLAYER_SEEKTIME 24
83 #define PLAYER_SEEKING 25
84 #define PLAYER_SHOWTIME 26
85 #define PLAYER_TIME 27
86 #define PLAYER_TIME_REMAINING 28
87 #define PLAYER_DURATION 29
88 #define PLAYER_SHOWCODEC 30
89 #define PLAYER_SHOWINFO 31
90 #define PLAYER_VOLUME 32
91 #define PLAYER_MUTED 33
92 #define PLAYER_HASDURATION 34
93 #define PLAYER_CHAPTER 35
94 #define PLAYER_CHAPTERCOUNT 36
95 #define PLAYER_TIME_SPEED 37
96 #define PLAYER_FINISH_TIME 38
97 #define PLAYER_CACHELEVEL 39
98 #define PLAYER_STAR_RATING 40
99 #define PLAYER_CHAPTERNAME 41
100 #define PLAYER_SUBTITLE_DELAY 42
101 #define PLAYER_AUDIO_DELAY 43
102 #define PLAYER_PASSTHROUGH 44
103 #define PLAYER_PATH 45
104 #define PLAYER_FILEPATH 46
105 #define PLAYER_SEEKOFFSET 47
106 #define PLAYER_PROGRESS_CACHE 48
107 #define PLAYER_ITEM_ART 49
108 #define PLAYER_CAN_PAUSE 50
109 #define PLAYER_CAN_SEEK 51
110 #define PLAYER_START_TIME 52
111 #define PLAYER_TITLE 53
112 #define PLAYER_ISINTERNETSTREAM 54
113 #define PLAYER_FILENAME 55
115 #define WEATHER_CONDITIONS 100
116 #define WEATHER_TEMPERATURE 101
117 #define WEATHER_LOCATION 102
118 #define WEATHER_IS_FETCHED 103
119 #define WEATHER_FANART_CODE 104
120 #define WEATHER_PLUGIN 105
122 #define SYSTEM_TEMPERATURE_UNITS 106
123 #define SYSTEM_PROGRESS_BAR 107
124 #define SYSTEM_LANGUAGE 108
125 #define SYSTEM_TIME 110
126 #define SYSTEM_DATE 111
127 #define SYSTEM_CPU_TEMPERATURE 112
128 #define SYSTEM_GPU_TEMPERATURE 113
129 #define SYSTEM_FAN_SPEED 114
130 #define SYSTEM_FREE_SPACE_C 115
131 // #define SYSTEM_FREE_SPACE_D 116 //116 is reserved for space on D
132 #define SYSTEM_FREE_SPACE_E 117
133 #define SYSTEM_FREE_SPACE_F 118
134 #define SYSTEM_FREE_SPACE_G 119
135 #define SYSTEM_BUILD_VERSION 120
136 #define SYSTEM_BUILD_DATE 121
137 #define SYSTEM_ETHERNET_LINK_ACTIVE 122
138 #define SYSTEM_FPS 123
139 #define SYSTEM_ALWAYS_TRUE 125 // useful for <visible fade="10" start="hidden">true</visible>, to fade in a control
140 #define SYSTEM_ALWAYS_FALSE 126 // used for <visible fade="10">false</visible>, to fade out a control (ie not particularly useful!)
141 #define SYSTEM_MEDIA_DVD 127
142 #define SYSTEM_DVDREADY 128
143 #define SYSTEM_HAS_ALARM 129
144 #define SYSTEM_SCREEN_MODE 132
145 #define SYSTEM_SCREEN_WIDTH 133
146 #define SYSTEM_SCREEN_HEIGHT 134
147 #define SYSTEM_CURRENT_WINDOW 135
148 #define SYSTEM_CURRENT_CONTROL 136
149 #define SYSTEM_DVD_LABEL 138
150 #define SYSTEM_HASLOCKS 140
151 #define SYSTEM_ISMASTER 141
152 #define SYSTEM_TRAYOPEN 142
153 #define SYSTEM_SHOW_EXIT_BUTTON 143
154 #define SYSTEM_ALARM_POS 144
155 #define SYSTEM_LOGGEDON 145
156 #define SYSTEM_PROFILENAME 146
157 #define SYSTEM_PROFILETHUMB 147
158 #define SYSTEM_HAS_LOGINSCREEN 148
159 #define SYSTEM_HDD_SMART 150
160 #define SYSTEM_HDD_TEMPERATURE 151
161 #define SYSTEM_HDD_MODEL 152
162 #define SYSTEM_HDD_SERIAL 153
163 #define SYSTEM_HDD_FIRMWARE 154
164 #define SYSTEM_HDD_PASSWORD 156
165 #define SYSTEM_HDD_LOCKSTATE 157
166 #define SYSTEM_HDD_LOCKKEY 158
167 #define SYSTEM_INTERNET_STATE 159
168 #define SYSTEM_ALARM_LESS_OR_EQUAL 180
169 #define SYSTEM_PROFILECOUNT 181
170 #define SYSTEM_ISFULLSCREEN 182
171 #define SYSTEM_ISSTANDALONE 183
172 #define SYSTEM_ISINHIBIT 184
173 #define SYSTEM_HAS_SHUTDOWN 185
174 #define SYSTEM_HAS_PVR 186
175 #define SYSTEM_STARTUP_WINDOW 187
176 #define SYSTEM_STEREOSCOPIC_MODE 188
178 #define NETWORK_IP_ADDRESS 190
179 #define NETWORK_MAC_ADDRESS 191
180 #define NETWORK_IS_DHCP 192
181 #define NETWORK_LINK_STATE 193
182 #define NETWORK_SUBNET_MASK 194
183 #define NETWORK_GATEWAY_ADDRESS 195
184 #define NETWORK_DNS1_ADDRESS 196
185 #define NETWORK_DNS2_ADDRESS 197
186 #define NETWORK_DHCP_ADDRESS 198
188 #define MUSICPLAYER_TITLE 200
189 #define MUSICPLAYER_ALBUM 201
190 #define MUSICPLAYER_ARTIST 202
191 #define MUSICPLAYER_GENRE 203
192 #define MUSICPLAYER_YEAR 204
193 #define MUSICPLAYER_DURATION 205
194 #define MUSICPLAYER_TRACK_NUMBER 208
195 #define MUSICPLAYER_COVER 210
196 #define MUSICPLAYER_BITRATE 211
197 #define MUSICPLAYER_PLAYLISTLEN 212
198 #define MUSICPLAYER_PLAYLISTPOS 213
199 #define MUSICPLAYER_CHANNELS 214
200 #define MUSICPLAYER_BITSPERSAMPLE 215
201 #define MUSICPLAYER_SAMPLERATE 216
202 #define MUSICPLAYER_CODEC 217
203 #define MUSICPLAYER_DISC_NUMBER 218
204 #define MUSICPLAYER_RATING 219
205 #define MUSICPLAYER_COMMENT 220
206 #define MUSICPLAYER_LYRICS 221
207 #define MUSICPLAYER_HASPREVIOUS 222
208 #define MUSICPLAYER_HASNEXT 223
209 #define MUSICPLAYER_EXISTS 224
210 #define MUSICPLAYER_PLAYLISTPLAYING 225
211 #define MUSICPLAYER_ALBUM_ARTIST 226
212 #define MUSICPLAYER_PLAYCOUNT 227
213 #define MUSICPLAYER_LASTPLAYED 228
214 #define MUSICPLAYER_CHANNEL_NAME 229
215 #define MUSICPLAYER_CHANNEL_NUMBER 230
216 #define MUSICPLAYER_CHANNEL_GROUP 231
218 #define VIDEOPLAYER_TITLE 250
219 #define VIDEOPLAYER_GENRE 251
220 #define VIDEOPLAYER_DIRECTOR 252
221 #define VIDEOPLAYER_YEAR 253
222 #define VIDEOPLAYER_HASSUBTITLES 254
223 #define VIDEOPLAYER_SUBTITLESENABLED 255
224 #define VIDEOPLAYER_COVER 258
225 #define VIDEOPLAYER_USING_OVERLAYS 259
226 #define VIDEOPLAYER_ISFULLSCREEN 260
227 #define VIDEOPLAYER_HASMENU 261
228 #define VIDEOPLAYER_PLAYLISTLEN 262
229 #define VIDEOPLAYER_PLAYLISTPOS 263
230 #define VIDEOPLAYER_EVENT 264
231 #define VIDEOPLAYER_ORIGINALTITLE 265
232 #define VIDEOPLAYER_PLOT 266
233 #define VIDEOPLAYER_PLOT_OUTLINE 267
234 #define VIDEOPLAYER_EPISODE 268
235 #define VIDEOPLAYER_SEASON 269
236 #define VIDEOPLAYER_RATING 270
237 #define VIDEOPLAYER_TVSHOW 271
238 #define VIDEOPLAYER_PREMIERED 272
239 #define VIDEOPLAYER_CONTENT 273
240 #define VIDEOPLAYER_STUDIO 274
241 #define VIDEOPLAYER_MPAA 275
242 #define VIDEOPLAYER_CAST 276
243 #define VIDEOPLAYER_CAST_AND_ROLE 277
244 #define VIDEOPLAYER_ARTIST 278
245 #define VIDEOPLAYER_ALBUM 279
246 #define VIDEOPLAYER_WRITER 280
247 #define VIDEOPLAYER_TAGLINE 281
248 #define VIDEOPLAYER_HAS_INFO 282
249 #define VIDEOPLAYER_TOP250 283
250 #define VIDEOPLAYER_RATING_AND_VOTES 284
251 #define VIDEOPLAYER_TRAILER 285
252 #define VIDEOPLAYER_VIDEO_CODEC 286
253 #define VIDEOPLAYER_VIDEO_RESOLUTION 287
254 #define VIDEOPLAYER_AUDIO_CODEC 288
255 #define VIDEOPLAYER_AUDIO_CHANNELS 289
256 #define VIDEOPLAYER_VIDEO_ASPECT 290
257 #define VIDEOPLAYER_HASTELETEXT 291
258 #define VIDEOPLAYER_COUNTRY 292
259 #define VIDEOPLAYER_PLAYCOUNT 293
260 #define VIDEOPLAYER_LASTPLAYED 294
262 #define VIDEOPLAYER_STARTTIME 295
263 #define VIDEOPLAYER_ENDTIME 296
264 #define VIDEOPLAYER_NEXT_TITLE 297
265 #define VIDEOPLAYER_NEXT_GENRE 298
266 #define VIDEOPLAYER_NEXT_PLOT 299
267 #define VIDEOPLAYER_NEXT_PLOT_OUTLINE 300
268 #define VIDEOPLAYER_NEXT_STARTTIME 301
269 #define VIDEOPLAYER_NEXT_ENDTIME 302
270 #define VIDEOPLAYER_NEXT_DURATION 303
271 #define VIDEOPLAYER_CHANNEL_NAME 304
272 #define VIDEOPLAYER_CHANNEL_NUMBER 305
273 #define VIDEOPLAYER_CHANNEL_GROUP 306
274 #define VIDEOPLAYER_PARENTAL_RATING 307
275 #define VIDEOPLAYER_HAS_EPG 308
276 #define VIDEOPLAYER_VOTES 309
277 #define VIDEOPLAYER_IS_STEREOSCOPIC 310
278 #define VIDEOPLAYER_STEREOSCOPIC_MODE 311
279 #define VIDEOPLAYER_SUBTITLES_LANG 312
280 #define VIDEOPLAYER_AUDIO_LANG 313
282 #define CONTAINER_CAN_FILTER 342
283 #define CONTAINER_CAN_FILTERADVANCED 343
284 #define CONTAINER_FILTERED 344
286 #define CONTAINER_SCROLL_PREVIOUS 345 // NOTE: These 5 must be kept in this consecutive order
287 #define CONTAINER_MOVE_PREVIOUS 346
288 #define CONTAINER_STATIC 347
289 #define CONTAINER_MOVE_NEXT 348
290 #define CONTAINER_SCROLL_NEXT 349
292 #define CONTAINER_HASFILES 351
293 #define CONTAINER_HASFOLDERS 352
294 #define CONTAINER_STACKED 353
295 #define CONTAINER_FOLDERNAME 354
296 #define CONTAINER_SCROLLING 355
297 #define CONTAINER_PLUGINNAME 356
298 #define CONTAINER_PROPERTY 357
299 #define CONTAINER_SORT_DIRECTION 358
300 #define CONTAINER_NUM_ITEMS 359
301 #define CONTAINER_FOLDERTHUMB 360
302 #define CONTAINER_FOLDERPATH 361
303 #define CONTAINER_CONTENT 362
304 #define CONTAINER_HAS_THUMB 363
305 #define CONTAINER_SORT_METHOD 364
307 #define CONTAINER_HAS_FOCUS 367
308 #define CONTAINER_ROW 368
309 #define CONTAINER_COLUMN 369
310 #define CONTAINER_POSITION 370
311 #define CONTAINER_VIEWMODE 371
312 #define CONTAINER_HAS_NEXT 372
313 #define CONTAINER_HAS_PREVIOUS 373
314 #define CONTAINER_SUBITEM 374
315 #define CONTAINER_TVSHOWTHUMB 375
316 #define CONTAINER_NUM_PAGES 376
317 #define CONTAINER_CURRENT_PAGE 377
318 #define CONTAINER_SEASONTHUMB 378
319 #define CONTAINER_SHOWPLOT 379
320 #define CONTAINER_TOTALTIME 380
322 #define MUSICPM_ENABLED 381
323 #define MUSICPM_SONGSPLAYED 382
324 #define MUSICPM_MATCHINGSONGS 383
325 #define MUSICPM_MATCHINGSONGSPICKED 384
326 #define MUSICPM_MATCHINGSONGSLEFT 385
327 #define MUSICPM_RELAXEDSONGSPICKED 386
328 #define MUSICPM_RANDOMSONGSPICKED 387
330 #define PLAYLIST_LENGTH 390
331 #define PLAYLIST_POSITION 391
332 #define PLAYLIST_RANDOM 392
333 #define PLAYLIST_REPEAT 393
334 #define PLAYLIST_ISRANDOM 394
335 #define PLAYLIST_ISREPEAT 395
336 #define PLAYLIST_ISREPEATONE 396
338 #define VISUALISATION_LOCKED 400
339 #define VISUALISATION_PRESET 401
340 #define VISUALISATION_NAME 402
341 #define VISUALISATION_ENABLED 403
343 #define STRING_IS_EMPTY 410
344 #define STRING_COMPARE 411
345 #define STRING_STR 412
346 #define INTEGER_GREATER_THAN 413
347 #define STRING_STR_LEFT 414
348 #define STRING_STR_RIGHT 415
350 #define SKIN_BOOL 600
351 #define SKIN_STRING 601
352 #define SKIN_HAS_MUSIC_OVERLAY 602
353 #define SKIN_HAS_VIDEO_OVERLAY 603
354 #define SKIN_THEME 604
355 #define SKIN_COLOUR_THEME 605
356 #define SKIN_HAS_THEME 606
357 #define SKIN_ASPECT_RATIO 607
359 #define SYSTEM_TOTAL_MEMORY 644
360 #define SYSTEM_CPU_USAGE 645
361 #define SYSTEM_USED_MEMORY_PERCENT 646
362 #define SYSTEM_USED_MEMORY 647
363 #define SYSTEM_FREE_MEMORY 648
364 #define SYSTEM_FREE_MEMORY_PERCENT 649
365 #define SYSTEM_UPTIME 654
366 #define SYSTEM_TOTALUPTIME 655
367 #define SYSTEM_CPUFREQUENCY 656
368 #define SYSTEM_SCREEN_RESOLUTION 659
369 #define SYSTEM_VIDEO_ENCODER_INFO 660
370 #define SYSTEM_KERNEL_VERSION 667
371 #define SYSTEM_FREE_SPACE 679
372 #define SYSTEM_USED_SPACE 680
373 #define SYSTEM_TOTAL_SPACE 681
374 #define SYSTEM_USED_SPACE_PERCENT 682
375 #define SYSTEM_FREE_SPACE_PERCENT 683
376 #define SYSTEM_DVD_TRAY_STATE 700
377 #define SYSTEM_GET_BOOL 704
378 #define SYSTEM_GET_CORE_USAGE 705
379 #define SYSTEM_HAS_CORE_ID 706
380 #define SYSTEM_RENDER_VENDOR 707
381 #define SYSTEM_RENDER_RENDERER 708
382 #define SYSTEM_RENDER_VERSION 709
383 #define SYSTEM_SETTING 710
384 #define SYSTEM_HAS_ADDON 711
385 #define SYSTEM_ADDON_TITLE 712
386 #define SYSTEM_ADDON_ICON 713
387 #define SYSTEM_BATTERY_LEVEL 714
388 #define SYSTEM_IDLE_TIME 715
389 #define SYSTEM_FRIENDLY_NAME 716
390 #define SYSTEM_SCREENSAVER_ACTIVE 717
391 #define SYSTEM_ADDON_VERSION 718
393 #define LIBRARY_HAS_MUSIC 720
394 #define LIBRARY_HAS_VIDEO 721
395 #define LIBRARY_HAS_MOVIES 722
396 #define LIBRARY_HAS_MOVIE_SETS 723
397 #define LIBRARY_HAS_TVSHOWS 724
398 #define LIBRARY_HAS_MUSICVIDEOS 725
399 #define LIBRARY_IS_SCANNING 726
400 #define LIBRARY_IS_SCANNING_VIDEO 727
401 #define LIBRARY_IS_SCANNING_MUSIC 728
403 #define SYSTEM_PLATFORM_LINUX 741
404 #define SYSTEM_PLATFORM_WINDOWS 742
405 #define SYSTEM_PLATFORM_DARWIN 743
406 #define SYSTEM_PLATFORM_DARWIN_OSX 744
407 #define SYSTEM_PLATFORM_DARWIN_IOS 745
408 #define SYSTEM_PLATFORM_DARWIN_ATV2 746
409 #define SYSTEM_PLATFORM_ANDROID 747
410 #define SYSTEM_PLATFORM_LINUX_RASPBERRY_PI 748
412 #define SYSTEM_CAN_POWERDOWN 750
413 #define SYSTEM_CAN_SUSPEND 751
414 #define SYSTEM_CAN_HIBERNATE 752
415 #define SYSTEM_CAN_REBOOT 753
417 #define SLIDESHOW_ISPAUSED 800
418 #define SLIDESHOW_ISRANDOM 801
419 #define SLIDESHOW_ISACTIVE 802
420 #define SLIDESHOW_ISVIDEO 803
422 #define SLIDE_INFO_START 900
423 #define SLIDE_INFO_END 980
425 #define FANART_COLOR1 1000
426 #define FANART_COLOR2 1001
427 #define FANART_COLOR3 1002
428 #define FANART_IMAGE 1003
430 #define SYSTEM_PROFILEAUTOLOGIN 1004
432 #define PVR_CONDITIONS_START 1100
433 #define PVR_IS_RECORDING (PVR_CONDITIONS_START)
434 #define PVR_HAS_TIMER (PVR_CONDITIONS_START + 1)
435 #define PVR_HAS_NONRECORDING_TIMER (PVR_CONDITIONS_START + 2)
436 #define PVR_HAS_EPG (PVR_CONDITIONS_START + 3)
437 #define PVR_HAS_TXT (PVR_CONDITIONS_START + 4)
438 #define PVR_HAS_DIRECTOR (PVR_CONDITIONS_START + 5)
439 #define PVR_IS_PLAYING_TV (PVR_CONDITIONS_START + 6)
440 #define PVR_IS_PLAYING_RADIO (PVR_CONDITIONS_START + 7)
441 #define PVR_IS_PLAYING_RECORDING (PVR_CONDITIONS_START + 8)
442 #define PVR_ACTUAL_STREAM_ENCRYPTED (PVR_CONDITIONS_START + 9)
443 #define PVR_CONDITIONS_END PVR_ACTUAL_STREAM_ENCRYPTED
445 #define PVR_STRINGS_START 1200
446 #define PVR_NEXT_RECORDING_CHANNEL (PVR_STRINGS_START)
447 #define PVR_NEXT_RECORDING_CHAN_ICO (PVR_STRINGS_START + 1)
448 #define PVR_NEXT_RECORDING_DATETIME (PVR_STRINGS_START + 2)
449 #define PVR_NEXT_RECORDING_TITLE (PVR_STRINGS_START + 3)
450 #define PVR_NOW_RECORDING_CHANNEL (PVR_STRINGS_START + 4)
451 #define PVR_NOW_RECORDING_CHAN_ICO (PVR_STRINGS_START + 5)
452 #define PVR_NOW_RECORDING_DATETIME (PVR_STRINGS_START + 6)
453 #define PVR_NOW_RECORDING_TITLE (PVR_STRINGS_START + 7)
454 #define PVR_BACKEND_NAME (PVR_STRINGS_START + 8)
455 #define PVR_BACKEND_VERSION (PVR_STRINGS_START + 9)
456 #define PVR_BACKEND_HOST (PVR_STRINGS_START + 10)
457 #define PVR_BACKEND_DISKSPACE (PVR_STRINGS_START + 11)
458 #define PVR_BACKEND_CHANNELS (PVR_STRINGS_START + 12)
459 #define PVR_BACKEND_TIMERS (PVR_STRINGS_START + 13)
460 #define PVR_BACKEND_RECORDINGS (PVR_STRINGS_START + 14)
461 #define PVR_BACKEND_NUMBER (PVR_STRINGS_START + 15)
462 #define PVR_TOTAL_DISKSPACE (PVR_STRINGS_START + 16)
463 #define PVR_NEXT_TIMER (PVR_STRINGS_START + 17)
464 #define PVR_PLAYING_DURATION (PVR_STRINGS_START + 18)
465 #define PVR_PLAYING_TIME (PVR_STRINGS_START + 19)
466 #define PVR_PLAYING_PROGRESS (PVR_STRINGS_START + 20)
467 #define PVR_ACTUAL_STREAM_CLIENT (PVR_STRINGS_START + 21)
468 #define PVR_ACTUAL_STREAM_DEVICE (PVR_STRINGS_START + 22)
469 #define PVR_ACTUAL_STREAM_STATUS (PVR_STRINGS_START + 23)
470 #define PVR_ACTUAL_STREAM_SIG (PVR_STRINGS_START + 24)
471 #define PVR_ACTUAL_STREAM_SNR (PVR_STRINGS_START + 25)
472 #define PVR_ACTUAL_STREAM_SIG_PROGR (PVR_STRINGS_START + 26)
473 #define PVR_ACTUAL_STREAM_SNR_PROGR (PVR_STRINGS_START + 27)
474 #define PVR_ACTUAL_STREAM_BER (PVR_STRINGS_START + 28)
475 #define PVR_ACTUAL_STREAM_UNC (PVR_STRINGS_START + 29)
476 #define PVR_ACTUAL_STREAM_VIDEO_BR (PVR_STRINGS_START + 30)
477 #define PVR_ACTUAL_STREAM_AUDIO_BR (PVR_STRINGS_START + 31)
478 #define PVR_ACTUAL_STREAM_DOLBY_BR (PVR_STRINGS_START + 32)
479 #define PVR_ACTUAL_STREAM_CRYPTION (PVR_STRINGS_START + 33)
480 #define PVR_ACTUAL_STREAM_SERVICE (PVR_STRINGS_START + 34)
481 #define PVR_ACTUAL_STREAM_MUX (PVR_STRINGS_START + 35)
482 #define PVR_ACTUAL_STREAM_PROVIDER (PVR_STRINGS_START + 36)
483 #define PVR_STRINGS_END PVR_ACTUAL_STREAM_PROVIDER
485 #define WINDOW_PROPERTY 9993
486 #define WINDOW_IS_TOPMOST 9994
487 #define WINDOW_IS_VISIBLE 9995
488 #define WINDOW_NEXT 9996
489 #define WINDOW_PREVIOUS 9997
490 #define WINDOW_IS_MEDIA 9998
491 #define WINDOW_IS_ACTIVE 9999
493 #define CONTROL_GET_LABEL 29996
494 #define CONTROL_IS_ENABLED 29997
495 #define CONTROL_IS_VISIBLE 29998
496 #define CONTROL_GROUP_HAS_FOCUS 29999
497 #define CONTROL_HAS_FOCUS 30000
499 #define VERSION_MAJOR 13
500 #define VERSION_MINOR 0
501 #define VERSION_TAG "-RC1"
503 #define LISTITEM_START 35000
504 #define LISTITEM_THUMB (LISTITEM_START)
505 #define LISTITEM_LABEL (LISTITEM_START + 1)
506 #define LISTITEM_TITLE (LISTITEM_START + 2)
507 #define LISTITEM_TRACKNUMBER (LISTITEM_START + 3)
508 #define LISTITEM_ARTIST (LISTITEM_START + 4)
509 #define LISTITEM_ALBUM (LISTITEM_START + 5)
510 #define LISTITEM_YEAR (LISTITEM_START + 6)
511 #define LISTITEM_GENRE (LISTITEM_START + 7)
512 #define LISTITEM_ICON (LISTITEM_START + 8)
513 #define LISTITEM_DIRECTOR (LISTITEM_START + 9)
514 #define LISTITEM_OVERLAY (LISTITEM_START + 10)
515 #define LISTITEM_LABEL2 (LISTITEM_START + 11)
516 #define LISTITEM_FILENAME (LISTITEM_START + 12)
517 #define LISTITEM_DATE (LISTITEM_START + 13)
518 #define LISTITEM_SIZE (LISTITEM_START + 14)
519 #define LISTITEM_RATING (LISTITEM_START + 15)
520 #define LISTITEM_PROGRAM_COUNT (LISTITEM_START + 16)
521 #define LISTITEM_DURATION (LISTITEM_START + 17)
522 #define LISTITEM_ISPLAYING (LISTITEM_START + 18)
523 #define LISTITEM_ISSELECTED (LISTITEM_START + 19)
524 #define LISTITEM_PLOT (LISTITEM_START + 20)
525 #define LISTITEM_PLOT_OUTLINE (LISTITEM_START + 21)
526 #define LISTITEM_EPISODE (LISTITEM_START + 22)
527 #define LISTITEM_SEASON (LISTITEM_START + 23)
528 #define LISTITEM_TVSHOW (LISTITEM_START + 24)
529 #define LISTITEM_PREMIERED (LISTITEM_START + 25)
530 #define LISTITEM_COMMENT (LISTITEM_START + 26)
531 #define LISTITEM_ACTUAL_ICON (LISTITEM_START + 27)
532 #define LISTITEM_PATH (LISTITEM_START + 28)
533 #define LISTITEM_PICTURE_PATH (LISTITEM_START + 29)
534 // the ordering of LISTITEM_PICTURE_* is important as they're mapped to SLIDE_* items in GUIInfoManager.cpp
535 #define LISTITEM_PICTURE_START (LISTITEM_START + 30)
536 #define LISTITEM_PICTURE_RESOLUTION (LISTITEM_PICTURE_START) // => SLIDE_RESOLUTION
537 #define LISTITEM_PICTURE_LONGDATE (LISTITEM_START + 31) // => SLIDE_EXIF_LONG_DATE
538 #define LISTITEM_PICTURE_LONGDATETIME (LISTITEM_START + 32) // => SLIDE_EXIF_LONG_DATE_TIME
539 #define LISTITEM_PICTURE_DATE (LISTITEM_START + 33) // => SLIDE_EXIF_DATE
540 #define LISTITEM_PICTURE_DATETIME (LISTITEM_START + 34) // => SLIDE_EXIF_DATE_TIME
541 #define LISTITEM_PICTURE_COMMENT (LISTITEM_START + 35) // => SLIDE_COMMENT
542 #define LISTITEM_PICTURE_CAPTION (LISTITEM_START + 36) // => SLIDE_IPTC_CAPTION
543 #define LISTITEM_PICTURE_DESC (LISTITEM_START + 37) // => SLIDE_EXIF_DESCRIPTION
544 #define LISTITEM_PICTURE_KEYWORDS (LISTITEM_START + 38) // => SLIDE_IPTC_KEYWORDS
545 #define LISTITEM_PICTURE_CAM_MAKE (LISTITEM_START + 39) // => SLIDE_EXIF_CAMERA_MAKE
546 #define LISTITEM_PICTURE_CAM_MODEL (LISTITEM_START + 40) // => SLIDE_EXIF_CAMERA_MODEL
547 #define LISTITEM_PICTURE_APERTURE (LISTITEM_START + 41) // => SLIDE_EXIF_APERTURE
548 #define LISTITEM_PICTURE_FOCAL_LEN (LISTITEM_START + 42) // => SLIDE_EXIF_FOCAL_LENGTH
549 #define LISTITEM_PICTURE_FOCUS_DIST (LISTITEM_START + 43) // => SLIDE_EXIF_FOCUS_DIST
550 #define LISTITEM_PICTURE_EXP_MODE (LISTITEM_START + 44) // => SLIDE_EXIF_EXPOSURE_MODE
551 #define LISTITEM_PICTURE_EXP_TIME (LISTITEM_START + 45) // => SLIDE_EXIF_EXPOSURE_TIME
552 #define LISTITEM_PICTURE_ISO (LISTITEM_START + 46) // => SLIDE_EXIF_ISO_EQUIV
553 #define LISTITEM_PICTURE_AUTHOR (LISTITEM_START + 47) // => SLIDE_IPTC_AUTHOR
554 #define LISTITEM_PICTURE_BYLINE (LISTITEM_START + 48) // => SLIDE_IPTC_BYLINE
555 #define LISTITEM_PICTURE_BYLINE_TITLE (LISTITEM_START + 49) // => SLIDE_IPTC_BYLINE_TITLE
556 #define LISTITEM_PICTURE_CATEGORY (LISTITEM_START + 50) // => SLIDE_IPTC_CATEGORY
557 #define LISTITEM_PICTURE_CCD_WIDTH (LISTITEM_START + 51) // => SLIDE_EXIF_CCD_WIDTH
558 #define LISTITEM_PICTURE_CITY (LISTITEM_START + 52) // => SLIDE_IPTC_CITY
559 #define LISTITEM_PICTURE_URGENCY (LISTITEM_START + 53) // => SLIDE_IPTC_URGENCY
560 #define LISTITEM_PICTURE_COPYRIGHT_NOTICE (LISTITEM_START + 54) // => SLIDE_IPTC_COPYRIGHT_NOTICE
561 #define LISTITEM_PICTURE_COUNTRY (LISTITEM_START + 55) // => SLIDE_IPTC_COUNTRY
562 #define LISTITEM_PICTURE_COUNTRY_CODE (LISTITEM_START + 56) // => SLIDE_IPTC_COUNTRY_CODE
563 #define LISTITEM_PICTURE_CREDIT (LISTITEM_START + 57) // => SLIDE_IPTC_CREDIT
564 #define LISTITEM_PICTURE_IPTCDATE (LISTITEM_START + 58) // => SLIDE_IPTC_DATE
565 #define LISTITEM_PICTURE_DIGITAL_ZOOM (LISTITEM_START + 59) // => SLIDE_EXIF_DIGITAL_ZOOM
566 #define LISTITEM_PICTURE_EXPOSURE (LISTITEM_START + 60) // => SLIDE_EXIF_EXPOSURE
567 #define LISTITEM_PICTURE_EXPOSURE_BIAS (LISTITEM_START + 61) // => SLIDE_EXIF_EXPOSURE_BIAS
568 #define LISTITEM_PICTURE_FLASH_USED (LISTITEM_START + 62) // => SLIDE_EXIF_FLASH_USED
569 #define LISTITEM_PICTURE_HEADLINE (LISTITEM_START + 63) // => SLIDE_IPTC_HEADLINE
570 #define LISTITEM_PICTURE_COLOUR (LISTITEM_START + 64) // => SLIDE_COLOUR
571 #define LISTITEM_PICTURE_LIGHT_SOURCE (LISTITEM_START + 65) // => SLIDE_EXIF_LIGHT_SOURCE
572 #define LISTITEM_PICTURE_METERING_MODE (LISTITEM_START + 66) // => SLIDE_EXIF_METERING_MODE
573 #define LISTITEM_PICTURE_OBJECT_NAME (LISTITEM_START + 67) // => SLIDE_IPTC_OBJECT_NAME
574 #define LISTITEM_PICTURE_ORIENTATION (LISTITEM_START + 68) // => SLIDE_EXIF_ORIENTATION
575 #define LISTITEM_PICTURE_PROCESS (LISTITEM_START + 69) // => SLIDE_PROCESS
576 #define LISTITEM_PICTURE_REF_SERVICE (LISTITEM_START + 70) // => SLIDE_IPTC_REF_SERVICE
577 #define LISTITEM_PICTURE_SOURCE (LISTITEM_START + 71) // => SLIDE_IPTC_SOURCE
578 #define LISTITEM_PICTURE_SPEC_INSTR (LISTITEM_START + 72) // => SLIDE_IPTC_SPEC_INSTR
579 #define LISTITEM_PICTURE_STATE (LISTITEM_START + 73) // => SLIDE_IPTC_STATE
580 #define LISTITEM_PICTURE_SUP_CATEGORIES (LISTITEM_START + 74) // => SLIDE_IPTC_SUP_CATEGORIES
581 #define LISTITEM_PICTURE_TX_REFERENCE (LISTITEM_START + 75) // => SLIDE_IPTC_TX_REFERENCE
582 #define LISTITEM_PICTURE_WHITE_BALANCE (LISTITEM_START + 76) // => SLIDE_EXIF_WHITE_BALANCE
583 #define LISTITEM_PICTURE_IMAGETYPE (LISTITEM_START + 77) // => SLIDE_IPTC_IMAGETYPE
584 #define LISTITEM_PICTURE_SUBLOCATION (LISTITEM_START + 78) // => SLIDE_IPTC_SUBLOCATION
585 #define LISTITEM_PICTURE_TIMECREATED (LISTITEM_START + 79) // => SLIDE_IPTC_TIMECREATED
586 #define LISTITEM_PICTURE_GPS_LAT (LISTITEM_START + 80) // => SLIDE_EXIF_GPS_LATITUDE
587 #define LISTITEM_PICTURE_GPS_LON (LISTITEM_START + 81) // => SLIDE_EXIF_GPS_LONGITUDE
588 #define LISTITEM_PICTURE_GPS_ALT (LISTITEM_START + 82) // => SLIDE_EXIF_GPS_ALTITUDE
589 #define LISTITEM_PICTURE_END (LISTITEM_PICTURE_GPS_ALT)
590 #define LISTITEM_STUDIO (LISTITEM_START + 83)
591 #define LISTITEM_MPAA (LISTITEM_START + 84)
592 #define LISTITEM_CAST (LISTITEM_START + 85)
593 #define LISTITEM_CAST_AND_ROLE (LISTITEM_START + 86)
594 #define LISTITEM_WRITER (LISTITEM_START + 87)
595 #define LISTITEM_TAGLINE (LISTITEM_START + 88)
596 #define LISTITEM_TOP250 (LISTITEM_START + 89)
597 #define LISTITEM_RATING_AND_VOTES (LISTITEM_START + 90)
598 #define LISTITEM_TRAILER (LISTITEM_START + 91)
599 #define LISTITEM_STAR_RATING (LISTITEM_START + 92)
600 #define LISTITEM_FILENAME_AND_PATH (LISTITEM_START + 93)
601 #define LISTITEM_SORT_LETTER (LISTITEM_START + 94)
602 #define LISTITEM_ALBUM_ARTIST (LISTITEM_START + 95)
603 #define LISTITEM_FOLDERNAME (LISTITEM_START + 96)
604 #define LISTITEM_VIDEO_CODEC (LISTITEM_START + 97)
605 #define LISTITEM_VIDEO_RESOLUTION (LISTITEM_START + 98)
606 #define LISTITEM_VIDEO_ASPECT (LISTITEM_START + 99)
607 #define LISTITEM_AUDIO_CODEC (LISTITEM_START + 100)
608 #define LISTITEM_AUDIO_CHANNELS (LISTITEM_START + 101)
609 #define LISTITEM_AUDIO_LANGUAGE (LISTITEM_START + 102)
610 #define LISTITEM_SUBTITLE_LANGUAGE (LISTITEM_START + 103)
611 #define LISTITEM_IS_FOLDER (LISTITEM_START + 104)
612 #define LISTITEM_ORIGINALTITLE (LISTITEM_START + 105)
613 #define LISTITEM_COUNTRY (LISTITEM_START + 106)
614 #define LISTITEM_PLAYCOUNT (LISTITEM_START + 107)
615 #define LISTITEM_LASTPLAYED (LISTITEM_START + 108)
616 #define LISTITEM_FOLDERPATH (LISTITEM_START + 109)
617 #define LISTITEM_DISC_NUMBER (LISTITEM_START + 110)
618 #define LISTITEM_FILE_EXTENSION (LISTITEM_START + 111)
619 #define LISTITEM_IS_RESUMABLE (LISTITEM_START + 112)
620 #define LISTITEM_PERCENT_PLAYED (LISTITEM_START + 113)
621 #define LISTITEM_DATE_ADDED (LISTITEM_START + 114)
622 #define LISTITEM_DBTYPE (LISTITEM_START + 115)
623 #define LISTITEM_DBID (LISTITEM_START + 116)
625 #define LISTITEM_STARTTIME (LISTITEM_START + 117)
626 #define LISTITEM_ENDTIME (LISTITEM_START + 118)
627 #define LISTITEM_STARTDATE (LISTITEM_START + 119)
628 #define LISTITEM_ENDDATE (LISTITEM_START + 120)
629 #define LISTITEM_NEXT_TITLE (LISTITEM_START + 121)
630 #define LISTITEM_NEXT_GENRE (LISTITEM_START + 122)
631 #define LISTITEM_NEXT_PLOT (LISTITEM_START + 123)
632 #define LISTITEM_NEXT_PLOT_OUTLINE (LISTITEM_START + 124)
633 #define LISTITEM_NEXT_STARTTIME (LISTITEM_START + 125)
634 #define LISTITEM_NEXT_ENDTIME (LISTITEM_START + 126)
635 #define LISTITEM_NEXT_STARTDATE (LISTITEM_START + 127)
636 #define LISTITEM_NEXT_ENDDATE (LISTITEM_START + 128)
637 #define LISTITEM_NEXT_DURATION (LISTITEM_START + 129)
638 #define LISTITEM_CHANNEL_NAME (LISTITEM_START + 130)
639 #define LISTITEM_CHANNEL_NUMBER (LISTITEM_START + 131)
640 #define LISTITEM_CHANNEL_GROUP (LISTITEM_START + 132)
641 #define LISTITEM_HASTIMER (LISTITEM_START + 133)
642 #define LISTITEM_ISRECORDING (LISTITEM_START + 134)
643 #define LISTITEM_ISENCRYPTED (LISTITEM_START + 135)
644 #define LISTITEM_PARENTALRATING (LISTITEM_START + 136)
645 #define LISTITEM_PROGRESS (LISTITEM_START + 137)
646 #define LISTITEM_HAS_EPG (LISTITEM_START + 138)
647 #define LISTITEM_VOTES (LISTITEM_START + 139)
648 #define LISTITEM_STEREOSCOPIC_MODE (LISTITEM_START + 140)
649 #define LISTITEM_IS_STEREOSCOPIC (LISTITEM_START + 141)
651 #define LISTITEM_PROPERTY_START (LISTITEM_START + 200)
652 #define LISTITEM_PROPERTY_END (LISTITEM_PROPERTY_START + 1000)
653 #define LISTITEM_END (LISTITEM_PROPERTY_END)
655 #define MUSICPLAYER_PROPERTY_OFFSET 800 // 100 id's reserved for musicplayer props.
656 #define LISTITEM_ART_OFFSET 900 // 100 id's reserved for listitem art.
658 #define CONDITIONAL_LABEL_START LISTITEM_END + 1 // 36001
659 #define CONDITIONAL_LABEL_END 37000
661 // the multiple information vector
662 #define MULTI_INFO_START 40000
663 #define MULTI_INFO_END 99999
664 #define COMBINED_VALUES_START 100000
666 // forward
667 class CInfoLabel;
668 class CGUIWindow;
669 namespace EPG { class CEpgInfoTag; }
671 // Info Flags
672 // Stored in the top 8 bits of GUIInfo::m_data1
673 // therefore we only have room for 8 flags
674 #define INFOFLAG_LISTITEM_WRAP ((uint32_t) (1 << 25)) // Wrap ListItem lookups
675 #define INFOFLAG_LISTITEM_POSITION ((uint32_t) (1 << 26)) // Absolute ListItem lookups
677 // structure to hold multiple integer data
678 // for storage referenced from a single integer
679 class GUIInfo
681 public:
682 GUIInfo(int info, uint32_t data1 = 0, int data2 = 0, uint32_t flag = 0)
684 m_info = info;
685 m_data1 = data1;
686 m_data2 = data2;
687 if (flag)
688 SetInfoFlag(flag);
690 bool operator ==(const GUIInfo &right) const
692 return (m_info == right.m_info && m_data1 == right.m_data1 && m_data2 == right.m_data2);
694 uint32_t GetInfoFlag() const;
695 uint32_t GetData1() const;
696 int GetData2() const;
697 int m_info;
698 private:
699 void SetInfoFlag(uint32_t flag);
700 uint32_t m_data1;
701 int m_data2;
705 \ingroup strings
706 \brief
708 class CGUIInfoManager : public IMsgTargetCallback, public Observable
710 public:
711 CGUIInfoManager(void);
712 virtual ~CGUIInfoManager(void);
714 void Clear();
715 virtual bool OnMessage(CGUIMessage &message);
717 /*! \brief Register a boolean condition/expression
718 This routine allows controls or other clients of the info manager to register
719 to receive updates of particular expressions, in a particular context (currently windows).
721 In the future, it will allow clients to receive pushed callbacks when the expression changes.
723 \param expression the boolean condition or expression
724 \param context the context window
725 \return an identifier used to reference this expression
727 INFO::InfoPtr Register(const CStdString &expression, int context = 0);
729 /*! \brief Evaluate a boolean expression
730 \param expression the expression to evaluate
731 \param context the context in which to evaluate the expression (currently windows)
732 \return the value of the evaluated expression.
733 \sa Register
735 bool EvaluateBool(const CStdString &expression, int context = 0);
737 int TranslateString(const CStdString &strCondition);
739 /*! \brief Get integer value of info.
740 \param value int reference to pass value of given info
741 \param info id of info
742 \param context the context in which to evaluate the expression (currently windows)
743 \param item optional listitem if want to get listitem related int
744 \return true if given info was handled
745 \sa GetItemInt, GetMultiInfoInt
747 bool GetInt(int &value, int info, int contextWindow = 0, const CGUIListItem *item = NULL) const;
748 CStdString GetLabel(int info, int contextWindow = 0, CStdString *fallback = NULL);
750 CStdString GetImage(int info, int contextWindow, CStdString *fallback = NULL);
752 CStdString GetTime(TIME_FORMAT format = TIME_FORMAT_GUESS) const;
753 CStdString GetDate(bool bNumbersOnly = false);
754 CStdString GetDuration(TIME_FORMAT format = TIME_FORMAT_GUESS) const;
756 void SetCurrentItem(CFileItem &item);
757 void ResetCurrentItem();
758 // Current song stuff
759 /// \brief Retrieves tag info (if necessary) and fills in our current song path.
760 void SetCurrentSong(CFileItem &item);
761 void SetCurrentAlbumThumb(const CStdString &thumbFileName);
762 void SetCurrentMovie(CFileItem &item);
763 void SetCurrentSlide(CFileItem &item);
764 const CFileItem &GetCurrentSlide() const;
765 void ResetCurrentSlide();
766 void SetCurrentSongTag(const MUSIC_INFO::CMusicInfoTag &tag);
767 void SetCurrentVideoTag(const CVideoInfoTag &tag);
769 const MUSIC_INFO::CMusicInfoTag *GetCurrentSongTag() const;
770 const CVideoInfoTag* GetCurrentMovieTag() const;
772 CStdString GetMusicLabel(int item);
773 CStdString GetMusicTagLabel(int info, const CFileItem *item);
774 CStdString GetVideoLabel(int item);
775 CStdString GetPlaylistLabel(int item, int playlistid = -1 /* PLAYLIST_NONE */) const;
776 CStdString GetMusicPartyModeLabel(int item);
777 const CStdString GetMusicPlaylistInfo(const GUIInfo& info);
778 CStdString GetPictureLabel(int item);
780 int64_t GetPlayTime() const; // in ms
781 CStdString GetCurrentPlayTime(TIME_FORMAT format = TIME_FORMAT_GUESS) const;
782 CStdString GetCurrentSeekTime(TIME_FORMAT format = TIME_FORMAT_GUESS) const;
783 int GetPlayTimeRemaining() const;
784 int GetTotalPlayTime() const;
785 CStdString GetCurrentPlayTimeRemaining(TIME_FORMAT format) const;
786 CStdString GetVersion();
787 CStdString GetBuild();
789 bool GetDisplayAfterSeek();
790 void SetDisplayAfterSeek(unsigned int timeOut = 2500, int seekOffset = 0);
791 void SetSeeking(bool seeking) { m_playerSeeking = seeking; };
792 void SetShowTime(bool showtime) { m_playerShowTime = showtime; };
793 void SetShowCodec(bool showcodec) { m_playerShowCodec = showcodec; };
794 void SetShowInfo(bool showinfo) { m_playerShowInfo = showinfo; };
795 void ToggleShowCodec() { m_playerShowCodec = !m_playerShowCodec; };
796 bool ToggleShowInfo() { m_playerShowInfo = !m_playerShowInfo; return m_playerShowInfo; };
797 bool m_performingSeek;
799 std::string GetSystemHeatInfo(int info);
800 CTemperature GetGPUTemperature();
802 void UpdateFPS();
803 void UpdateAVInfo();
804 inline float GetFPS() const { return m_fps; };
806 void SetNextWindow(int windowID) { m_nextWindowID = windowID; };
807 void SetPreviousWindow(int windowID) { m_prevWindowID = windowID; };
809 void ResetCache();
810 bool GetItemInt(int &value, const CGUIListItem *item, int info) const;
811 CStdString GetItemLabel(const CFileItem *item, int info, CStdString *fallback = NULL);
812 CStdString GetItemImage(const CFileItem *item, int info, CStdString *fallback = NULL);
814 // Called from tuxbox service thread to update current status
815 void UpdateFromTuxBox();
817 /*! \brief containers call here to specify that the focus is changing
818 \param id control id
819 \param next true if we're moving to the next item, false if previous
820 \param scrolling true if the container is scrolling, false if the movement requires no scroll
822 void SetContainerMoving(int id, bool next, bool scrolling)
824 // magnitude 2 indicates a scroll, sign indicates direction
825 m_containerMoves[id] = (next ? 1 : -1) * (scrolling ? 2 : 1);
828 void SetLibraryBool(int condition, bool value);
829 bool GetLibraryBool(int condition);
830 void ResetLibraryBools();
831 CStdString LocalizeTime(const CDateTime &time, TIME_FORMAT format) const;
833 int TranslateSingleString(const CStdString &strCondition);
835 int RegisterSkinVariableString(const INFO::CSkinVariableString* info);
836 int TranslateSkinVariableString(const CStdString& name, int context);
837 CStdString GetSkinVariableString(int info, bool preferImage = false, const CGUIListItem *item=NULL);
839 /// \brief iterates through boolean conditions and compares their stored values to current values. Returns true if any condition changed value.
840 bool ConditionsChangedValues(const std::map<INFO::InfoPtr, bool>& map);
842 bool m_AVInfoValid;
844 protected:
845 friend class INFO::InfoSingle;
846 bool GetBool(int condition, int contextWindow = 0, const CGUIListItem *item=NULL);
847 int TranslateSingleString(const CStdString &strCondition, bool &listItemDependent);
849 // routines for window retrieval
850 bool CheckWindowCondition(CGUIWindow *window, int condition) const;
851 CGUIWindow *GetWindowWithCondition(int contextWindow, int condition) const;
853 /*! \brief class for holding information on properties
855 class Property
857 public:
858 Property(const CStdString &property, const CStdString &parameters);
860 const CStdString &param(unsigned int n = 0) const;
861 unsigned int num_params() const;
863 CStdString name;
864 private:
865 std::vector<CStdString> params;
868 bool GetMultiInfoBool(const GUIInfo &info, int contextWindow = 0, const CGUIListItem *item = NULL);
869 bool GetMultiInfoInt(int &value, const GUIInfo &info, int contextWindow = 0) const;
870 CStdString GetMultiInfoLabel(const GUIInfo &info, int contextWindow = 0, CStdString *fallback = NULL);
871 int TranslateListItem(const Property &info);
872 int TranslateMusicPlayerString(const CStdString &info) const;
873 TIME_FORMAT TranslateTimeFormat(const CStdString &format);
874 bool GetItemBool(const CGUIListItem *item, int condition) const;
876 /*! \brief Split an info string into it's constituent parts and parameters
877 Format is:
879 info1(params1).info2(params2).info3(params3) ...
881 where the parameters are an optional comma separated parameter list.
883 \param infoString the original string
884 \param info the resulting pairs of info and parameters.
886 void SplitInfoString(const CStdString &infoString, std::vector<Property> &info);
888 // Conditional string parameters for testing are stored in a vector for later retrieval.
889 // The offset into the string parameters array is returned.
890 int ConditionalStringParameter(const CStdString &strParameter, bool caseSensitive = false);
891 int AddMultiInfo(const GUIInfo &info);
892 int AddListItemProp(const CStdString &str, int offset=0);
895 * @brief Get the EPG tag that is currently active
896 * @param tag The active tag
897 * @return True if an EPG tag is active and 'tag' was updated, false otherwise
899 bool GetEpgInfoTag(EPG::CEpgInfoTag& tag) const;
901 // Conditional string parameters are stored here
902 CStdStringArray m_stringParameters;
904 // Array of multiple information mapped to a single integer lookup
905 std::vector<GUIInfo> m_multiInfo;
906 std::vector<std::string> m_listitemProperties;
908 CStdString m_currentMovieDuration;
910 // Current playing stuff
911 CFileItem* m_currentFile;
912 CStdString m_currentMovieThumb;
913 CFileItem* m_currentSlide;
915 // fan stuff
916 unsigned int m_lastSysHeatInfoTime;
917 int m_fanSpeed;
918 CTemperature m_gpuTemp;
919 CTemperature m_cpuTemp;
921 //Fullscreen OSD Stuff
922 unsigned int m_AfterSeekTimeout;
923 int m_seekOffset;
924 bool m_playerSeeking;
925 bool m_playerShowTime;
926 bool m_playerShowCodec;
927 bool m_playerShowInfo;
929 // FPS counters
930 float m_fps;
931 unsigned int m_frameCounter;
932 unsigned int m_lastFPSTime;
934 std::map<int, int> m_containerMoves; // direction of list moving
935 int m_nextWindowID;
936 int m_prevWindowID;
938 std::vector<INFO::InfoPtr> m_bools;
939 std::vector<INFO::CSkinVariableString> m_skinVariableStrings;
941 int m_libraryHasMusic;
942 int m_libraryHasMovies;
943 int m_libraryHasTVShows;
944 int m_libraryHasMusicVideos;
945 int m_libraryHasMovieSets;
947 SPlayerVideoStreamInfo m_videoInfo;
948 SPlayerAudioStreamInfo m_audioInfo;
950 CCriticalSection m_critInfo;
954 \ingroup strings
955 \brief
957 extern CGUIInfoManager g_infoManager;
958 #endif