summaryrefslogtreecommitdiffstats
path: root/src/radiostation.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2022-05-30 19:40:31 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2022-05-31 01:17:58 +0900
commitd95a4fea540b371fa86493d069fdbd54f33c5b40 (patch)
tree079b038ab559439eb7ded40a07bd79fd92926b3b /src/radiostation.cpp
parente54890e0480e5adee69f5220a7c6dd072bbd75ea (diff)
downloadtderadio-d95a4fea540b371fa86493d069fdbd54f33c5b40.tar.gz
tderadio-d95a4fea540b371fa86493d069fdbd54f33c5b40.zip
Standardize folder structure.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'src/radiostation.cpp')
-rw-r--r--src/radiostation.cpp216
1 files changed, 216 insertions, 0 deletions
diff --git a/src/radiostation.cpp b/src/radiostation.cpp
new file mode 100644
index 0000000..4870f3d
--- /dev/null
+++ b/src/radiostation.cpp
@@ -0,0 +1,216 @@
+/***************************************************************************
+ radiostation.cpp - description
+ -------------------
+ begin : Sat Feb 2 2002
+ copyright : (C) 2002 by Martin Witte / Frank Schwanz
+ email : witte@kawo1.rwth-aachen.de / schwanz@fh-brandenburg.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "include/radiostation.h"
+#include "include/radiostation-config.h"
+
+#include <unistd.h>
+#include <time.h>
+#include <fcntl.h>
+
+extern const char *StationNameElement;
+extern const char *StationShortNameElement;
+extern const char *StationIconStringElement;
+extern const char *StationVolumePresetElement;
+extern const char *StationIDElement;
+
+const char *StationNameElement = "name";
+const char *StationShortNameElement = "shortname";
+const char *StationIconStringElement = "icon";
+const char *StationVolumePresetElement = "volumepreset";
+const char *StationIDElement = "stationID";
+
+const char *dev_urandom_radiostations = "/dev/urandom";
+
+/////////////////////////////////////////////////////////////////////////////
+
+TQDict<RadioStation> *RadioStation::stationClassRegistry = 0;
+
+/////////////////////////////////////////////////////////////////////////////
+
+RegisterStationClass registerStationClass;
+const UndefinedRadioStation undefinedRadioStation (registerStationClass);
+
+/////////////////////////////////////////////////////////////////////////////
+
+
+RadioStation::RadioStation(RegisterStationClass, const TQString &classname)
+ : m_stationID(TQString()), // mark this station as a prototype station
+ // so that we can create later a real stationID
+ m_name(TQString()),
+ m_shortName(TQString()),
+ m_initialVolume(-1),
+ m_iconName(TQString())
+{
+ if (! stationClassRegistry)
+ stationClassRegistry = new TQDict<RadioStation>;
+ stationClassRegistry->insert(classname, this);
+}
+
+RadioStation::RadioStation()
+ : m_name(TQString()),
+ m_shortName(TQString()),
+ m_initialVolume(-1),
+ m_iconName(TQString())
+{
+ generateNewStationID();
+}
+
+RadioStation::RadioStation(const TQString &name, const TQString &shortName)
+ : m_name(name),
+ m_shortName(shortName),
+ m_initialVolume(-1),
+ m_iconName(TQString())
+{
+ generateNewStationID();
+}
+
+
+RadioStation::RadioStation(const RadioStation &s)
+ : m_stationID(s.m_stationID),
+ m_name(s.m_name),
+ m_shortName(s.m_shortName),
+ m_initialVolume(s.m_initialVolume),
+ m_iconName(s.m_iconName)
+{
+ // create a real stationID if "s" is a prototype
+ if (m_stationID.isNull())
+ generateNewStationID();
+}
+
+
+RadioStation::~RadioStation()
+{
+}
+
+
+void RadioStation::copyDescriptionFrom(const RadioStation &rs)
+{
+ m_name = rs.m_name;
+ m_shortName = rs.m_shortName;
+ m_iconName = rs.m_iconName;
+ m_stationID = rs.m_stationID;
+}
+
+
+void RadioStation::generateNewStationID()
+{
+ const int buffersize = 32;
+ unsigned char buffer[buffersize];
+
+ TQString stime, srandom = TQString();
+ stime.setNum(time(NULL));
+
+ int fd = open (dev_urandom_radiostations, O_RDONLY);
+ read(fd, buffer, buffersize);
+ close(fd);
+ for (int i = 0; i < buffersize; ++i)
+ srandom += TQString().sprintf("%02X", (unsigned int)buffer[i]);
+
+ m_stationID = stime + srandom;
+}
+
+
+RadioStation const *RadioStation::getStationClass(const TQString &classname)
+{
+ if (stationClassRegistry)
+ return stationClassRegistry->find(classname);
+ else
+ return NULL;
+}
+
+
+bool RadioStation::setProperty(const TQString &pn, const TQString &val)
+{
+ bool retval = false;
+ if (pn == StationIDElement) {
+ m_stationID = val;
+ retval = true;
+ } else if (pn == StationNameElement) {
+ m_name = val;
+ retval = true;
+ } else if (pn == StationShortNameElement) {
+ m_shortName = val;
+ retval = true;
+ } else if (pn == StationIconStringElement) {
+ m_iconName = val;
+ retval = true;
+ } else if (pn == StationVolumePresetElement) {
+ float x = val.toFloat(&retval);
+ if (retval)
+ m_initialVolume = x;
+ }
+ return retval;
+}
+
+
+TQString RadioStation::getProperty(const TQString &pn) const
+{
+ if (pn == StationIDElement) {
+ return m_stationID;
+ } else if (pn == StationNameElement) {
+ return m_name;
+ } else if (pn == StationShortNameElement) {
+ return m_shortName;
+ } else if (pn == StationIconStringElement) {
+ return m_iconName;
+ } else if (pn == StationVolumePresetElement) {
+ return TQString().setNum(m_initialVolume);
+ } else {
+ return TQString();
+ }
+}
+
+
+TQStringList RadioStation::getPropertyNames() const
+{
+ TQStringList l;
+ l.push_back(StationIDElement);
+ l.push_back(StationNameElement);
+ l.push_back(StationShortNameElement);
+ l.push_back(StationIconStringElement);
+ l.push_back(StationVolumePresetElement);
+ return l;
+}
+
+bool RadioStation::operator == (const RadioStation &x) const
+{
+ return m_stationID == x.m_stationID &&
+ m_name == x.m_name &&
+ m_shortName == x.m_shortName &&
+ m_initialVolume == x.m_initialVolume &&
+ m_iconName == x.m_iconName;
+}
+
+/////////////////////////////////////////////////////////////////////////
+
+int UndefinedRadioStation::compare(const RadioStation &_s) const
+{
+ UndefinedRadioStation const *s = dynamic_cast<UndefinedRadioStation const*>(&_s);
+
+ if (!s)
+ return -1;
+
+ return 0;
+
+}
+
+
+RadioStationConfig *UndefinedRadioStation::createEditor() const
+{
+ return new UndefinedRadioStationConfig(NULL);
+}