diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2022-05-30 19:40:31 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2022-05-31 01:17:58 +0900 |
commit | d95a4fea540b371fa86493d069fdbd54f33c5b40 (patch) | |
tree | 079b038ab559439eb7ded40a07bd79fd92926b3b /src/radiostation.cpp | |
parent | e54890e0480e5adee69f5220a7c6dd072bbd75ea (diff) | |
download | tderadio-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.cpp | 216 |
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); +} |