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 <utility>
10#include <vector>
11
12// Qt
13#include <QStringList>
14#include <QDateTime>
15#include <QMultiMap>
16#include <QObject>
17#include <QMutex>
18#include <QMap>
19#include <QSet>
20
21// MythTV
23#include "libmythtv/jobqueue.h"
24#include "libmythtv/tv_play.h"
26
27// mythfrontend
28#include "schedulecommon.h"
29#include "programinfocache.h"
30#include "playbackboxhelper.h"
31
32class QKeyEvent;
33class QEvent;
34class QTimer;
35
36class MythPlayer;
37class MythMediaBuffer;
38class ProgramInfo;
39
42class MythUIImage;
43class MythUIText;
44class MythUITextEdit;
45class MythUIButton;
46class MythDialogBox;
47class MythMenu;
49class PlaybackBox;
50
51using ProgramMap = QMap<QString,ProgramList>;
52using Str2StrMap = QMap<QString,QString>;
53using PlaybackBoxCb = void (PlaybackBox::*)();
54
55static constexpr size_t kMaxJobs {7};
56
57static constexpr uint16_t kArtworkFanTimeout { 300 };
58static constexpr uint8_t kArtworkBannerTimeout { 50 };
59static constexpr uint8_t kArtworkCoverTimeout { 50 };
60
62{
63 Q_OBJECT
64 friend class PlaybackBoxListItem;
65 friend class ChangeView;
66
67 public:
68 // ViewType values cannot change; they are stored in the database.
69 enum ViewType : std::uint8_t {
77 ViewTypes = 7, // placeholder value, not in database
78 };
79
80 // Sort function when TitlesOnly. Values are stored in database.
81 enum ViewTitleSort : std::uint8_t {
84 TitleSortMethods = 2, // placeholder value, not in database
85 };
86
88 VIEW_NONE = 0x0000,
89 VIEW_TITLES = 0x0001,
93 VIEW_SEARCHES = 0x0010,
95 // insert new entries above here
96 VIEW_WATCHED = 0x8000
97 };
98
99 enum DeletePopupType : std::uint8_t
100 {
104 };
105
106 enum DeleteFlags : std::uint8_t
107 {
110 kForce = 0x02,
111 kIgnore = 0x04,
113 };
114
115 enum killStateType : std::uint8_t
116 {
119 kDone
120 };
121
122 static std::array<PlaybackBoxCb,kMaxJobs*2> kMySlots;
123
124 PlaybackBox(MythScreenStack *parent, const QString& name,
125 TV *player = nullptr, bool showTV = false);
126 ~PlaybackBox(void) override;
127
128 bool Create(void) override; // MythScreenType
129 void ShowMenu(void) override; // MythScreenType
130 bool keyPressEvent(QKeyEvent *event) override; // MythScreenType
131
132 void setInitialRecGroup(const QString& initialGroup) { m_recGroup = initialGroup; }
133 static void * RunPlaybackBox(void *player, bool showTV);
134
135 public slots:
136 void displayRecGroup(const QString &newRecGroup = "");
137 void groupSelectorClosed(void);
138
139 protected:
140 void customEvent(QEvent *event) override; // ScheduleCommon
141 void Load(void) override; // MythScreenType
142 void Init(void) override; // MythScreenType
143 ProgramInfo *GetCurrentProgram(void) const override; // ScheduleCommon
144
145 protected slots:
146 void updateRecList(MythUIButtonListItem *sel_item);
149 { UpdateUIListItem(item, true); }
152 void selected(MythUIButtonListItem *item);
153 void updateRecGroup(MythUIButtonListItem *sel_item);
155 void PlayFromAnyMark() { PlayFromAnyMark(nullptr); }
163 void ClearBookmark();
164 void ClearLastPlayPos();
165 void SwitchList(void);
166
167 void ShowGroupPopup(void);
168 void StopSelected(void);
169 void showMetadataEditor();
170 void showGroupFilter();
177 {static_cast<void>(createTranscodingProfilesMenu());}
182 void changeProfileAndTranscode(int id);
183 void showIconHelp();
188 void ShowRecGroupChanger(bool use_playlist = false);
189 void ShowPlayGroupChanger(bool use_playlist = false);
190
191 void popupClosed(const QString& which, int result);
192
193 void doPlayListRandom();
194
195 void askStop();
196
197 void doAllowRerecord();
198
199 void askDelete();
200 void Undelete(void);
204 void DeleteForce(void) { Delete(kForce); }
205 void DeleteIgnore(void) { Delete(kIgnore); }
207 { Delete((DeleteFlags)((int)kForce |(int)kAllRemaining)); }
209 { Delete((DeleteFlags)((int)kIgnore|(int)kAllRemaining)); }
210
212 void ShowAllRecordings();
213
214 void toggleWatched();
215 void toggleAutoExpire();
217
218 void toggleView(PlaybackBox::ViewMask itemMask, bool setOn);
219 void toggleTitleView(bool setOn) { toggleView(VIEW_TITLES, setOn); }
220 void toggleCategoryView(bool setOn) { toggleView(VIEW_CATEGORIES, setOn); }
221 void toggleRecGroupView(bool setOn) { toggleView(VIEW_RECGROUPS, setOn); }
222 void toggleWatchListView(bool setOn) { toggleView(VIEW_WATCHLIST, setOn); }
223 void toggleSearchView(bool setOn) { toggleView(VIEW_SEARCHES, setOn); }
224 void toggleLiveTVView(bool setOn) { toggleView(VIEW_LIVETVGRP, setOn); }
225 void toggleWatchedView(bool setOn) { toggleView(VIEW_WATCHED, setOn); }
226
227 void setGroupFilter(const QString &newRecGroup);
228 void setRecGroup(QString newRecGroup);
229 void setPlayGroup(QString newPlayGroup);
230
231 void saveRecMetadata(const QString &newTitle, const QString &newSubtitle,
232 const QString &newDescription, const QString &newInetref,
233 uint season, uint episode);
234
235 void SetRecGroupPassword(const QString &newPassword);
236
237 void doJobQueueJob(int jobType, int jobFlags = 0);
238 void doPlaylistJobQueueJob(int jobType, int jobFlags = 0);
239 void stopPlaylistJobQueueJob(int jobType);
240 void doBeginFlagging();
241 void doBeginLookup();
263 void doClearPlaylist();
266 void PlaylistDelete(bool forgetHistory = false);
267 void doPlaylistExpireSetting(bool turnOn);
270 void doPlaylistWatchedSetting(bool turnOn);
274 void togglePlayListTitle(void);
275 void togglePlayListItem(void);
276 void playSelectedPlaylist(bool Random);
277 void doPlayList(void);
278 void showViewChanger(void);
279 void saveViewChanges(void);
280
281 void checkPassword(const QString &password);
282 void passwordClosed(void);
283
284 void fanartLoad(void);
285 void bannerLoad(void);
286 void coverartLoad(void);
287
288 private:
289 bool UpdateUILists(void);
290 void UpdateUIGroupList(const QStringList &groupPreferences);
291 void UpdateUIRecGroupList(void);
292 void SelectNextRecGroup(void);
293
295
296 void PlayX(const ProgramInfo &pginfo,
297 bool ignoreBookmark,
298 bool ignoreProgStart,
299 bool ignoreLastPlayPos,
300 bool underNetworkControl);
301
302 bool Play(const ProgramInfo &rec,
303 bool inPlaylist,
304 bool ignoreBookmark,
305 bool ignoreProgStart,
306 bool ignoreLastPlayPos,
307 bool underNetworkControl);
308
309 void togglePlayListItem(ProgramInfo *pginfo);
311
313 void processNetworkControlCommand(const QString &command);
314
317 const QString& recgroup = "NotLiveTV");
318
319 void RemoveProgram(uint recordingID,
320 bool forgetHistory, bool forceMetadataDelete);
322 static void ShowAvailabilityPopup(const ProgramInfo &pginfo);
323 void ShowActionPopup(const ProgramInfo &pginfo);
324
325 QString getRecGroupPassword(const QString &recGroup);
326 void fillRecGroupPasswordCache(void);
327
328 bool IsUsageUIVisible(void) const;
329
330 void updateIcons(const ProgramInfo *pginfo = nullptr);
331 void UpdateUsageUI(void);
332 void updateGroupInfo(const QString &groupname, const QString &grouplabel);
333
334 void SetItemIcons(MythUIButtonListItem *item, ProgramInfo* pginfo);
335 void UpdateUIListItem(
336 ProgramInfo *pginfo,
337 bool force_preview_reload);
338 void UpdateUIListItem(MythUIButtonListItem *item, bool is_sel,
339 bool force_preview_reload = true);
340
341 void HandlePreviewEvent(const QStringList &list);
342 void HandleRecordingRemoveEvent(uint recordingID);
343 void HandleRecordingAddEvent(const ProgramInfo &evinfo);
344 void HandleUpdateItemEvent(uint recordingId, uint flags);
345
346 void ScheduleUpdateUIList(void);
347 bool CreatePopupMenu(const QString &title);
348 void DisplayPopupMenu(void);
349 //bool CreatePopupMenu(const QString &title, const ProgramInfo &pginfo)
350 // { return CreatePopupMenu(title + CreateProgramInfoString(pginfo)); }
352
353 static QString CreateProgramInfoString(const ProgramInfo &pginfo) ;
354
355 QString extract_job_state(const ProgramInfo &pginfo);
356 QString extract_commflag_state(const ProgramInfo &pginfo);
357
358
363
365
367
370
372 constexpr static int kNumArtImages = 3;
373 std::array<MythUIImage*,kNumArtImages> m_artImage {};
374 std::array<QTimer*,kNumArtImages> m_artTimer {};
375
377
378 // Settings ///////////////////////////////////////////////////////////////
380 bool m_titleView {false};
382 bool m_useCategories {false};
384 bool m_useRecGroups {false};
386 bool m_watchListStart {false};
392 std::chrono::hours m_watchListBlackOut {std::chrono::days(2)};
396 int m_listOrder {1};
397
398 // Group alphabet support
400 QMap<QString, QString> m_groupAlphabet;
401
402 // Recording Group settings
404 QString m_recGroup;
410
411 // Popup support //////////////////////////////////////////////////////////
412 // General popup support
416
417 bool m_doToggleMenu {true};
418
419 // Recording Group popup support
420 using RecGroup = QPair<QString, QString>;
421 QMap<QString,QString> m_recGroupType;
422 QMap<QString,QString> m_recGroupPwCache;
423
424 // State Variables ////////////////////////////////////////////////////////
425 // Main Recording List support
426 QStringList m_titleList;
428 int m_progsInDB {0};
429 bool m_isFilling {false};
430
431 QStringList m_recGroups;
432 mutable QMutex m_recGroupsLock;
434
435 // Other state
437 QStringList m_delList;
440
441 // Play List support
442 QList<uint> m_playList;
443 bool m_opOnPlaylist {false};
444 QList<uint> m_playListPlay;
445
447
449 bool m_playingSomething {false};
450
452 bool m_needUpdate {false};
453
454 // Selection state variables
455 bool m_haveGroupInfoSet {false};
456
457 // Network Control Variables //////////////////////////////////////////////
458 mutable QMutex m_ncLock;
459 std::deque<QString> m_networkControlCommands;
460
461 // Other
462 TV *m_player {nullptr};
467 QSet<QString> m_previewTokens;
468
469 bool m_firstGroup {true};
471 bool m_groupSelected {false};
472 bool m_passwordEntered {false};
473
475 // This class caches the contents of the jobqueue table to avoid excessive
476 // DB queries each time the PBB selection changes (currently 4 queries per
477 // displayed item). The cache remains valid for 15 seconds
478 // (kInvalidateTimeMs).
480 {
481 public:
483 bool IsJobQueued(int jobType, uint chanid,
484 const QDateTime &recstartts);
485 bool IsJobRunning(int jobType, uint chanid,
486 const QDateTime &recstartts);
487 bool IsJobQueuedOrRunning(int jobType, uint chanid,
488 const QDateTime &recstartts);
489 private:
490 static constexpr std::chrono::milliseconds kInvalidateTimeMs { 15s };
491 void Update();
492 QDateTime m_lastUpdated;
493 // Maps <chanid, recstartts> to a set of JobQueueEntry values.
494 using MapType = QMultiMap<QPair<uint, QDateTime>, JobQueueEntry>;
497};
498
500{
501 Q_OBJECT
502
503 public:
504 GroupSelector(MythScreenStack *lparent, QString label,
505 QStringList list, QStringList data,
506 QString selected)
507 : MythScreenType(lparent, "groupselector"), m_label(std::move(label)),
508 m_list(std::move(list)), m_data(std::move(data)),
509 m_selected(std::move(selected)) {}
510
511 bool Create(void) override; // MythScreenType
512
513 signals:
514 void result(QString);
515
516 protected slots:
518
519 private:
520 void loadGroups(void);
521
522 QString m_label;
523 QStringList m_list;
524 QStringList m_data;
525 QString m_selected;
526};
527
529{
530 Q_OBJECT
531
532 public:
533 ChangeView(MythScreenStack *lparent, PlaybackBox *parentScreen,
534 int viewMask)
535 : MythScreenType(lparent, "changeview"),
536 m_parentScreen(parentScreen), m_viewMask(viewMask) {}
537
538 bool Create(void) override; // MythScreenType
539
540 signals:
541 void save();
542
543 protected slots:
544 void SaveChanges(void);
545
546 private:
549};
550
552{
553 Q_OBJECT
554
555 public:
556 PasswordChange(MythScreenStack *lparent, QString oldpassword)
557 : MythScreenType(lparent, "passwordchanger"),
558 m_oldPassword(std::move(oldpassword)){}
559
560 bool Create(void) override; // MythScreenType
561
562 signals:
563 void result(const QString &);
564
565 protected slots:
566 void OldPasswordChanged(void);
567 void SendResult(void);
568
569 private:
573
575};
576
578{
579 Q_OBJECT
580
581 public:
583
584 bool Create(void) override; // MythScreenType
585
586 signals:
587 void result(const QString &, const QString &, const QString &,
588 const QString &, uint, uint);
589
590 protected:
591 void customEvent(QEvent *event) override; // MythUIType
592
593 protected slots:
594 void SaveChanges(void);
595 void ClearInetref();
596 void PerformQuery(void);
598
599 private:
600 void QueryComplete(MetadataLookup *lookup);
601
610
614};
615
617{
618 Q_OBJECT
619
620 public:
621 explicit HelpPopup(MythScreenStack *lparent)
622 : MythScreenType(lparent, "helppopup") {}
623
624 bool Create(void) override; // MythScreenType
625
626 private:
627 void addItem(const QString &state, const QString &text);
628
630};
631
632#endif
633/* vim: set expandtab tabstop=4 shiftwidth=4: */
bool Create(void) override
PlaybackBox * m_parentScreen
Definition: playbackbox.h:547
int m_viewMask
Definition: playbackbox.h:548
void save()
void SaveChanges(void)
ChangeView(MythScreenStack *lparent, PlaybackBox *parentScreen, int viewMask)
Definition: playbackbox.h:533
void loadGroups(void)
GroupSelector(MythScreenStack *lparent, QString label, QStringList list, QStringList data, QString selected)
Definition: playbackbox.h:504
QStringList m_data
Definition: playbackbox.h:524
QString m_selected
Definition: playbackbox.h:525
bool Create(void) override
QString m_label
Definition: playbackbox.h:522
void AcceptItem(MythUIButtonListItem *item)
QStringList m_list
Definition: playbackbox.h:523
void result(QString)
HelpPopup(MythScreenStack *lparent)
Definition: playbackbox.h:621
bool Create(void) override
MythUIButtonList * m_iconList
Definition: playbackbox.h:629
void addItem(const QString &state, const QString &text)
Basic menu dialog, message and a list of options.
Screen in which all other widgets are contained and rendered.
List widget, displays list items in a variety of themeable arrangements and can trigger signals when ...
A single button widget.
Definition: mythuibutton.h:22
Image widget, displays a single image or multiple images in sequence.
Definition: mythuiimage.h:98
Progress bar widget.
A widget for offering a range of numerical values where only the the bounding values and interval are...
Definition: mythuispinbox.h:19
A text entry and edit widget.
All purpose text widget, displays a text string.
Definition: mythuitext.h:29
void SendResult(void)
MythUIButton * m_okButton
Definition: playbackbox.h:572
MythUITextEdit * m_newPasswordEdit
Definition: playbackbox.h:571
bool Create(void) override
MythUITextEdit * m_oldPasswordEdit
Definition: playbackbox.h:570
void OldPasswordChanged(void)
void result(const QString &)
PasswordChange(MythScreenStack *lparent, QString oldpassword)
Definition: playbackbox.h:556
QString m_oldPassword
Definition: playbackbox.h:574
bool IsJobQueued(int jobType, uint chanid, const QDateTime &recstartts)
static constexpr std::chrono::milliseconds kInvalidateTimeMs
Definition: playbackbox.h:490
bool IsJobRunning(int jobType, uint chanid, const QDateTime &recstartts)
bool IsJobQueuedOrRunning(int jobType, uint chanid, const QDateTime &recstartts)
QMultiMap< QPair< uint, QDateTime >, JobQueueEntry > MapType
Definition: playbackbox.h:494
void stopPlaylistUserJob2()
Definition: playbackbox.h:258
bool m_opOnPlaylist
Definition: playbackbox.h:443
bool CreatePopupMenuPlaylist(void)
MythUIImage * m_previewImage
Definition: playbackbox.h:366
void UpdateUIGroupList(const QStringList &groupPreferences)
~PlaybackBox(void) override
void setRecGroup(QString newRecGroup)
void stopPlaylistUserJob4()
Definition: playbackbox.h:262
QList< uint > m_playList
list of selected items "play list"
Definition: playbackbox.h:442
void changeProfileAndTranscode(int id)
QString extract_commflag_state(const ProgramInfo &pginfo)
void showGroupFilter()
void doPlaylistBeginUserJob4()
Definition: playbackbox.h:261
void toggleLiveTVView(bool setOn)
Definition: playbackbox.h:224
bool CreatePopupMenu(const QString &title)
std::array< QTimer *, kNumArtImages > m_artTimer
Definition: playbackbox.h:374
QString extract_job_state(const ProgramInfo &pginfo)
void ClearBookmark()
void doPlaylistBeginUserJob3()
Definition: playbackbox.h:259
static std::array< PlaybackBoxCb, kMaxJobs *2 > kMySlots
Definition: playbackbox.h:122
QPair< QString, QString > RecGroup
Definition: playbackbox.h:420
bool Create(void) override
void doPlaylistBeginUserJob2()
Definition: playbackbox.h:257
void toggleWatched()
void ShowActionPopup(const ProgramInfo &pginfo)
void saveViewChanges(void)
bool m_playingSomething
playingSomething is set to true iff a full screen recording is playing
Definition: playbackbox.h:449
void toggleAutoExpire()
void toggleTitleView(bool setOn)
Definition: playbackbox.h:219
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
bool IsUsageUIVisible(void) const
void updateRecGroup(MythUIButtonListItem *sel_item)
void stopPlaylistFlagging()
Definition: playbackbox.h:252
ViewMask m_viewMask
Definition: playbackbox.h:409
bool m_isFilling
Definition: playbackbox.h:429
void SelectNextRecGroup(void)
void Load(void) override
Load data which will ultimately be displayed on-screen or used to determine what appears on-screen (S...
QString m_watchGroupLabel
Definition: playbackbox.h:408
bool m_firstGroup
Definition: playbackbox.h:469
int m_allOrder
allOrder controls the ordering of the "All Programs" list
Definition: playbackbox.h:394
void ShowRecordedEpisodes()
void HandleRecordingAddEvent(const ProgramInfo &evinfo)
void ScheduleUpdateUIList(void)
void toggleWatchedView(bool setOn)
Definition: playbackbox.h:225
void ItemLoaded(MythUIButtonListItem *item)
void randomizePlayList(void)
void customEvent(QEvent *event) override
void PlaylistDelete(bool forgetHistory=false)
void doPlaylistWatchedSetOff()
Definition: playbackbox.h:272
void doPlaylistJobQueueJob(int jobType, int jobFlags=0)
void doBeginUserJob2()
Definition: playbackbox.h:245
void ItemVisible(MythUIButtonListItem *item)
void UpdateUIRecGroupList(void)
void saveRecMetadata(const QString &newTitle, const QString &newSubtitle, const QString &newDescription, const QString &newInetref, uint season, uint episode)
void PlayFromBeginning()
Definition: playbackbox.h:159
void ItemSelected(MythUIButtonListItem *item)
Definition: playbackbox.h:148
MythMenu * m_popupMenu
Definition: playbackbox.h:414
void Init(void) override
Used after calling Load() to assign data to widgets and other UI initilisation which is prohibited in...
void DeleteIgnoreAllRemaining(void)
Definition: playbackbox.h:208
void toggleCategoryView(bool setOn)
Definition: playbackbox.h:220
void ShowDeletePopup(DeletePopupType type)
void Delete()
Definition: playbackbox.h:202
bool m_titleView
titleView controls showing titles in group list
Definition: playbackbox.h:380
bool m_passwordEntered
Definition: playbackbox.h:472
void ShowGroupPopup(void)
@ TitlesCategoriesRecGroups
Definition: playbackbox.h:72
@ CategoriesRecGroups
Definition: playbackbox.h:75
@ TitlesCategories
Definition: playbackbox.h:71
QString m_newRecGroup
Definition: playbackbox.h:406
void stopPlaylistLookup()
Definition: playbackbox.h:254
QStringList m_playerSelectedNewShow
Definition: playbackbox.h:463
void doBeginUserJob3()
Definition: playbackbox.h:246
std::chrono::hours m_watchListBlackOut
adjust exclusion of a title from the Watch List after a delete
Definition: playbackbox.h:392
void doPlaylistExpireSetOn()
Definition: playbackbox.h:268
MythMenu * createStorageMenu()
QStringList m_delList
Recording[s] currently selected for deletion.
Definition: playbackbox.h:437
void ShowRecGroupChanger(bool use_playlist=false)
Used to change the recording group of a program or playlist.
ProgramInfo * FindProgramInUILists(const ProgramInfo &pginfo)
InfoMap m_currentMap
Definition: playbackbox.h:376
void showViewChanger(void)
void stopPlaylistUserJob3()
Definition: playbackbox.h:260
void togglePlayListItem(void)
MythUIProgressBar * m_watchedProgress
Definition: playbackbox.h:369
void askDelete()
static QString CreateProgramInfoString(const ProgramInfo &pginfo)
QSet< QString > m_previewTokens
Outstanding preview image requests.
Definition: playbackbox.h:467
bool m_needUpdate
Does the recording list need to be refilled.
Definition: playbackbox.h:452
MythUIProgressBar * m_recordedProgress
Definition: playbackbox.h:368
void selected(MythUIButtonListItem *item)
void DeleteForceAllRemaining(void)
Definition: playbackbox.h:206
void doPlayListRandom()
void processNetworkControlCommand(const QString &command)
MythMenu * createTranscodingProfilesMenu()
class PlaybackBox::PbbJobQueue m_jobQueue
void doBeginTranscoding()
Definition: playbackbox.h:242
QString m_currentLetter
Definition: playbackbox.h:399
void stopPlaylistUserJob1()
Definition: playbackbox.h:256
void SwitchList(void)
bool m_haveGroupInfoSet
Definition: playbackbox.h:455
void stopPlaylistJobQueueJob(int jobType)
int m_progsInDB
total number of recordings in DB
Definition: playbackbox.h:428
void doPlaylistBeginUserJob1()
Definition: playbackbox.h:255
void doBeginFlagging()
ProgramMap m_progLists
lists of programs by page
Definition: playbackbox.h:427
QStringList m_titleList
list of pages
Definition: playbackbox.h:426
void updateRecList(MythUIButtonListItem *sel_item)
void doBeginUserJob4()
Definition: playbackbox.h:247
MythMenu * createRecordingMenu()
static void * RunPlaybackBox(void *player, bool showTV)
MythUIText * m_noRecordingsText
Definition: playbackbox.h:364
MythScreenStack * m_popupStack
Definition: playbackbox.h:415
MythMenu * createPlaylistJobMenu()
QString m_watchGroupName
Definition: playbackbox.h:407
void displayRecGroup(const QString &newRecGroup="")
static constexpr int kNumArtImages
Definition: playbackbox.h:372
QList< uint > m_playListPlay
list of items being played.
Definition: playbackbox.h:444
QStringList m_recGroups
Definition: playbackbox.h:431
void toggleRecGroupView(bool setOn)
Definition: playbackbox.h:221
void showRecGroupPasswordChanger()
void PlayFromAnyMark()
Definition: playbackbox.h:155
int m_watchListMaxAge
add 1 to the Watch List scord up to this many days
Definition: playbackbox.h:390
void Undelete(void)
void PlayFromBookmark()
Definition: playbackbox.h:157
void doPlaylistExpireSetting(bool turnOn)
void setGroupFilter(const QString &newRecGroup)
void PlaylistDeleteForgetHistory(void)
Definition: playbackbox.h:264
void doAllowRerecord()
Callback function when Allow Re-record is pressed in Watch Recordings.
void StopSelected(void)
void doPlaylistWatchedSetOn()
Definition: playbackbox.h:271
bool m_doToggleMenu
Definition: playbackbox.h:417
std::deque< QString > m_networkControlCommands
Definition: playbackbox.h:459
void RemoveProgram(uint recordingID, bool forgetHistory, bool forceMetadataDelete)
void showMetadataEditor()
void deleteSelected(MythUIButtonListItem *item)
void ClearLastPlayPos()
MythDialogBox * m_menuDialog
Definition: playbackbox.h:413
void popupClosed(const QString &which, int result)
void UpdateProgressBar(void)
void showIconHelp()
void toggleWatchListView(bool setOn)
Definition: playbackbox.h:222
void groupSelectorClosed(void)
void togglePreserveEpisode()
void DeleteForce(void)
Definition: playbackbox.h:204
void PlayFromLastPlayPos()
Definition: playbackbox.h:161
void fanartLoad(void)
QString m_currentGroup
Group currently selected.
Definition: playbackbox.h:439
void doJobQueueJob(int jobType, int jobFlags=0)
void togglePlayListTitle(void)
void ShowAllRecordings()
void doPlaylistBeginLookup()
Definition: playbackbox.h:253
bool m_groupSelected
Definition: playbackbox.h:471
QString m_recGroup
Definition: playbackbox.h:404
MythMenu * createPlaylistStorageMenu()
void ShowPlayGroupChanger(bool use_playlist=false)
Used to change the play group of a program or playlist.
bool m_watchListStart
use the Watch List as the initial view
Definition: playbackbox.h:386
PlaybackBox(MythScreenStack *parent, const QString &name, TV *player=nullptr, bool showTV=false)
MythMenu * createPlayFromMenu()
std::array< MythUIImage *, kNumArtImages > m_artImage
Definition: playbackbox.h:373
void DeleteIgnore(void)
Definition: playbackbox.h:205
QString m_curGroupPassword
Definition: playbackbox.h:405
MythUIButtonList * m_recordingList
Definition: playbackbox.h:362
void HandleRecordingRemoveEvent(uint recordingID)
void ShowPlayGroupChangerNoPlaylist(void)
Definition: playbackbox.h:187
ProgramInfoCache m_programInfoCache
Definition: playbackbox.h:446
void doClearPlaylist()
MythUIButtonList * m_groupList
Definition: playbackbox.h:361
void ShowRecGroupChangerNoPlaylist(void)
Definition: playbackbox.h:185
QMap< QString, QString > m_recGroupPwCache
Definition: playbackbox.h:422
MythMenu * createPlaylistMenu()
void doBeginUserJob1()
Definition: playbackbox.h:244
void checkPassword(const QString &password)
bool m_watchListAutoExpire
exclude recording not marked for auto-expire from the Watch List
Definition: playbackbox.h:388
QString getRecGroupPassword(const QString &recGroup)
@ TitleSortAlphabetical
Definition: playbackbox.h:82
@ TitleSortMethods
Definition: playbackbox.h:84
@ TitleSortRecPriority
Definition: playbackbox.h:83
void SetItemIcons(MythUIButtonListItem *item, ProgramInfo *pginfo)
void toggleSearchView(bool setOn)
Definition: playbackbox.h:223
bool Play(const ProgramInfo &rec, bool inPlaylist, bool ignoreBookmark, bool ignoreProgStart, bool ignoreLastPlayPos, bool underNetworkControl)
void playSelectedPlaylist(bool Random)
void PlayX(const ProgramInfo &pginfo, bool ignoreBookmark, bool ignoreProgStart, bool ignoreLastPlayPos, bool underNetworkControl)
void stopPlaylistTranscoding()
Definition: playbackbox.h:250
MythUIButtonList * m_groupAlphaList
Definition: playbackbox.h:360
void doPlaylistBeginFlagging()
Definition: playbackbox.h:251
void ShowRecGroupChangerUsePlaylist(void)
Definition: playbackbox.h:184
void processNetworkControlCommands(void)
void fillRecGroupPasswordCache(void)
void UpdateUIListItem(ProgramInfo *pginfo, bool force_preview_reload)
bool UpdateUILists(void)
bool m_useCategories
useCategories controls showing categories in group list
Definition: playbackbox.h:382
MythUIButtonList * m_recgroupList
Definition: playbackbox.h:359
void selectUIGroupsAlphabet(MythUIButtonListItem *item)
void doPlaylistBeginTranscoding()
Definition: playbackbox.h:248
void passwordClosed(void)
QMap< QString, QString > m_recGroupType
Definition: playbackbox.h:421
QMutex m_ncLock
Definition: playbackbox.h:458
void UpdateUsageUI(void)
void coverartLoad(void)
void ShowPlayGroupChangerUsePlaylist(void)
Definition: playbackbox.h:186
bool m_alwaysShowWatchedProgress
Definition: playbackbox.h:474
void updateGroupInfo(const QString &groupname, const QString &grouplabel)
QMutex m_recGroupsLock
Definition: playbackbox.h:432
void setInitialRecGroup(const QString &initialGroup)
Definition: playbackbox.h:132
void DeleteForgetHistory(void)
Definition: playbackbox.h:203
PlaybackBoxHelper m_helper
Main helper thread.
Definition: playbackbox.h:465
bool m_useRecGroups
useRecGroups controls showing of recording groups in group list
Definition: playbackbox.h:384
ProgramInfo * GetCurrentProgram(void) const override
void doPlaylistAllowRerecord()
void HandlePreviewEvent(const QStringList &list)
Updates the UI properties for a new preview file.
static void ShowAvailabilityPopup(const ProgramInfo &pginfo)
void doPlayList(void)
void ShowMenu(void) override
void doPlaylistWatchedSetting(bool turnOn)
void doPlaylistExpireSetOff()
Definition: playbackbox.h:269
void doCreateTranscodingProfilesMenu()
Definition: playbackbox.h:176
QString m_artHostOverride
Definition: playbackbox.h:371
bool m_usingGroupSelector
Definition: playbackbox.h:470
void toggleView(PlaybackBox::ViewMask itemMask, bool setOn)
void setPlayGroup(QString newPlayGroup)
void updateIcons(const ProgramInfo *pginfo=nullptr)
void DisplayPopupMenu(void)
@ kForceDeleteRecording
Definition: playbackbox.h:103
int m_recGroupIdx
Definition: playbackbox.h:433
QString m_groupDisplayName
Definition: playbackbox.h:403
void doBeginLookup()
void bannerLoad(void)
void PlaylistDeleteKeepHistory(void)
Definition: playbackbox.h:265
QMap< QString, QString > m_groupAlphabet
Definition: playbackbox.h:400
MythMenu * createJobMenu()
int m_listOrder
listOrder controls the ordering of the recordings in the list
Definition: playbackbox.h:396
void HandleUpdateItemEvent(uint recordingId, uint flags)
void SetRecGroupPassword(const QString &newPassword)
Holds information on recordings and videos.
Definition: programinfo.h:74
MythUITextEdit * m_titleEdit
Definition: playbackbox.h:602
void result(const QString &, const QString &, const QString &, const QString &, uint, uint)
void OnSearchListSelection(const RefCountHandler< MetadataLookup > &lookup)
RecMetadataEdit(MythScreenStack *lparent, ProgramInfo *pginfo)
MetadataFactory * m_metadataFactory
Definition: playbackbox.h:613
MythUIButton * m_queryButton
Definition: playbackbox.h:609
void SaveChanges(void)
void QueryComplete(MetadataLookup *lookup)
ProgramInfo * m_progInfo
Definition: playbackbox.h:611
MythUISpinBox * m_seasonSpin
Definition: playbackbox.h:606
bool Create(void) override
void customEvent(QEvent *event) override
void PerformQuery(void)
MythScreenStack * m_popupStack
Definition: playbackbox.h:612
MythUITextEdit * m_descriptionEdit
Definition: playbackbox.h:604
MythUITextEdit * m_subtitleEdit
Definition: playbackbox.h:603
MythUIBusyDialog * m_busyPopup
Definition: playbackbox.h:608
MythUITextEdit * m_inetrefEdit
Definition: playbackbox.h:605
MythUISpinBox * m_episodeSpin
Definition: playbackbox.h:607
Control TV playback.
Definition: tv_play.h:157
unsigned int uint
Definition: compat.h:60
unsigned short uint16_t
Definition: iso6937tables.h:3
@ JOB_USERJOB3
Definition: jobqueue.h:86
@ JOB_METADATA
Definition: jobqueue.h:80
@ JOB_USERJOB1
Definition: jobqueue.h:84
@ JOB_USERJOB2
Definition: jobqueue.h:85
@ JOB_COMMFLAG
Definition: jobqueue.h:79
@ JOB_USERJOB4
Definition: jobqueue.h:87
@ JOB_TRANSCODE
Definition: jobqueue.h:78
@ JOB_USE_CUTLIST
Definition: jobqueue.h:60
QHash< QString, QString > InfoMap
Definition: mythtypes.h:15
QMap< QString, ProgramList > ProgramMap
Definition: playbackbox.h:51
void(PlaybackBox::*)() PlaybackBoxCb
Definition: playbackbox.h:53
static constexpr uint8_t kArtworkCoverTimeout
Definition: playbackbox.h:59
QMap< QString, QString > Str2StrMap
Definition: playbackbox.h:52
static constexpr uint8_t kArtworkBannerTimeout
Definition: playbackbox.h:58
static constexpr size_t kMaxJobs
Definition: playbackbox.h:55
static constexpr uint16_t kArtworkFanTimeout
Definition: playbackbox.h:57