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