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"
16 #include "mythtvexp.h"
17 
18 class QWidget;
19 
20 class ChannelID : public GroupSetting
21 {
22  public:
23  explicit ChannelID(QString field = "chanid",
24  QString table = "channel") :
25  m_field(std::move(field)), m_table(std::move(table))
26  {
27  setVisible(false);
28  }
29 
30  void Save(void) override // StandardSetting
31  {
32  if (getValue().toInt() == 0) {
34 
36 
37  QString querystr = QString("SELECT %1 FROM %2 WHERE %3='%4'")
38  .arg(m_field, m_table, m_field, getValue());
39  query.prepare(querystr);
40 
41  if (!query.exec() && !query.isActive())
42  MythDB::DBError("ChannelID::save", query);
43 
44  if (query.size())
45  return;
46 
47  querystr = QString("INSERT INTO %1 (%2) VALUES ('%3')")
48  .arg(m_table, m_field, getValue());
49  query.prepare(querystr);
50 
51  if (!query.exec() || !query.isActive())
52  MythDB::DBError("ChannelID::save", query);
53 
54  if (query.numRowsAffected() != 1)
55  {
56  LOG(VB_GENERAL, LOG_ERR, QString("ChannelID, Error: ") +
57  QString("Failed to insert into: %1").arg(m_table));
58  }
59  }
60  }
61 
62  int findHighest(int floor = 1000)
63  {
64  int tmpfloor = floor;
66 
67  QString querystr = QString("SELECT %1 FROM %2")
68  .arg(m_field, m_table);
69  query.prepare(querystr);
70 
71  if (!query.exec() || !query.isActive())
72  {
73  MythDB::DBError("finding highest id", query);
74  return floor;
75  }
76 
77  if (query.size() > 0)
78  {
79  while (query.next())
80  if (tmpfloor <= query.value(0).toInt())
81  tmpfloor = query.value(0).toInt() + 1;
82  }
83  return floor<tmpfloor?tmpfloor:floor;
84  };
85 
86  const QString& getField(void) const {
87  return m_field;
88  };
89 
90 protected:
91  QString m_field;
92  QString m_table;
93 };
94 
96 {
97  public:
98  ChannelDBStorage(StorageUser *_user, const ChannelID &_id, const QString& _name) :
99  SimpleDBStorage(_user, "channel", _name), m_id(_id) { }
100 
101  QString GetSetClause(MSqlBindings &bindings) const override; // SimpleDBStorage
102  QString GetWhereClause(MSqlBindings &bindings) const override; // SimpleDBStorage
103 
104  const ChannelID& m_id;
105 };
106 
108 {
109  public:
110  IPTVChannelDBStorage(StorageUser *_user, const ChannelID &_id, const QString& _name) :
111  SimpleDBStorage(_user, "iptv_channel", _name), m_id(_id) { }
112 
113  QString GetSetClause(MSqlBindings &bindings) const override; // SimpleDBStorage
114  QString GetWhereClause(MSqlBindings &bindings) const override; // SimpleDBStorage
115 
116  const ChannelID& m_id;
117 };
118 
119 class OnAirGuide;
120 class XmltvID;
121 class Freqid;
122 class TransportID_CO;
123 class Frequency_CO;
124 
126 {
127  Q_OBJECT
128 
129  public:
131  uint default_sourceid, bool add_freqid);
132 
133  public slots:
134  static void onAirGuideChanged(bool fValue);
135  void sourceChanged(const QString &sourceid);
136 
137  protected:
138  OnAirGuide *m_onAirGuide {nullptr};
139  XmltvID *m_xmltvID {nullptr};
140  Freqid *m_freqId {nullptr};
141  TransportID_CO *m_transportId {nullptr};
142  Frequency_CO *m_frequency {nullptr};
143 };
144 
146 {
147  public:
148  explicit ChannelOptionsFilters(const ChannelID& id);
149 };
150 
152 {
153  public:
154  explicit ChannelOptionsIPTV(const ChannelID& id);
155 };
156 
158 {
159  public:
160  explicit ChannelOptionsV4L(const ChannelID& id);
161 };
162 
164 {
165  public:
166  explicit ChannelOptionsRawTS(const ChannelID &id);
167 
168  void Load(void) override; // StandardSetting
169  void Save(void) override; // StandardSetting
170  virtual void Save(const QString& /*destination*/) { Save(); }
171 
172  private:
173  const ChannelID &m_cid;
174 
175  std::vector<TransTextEditSetting*> m_pids;
176  std::vector<TransMythUIComboBoxSetting*> m_sids;
177  std::vector<TransMythUICheckBoxSetting*> m_pcrs;
178 
179  static const uint kMaxPIDs = 10;
180 };
181 
183  public MythUIComboBoxSetting
184 {
185  public:
186  explicit ChannelTVFormat(const ChannelID &id);
187 
188  static QStringList GetFormats(void);
189 };
190 
191 #endif //CHANNELEDITOR_H
XmltvID
Definition: channelsettings.cpp:279
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:813
ChannelOptionsFilters
Definition: channelsettings.h:145
MSqlQuery
QSqlQuery wrapper that fetches a DB connection from the connection pool.
Definition: mythdbcon.h:127
Frequency_CO
Definition: channelsettings.cpp:381
MSqlQuery::size
int size(void) const
Definition: mythdbcon.h:214
StandardSetting::setValue
virtual void setValue(const QString &newValue)
Definition: standardsettings.cpp:170
mythdb.h
ChannelOptionsRawTS::m_pids
std::vector< TransTextEditSetting * > m_pids
Definition: channelsettings.h:175
ChannelID::getField
const QString & getField(void) const
Definition: channelsettings.h:86
mythtvexp.h
OnAirGuide
Definition: channelsettings.cpp:443
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:619
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
ChannelOptionsCommon
Definition: channelsettings.h:125
SimpleDBStorage
Definition: mythstorage.h:55
ChannelDBStorage::GetWhereClause
QString GetWhereClause(MSqlBindings &bindings) const override
Definition: channelsettings.cpp:19
ChannelID::m_field
QString m_field
Definition: channelsettings.h:88
ChannelID
Definition: channelsettings.h:20
ChannelID::m_table
QString m_table
Definition: channelsettings.h:92
IPTVChannelDBStorage::IPTVChannelDBStorage
IPTVChannelDBStorage(StorageUser *_user, const ChannelID &_id, const QString &_name)
Definition: channelsettings.h:110
mythlogging.h
ChannelDBStorage::m_id
const ChannelID & m_id
Definition: channelsettings.h:104
MythUIComboBoxSetting
Definition: standardsettings.h:218
ChannelID::Save
void Save(void) override
Definition: channelsettings.h:30
ChannelOptionsIPTV
Definition: channelsettings.h:151
MSqlQuery::InitCon
static MSqlQueryInfo InitCon(ConnectionReuse _reuse=kNormalConnection)
Only use this in combination with MSqlQuery constructor.
Definition: mythdbcon.cpp:551
MythDB::DBError
static void DBError(const QString &where, const MSqlQuery &query)
Definition: mythdb.cpp:226
StandardSetting::Load
virtual void Load(void)
Definition: standardsettings.cpp:214
Freqid
Definition: channelsettings.cpp:479
ChannelOptionsRawTS
Definition: channelsettings.h:163
StandardSetting::Save
virtual void Save(void)
Definition: standardsettings.cpp:233
StandardSetting::getValue
virtual QString getValue(void) const
Definition: standardsettings.h:52
ChannelTVFormat
Definition: channelsettings.h:182
uint
unsigned int uint
Definition: compat.h:81
IPTVChannelDBStorage::GetWhereClause
QString GetWhereClause(MSqlBindings &bindings) const override
Definition: channelsettings.cpp:43
IPTVChannelDBStorage::m_id
const ChannelID & m_id
Definition: channelsettings.h:116
standardsettings.h
MTV_PUBLIC
#define MTV_PUBLIC
Definition: mythtvexp.h:15
TransportID_CO
Definition: channelsettings.cpp:368
ChannelOptionsV4L
Definition: channelsettings.h:157
ChannelDBStorage
Definition: channelsettings.h:95
IPTVChannelDBStorage::GetSetClause
QString GetSetClause(MSqlBindings &bindings) const override
Definition: channelsettings.cpp:53
std
Definition: mythchrono.h:23
ChannelOptionsRawTS::m_sids
std::vector< TransMythUIComboBoxSetting * > m_sids
Definition: channelsettings.h:176
StandardSetting::setVisible
void setVisible(bool visible)
Definition: standardsettings.cpp:60
MSqlQuery::numRowsAffected
int numRowsAffected() const
Definition: mythdbcon.h:217
ChannelOptionsRawTS::m_pcrs
std::vector< TransMythUICheckBoxSetting * > m_pcrs
Definition: channelsettings.h:177
IPTVChannelDBStorage
Definition: channelsettings.h:107
ChannelDBStorage::ChannelDBStorage
ChannelDBStorage(StorageUser *_user, const ChannelID &_id, const QString &_name)
Definition: channelsettings.h:98
ChannelID::ChannelID
ChannelID(QString field="chanid", QString table="channel")
Definition: channelsettings.h:23
ChannelID::findHighest
int findHighest(int floor=1000)
Definition: channelsettings.h:62
ChannelOptionsRawTS::m_cid
const ChannelID & m_cid
Definition: channelsettings.h:173
ChannelOptionsRawTS::Save
virtual void Save(const QString &)
Definition: channelsettings.h:170
ChannelDBStorage::GetSetClause
QString GetSetClause(MSqlBindings &bindings) const override
Definition: channelsettings.cpp:29
GroupSetting
Definition: standardsettings.h:435
MSqlQuery::prepare
bool prepare(const QString &query)
QSqlQuery::prepare() is not thread safe in Qt <= 3.3.2.
Definition: mythdbcon.cpp:838
StorageUser
Definition: mythstorage.h:15