radiostation.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "radiostation.h"
00022
00023 #include <KStandardDirs>
00024 #include <KConfig>
00025 #include <KTemporaryFile>
00026
00027 #define AND &&
00028 #define OR ||
00029 #define NOT !
00030 #define EQUAL ==
00031
00032 radioStation::radioStation(const QPointer<QObject> parent,
00033 const QPointer<QWidget> mainWidget,
00034 const QString &configFileName) : ripping(parent)
00035 {
00036 m_mainWidget = mainWidget;
00037 helper_setupConfigSystem(configFileName);
00038 }
00039
00040 radioStation::radioStation(const QPointer<QObject> parent,
00041 const QPointer<QWidget> mainWidget,
00042 const QString &configFileName,
00043 const qlonglong &index) : ripping(parent)
00044 {
00045 setIndex(index);
00046 m_mainWidget = mainWidget;
00047 helper_setupConfigSystem(configFileName);
00048 }
00049
00050 radioStation::~radioStation()
00051 {
00052 delete config_skeleton;
00053
00054
00055
00056
00057
00058
00059
00060
00061 delete settingsDialog;
00062
00063
00064
00065 }
00066
00067 inline void radioStation::helper_setupConfigSystem(const QString & configFileName)
00068 {
00069
00070 QFile file;
00071
00072
00073
00074
00075 file.setFileName(configFileName);
00076
00077
00078
00079
00080 if (file.open(QIODevice::ReadWrite)) {
00081
00082 file.close();
00083 internal_configFileName = configFileName;
00084 } else {
00085 KTemporaryFile newConfigFile;
00086 newConfigFile.setPrefix(KStandardDirs::locateLocal("appdata", "stream_"));
00087
00088 newConfigFile.setSuffix("_rc");
00089 if (!newConfigFile.open()) {
00090
00091 }
00092 newConfigFile.setAutoRemove(false);
00093 internal_configFileName = newConfigFile.fileName();
00094 newConfigFile.close();
00095 };
00096
00097
00098 shared_config = KSharedConfig::openConfig(internal_configFileName, KConfig::SimpleConfig);
00099
00100
00101 config_skeleton = new settings_stream(shared_config);
00102
00103
00104
00105
00106 }
00107
00108 QString radioStation::configFileName() const
00109 {
00110 return internal_configFileName;
00111 }
00112
00113 PropertyValue radioStation::streamName() const
00114 {
00115 return formatedStreamName(config_skeleton->info_streamName());
00116 }
00117
00118 void radioStation::setStreamName(const QString streamName)
00119 {
00120 if (config_skeleton->info_streamName() != streamName) {
00121 config_skeleton->setInfo_streamName(streamName);
00122 config_skeleton->writeConfig();
00123 ripping::setStreamName(streamName);
00124 };
00125 }
00126
00127 PropertyValue radioStation::serverName() const
00128 {
00129 return formatedServerName(config_skeleton->info_serverName());
00130 }
00131
00132 void radioStation::setServerName(const QString serverName)
00133 {
00134 if (config_skeleton->info_serverName() != serverName) {
00135 config_skeleton->setInfo_serverName(serverName);
00136 config_skeleton->writeConfig();
00137 ripping::setServerName(serverName);
00138 };
00139 }
00140
00141 PropertyValue radioStation::bitrate() const
00142 {
00143 return formatedBitrate(config_skeleton->info_bitrate());
00144 }
00145
00146 void radioStation::setBitrate(qint64 bitrate)
00147 {
00148
00149 if (config_skeleton->info_bitrate() != bitrate) {
00150 config_skeleton->setInfo_bitrate(bitrate);
00151 config_skeleton->writeConfig();
00152 ripping::setBitrate(bitrate);
00153 };
00154 }
00155
00156 PropertyValue radioStation::metaInterval() const
00157 {
00158 return formatedMetaInterval(config_skeleton->info_metaInterval());
00159 }
00160
00161 void radioStation::setMetaInterval(qint64 metaInterval)
00162 {
00163
00164 if (config_skeleton->info_metaInterval() != metaInterval) {
00165 config_skeleton->setInfo_metaInterval(metaInterval);
00166 config_skeleton->writeConfig();
00167 ripping::setMetaInterval(metaInterval);
00168 };
00169 }
00170
00171 QString radioStation::serverUri() const
00172 {
00173 return config_skeleton->serverUri();
00174 }
00175
00176 QStringList radioStation::parameterList() const
00177 {
00178
00179 QStringList parameters;
00180
00181
00182
00183
00184 parameters += ripping::parameterList();
00185
00186 parameters.append(QString("-u"));
00187 parameters.append(config_skeleton->advanced_userAgentString());
00188
00189
00190 parameters.append(QString("--xs_offset=%1").
00191 arg(config_skeleton->offset()));
00192
00193
00194
00195
00196 parameters.append(QString("--xs_search_window=%1:%2").
00197 arg(config_skeleton->searchWindow() / 2).
00198 arg((config_skeleton->searchWindow() / 2) +
00199 (config_skeleton->searchWindow() % 2)));
00200
00201 parameters.append(QString("--xs_silence_length=%1").
00202 arg(config_skeleton->silenceWindow()));
00203
00204 if (config_skeleton->writeSingleFile()) {
00205 parameters.append(QString("-a"));
00206 };
00207
00208 if (config_skeleton->writeSplittedFiles()) {
00209
00210 parameters.append(QString("--xs_padding=%1:%2").
00211 arg(config_skeleton->splittedFilesPostpad()).
00212 arg(config_skeleton->splittedFilesPrepad()));
00213 } else {
00214 parameters.append(QString("-A"));
00215 };
00216
00217 parameters.append(QString("-k"));
00218 parameters.append(QString::number(config_skeleton->skipFirstXTracks()));
00219
00220 if (config_skeleton->advanced_useTimeout()) {
00221 parameters.append(QString("-m"));
00222 parameters.append(QString::number(config_skeleton->advanced_timeoutAfterXSeconds()));
00223 }
00224
00225 if (config_skeleton->truncateDuplicatesInIncomplete()) {
00226 parameters.append(QString("-T"));
00227 };
00228
00229 return parameters;
00230 }
00231
00232 int radioStation::helper_displaySettingsDialog(bool returnImmediately)
00233 {
00234
00235 int exitCode;
00236
00237
00238
00239
00240
00241
00242
00243 if (settingsDialog.isNull()) {
00244 settingsDialog = new settings_stream_dialog(m_mainWidget,
00245 internal_configFileName,
00246 config_skeleton);
00247 connect(settingsDialog,
00248 SIGNAL(finished()),
00249 settingsDialog,
00250 SLOT(deleteLater()));
00251 };
00252 if (returnImmediately) {
00253 settingsDialog->show();
00254 exitCode = KDialog::Accepted;
00255 } else {
00256 exitCode = settingsDialog->exec();
00257 };
00258 return exitCode;
00259 }
00260
00261 void radioStation::showSettingsDialog()
00262 {
00263 helper_displaySettingsDialog(true);
00264 }
00265
00266 int radioStation::execSettingsDialog()
00267 {
00268 return helper_displaySettingsDialog(false);
00269 }