MythTV  master
importicons.h
Go to the documentation of this file.
1 /* -*- Mode: c++ -*-
2  * vim: set expandtab tabstop=4 shiftwidth=4:
3  *
4  * Original Project
5  * MythTV http://www.mythtv.org
6  *
7  * Author(s):
8  * John Pullan, Matthew Wire
9  *
10  * Description:
11  */
12 
13 #ifndef IMPORTICONS_H
14 #define IMPORTICONS_H
15 
16 // Qt
17 #include <QDir>
18 #include <QUrl>
19 
20 // MythTV
22 
23 class MythUIButton;
24 class MythUIButtonList;
26 class MythUITextEdit;
27 class MythUIText;
29 
31 {
32  Q_OBJECT
33 
34  public:
35  ImportIconsWizard(MythScreenStack *parent, bool fRefresh,
36  QString channelname = "");
37  ~ImportIconsWizard() override;
38 
39  bool Create(void) override; // MythScreenType
40  void Load(void) override; // MythScreenType
41 // bool keyPressEvent(QKeyEvent *) override; // MythScreenType
42  void customEvent(QEvent *event) override; // MythUIType
43 
44  struct SearchEntry
45  {
46  QString strID;
47  QString strName;
48  QString strLogo;
49  };
50 
51  private:
52 
53  enum dialogState : std::uint8_t
54  {
58  };
59 
60  struct CSVEntry
61  {
62  QString strChanId;
63  QString strName;
64  QString strXmlTvId;
65  QString strCallsign;
66  QString strTransportId;
67  QString strAtscMajorChan;
68  QString strAtscMinorChan;
69  QString strNetworkId;
70  QString strServiceId;
71  QString strIconCSV;
72  QString strNameCSV;
73  };
75  using ListEntries = QList<CSVEntry>;
77  using ListEntriesIter = QList<CSVEntry>::Iterator;
78 
83 
85  using ListSearchEntries = QList<SearchEntry>;
87  using ListSearchEntriesIter = QList<SearchEntry>::Iterator;
88 
93  static QString escape_csv(const QString& str);
94 
99  static QStringList extract_csv(const QString& strLine);
100 
106  static QString wget(QUrl& url,const QString& strParam);
107 
112  bool lookup(const QString& strParam);
113 
118  bool search(const QString& strParam);
119 
123  bool submit();
124 
129  bool findmissing(const QString& strParam);
130 
137  bool checkAndDownload(const QString& url, const QString& localChanId);
138 
142  bool initialLoad(const QString& name="");
143 
147  bool doLoad();
148 
149  protected slots:
151  void manualSearch();
153  void skip();
154  void askSubmit(const QString& strParam);
155  void Close() override; // MythScreenType
156 
157  private slots:
158  void itemChanged(MythUIButtonListItem *item);
159 
160  protected:
161  void Init(void) override; // MythScreenType
162 
163  private:
165  QString m_strMatches;
166 
167  QString m_strChannelDir;
169  QString m_strParam;
170 
171  bool m_fRefresh {false};
172  int m_nMaxCount {0};
173  int m_nCount {0};
175  int m_missingCount {0};
176 
178  const QString m_url {"http://services.mythtv.org/channel-icon/"};
179  QDir m_tmpDir;
180 
181  void startDialog();
182 
185 
188  MythUIText *m_nameText {nullptr};
192 
193  MythUIImage *m_preview {nullptr};
195 
196 };
197 
199 
200 #endif // IMPORTICONS_H
ImportIconsWizard::CSVEntry::strCallsign
QString strCallsign
callsign
Definition: importicons.h:65
ImportIconsWizard::dialogState
dialogState
Definition: importicons.h:53
MythUIImage
Image widget, displays a single image or multiple images in sequence.
Definition: mythuiimage.h:97
ImportIconsWizard::ListEntries
QList< CSVEntry > ListEntries
List of CSV entries.
Definition: importicons.h:75
ImportIconsWizard::SearchEntry::strName
QString strName
the remote name
Definition: importicons.h:47
ImportIconsWizard::itemChanged
void itemChanged(MythUIButtonListItem *item)
Definition: importicons.cpp:245
ImportIconsWizard::escape_csv
static QString escape_csv(const QString &str)
changes a string into csv format
Definition: importicons.cpp:488
ImportIconsWizard::m_popupStack
MythScreenStack * m_popupStack
Definition: importicons.h:183
ImportIconsWizard::CSVEntry::strNameCSV
QString strNameCSV
name (csv form)
Definition: importicons.h:72
ImportIconsWizard::m_strChannelname
QString m_strChannelname
the channel name if searching for a single channel icon
Definition: importicons.h:168
ImportIconsWizard::ListSearchEntries
QList< SearchEntry > ListSearchEntries
List of SearchEntry entries.
Definition: importicons.h:85
ImportIconsWizard::m_url
const QString m_url
Definition: importicons.h:178
MythScreenStack
Definition: mythscreenstack.h:16
ImportIconsWizard::m_missingCount
int m_missingCount
the current search point (0..m_missingCount)
Definition: importicons.h:175
ImportIconsWizard::doLoad
bool doLoad()
attempts to move the iteration on one/more than one
Definition: importicons.cpp:451
ImportIconsWizard::Create
bool Create(void) override
Definition: importicons.cpp:61
ImportIconsWizard::search
bool search(const QString &strParam)
search the remote db for icons etc
Definition: importicons.cpp:635
ImportIconsWizard::CSVEntry::strServiceId
QString strServiceId
service id
Definition: importicons.h:70
MythUITextEdit
A text entry and edit widget.
Definition: mythuitextedit.h:34
ImportIconsWizard::extract_csv
static QStringList extract_csv(const QString &strLine)
extracts the csv values out of a string
Definition: importicons.cpp:496
MythScreenType
Screen in which all other widgets are contained and rendered.
Definition: mythscreentype.h:45
ImportIconsWizard::m_nCount
int m_nCount
the current search point (0..m_nMaxCount)
Definition: importicons.h:173
ImportIconsWizard::CSVEntry::strIconCSV
QString strIconCSV
icon name (csv form)
Definition: importicons.h:71
ImportIconsWizard::m_manualButton
MythUIButton * m_manualButton
manual button field
Definition: importicons.h:189
ImportIconsWizard::initialLoad
bool initialLoad(const QString &name="")
attempt the inital load of the TV channel information
Definition: importicons.cpp:265
ImportIconsWizard::STATE_NORMAL
@ STATE_NORMAL
Definition: importicons.h:55
ImportIconsWizard::m_iter
ListEntriesIter m_iter
the current iterator
Definition: importicons.h:81
ImportIconsWizard::m_nMaxCount
int m_nMaxCount
the maximum number of TV channels
Definition: importicons.h:172
ImportIconsWizard::m_iconsList
MythUIButtonList * m_iconsList
list of potential icons
Definition: importicons.h:186
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(StandardSetting *)
ImportIconsWizard::m_listEntries
ListEntries m_listEntries
list of TV channels to search for
Definition: importicons.h:79
MythUIButtonListItem
Definition: mythuibuttonlist.h:41
ImportIconsWizard
Definition: importicons.h:30
ImportIconsWizard::CSVEntry::strName
QString strName
channel name
Definition: importicons.h:63
ImportIconsWizard::CSVEntry::strNetworkId
QString strNetworkId
network id
Definition: importicons.h:69
ImportIconsWizard::lookup
bool lookup(const QString &strParam)
looks up the string to determine the caller/xmltvid
Definition: importicons.cpp:618
ImportIconsWizard::m_preview
MythUIImage * m_preview
Definition: importicons.h:193
MythUIProgressDialog
Definition: mythprogressdialog.h:59
ImportIconsWizard::m_strChannelDir
QString m_strChannelDir
the location of the channel icon dir
Definition: importicons.h:167
ImportIconsWizard::m_missingEntries
ListEntries m_missingEntries
list of TV channels with no unique icon
Definition: importicons.h:80
ImportIconsWizard::enableControls
void enableControls(ImportIconsWizard::dialogState state=STATE_NORMAL)
enable/disable the controls
Definition: importicons.cpp:126
ImportIconsWizard::m_manualEdit
MythUITextEdit * m_manualEdit
manual edit field
Definition: importicons.h:187
MythUIButton
A single button widget.
Definition: mythuibutton.h:21
ImportIconsWizard::m_progressDialog
MythUIProgressDialog * m_progressDialog
Definition: importicons.h:184
ImportIconsWizard::skip
void skip()
skip this icon
Definition: importicons.cpp:171
ImportIconsWizard::Close
void Close() override
Definition: importicons.cpp:866
ImportIconsWizard::CSVEntry::strXmlTvId
QString strXmlTvId
the xmltvid
Definition: importicons.h:64
ImportIconsWizard::m_strParam
QString m_strParam
Definition: importicons.h:169
ImportIconsWizard::m_tmpDir
QDir m_tmpDir
Definition: importicons.h:179
ImportIconsWizard::m_missingIter
ListEntriesIter m_missingIter
Definition: importicons.h:82
ImportIconsWizard::m_listSearch
ListSearchEntries m_listSearch
the list of SearchEntry
Definition: importicons.h:164
ImportIconsWizard::CSVEntry
describes the TV channel name
Definition: importicons.h:60
ImportIconsWizard::SearchEntry
search entry results
Definition: importicons.h:44
ImportIconsWizard::checkAndDownload
bool checkAndDownload(const QString &url, const QString &localChanId)
checks and attempts to download the logo file to the appropriate place
Definition: importicons.cpp:560
ImportIconsWizard::~ImportIconsWizard
~ImportIconsWizard() override
Definition: importicons.cpp:50
ImportIconsWizard::STATE_DISABLED
@ STATE_DISABLED
Definition: importicons.h:57
ImportIconsWizard::m_strMatches
QString m_strMatches
the string for the submit() call
Definition: importicons.h:165
MythUIText
All purpose text widget, displays a text string.
Definition: mythuitext.h:28
ImportIconsWizard::ImportIconsWizard
ImportIconsWizard(MythScreenStack *parent, bool fRefresh, QString channelname="")
Definition: importicons.cpp:27
ImportIconsWizard::wget
static QString wget(QUrl &url, const QString &strParam)
use the equivalent of wget to fetch the POST command
Definition: importicons.cpp:539
ImportIconsWizard::m_statusText
MythUIText * m_statusText
Definition: importicons.h:191
ImportIconsWizard::askSubmit
void askSubmit(const QString &strParam)
Definition: importicons.cpp:775
ImportIconsWizard::CSVEntry::strAtscMajorChan
QString strAtscMajorChan
ATSC major number.
Definition: importicons.h:67
ImportIconsWizard::m_previewtitle
MythUIText * m_previewtitle
Definition: importicons.h:194
ImportIconsWizard::CSVEntry::strChanId
QString strChanId
local channel id
Definition: importicons.h:62
ImportIconsWizard::m_missingMaxCount
int m_missingMaxCount
the total number of missing icons
Definition: importicons.h:174
ImportIconsWizard::SearchEntry::strLogo
QString strLogo
the actual logo
Definition: importicons.h:48
ImportIconsWizard::customEvent
void customEvent(QEvent *event) override
Definition: importicons.cpp:841
ImportIconsWizard::ListSearchEntriesIter
QList< SearchEntry >::Iterator ListSearchEntriesIter
iterator over list of SearchEntry entries
Definition: importicons.h:87
ImportIconsWizard::menuSelection
void menuSelection(MythUIButtonListItem *item)
process the icon selection
Definition: importicons.cpp:185
ImportIconsWizard::manualSearch
void manualSearch()
process the manual search
Definition: importicons.cpp:162
ImportIconsWizard::CSVEntry::strTransportId
QString strTransportId
transport id
Definition: importicons.h:66
ImportIconsWizard::STATE_SEARCHING
@ STATE_SEARCHING
Definition: importicons.h:56
ImportIconsWizard::m_nameText
MythUIText * m_nameText
name field for the icon
Definition: importicons.h:188
ImportIconsWizard::m_fRefresh
bool m_fRefresh
are we doing a refresh or not
Definition: importicons.h:171
ImportIconsWizard::m_skipButton
MythUIButton * m_skipButton
button skip
Definition: importicons.h:190
MythUIButtonList
List widget, displays list items in a variety of themeable arrangements and can trigger signals when ...
Definition: mythuibuttonlist.h:191
ImportIconsWizard::ListEntriesIter
QList< CSVEntry >::Iterator ListEntriesIter
iterator over list of CSV entries
Definition: importicons.h:77
ImportIconsWizard::submit
bool submit()
submit the icon information back to the remote db
Definition: importicons.cpp:790
ImportIconsWizard::CSVEntry::strAtscMinorChan
QString strAtscMinorChan
ATSC minor number.
Definition: importicons.h:68
ImportIconsWizard::Load
void Load(void) override
Load data which will ultimately be displayed on-screen or used to determine what appears on-screen (S...
Definition: importicons.cpp:107
ImportIconsWizard::findmissing
bool findmissing(const QString &strParam)
retrieve the actual logo for the TV channel
Definition: importicons.cpp:738
mythscreentype.h
ImportIconsWizard::Init
void Init(void) override
Used after calling Load() to assign data to widgets and other UI initilisation which is prohibited in...
Definition: importicons.cpp:113
ImportIconsWizard::SearchEntry::strID
QString strID
the remote channel id
Definition: importicons.h:46
ImportIconsWizard::startDialog
void startDialog()