MythTV master
weatherSource.h
Go to the documentation of this file.
1#ifndef WEATHER_SOURCE_H
2#define WEATHER_SOURCE_H
3
4// Qt
5#include <QFileInfo>
6#include <QObject>
7#include <QStringList>
8#include <QTimer>
9
10// MythTV
12
13// MythWeather headers
14#include "weatherUtils.h"
15
16class WeatherScreen;
17
18/*
19 * Instance independent information about a script
20 */
21class ScriptInfo
22{
23 public:
24 QString name;
25 QString version;
26 QString author;
27 QString email;
28 QStringList types;
29 QString program;
30 QString path;
31 std::chrono::seconds scriptTimeout {DEFAULT_SCRIPT_TIMEOUT};
32 std::chrono::seconds updateTimeout {DEFAULT_UPDATE_TIMEOUT};
33 int id {0};
34};
35
36class WeatherSource : public QObject
37{
38 Q_OBJECT
39
40 public:
41 static ScriptInfo *ProbeScript(const QFileInfo &fi);
42 static QStringList ProbeTypes(const QString& workingDirectory,
43 const QString& program);
44 static bool ProbeTimeouts(const QString& workingDirectory,
45 const QString& program,
46 std::chrono::seconds &updateTimeout,
47 std::chrono::seconds &scriptTimeout);
48 static bool ProbeInfo(ScriptInfo &scriptInfo);
49
50 explicit WeatherSource(ScriptInfo *info);
51 ~WeatherSource() override;
52
53 bool isReady() const { return m_ready; }
54 QString getVersion() { return m_info->version; }
55 QString getName() { return m_info->name; }
56 QString getAuthor() { return m_info->author; }
57 QString getEmail() { return m_info->email; }
58 units_t getUnits() const { return m_units; }
59 void setUnits(units_t units) { m_units = units; }
60 QStringList getLocationList(const QString &str);
61 void setLocale(const QString &locale) { m_locale = locale; }
62 QString getLocale() { return m_locale; }
63
64 void startUpdate(bool forceUpdate = false);
65
66 std::chrono::seconds getScriptTimeout() { return m_info->scriptTimeout; }
67 void setScriptTimeout(std::chrono::seconds timeout) { m_info->scriptTimeout = timeout; }
68
69 std::chrono::seconds getUpdateTimeout() { return m_info->updateTimeout; }
70 void setUpdateTimeout(std::chrono::seconds timeout) { m_info->updateTimeout = timeout; }
71
73 void stopUpdateTimer() { m_updateTimer->stop(); }
74
75 bool inUse() const { return m_inuse; }
76 void setInUse(bool inuse) { m_inuse = inuse; }
77
78 int getId() { return m_info->id; }
79
82
83 signals:
84 void newData(QString, units_t, DataMap);
85
86 private slots:
87 void processExit(uint status);
88 void processExit();
89 void updateTimeout();
90
91 private:
92 void processData();
93
94 bool m_ready {false};
95 bool m_inuse {false};
96 ScriptInfo *m_info {nullptr};
98 QString m_dir;
99 QString m_locale;
100 QString m_cachefile;
101 QByteArray m_buffer;
103 QTimer *m_updateTimer {nullptr};
106};
107
108#endif /* WEATHER_SOURCE_H */
QStringList types
Definition: weatherSource.h:28
std::chrono::seconds scriptTimeout
Definition: weatherSource.h:31
QString name
Definition: weatherSource.h:24
QString path
Definition: weatherSource.h:30
QString author
Definition: weatherSource.h:26
QString program
Definition: weatherSource.h:29
QString version
Definition: weatherSource.h:25
std::chrono::seconds updateTimeout
Definition: weatherSource.h:32
QString email
Definition: weatherSource.h:27
Weather screen.
Definition: weatherScreen.h:27
void setUnits(units_t units)
Definition: weatherSource.h:59
static bool ProbeTimeouts(const QString &workingDirectory, const QString &program, std::chrono::seconds &updateTimeout, std::chrono::seconds &scriptTimeout)
QString getVersion()
Definition: weatherSource.h:54
WeatherSource(ScriptInfo *info)
Watch out, we store the parameter as a member variable, don't go deleting it, that wouldn't be good.
std::chrono::seconds getUpdateTimeout()
Definition: weatherSource.h:69
bool inUse() const
Definition: weatherSource.h:75
bool isReady() const
Definition: weatherSource.h:53
void startUpdate(bool forceUpdate=false)
QString getAuthor()
Definition: weatherSource.h:56
static ScriptInfo * ProbeScript(const QFileInfo &fi)
void setInUse(bool inuse)
Definition: weatherSource.h:76
static bool ProbeInfo(ScriptInfo &scriptInfo)
QString getLocale()
Definition: weatherSource.h:62
QString getEmail()
Definition: weatherSource.h:57
QString m_locale
Definition: weatherSource.h:99
~WeatherSource() override
std::chrono::seconds getScriptTimeout()
Definition: weatherSource.h:66
QTimer * m_updateTimer
void stopUpdateTimer()
Definition: weatherSource.h:73
QStringList getLocationList(const QString &str)
void disconnectScreen(WeatherScreen *ws)
QString getName()
Definition: weatherSource.h:55
QByteArray m_buffer
static QStringList ProbeTypes(const QString &workingDirectory, const QString &program)
void setLocale(const QString &locale)
Definition: weatherSource.h:61
QString m_cachefile
ScriptInfo * m_info
Definition: weatherSource.h:96
void startUpdateTimer()
Definition: weatherSource.h:72
void setScriptTimeout(std::chrono::seconds timeout)
Definition: weatherSource.h:67
units_t getUnits() const
Definition: weatherSource.h:58
void setUpdateTimeout(std::chrono::seconds timeout)
Definition: weatherSource.h:70
void newData(QString, units_t, DataMap)
MythSystemLegacy * m_ms
Definition: weatherSource.h:97
void connectScreen(WeatherScreen *ws)
unsigned int uint
Definition: freesurround.h:24
dictionary info
Definition: azlyrics.py:7
static constexpr std::chrono::minutes DEFAULT_UPDATE_TIMEOUT
Definition: weatherUtils.h:20
static constexpr std::chrono::seconds DEFAULT_SCRIPT_TIMEOUT
Definition: weatherUtils.h:21
static constexpr uint8_t SI_UNITS
Definition: weatherUtils.h:18
QMap< QString, QString > DataMap
Definition: weatherUtils.h:26
unsigned char units_t
Definition: weatherUtils.h:25