summaryrefslogtreecommitdiffstats
path: root/plugins/radio/radio.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/radio/radio.h')
-rw-r--r--plugins/radio/radio.h167
1 files changed, 167 insertions, 0 deletions
diff --git a/plugins/radio/radio.h b/plugins/radio/radio.h
new file mode 100644
index 0000000..66798fb
--- /dev/null
+++ b/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