00001 #ifndef PROGRAMRECPROIRITY_H_
00002 #define PROGRAMRECPROIRITY_H_
00003
00004 #include <vector>
00005
00006 #include "recordinginfo.h"
00007 #include "mythscreentype.h"
00008
00009
00010 #include "schedulecommon.h"
00011
00012 class QDateTime;
00013
00014 class MythUIButtonList;
00015 class MythUIButtonListItem;
00016 class MythUIText;
00017 class MythUIStateType;
00018 class ProgramRecPriority;
00019
00020 class RecordingRule;
00021
00022 class ProgramRecPriorityInfo : public RecordingInfo
00023 {
00024 friend class ProgramRecPriority;
00025
00026 public:
00027 ProgramRecPriorityInfo();
00028 ProgramRecPriorityInfo(const ProgramRecPriorityInfo &other);
00029 ProgramRecPriorityInfo &operator=(const ProgramRecPriorityInfo&);
00030 ProgramRecPriorityInfo &operator=(const RecordingInfo&);
00031 ProgramRecPriorityInfo &operator=(const ProgramInfo&);
00032
00033 virtual ProgramRecPriorityInfo &clone(const ProgramRecPriorityInfo &other);
00034 virtual ProgramRecPriorityInfo &clone(const ProgramInfo &other);
00035 virtual void clear(void);
00036
00037 virtual void ToMap(QHash<QString, QString> &progMap,
00038 bool showrerecord = false,
00039 uint star_range = 10) const;
00040
00041 int recTypeRecPriority;
00042 RecordingType recType;
00043 int matchCount;
00044 int recCount;
00045 QDateTime last_record;
00046 int avg_delay;
00047 int autoRecPriority;
00048 QString profile;
00049 };
00050
00051 class ProgramRecPriority : public ScheduleCommon
00052 {
00053 Q_OBJECT
00054 public:
00055 ProgramRecPriority(MythScreenStack *parent, const QString &name);
00056 ~ProgramRecPriority();
00057
00058 bool Create(void);
00059 bool keyPressEvent(QKeyEvent *);
00060 void customEvent(QEvent *event);
00061
00062 enum SortType
00063 {
00064 byTitle,
00065 byRecPriority,
00066 byRecType,
00067 byCount,
00068 byRecCount,
00069 byLastRecord,
00070 byAvgDelay
00071 };
00072
00073 protected slots:
00074 void updateInfo(MythUIButtonListItem *item);
00075 void edit(MythUIButtonListItem *item);
00076 void scheduleChanged(int recid);
00077
00078 private:
00079 virtual void Load(void);
00080 virtual void Init(void);
00081
00082 void FillList(void);
00083 void SortList(ProgramRecPriorityInfo *newCurrentItem = NULL);
00084 void UpdateList();
00085 void RemoveItemFromList(MythUIButtonListItem *item);
00086
00087 void changeRecPriority(int howMuch);
00088 void saveRecPriority(void);
00089 void customEdit();
00090 void newTemplate(QString category);
00091 void remove();
00092 void deactivate();
00093 void upcoming();
00094 void details();
00095
00096 void showMenu(void);
00097 void showSortMenu(void);
00098
00099 QMap<int, ProgramRecPriorityInfo> m_programData;
00100 vector<ProgramRecPriorityInfo*> m_sortedProgram;
00101 QMap<int, int> m_origRecPriorityData;
00102
00103 void countMatches(void);
00104 QMap<int, int> m_conMatch;
00105 QMap<int, int> m_nowMatch;
00106 QMap<int, int> m_recMatch;
00107 QMap<int, int> m_listMatch;
00108
00109 MythUIButtonList *m_programList;
00110
00111 MythUIText *m_schedInfoText;
00112 MythUIText *m_rectypePriorityText;
00113 MythUIText *m_recPriorityText;
00114 MythUIText *m_recPriorityBText;
00115 MythUIText *m_finalPriorityText;
00116 MythUIText *m_lastRecordedText;
00117 MythUIText *m_lastRecordedDateText;
00118 MythUIText *m_lastRecordedTimeText;
00119 MythUIText *m_channameText;
00120 MythUIText *m_channumText;
00121 MythUIText *m_callsignText;
00122 MythUIText *m_recProfileText;
00123
00124 ProgramRecPriorityInfo *m_currentItem;
00125
00126 bool m_reverseSort;
00127
00128 SortType m_sortType;
00129 };
00130
00131 Q_DECLARE_METATYPE(ProgramRecPriorityInfo *)
00132
00133 #endif