diff options
author | Timothy Pearson <[email protected]> | 2013-02-01 17:25:34 -0600 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2013-02-01 17:25:34 -0600 |
commit | 48906a623383ab5222541ae048e99dd039b62a9a (patch) | |
tree | 1c5f588e90899bb1301f79cf97b8f6ddc0b1c367 /tderadio3/src/frequencyradiostation.cpp | |
parent | a1e6ce502c334194d31a0b78b11b77e9532da64b (diff) | |
download | tderadio-48906a623383ab5222541ae048e99dd039b62a9a.tar.gz tderadio-48906a623383ab5222541ae048e99dd039b62a9a.zip |
Fix FTBFS
Diffstat (limited to 'tderadio3/src/frequencyradiostation.cpp')
-rw-r--r-- | tderadio3/src/frequencyradiostation.cpp | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/tderadio3/src/frequencyradiostation.cpp b/tderadio3/src/frequencyradiostation.cpp new file mode 100644 index 0000000..602caec --- /dev/null +++ b/tderadio3/src/frequencyradiostation.cpp @@ -0,0 +1,200 @@ +/*************************************************************************** + frequencyradiostation.cpp - description + ------------------- + begin : Sat March 29 2003 + copyright : (C) 2003 by Klas Kalass, Ernst Martin Witte + email : [email protected], [email protected] + ***************************************************************************/ + +/*************************************************************************** + * * + * 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/frequencyradiostation.h" +#include <typeinfo> +#include "include/radiostation-config.h" +#include <klocale.h> +#include <kglobal.h> + +///////////////////////////////////////////////////////////////////////////// + +const char *StationFrequencyElement = "frequency"; + +static FrequencyRadioStation emptyFrequencyRadioStation(registerStationClass); + +///////////////////////////////////////////////////////////////////////////// + +FrequencyRadioStation::FrequencyRadioStation (RegisterStationClass, const TQString &classname) + : RadioStation(registerStationClass, !classname.isNull() ? classname : getClassName()), + m_frequency(0) +{ +} + +FrequencyRadioStation::FrequencyRadioStation() + : RadioStation(), + m_frequency(0) +{ +} + +FrequencyRadioStation::FrequencyRadioStation(float frequency) + : RadioStation(), + m_frequency(frequency) +{ +} + +FrequencyRadioStation::FrequencyRadioStation(const TQString &name, + const TQString &shortName, + float frequency) + : RadioStation(name, shortName), + m_frequency(frequency) +{ +} + +FrequencyRadioStation::FrequencyRadioStation(FrequencyRadioStation const &s) + : RadioStation(s), + m_frequency(s.m_frequency) +{ +} + + +/** returns an exact copy of this station */ +RadioStation *FrequencyRadioStation::copy() const +{ + return new FrequencyRadioStation(*this); +} + +RadioStation *FrequencyRadioStation::copyNewID() const +{ + RadioStation *x = new FrequencyRadioStation(*this); + x->generateNewStationID(); + return x; +} + + + +FrequencyRadioStation::~FrequencyRadioStation() +{ +} + + +/* = 0 : "this" is same as "s", i.e. approximately same frequency + > 0 : this.frequency > s.frequency + < 0 : this.frequency < s.frequency + other class than FrequencyRadioStation: compare typeid(.).name() +*/ +int FrequencyRadioStation::compare(const RadioStation &_s) const +{ + FrequencyRadioStation const *s = dynamic_cast<FrequencyRadioStation const*>(&_s); + + if (!s) { + return (typeid(this).name() > typeid(&_s).name()) ? 1 : -1; + } + + // stations with no valid frequency are never identical + if (m_frequency == 0) + return -1; + if (s->m_frequency == 0) + return 1; + + float delta = (m_frequency < 10) ? STATION_FREQ_INTERVAL_AM : STATION_FREQ_INTERVAL_FM; + + if ( m_frequency + delta/4 > s->m_frequency + && m_frequency - delta/4 < s->m_frequency) + { + return 0; + } else { + return (m_frequency > s->m_frequency) ? 1 : -1; + } +} + + +TQString FrequencyRadioStation::longName() const +{ + TQString longN = name(); + if (!longN.isEmpty()) { + longN = i18n("%1, %2").arg(longN).arg(description()); + } else { + longN = description(); + } + + return longN; +} + + +TQString FrequencyRadioStation::description() const +{ + float cf = frequency(); + TQString f; + if (cf >= 10) + f = i18n("%1 MHz").arg(TDEGlobal::locale()->formatNumber(cf, 2)); + else + f = i18n("%1 kHz").arg(TDEGlobal::locale()->formatNumber(cf * 1000, 0)); + + return f; +} + + +bool FrequencyRadioStation::isValid() const +{ + return m_frequency > 0; +} + + + +bool FrequencyRadioStation::setProperty(const TQString &pn, const TQString &val) +{ + bool retval = false; + if (pn == StationFrequencyElement) { + float f = val.toFloat(&retval); + if (retval) + m_frequency = f; + } else { + retval = RadioStation::setProperty(pn, val); + } + return retval; +} + + +TQString FrequencyRadioStation::getProperty(const TQString &pn) const +{ + if (pn == StationFrequencyElement) { + return TQString().setNum(m_frequency); + } else { + return RadioStation::getProperty(pn); + } +} + + +TQStringList FrequencyRadioStation::getPropertyNames() const +{ + TQStringList l = RadioStation::getPropertyNames(); + l.push_back(StationFrequencyElement); + return l; +} + + +RadioStationConfig *FrequencyRadioStation::createEditor() const +{ + return new FrequencyRadioStationConfig(NULL); +} + +bool FrequencyRadioStation::operator == (const RadioStation &x) const +{ + if (!RadioStation::operator == (x)) + return false; + + FrequencyRadioStation const *fx = dynamic_cast<FrequencyRadioStation const*>(&x); + if (!fx) + return false; + + float delta = (m_frequency < 10) ? STATION_FREQ_INTERVAL_AM : STATION_FREQ_INTERVAL_FM; + + return m_frequency + delta/4 > fx->m_frequency + && m_frequency - delta/4 < fx->m_frequency; + +} |