summaryrefslogtreecommitdiffstats
path: root/src/preferences/broadcastprofile.h
blob: 17592f98c9b3f0b7ecb7fff19e68cc1c6edc01a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#pragma once

#include <QSharedPointer>
#include <QObject>
#include <QString>

#include "preferences/usersettings.h"

class BroadcastProfile;
typedef QSharedPointer<BroadcastProfile> BroadcastProfilePtr;
Q_DECLARE_METATYPE(BroadcastProfilePtr)

class BroadcastProfile : public QObject {
  Q_OBJECT

  public:
    enum StatusStates {
          STATUS_UNCONNECTED = 0, // IDLE state, no error
          STATUS_CONNECTING = 1, // 30 s max
          STATUS_CONNECTED = 2, // On Air
          STATUS_FAILURE = 3 // Happens when disconnected by an error
    };

    explicit BroadcastProfile(const QString& profileName,
                              QObject* parent = nullptr);
    bool save(const QString& filename);
    bool equals(BroadcastProfilePtr other);
    bool valuesEquals(BroadcastProfilePtr other);
    BroadcastProfilePtr valuesCopy();
    void copyValuesTo(BroadcastProfilePtr other);

    static BroadcastProfilePtr loadFromFile(const QString& filename);
    static bool validName(const QString& str);
    static QString stripForbiddenChars(const QString& str);

    QString getLastFilename() const;

    void setConnectionStatus(int newState);
    int connectionStatus();

    void setSecureCredentialStorage(bool enabled);
    bool secureCredentialStorage();

    void setProfileName(const QString& profileName);
    QString getProfileName() const;

    bool getEnabled() const;
    void setEnabled(bool value);

    QString getHost() const;
    void setHost(const QString& value);

    int getPort() const;
    void setPort(int value);

    QString getServertype() const;
    void setServertype(const QString& value);

    QString getLogin() const;
    void setLogin(const QString& value);

    QString getPassword() const;
    void setPassword(const QString& value);

    bool getEnableReconnect() const;
    void setEnableReconnect(bool value);

    double getReconnectPeriod() const;
    void setReconnectPeriod(double value);

    bool getLimitReconnects() const;
    void setLimitReconnects(bool value);

    int getMaximumRetries() const;
    void setMaximumRetries(int value);

    bool getNoDelayFirstReconnect() const;
    void setNoDelayFirstReconnect(bool value);

    double getReconnectFirstDelay() const;
    void setReconnectFirstDelay(double value);

    QString getFormat() const;
    void setFormat(const QString& value);

    int getBitrate() const;
    void setBitrate(int value);

    int getChannels() const;
    void setChannels(int value);

    QString getMountpoint() const;
    void setMountPoint(const QString& value);

    QString getStreamName() const;
    void setStreamName(const QString& value);

    QString getStreamDesc() const;
    void setStreamDesc(const QString& value);

    QString getStreamGenre() const;
    void setStreamGenre(const QString& value);

    bool getStreamPublic() const;
    void setStreamPublic(bool value);

    QString getStreamWebsite() const;
    void setStreamWebsite(const QString& value);

    QString getStreamIRC() const;
    void setStreamIRC(const QString& value);

    QString getStreamAIM() const;
    void setStreamAIM(const QString& value);

    QString getStreamICQ() const;
    void setStreamICQ(const QString& value);

    bool getEnableMetadata() const;
    void setEnableMetadata(bool value);

    QString getMetadataCharset() const;
    void setMetadataCharset(const QString& value);

    QString getCustomArtist() const;
    void setCustomArtist(const QString& value);

    QString getCustomTitle() const;
    void setCustomTitle(const QString& value);

    QString getMetadataFormat() const;
    void setMetadataFormat(const QString& value);

    bool getOggDynamicUpdate() const;
    void setOggDynamicUpdate(bool value);

  signals:
    void profileNameChanged(const QString& oldName, const QString& newName);
    void statusChanged(bool newStatus);
    void connectionStatusChanged(int newConnectionStatus);

  public slots:
    void relayStatus(bool newStatus);
    void relayConnectionStatus(int newConnectionStatus);

  private:
    void adoptDefaultValues();
    bool loadValues(const QString& filename);

    bool setSecurePassword(const QString& login, const QString& password);
    QString getSecurePassword(const QString& login);

    void errorDialog(const QString& text, const QString& detailedError);

    bool m_secureCredentials;

    QString m_filename;

    QString m_profileName;
    bool m_enabled;

    QString m_host;
    int m_port;
    QString m_serverType;
    QString m_login;
    QString m_password;

    bool m_enableReconnect;
    double m_reconnectPeriod;
    bool m_limitReconnects;
    int m_maximumRetries;
    bool m_noDelayFirstReconnect;
    double m_reconnectFirstDelay;

    QString m_mountpoint;
    QString m_streamName;
    QString m_streamDesc;
    QString m_streamGenre;
    bool m_streamPublic;
    QString m_streamWebsite;
    QString m_streamIRC;
    QString m_streamAIM;
    QString m_streamICQ;

    QString m_format;
    int m_bitrate;
    int m_channels;

    bool m_enableMetadata;
    QString m_metadataCharset;
    QString m_customArtist;
    QString m_customTitle;
    QString m_metadataFormat;
    bool m_oggDynamicUpdate;

    QAtomicInt m_connectionStatus;
};