You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
6.0 KiB
168 lines
6.0 KiB
/***************************************************************************
|
|
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 (KConfig *) const;
|
|
virtual void restoreState (KConfig *);
|
|
|
|
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
|