MythTV  master
playbackbox.h
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 // vim:set sw=4 ts=4 expandtab:
3 #ifndef PLAYBACKBOX_H_
4 #define PLAYBACKBOX_H_
5 
6 // C++ headers
7 #include <cstdint> // for [u]int[32,64]_t
8 #include <deque>
9 #include <vector>
10 using namespace std;
11 
12 #include <QStringList>
13 #include <QDateTime>
14 #include <QMultiMap>
15 #include <QObject>
16 #include <QMutex>
17 #include <QMap>
18 #include <QSet>
19 
20 #include "jobqueue.h"
21 #include "tv_play.h"
22 
23 #include "mythscreentype.h"
24 #include "metadatafactory.h"
25 
26 // mythfrontend
27 #include "schedulecommon.h"
28 #include "programinfocache.h"
29 #include "playbackboxhelper.h"
30 
31 class QKeyEvent;
32 class QEvent;
33 class QTimer;
34 
35 class MythPlayer;
36 class RingBuffer;
37 class ProgramInfo;
38 
39 class MythUIButtonList;
41 class MythUIImage;
42 class MythUIText;
43 class MythUITextEdit;
44 class MythUIButton;
45 class MythDialogBox;
46 class MythMenu;
48 
49 typedef QMap<QString,ProgramList> ProgramMap;
50 typedef QMap<QString,QString> Str2StrMap;
51 
52 enum {
56 };
57 
59 {
60  Q_OBJECT
61  friend class PlaybackBoxListItem;
62 
63  public:
64  // ViewType values cannot change; they are stored in the database.
65  typedef enum {
66  TitlesOnly = 0,
67  TitlesCategories = 1,
68  TitlesCategoriesRecGroups = 2,
69  TitlesRecGroups = 3,
70  Categories = 4,
71  CategoriesRecGroups = 5,
72  RecGroups = 6,
73  ViewTypes, // placeholder value, not in database
74  } ViewType;
75 
76  // Sort function when TitlesOnly. Values are stored in database.
77  typedef enum {
78  TitleSortAlphabetical = 0,
79  TitleSortRecPriority = 1,
80  TitleSortMethods, // placeholder value, not in database
81  } ViewTitleSort;
82 
83  typedef enum {
84  VIEW_NONE = 0x0000,
85  VIEW_TITLES = 0x0001,
86  VIEW_CATEGORIES = 0x0002,
87  VIEW_RECGROUPS = 0x0004,
88  VIEW_WATCHLIST = 0x0008,
89  VIEW_SEARCHES = 0x0010,
90  VIEW_LIVETVGRP = 0x0020,
91  // insert new entries above here
92  VIEW_WATCHED = 0x8000
93  } ViewMask;
94 
95  typedef enum
96  {
100  } DeletePopupType;
101 
102  typedef enum
103  {
104  kNoFlags = 0x00,
105  kForgetHistory = 0x01,
106  kForce = 0x02,
107  kIgnore = 0x04,
108  kAllRemaining = 0x08,
109  } DeleteFlags;
110 
111  typedef enum
112  {
115  kDone
116  } killStateType;
117 
118  PlaybackBox(MythScreenStack *parent, const QString& name,
119  TV *player = nullptr, bool showTV = false);
120  ~PlaybackBox(void);
121 
122  bool Create(void) override; // MythScreenType
123  void Load(void) override; // MythScreenType
124  void Init(void) override; // MythScreenType
125  bool keyPressEvent(QKeyEvent *) override; // MythScreenType
126  void customEvent(QEvent *event) override; // ScheduleCommon
127 
128  void setInitialRecGroup(const QString& initialGroup) { m_recGroup = initialGroup; }
129  static void * RunPlaybackBox(void *player, bool);
130 
131  public slots:
132  void displayRecGroup(const QString &newRecGroup = "");
133  void groupSelectorClosed(void);
134 
135  protected slots:
136  void updateRecList(MythUIButtonListItem *);
138  { UpdateUIListItem(item, true); }
139  void ItemVisible(MythUIButtonListItem *item);
140  void ItemLoaded(MythUIButtonListItem *item);
141  void selected(MythUIButtonListItem *item);
142  void updateRecGroup(MythUIButtonListItem *sel_item);
143  void PlayFromBookmarkOrProgStart(MythUIButtonListItem *item = nullptr);
144  void PlayFromBookmark(MythUIButtonListItem *item = nullptr);
145  void PlayFromBeginning(MythUIButtonListItem *item = nullptr);
146  void PlayFromLastPlayPos(MythUIButtonListItem *item = nullptr);
147  void deleteSelected(MythUIButtonListItem *item);
148  void ClearBookmark();
149  void SwitchList(void);
150 
151  void ShowGroupPopup(void);
152  void StopSelected(void);
153  void showMetadataEditor();
154  void showGroupFilter();
155  void showRecGroupPasswordChanger();
156  MythMenu* createPlayFromMenu();
157  MythMenu* createRecordingMenu();
158  MythMenu* createJobMenu();
159  MythMenu* createTranscodingProfilesMenu();
160  MythMenu* createStorageMenu();
161  MythMenu* createPlaylistMenu();
162  MythMenu* createPlaylistStorageMenu();
163  MythMenu* createPlaylistJobMenu();
164  void changeProfileAndTranscode(int id);
165  void showIconHelp();
166  void ShowRecGroupChangerUsePlaylist(void) { ShowRecGroupChanger(true); }
167  void ShowPlayGroupChangerUsePlaylist(void) { ShowPlayGroupChanger(true); }
168  void ShowRecGroupChanger(bool use_playlist = false);
169  void ShowPlayGroupChanger(bool use_playlist = false);
170 
171  void popupClosed(const QString& which, int result);
172 
173  void doPlayListRandom();
174 
175  void askStop();
176 
177  void doAllowRerecord();
178 
179  void askDelete();
180  void Undelete(void);
181  void Delete(DeleteFlags = kNoFlags);
182  void DeleteForgetHistory(void) { Delete(kForgetHistory); }
183  void DeleteForce(void) { Delete(kForce); }
184  void DeleteIgnore(void) { Delete(kIgnore); }
186  { Delete((DeleteFlags)((int)kForce |(int)kAllRemaining)); }
188  { Delete((DeleteFlags)((int)kIgnore|(int)kAllRemaining)); }
189 
190  void ShowRecordedEpisodes();
191  void ShowAllRecordings();
192 
193  void toggleWatched();
194  void toggleAutoExpire();
195  void togglePreserveEpisode();
196 
197  void toggleView(ViewMask itemMask, bool setOn);
198  void toggleTitleView(bool setOn) { toggleView(VIEW_TITLES, setOn); }
199  void toggleCategoryView(bool setOn) { toggleView(VIEW_CATEGORIES, setOn); }
200  void toggleRecGroupView(bool setOn) { toggleView(VIEW_RECGROUPS, setOn); }
201  void toggleWatchListView(bool setOn) { toggleView(VIEW_WATCHLIST, setOn); }
202  void toggleSearchView(bool setOn) { toggleView(VIEW_SEARCHES, setOn); }
203  void toggleLiveTVView(bool setOn) { toggleView(VIEW_LIVETVGRP, setOn); }
204  void toggleWatchedView(bool setOn) { toggleView(VIEW_WATCHED, setOn); }
205 
206  void setGroupFilter(const QString &newRecGroup);
207  void setRecGroup(QString newRecGroup);
208  void setPlayGroup(QString newPlayGroup);
209 
210  void saveRecMetadata(const QString &newTitle, const QString &newSubtitle,
211  const QString &newDescription, const QString &newInetref,
212  uint season, uint episode);
213 
214  void SetRecGroupPassword(const QString &newPassword);
215 
216  void doJobQueueJob(int jobType, int jobFlags = 0);
217  void doPlaylistJobQueueJob(int jobType, int jobFlags = 0);
218  void stopPlaylistJobQueueJob(int jobType);
219  void doBeginFlagging();
220  void doBeginLookup();
221  void doBeginTranscoding() { doJobQueueJob(JOB_TRANSCODE,
222  JOB_USE_CUTLIST); }
223  void doBeginUserJob1() { doJobQueueJob(JOB_USERJOB1); }
224  void doBeginUserJob2() { doJobQueueJob(JOB_USERJOB2); }
225  void doBeginUserJob3() { doJobQueueJob(JOB_USERJOB3); }
226  void doBeginUserJob4() { doJobQueueJob(JOB_USERJOB4); }
227  void doPlaylistBeginTranscoding() { doPlaylistJobQueueJob(JOB_TRANSCODE,
228  JOB_USE_CUTLIST); }
229  void stopPlaylistTranscoding() { stopPlaylistJobQueueJob(JOB_TRANSCODE);}
230  void doPlaylistBeginFlagging() { doPlaylistJobQueueJob(JOB_COMMFLAG); }
231  void stopPlaylistFlagging() { stopPlaylistJobQueueJob(JOB_COMMFLAG); }
232  void doPlaylistBeginLookup() { doPlaylistJobQueueJob(JOB_METADATA); }
233  void stopPlaylistLookup() { stopPlaylistJobQueueJob(JOB_METADATA); }
234  void doPlaylistBeginUserJob1() { doPlaylistJobQueueJob(JOB_USERJOB1); }
235  void stopPlaylistUserJob1() { stopPlaylistJobQueueJob(JOB_USERJOB1); }
236  void doPlaylistBeginUserJob2() { doPlaylistJobQueueJob(JOB_USERJOB2); }
237  void stopPlaylistUserJob2() { stopPlaylistJobQueueJob(JOB_USERJOB2); }
238  void doPlaylistBeginUserJob3() { doPlaylistJobQueueJob(JOB_USERJOB3); }
239  void stopPlaylistUserJob3() { stopPlaylistJobQueueJob(JOB_USERJOB3); }
240  void doPlaylistBeginUserJob4() { doPlaylistJobQueueJob(JOB_USERJOB4); }
241  void stopPlaylistUserJob4() { stopPlaylistJobQueueJob(JOB_USERJOB4); }
242  void doClearPlaylist();
243  void PlaylistDeleteForgetHistory(void) { PlaylistDelete(true); }
244  void PlaylistDelete(bool forgetHistory = false);
245  void doPlaylistExpireSetting(bool turnOn);
246  void doPlaylistExpireSetOn() { doPlaylistExpireSetting(true); }
247  void doPlaylistExpireSetOff() { doPlaylistExpireSetting(false); }
248  void doPlaylistWatchedSetting(bool turnOn);
249  void doPlaylistWatchedSetOn() { doPlaylistWatchedSetting(true); }
250  void doPlaylistWatchedSetOff() { doPlaylistWatchedSetting(false); }
251  void doPlaylistAllowRerecord();
252  void togglePlayListTitle(void);
253  void togglePlayListItem(void);
254  void playSelectedPlaylist(bool random);
255  void doPlayList(void);
256  void showViewChanger(void);
257  void saveViewChanges(void);
258 
259  void checkPassword(const QString &password);
260  void passwordClosed(void);
261 
262  void fanartLoad(void);
263  void bannerLoad(void);
264  void coverartLoad(void);
265 
266  private:
267  bool UpdateUILists(void);
268  void UpdateUIGroupList(const QStringList &groupPreferences);
269  void UpdateUIRecGroupList(void);
270 
271  void UpdateProgressBar(void);
272 
273  void PlayX(const ProgramInfo &pginfo,
274  bool ignoreBookmark,
275  bool ignoreProgStart,
276  bool ignoreLastPlayPos,
277  bool underNetworkControl);
278 
279  bool Play(const ProgramInfo &rec,
280  bool inPlaylist,
281  bool ignoreBookmark,
282  bool ignoreProgStart,
283  bool ignoreLastPlayPos,
284  bool underNetworkControl);
285 
286  ProgramInfo *GetCurrentProgram(void) const override; // ScheduleCommon
287 
288  void togglePlayListItem(ProgramInfo *pginfo);
289  void randomizePlayList(void);
290 
291  void processNetworkControlCommands(void);
292  void processNetworkControlCommand(const QString &command);
293 
294  ProgramInfo *FindProgramInUILists(const ProgramInfo&);
295  ProgramInfo *FindProgramInUILists(uint recordingID,
296  const QString& recgroup = "NotLiveTV");
297 
298  void RemoveProgram(uint recordingID,
299  bool forgetHistory, bool forceMetadataDelete);
300  void ShowDeletePopup(DeletePopupType);
301  void ShowAvailabilityPopup(const ProgramInfo&);
302  void ShowActionPopup(const ProgramInfo&);
303 
304  QString getRecGroupPassword(const QString &recGroup);
305  void fillRecGroupPasswordCache(void);
306 
307  bool IsUsageUIVisible(void) const;
308 
309  void updateIcons(const ProgramInfo *pginfo = nullptr);
310  void UpdateUsageUI(void);
311  void updateGroupInfo(const QString &groupname, const QString &grouplabel);
312 
313  void SetItemIcons(MythUIButtonListItem *item, ProgramInfo* pginfo);
314  void UpdateUIListItem(
315  ProgramInfo *pginfo,
316  bool force_preview_reload);
317  void UpdateUIListItem(MythUIButtonListItem *item, bool is_sel,
318  bool force_preview_reload = true);
319 
320  void HandlePreviewEvent(const QStringList &list);
321  void HandleRecordingRemoveEvent(uint recordingID);
322  void HandleRecordingAddEvent(const ProgramInfo &evinfo);
323  void HandleUpdateProgramInfoEvent(const ProgramInfo &evinfo);
324  void HandleUpdateProgramInfoFileSizeEvent(uint recordingID, uint64_t filesize);
325 
326  void ScheduleUpdateUIList(void);
327  void ShowMenu(void) override; // MythScreenType
328  bool CreatePopupMenu(const QString &title);
329  void DisplayPopupMenu(void);
330  //bool CreatePopupMenu(const QString &title, const ProgramInfo &pginfo)
331  // { return CreatePopupMenu(title + CreateProgramInfoString(pginfo)); }
332  bool CreatePopupMenuPlaylist(void);
333 
334  QString CreateProgramInfoString(const ProgramInfo &pginfo) const;
335 
336  QString extract_job_state(const ProgramInfo &pginfo);
337  QString extract_commflag_state(const ProgramInfo &pginfo);
338 
339 
340  QRegExp m_titleChaff;
341 
342  MythUIButtonList *m_recgroupList {nullptr};
343  MythUIButtonList *m_groupList {nullptr};
344  MythUIButtonList *m_recordingList {nullptr};
345 
346  MythUIText *m_noRecordingsText {nullptr};
347 
348  MythUIImage *m_previewImage {nullptr};
349 
351  MythUIImage *m_artImage[3];
352  QTimer *m_artTimer[3];
353 
355 
356  // Settings ///////////////////////////////////////////////////////////////
358  bool m_titleView {false};
360  bool m_useCategories {false};
362  bool m_useRecGroups {false};
364  bool m_watchListStart {false};
366  bool m_watchListAutoExpire {false};
368  int m_watchListMaxAge {60};
370  int m_watchListBlackOut {2};
374  int m_listOrder {1};
375 
376  // Recording Group settings
378  QString m_recGroup;
380  QString m_newRecGroup;
383  ViewMask m_viewMask {VIEW_TITLES};
384 
385  // Popup support //////////////////////////////////////////////////////////
386  // General popup support
387  MythDialogBox *m_menuDialog {nullptr};
388  MythMenu *m_popupMenu {nullptr};
389  MythScreenStack *m_popupStack {nullptr};
390 
391  bool m_doToggleMenu {true};
392 
393  // Recording Group popup support
394  typedef QPair<QString, QString> RecGroup;
395  QMap<QString,QString> m_recGroupType;
396  QMap<QString,QString> m_recGroupPwCache;
397 
398  // State Variables ////////////////////////////////////////////////////////
399  // Main Recording List support
400  QStringList m_titleList;
402  int m_progsInDB {0};
403  bool m_isFilling {false};
404 
405  QStringList m_recGroups;
406  mutable QMutex m_recGroupsLock;
407  int m_recGroupIdx {-1};
408 
409  // Other state
411  QStringList m_delList;
413  QString m_currentGroup;
414 
415  // Play List support
416  QList<uint> m_playList;
417  bool m_op_on_playlist {false};
418  QList<uint> m_playListPlay;
419 
421 
423  bool m_playingSomething {false};
424 
426  bool m_needUpdate {false};
427 
428  // Selection state variables
429  bool m_haveGroupInfoSet {false};
430 
431  // Network Control Variables //////////////////////////////////////////////
432  mutable QMutex m_ncLock;
433  deque<QString> m_networkControlCommands;
434 
435  // Other
436  TV *m_player {nullptr};
441  QSet<QString> m_preview_tokens;
442 
443  bool m_firstGroup {true};
444  bool m_usingGroupSelector {false};
445  bool m_groupSelected {false};
446  bool m_passwordEntered {false};
447 
448  // This class caches the contents of the jobqueue table to avoid excessive
449  // DB queries each time the PBB selection changes (currently 4 queries per
450  // displayed item). The cache remains valid for 15 seconds
451  // (kInvalidateTimeMs).
453  {
454  public:
455  PbbJobQueue() { Update(); }
456  bool IsJobQueued(int jobType, uint chanid,
457  const QDateTime &recstartts);
458  bool IsJobRunning(int jobType, uint chanid,
459  const QDateTime &recstartts);
460  bool IsJobQueuedOrRunning(int jobType, uint chanid,
461  const QDateTime &recstartts);
462  private:
463  static const qint64 kInvalidateTimeMs = 15000;
464  void Update();
465  QDateTime m_lastUpdated;
466  // Maps <chanid, recstartts> to a set of JobQueueEntry values.
467  typedef QMultiMap<QPair<uint, QDateTime>, JobQueueEntry> MapType;
469  } m_jobQueue;
470 };
471 
473 {
474  Q_OBJECT
475 
476  public:
477  GroupSelector(MythScreenStack *lparent, const QString &label,
478  const QStringList &list, const QStringList &data,
479  const QString &selected)
480  : MythScreenType(lparent, "groupselector"), m_label(label),
481  m_List(list), m_Data(data), m_selected(selected) {}
482 
483  bool Create(void) override; // MythScreenType
484 
485  signals:
486  void result(QString);
487 
488  protected slots:
489  void AcceptItem(MythUIButtonListItem *item);
490 
491  private:
492  void loadGroups(void);
493 
494  QString m_label;
495  QStringList m_List;
496  QStringList m_Data;
497  QString m_selected;
498 };
499 
501 {
502  Q_OBJECT
503 
504  public:
505  ChangeView(MythScreenStack *lparent, MythScreenType *parentScreen,
506  int viewMask)
507  : MythScreenType(lparent, "changeview"),
508  m_parentScreen(parentScreen), m_viewMask(viewMask) {}
509 
510  bool Create(void) override; // MythScreenType
511 
512  signals:
513  void save();
514 
515  protected slots:
516  void SaveChanges(void);
517 
518  private:
521 };
522 
524 {
525  Q_OBJECT
526 
527  public:
528  PasswordChange(MythScreenStack *lparent, const QString& oldpassword)
529  : MythScreenType(lparent, "passwordchanger"),
530  m_oldPassword(oldpassword){}
531 
532  bool Create(void) override; // MythScreenType
533 
534  signals:
535  void result(const QString &);
536 
537  protected slots:
538  void OldPasswordChanged(void);
539  void SendResult(void);
540 
541  private:
542  MythUITextEdit *m_oldPasswordEdit {nullptr};
543  MythUITextEdit *m_newPasswordEdit {nullptr};
544  MythUIButton *m_okButton {nullptr};
545 
546  QString m_oldPassword;
547 };
548 
550 {
551  Q_OBJECT
552 
553  public:
554  RecMetadataEdit(MythScreenStack *lparent, ProgramInfo *pginfo);
555 
556  bool Create(void) override; // MythScreenType
557 
558  signals:
559  void result(const QString &, const QString &, const QString &,
560  const QString &, uint, uint);
561 
562  protected slots:
563  void SaveChanges(void);
564  void ClearInetref();
565  void PerformQuery(void);
566  void OnSearchListSelection(const RefCountHandler<MetadataLookup>& lookup);
567 
568  private:
569  void customEvent(QEvent *event) override; // MythUIType
570  void QueryComplete(MetadataLookup *lookup);
571 
572  MythUITextEdit *m_titleEdit {nullptr};
573  MythUITextEdit *m_subtitleEdit {nullptr};
574  MythUITextEdit *m_descriptionEdit {nullptr};
575  MythUITextEdit *m_inetrefEdit {nullptr};
576  MythUISpinBox *m_seasonSpin {nullptr};
577  MythUISpinBox *m_episodeSpin {nullptr};
578  MythUIBusyDialog *m_busyPopup {nullptr};
579  MythUIButton *m_queryButton {nullptr};
580 
581  ProgramInfo *m_progInfo {nullptr};
582  MythScreenStack *m_popupStack {nullptr};
583  MetadataFactory *m_metadataFactory {nullptr};
584 };
585 
586 class HelpPopup : public MythScreenType
587 {
588  Q_OBJECT
589 
590  public:
591  explicit HelpPopup(MythScreenStack *lparent)
592  : MythScreenType(lparent, "helppopup") {}
593 
594  bool Create(void) override; // MythScreenType
595 
596  private:
597  void addItem(const QString &state, const QString &text);
598 
599  MythUIButtonList *m_iconList {nullptr};
600 };
601 
602 #endif
603 /* vim: set expandtab tabstop=4 shiftwidth=4: */
QString m_groupDisplayName
Definition: playbackbox.h:377
QMap< QString, ProgramList > ProgramMap
Definition: playbackbox.h:47
void toggleLiveTVView(bool setOn)
Definition: playbackbox.h:203
unsigned int slots[4]
Definition: element.c:38
void toggleCategoryView(bool setOn)
Definition: playbackbox.h:199
void doPlaylistBeginUserJob2()
Definition: playbackbox.h:236
void doPlaylistBeginFlagging()
Definition: playbackbox.h:230
void DeleteForgetHistory(void)
Definition: playbackbox.h:182
QPair< QString, QString > RecGroup
Definition: playbackbox.h:394
void doPlaylistExpireSetOn()
Definition: playbackbox.h:246
A widget for offering a range of numerical values where only the the bounding values and interval are...
Definition: mythuispinbox.h:16
QString m_newRecGroup
Definition: playbackbox.h:380
void stopPlaylistUserJob3()
Definition: playbackbox.h:239
All purpose text widget, displays a text string.
Definition: mythuitext.h:28
void doBeginTranscoding()
Definition: playbackbox.h:221
void DeleteForce(void)
Definition: playbackbox.h:183
ViewType
Definition: mythcontrols.h:41
QString m_currentGroup
Group currently selected.
Definition: playbackbox.h:413
InfoMap m_currentMap
Definition: playbackbox.h:354
deque< QString > m_networkControlCommands
Definition: playbackbox.h:433
Image widget, displays a single image or multiple images in sequence.
Definition: mythuiimage.h:97
void stopPlaylistFlagging()
Definition: playbackbox.h:231
void doPlaylistWatchedSetOn()
Definition: playbackbox.h:249
Basic menu dialog, message and a list of options.
QStringList m_player_selected_new_show
Definition: playbackbox.h:437
void setInitialRecGroup(const QString &initialGroup)
Definition: playbackbox.h:128
unsigned int uint
Definition: compat.h:140
void doPlaylistBeginTranscoding()
Definition: playbackbox.h:227
QMap< QString, QString > Str2StrMap
Definition: playbackbox.h:50
static QString CreateProgramInfoString(const ProgramInfo &pginfo)
void doPlaylistBeginLookup()
Definition: playbackbox.h:232
QMultiMap< QPair< uint, QDateTime >, JobQueueEntry > MapType
Definition: playbackbox.h:467
MythScreenType * m_parentScreen
Definition: playbackbox.h:519
QString m_oldPassword
Definition: playbackbox.h:546
HelpPopup(MythScreenStack *lparent)
Definition: playbackbox.h:591
QString m_watchGroupName
Definition: playbackbox.h:381
void doBeginUserJob1()
Definition: playbackbox.h:223
Holds information on recordings and videos.
Definition: programinfo.h:66
QStringList m_recGroups
Definition: playbackbox.h:405
QMutex m_ncLock
Definition: playbackbox.h:432
void stopPlaylistUserJob2()
Definition: playbackbox.h:237
void ShowRecGroupChangerUsePlaylist(void)
Definition: playbackbox.h:166
PasswordChange(MythScreenStack *lparent, const QString &oldpassword)
Definition: playbackbox.h:528
void toggleTitleView(bool setOn)
Definition: playbackbox.h:198
PlaybackBoxHelper m_helper
Main helper thread.
Definition: playbackbox.h:439
ChangeView(MythScreenStack *lparent, MythScreenType *parentScreen, int viewMask)
Definition: playbackbox.h:505
QHash< QString, QString > InfoMap
Definition: mythtypes.h:15
void stopPlaylistLookup()
Definition: playbackbox.h:233
void stopPlaylistTranscoding()
Definition: playbackbox.h:229
QMutex m_recGroupsLock
Definition: playbackbox.h:406
A text entry and edit widget.
void toggleWatchListView(bool setOn)
Definition: playbackbox.h:201
QString m_watchGroupLabel
Definition: playbackbox.h:382
void doPlaylistExpireSetOff()
Definition: playbackbox.h:247
Control TV playback.
Definition: tv_play.h:284
QList< uint > m_playListPlay
list of items being played.
Definition: playbackbox.h:418
void toggleWatchedView(bool setOn)
Definition: playbackbox.h:204
void doPlaylistBeginUserJob3()
Definition: playbackbox.h:238
void ItemSelected(MythUIButtonListItem *item)
Definition: playbackbox.h:137
const char * name
Definition: ParseText.cpp:328
QSet< QString > m_preview_tokens
Outstanding preview image requests.
Definition: playbackbox.h:441
void DeleteIgnoreAllRemaining(void)
Definition: playbackbox.h:187
List widget, displays list items in a variety of themeable arrangements and can trigger signals when ...
QString m_recGroup
Definition: playbackbox.h:378
QString m_artHostOverride
Definition: playbackbox.h:350
A single button widget.
Definition: mythuibutton.h:21
QMap< QString, QString > m_recGroupPwCache
Definition: playbackbox.h:396
QList< uint > m_playList
list of selected items "play list"
Definition: playbackbox.h:416
int m_allOrder
allOrder controls the ordering of the "All Programs" list
Definition: playbackbox.h:372
QString m_label
Definition: playbackbox.h:494
void stopPlaylistUserJob1()
Definition: playbackbox.h:235
void toggleSearchView(bool setOn)
Definition: playbackbox.h:202
QStringList m_List
Definition: playbackbox.h:495
void doBeginUserJob4()
Definition: playbackbox.h:226
void doBeginUserJob3()
Definition: playbackbox.h:225
MythUIButtonList * parent() const
void doPlaylistWatchedSetOff()
Definition: playbackbox.h:250
QStringList m_delList
Recording[s] currently selected for deletion.
Definition: playbackbox.h:411
void doPlaylistBeginUserJob1()
Definition: playbackbox.h:234
QStringList m_titleList
list of pages
Definition: playbackbox.h:400
QStringList m_Data
Definition: playbackbox.h:496
void PlaylistDeleteForgetHistory(void)
Definition: playbackbox.h:243
int m_viewMask
Definition: playbackbox.h:520
void doBeginUserJob2()
Definition: playbackbox.h:224
ProgramInfoCache m_programInfoCache
Definition: playbackbox.h:420
QString m_curGroupPassword
Definition: playbackbox.h:379
void ShowPlayGroupChangerUsePlaylist(void)
Definition: playbackbox.h:167
QMap< QString, QString > m_recGroupType
Definition: playbackbox.h:395
void toggleRecGroupView(bool setOn)
Definition: playbackbox.h:200
void stopPlaylistUserJob4()
Definition: playbackbox.h:241
Implements a file/stream reader/writer.
static long int random(void)
Definition: compat.h:149
void doPlaylistBeginUserJob4()
Definition: playbackbox.h:240
void DeleteIgnore(void)
Definition: playbackbox.h:184
Screen in which all other widgets are contained and rendered.
ProgramMap m_progLists
lists of programs by page
Definition: playbackbox.h:401
GroupSelector(MythScreenStack *lparent, const QString &label, const QStringList &list, const QStringList &data, const QString &selected)
Definition: playbackbox.h:477
QString m_selected
Definition: playbackbox.h:497
QRegExp m_titleChaff
stuff to remove for search rules
Definition: playbackbox.h:340
void DeleteForceAllRemaining(void)
Definition: playbackbox.h:185