diff options
Diffstat (limited to 'tderadio3/plugins/radio/radio.h')
-rw-r--r-- | tderadio3/plugins/radio/radio.h | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/tderadio3/plugins/radio/radio.h b/tderadio3/plugins/radio/radio.h new file mode 100644 index 0000000..66798fb --- /dev/null +++ b/tderadio3/plugins/radio/radio.h @@ -0,0 +1,167 @@ +/*************************************************************************** + radio.h - description + ------------------- + begin : Sat March 29 2003 + copyright : (C) 2003 by Klas Kalass, Ernst Martin Witte + email : klas@kde.org, witte@kawo1.rwth-aachen.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. * + * * + ***************************************************************************/ + +#ifndef KRADIO_RADIO_H +#define KRADIO_RADIO_H + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + + +#include "../../src/include/radio_interfaces.h" +#include "../../src/include/radiodevicepool_interfaces.h" +#include "../../src/include/radiodevice_interfaces.h" +#include "../../src/include/timecontrol_interfaces.h" +#include "../../src/include/soundstreamclient_interfaces.h" +#include "../../src/include/stationlist.h" +#include "../../src/include/plugins.h" + +/** + * The main Radio class, which is used as the interface of the radio functionality + * to the GUI parts of the application + * @author Klas Kalass, Ernst Martin Witte + */ + +///////////////////////////////////////////////////////////////////////////// + +/* A class, that is able to manage more than one radio device, one of those + is active at a time. This class behaves represents the active device, + the active devices can be changed either by selecting a station or by + explicitly changing the devices. + + At any time a valid active device exists as long as any device is connected. + +*/ + +class Radio : public PluginBase, + public IRadio, + public IRadioDevicePool, + public IRadioDeviceClient, + public ITimeControlClient, + public ISoundStreamClient +{ +public: + Radio(const TQString &name); + ~Radio(); + + + // PluginBase + +public: + virtual void saveState (TDEConfig *) const; + virtual void restoreState (TDEConfig *); + + virtual TQString pluginClassName() const { return "Radio"; } + + virtual const TQString &name() const { return PluginBase::name(); } + virtual TQString &name() { return PluginBase::name(); } + + virtual ConfigPageInfo createConfigurationPage(); + virtual AboutPageInfo createAboutPage(); + + virtual void aboutToQuit(); + + // IRadio methods + +RECEIVERS: + bool powerOn() { return sendPowerOn() > 0; } + bool powerOff() { return sendPowerOff() > 0; } + bool activateStation(const RadioStation &rs); + bool activateStation(int index); + bool setStations(const StationList &sl); + bool setPresetFile(const TQString &presetFile); + +ANSWERS: + bool isPowerOn() const { return queryIsPowerOn(); } + bool isPowerOff() const { return queryIsPowerOff(); } + const RadioStation & getCurrentStation() const { return queryCurrentStation(); } + int getStationIdx(const RadioStation &) const; + int getCurrentStationIdx() const; + const StationList & getStations() const { return m_stationList; } + const TQString & getPresetFile() const { return m_presetFile; } + + SoundStreamID getCurrentSoundStreamID() const; + + +public: + bool connectI (Interface *i); + bool disconnectI (Interface *i); + + void noticeConnectedI (IRadioDeviceClient::cmplInterface *i, bool pointer_valid); + void noticeDisconnectI(IRadioDeviceClient::cmplInterface *i, bool pointer_valid); + + // IRadioDevicePool methods + +RECEIVERS: + bool setActiveDevice(IRadioDevice *rd, bool keepPower = true); + +ANSWERS: + IRadioDevice * getActiveDevice() const; + const TQPtrList<IRadioDevice> & getDevices() const; + const TQString & getDeviceDescription() const; + + + + // IRadioDeviceClient methods, even sending methods overwritten + // to provide "1-of-N" functionality + +SENDERS: + IF_SENDER ( sendPowerOn() ) + IF_SENDER ( sendPowerOff() ) + IF_SENDER ( sendActivateStation (const RadioStation &rs) ) + +QUERIES: + IF_QUERY ( bool queryIsPowerOn() ) + IF_QUERY ( bool queryIsPowerOff() ) + IF_QUERY ( const RadioStation & queryCurrentStation() ) + IF_QUERY ( const TQString & queryDescription() ) + IF_QUERY ( SoundStreamID queryCurrentSoundStreamID() ) + +RECEIVERS: + virtual bool noticePowerChanged (bool on, const IRadioDevice *sender = NULL); + virtual bool noticeStationChanged (const RadioStation &rs, const IRadioDevice *sender = NULL); + virtual bool noticeDescriptionChanged (const TQString &, const IRadioDevice *sender = NULL); + + virtual bool noticeCurrentSoundStreamIDChanged(SoundStreamID id, const IRadioDevice *sender = NULL); + + // ITimeControlClient + +RECEIVERS: + bool noticeAlarmsChanged(const AlarmVector &) { return false; } // ignore + bool noticeAlarm(const Alarm &); + bool noticeNextAlarmChanged(const Alarm *) { return false; } // ignore + bool noticeCountdownStarted(const TQDateTime &/*end*/){ return false; } // ignore + bool noticeCountdownStopped() { return false; } // ignore + bool noticeCountdownZero(); + bool noticeCountdownSecondsChanged(int /*n*/) { return false; } // ignore + + // ISoundStreamClient + +RECEIVERS: + + // ... + +protected: + + TQString m_presetFile; + StationList m_stationList; + IRadioDevice *m_activeDevice; +}; + + +#endif |