00001 #ifndef PROGLIST_H_
00002 #define PROGLIST_H_
00003
00004
00005 #include <QDateTime>
00006 #include <QString>
00007
00008
00009 #include "programinfo.h"
00010 #include "schedulecommon.h"
00011 #include "proglist_helpers.h"
00012
00013 enum ProgListType {
00014 plUnknown = 0,
00015 plTitle = 1,
00016 plTitleSearch,
00017 plKeywordSearch,
00018 plPeopleSearch,
00019 plPowerSearch,
00020 plSQLSearch,
00021 plNewListings,
00022 plMovies,
00023 plCategory,
00024 plChannel,
00025 plTime,
00026 plRecordid,
00027 plStoredSearch,
00028 plPreviouslyRecorded
00029 };
00030
00031 class ProgLister : public ScheduleCommon
00032 {
00033 friend class PhrasePopup;
00034 friend class TimePopup;
00035 friend class PowerSearchPopup;
00036 friend class EditPowerSearchPopup;
00037
00038 Q_OBJECT
00039
00040 public:
00041 ProgLister(MythScreenStack *parent, ProgListType pltype,
00042 const QString &view, const QString &extraArg);
00043 explicit ProgLister(MythScreenStack *parent, uint recid = 0,
00044 const QString &title = QString());
00045 ~ProgLister();
00046
00047 bool Create(void);
00048 bool keyPressEvent(QKeyEvent *);
00049 void customEvent(QEvent *);
00050
00051 protected slots:
00052 void HandleSelected(MythUIButtonListItem *item);
00053 void HandleVisible(MythUIButtonListItem *item);
00054 void HandleClicked(void);
00055
00056 void DeleteOldEpisode(bool ok);
00057 void DeleteOldSeries(bool ok);
00058 void RecordSelected(void);
00059
00060 void SetViewFromList(QString item);
00061 void SetViewFromTime(QDateTime searchTime);
00062
00063 void EditScheduled(void) { ScheduleCommon::EditScheduled(GetCurrent()); }
00064 void EditCustom(void) { ScheduleCommon::EditCustom(GetCurrent()); }
00065
00066 void ShowDetails(void) { ScheduleCommon::ShowDetails(GetCurrent()); }
00067 void ShowUpcoming(void);
00068 void ShowDeleteRuleMenu(void);
00069 void ShowDeleteOldEpisodeMenu(void);
00070 void ShowChooseViewMenu(void);
00071
00072 private:
00073 void Load(void);
00074
00075 void FillViewList(const QString &view);
00076 void FillItemList(bool restorePosition, bool updateDisp = true);
00077
00078 void ClearCurrentProgramInfo(void);
00079 void UpdateDisplay(const ProgramInfo *selected = NULL);
00080 void RestoreSelection(const ProgramInfo *selected, int selectedOffset);
00081 void UpdateButtonList(void);
00082 void UpdateKeywordInDB(const QString &text, const QString &oldValue);
00083
00084 virtual void ShowMenu(void);
00085 void ShowDeleteItemMenu(void);
00086 void ShowDeleteOldSeriesMenu(void);
00087 void ShowOldRecordedMenu(void);
00088
00089 void SwitchToPreviousView(void);
00090 void SwitchToNextView(void);
00091
00092 typedef enum { kTimeSort, kPrevTitleSort, kTitleSort, } SortBy;
00093 SortBy GetSortBy(void) const;
00094 void SortList(SortBy sortby, bool reverseSort);
00095
00096 ProgramInfo *GetCurrent(void);
00097 const ProgramInfo *GetCurrent(void) const;
00098
00099 bool PowerStringToSQL(
00100 const QString &qphrase, QString &output, MSqlBindings &bindings) const;
00101
00102 private:
00103 ProgListType m_type;
00104 uint m_recid;
00105 QString m_title;
00106 QString m_extraArg;
00107 QDateTime m_startTime;
00108 QDateTime m_searchTime;
00109 QString m_channelOrdering;
00110
00111 RecSearchType m_searchType;
00112
00113 QString m_view;
00114 int m_curView;
00115 QStringList m_viewList;
00116 QStringList m_viewTextList;
00117
00118 ProgramList m_itemList;
00119 ProgramList m_itemListSave;
00120 ProgramList m_schedList;
00121
00122 QStringList m_typeList;
00123 QStringList m_genreList;
00124 QStringList m_stationList;
00125
00126 bool m_allowEvents;
00127 bool m_titleSort;
00128 bool m_reverseSort;
00129 bool m_useGenres;
00130
00131 MythUIText *m_schedText;
00132 MythUIText *m_curviewText;
00133 MythUIText *m_positionText;
00134 MythUIButtonList *m_progList;
00135 MythUIText *m_messageText;
00136 };
00137
00138 #endif