MythTV  master
channelsettings.h
Go to the documentation of this file.
1 #ifndef CHANNELSETTINGS_H
2 #define CHANNELSETTINGS_H
3 
4 // C++
5 #include <cstdlib>
6 #include <utility>
7 #include <vector>
8 
9 // Qt
10 #include <QString>
11 
12 // MythTV
14 #include "libmythbase/mythdb.h"
15 #include "mythtvexp.h"
16 
17 class QWidget;
18 
20 {
21  public:
22  explicit ChannelID(QString field = "chanid",
23  QString table = "channel") :
24  m_field(std::move(field)), m_table(std::move(table))
25  {
26  setVisible(false);
27  }
28 
29  void Save() override; // StandardSetting
30 
31  int findHighest(int floor = 1000)
32  {
33  int tmpfloor = floor;
35 
36  QString querystr = QString("SELECT %1 FROM %2")
37  .arg(m_field, m_table);
38  query.prepare(querystr);
39 
40  if (!query.exec() || !query.isActive())
41  {
42  MythDB::DBError("finding highest id", query);
43  return floor;
44  }
45 
46  if (query.size() > 0)
47  {
48  while (query.next())
49  if (tmpfloor <= query.value(0).toInt())
50  tmpfloor = query.value(0).toInt() + 1;
51  }
52  return floor<tmpfloor?tmpfloor:floor;
53  };
54 
55  const QString& getField(void) const {
56  return m_field;
57  };
58 
59 protected:
60  QString m_field;
61  QString m_table;
62 };
63 
65 {
66  public:
67  ChannelDBStorage(StorageUser *_user, const ChannelID &_id, const QString& _name) :
68  SimpleDBStorage(_user, "channel", _name), m_id(_id) { }
69 
70  QString GetSetClause(MSqlBindings &bindings) const override; // SimpleDBStorage
71  QString GetWhereClause(MSqlBindings &bindings) const override; // SimpleDBStorage
72 
73  const ChannelID& m_id;
74 };
75 
77 {
78  public:
79  IPTVChannelDBStorage(StorageUser *_user, const ChannelID &_id, const QString& _name) :
80  SimpleDBStorage(_user, "iptv_channel", _name), m_id(_id) { }
81 
82  QString GetSetClause(MSqlBindings &bindings) const override; // SimpleDBStorage
83  QString GetWhereClause(MSqlBindings &bindings) const override; // SimpleDBStorage
84 
85  const ChannelID& m_id;
86 };
87 
88 class OnAirGuide;
89 class XmltvID;
90 class Freqid;
91 class TransportID_CO;
92 class Frequency_CO;
93 
95 {
96  Q_OBJECT
97 
98  public:
100  uint default_sourceid, bool add_freqid);
101 
102  public slots:
103  static void onAirGuideChanged(bool fValue);
104  void sourceChanged(const QString &sourceid);
105 
106  protected:
107  OnAirGuide *m_onAirGuide {nullptr};
108  XmltvID *m_xmltvID {nullptr};
109  Freqid *m_freqId {nullptr};
110  TransportID_CO *m_transportId {nullptr};
111  Frequency_CO *m_frequency {nullptr};
112 };
113 
115 {
116  public:
117  explicit ChannelOptionsFilters(const ChannelID& id);
118 };
119 
121 {
122  public:
123  explicit ChannelOptionsIPTV(const ChannelID& id);
124 };
125 
127 {
128  public:
129  explicit ChannelOptionsV4L(const ChannelID& id);
130 };
131 
133 {
134  public:
135  explicit ChannelOptionsRawTS(const ChannelID &id);
136 
137  void Load(void) override; // StandardSetting
138  void Save(void) override; // StandardSetting
139  virtual void Save(const QString& /*destination*/) { Save(); }
140 
141  private:
142  const ChannelID &m_cid;
143 
144  std::vector<TransTextEditSetting*> m_pids;
145  std::vector<TransMythUIComboBoxSetting*> m_sids;
146  std::vector<TransMythUICheckBoxSetting*> m_pcrs;
147 
148  static const uint kMaxPIDs = 10;
149 };
150 
152  public MythUIComboBoxSetting
153 {
154  public:
155  explicit ChannelTVFormat(const ChannelID &id);
156 
157  static QStringList GetFormats(void);
158 };
159 
160 #endif //CHANNELEDITOR_H
XmltvID
Definition: channelsettings.cpp:311
MSqlBindings
QMap< QString, QVariant > MSqlBindings
typedef for a map of string -> string bindings for generic queries.
Definition: mythdbcon.h:100
MSqlQuery::isActive
bool isActive(void) const
Definition: mythdbcon.h:215
MSqlQuery::next
bool next(void)
Wrap QSqlQuery::next() so we can display the query results.
Definition: mythdbcon.cpp:812
ChannelOptionsFilters
Definition: channelsettings.h:114
MSqlQuery
QSqlQuery wrapper that fetches a DB connection from the connection pool.
Definition: mythdbcon.h:127
Frequency_CO
Definition: channelsettings.cpp:413
MSqlQuery::size
int size(void) const
Definition: mythdbcon.h:214
mythdb.h
ChannelOptionsRawTS::m_pids
std::vector< TransTextEditSetting * > m_pids
Definition: channelsettings.h:144
ChannelID::getField
const QString & getField(void) const
Definition: channelsettings.h:55
mythtvexp.h
OnAirGuide
Definition: channelsettings.cpp:475
MSqlQuery::value
QVariant value(int i) const
Definition: mythdbcon.h:204
MSqlQuery::exec
bool exec(void)
Wrap QSqlQuery::exec() so we can display SQL.
Definition: mythdbcon.cpp:618
ChannelOptionsCommon
Definition: channelsettings.h:94
SimpleDBStorage
Definition: mythstorage.h:55
ChannelDBStorage::GetWhereClause
QString GetWhereClause(MSqlBindings &bindings) const override
Definition: channelsettings.cpp:51
ChannelID
Definition: channelsettings.h:19
ChannelID::m_table
QString m_table
Definition: channelsettings.h:61
IPTVChannelDBStorage::IPTVChannelDBStorage
IPTVChannelDBStorage(StorageUser *_user, const ChannelID &_id, const QString &_name)
Definition: channelsettings.h:79
ChannelDBStorage::m_id
const ChannelID & m_id
Definition: channelsettings.h:73
MythUIComboBoxSetting
Definition: standardsettings.h:218
ChannelOptionsIPTV
Definition: channelsettings.h:120
MSqlQuery::InitCon
static MSqlQueryInfo InitCon(ConnectionReuse _reuse=kNormalConnection)
Only use this in combination with MSqlQuery constructor.
Definition: mythdbcon.cpp:550
MythDB::DBError
static void DBError(const QString &where, const MSqlQuery &query)
Definition: mythdb.cpp:226
StandardSetting::Load
virtual void Load(void)
Definition: standardsettings.cpp:213
Freqid
Definition: channelsettings.cpp:511
ChannelOptionsRawTS
Definition: channelsettings.h:132
StandardSetting::Save
virtual void Save(void)
Definition: standardsettings.cpp:232
ChannelTVFormat
Definition: channelsettings.h:151
IPTVChannelDBStorage::GetWhereClause
QString GetWhereClause(MSqlBindings &bindings) const override
Definition: channelsettings.cpp:75
IPTVChannelDBStorage::m_id
const ChannelID & m_id
Definition: channelsettings.h:85
standardsettings.h
MTV_PUBLIC
#define MTV_PUBLIC
Definition: mythtvexp.h:15
TransportID_CO
Definition: channelsettings.cpp:400
ChannelOptionsV4L
Definition: channelsettings.h:126
ChannelDBStorage
Definition: channelsettings.h:64
IPTVChannelDBStorage::GetSetClause
QString GetSetClause(MSqlBindings &bindings) const override
Definition: channelsettings.cpp:85
ChannelOptionsRawTS::m_sids
std::vector< TransMythUIComboBoxSetting * > m_sids
Definition: channelsettings.h:145
StandardSetting::setVisible
void setVisible(bool visible)
Definition: standardsettings.cpp:59
ChannelOptionsRawTS::m_pcrs
std::vector< TransMythUICheckBoxSetting * > m_pcrs
Definition: channelsettings.h:146
IPTVChannelDBStorage
Definition: channelsettings.h:76
ChannelDBStorage::ChannelDBStorage
ChannelDBStorage(StorageUser *_user, const ChannelID &_id, const QString &_name)
Definition: channelsettings.h:67
ChannelID::ChannelID
ChannelID(QString field="chanid", QString table="channel")
Definition: channelsettings.h:22
ChannelID::findHighest
int findHighest(int floor=1000)
Definition: channelsettings.h:31
ChannelOptionsRawTS::m_cid
const ChannelID & m_cid
Definition: channelsettings.h:142
ChannelOptionsRawTS::Save
virtual void Save(const QString &)
Definition: channelsettings.h:139
ChannelDBStorage::GetSetClause
QString GetSetClause(MSqlBindings &bindings) const override
Definition: channelsettings.cpp:61
GroupSetting
Definition: standardsettings.h:435
uint
unsigned int uint
Definition: freesurround.h:24
MSqlQuery::prepare
bool prepare(const QString &query)
QSqlQuery::prepare() is not thread safe in Qt <= 3.3.2.
Definition: mythdbcon.cpp:837
StorageUser
Definition: mythstorage.h:15