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.
208 lines
6.7 KiB
208 lines
6.7 KiB
15 years ago
|
/***************************************************************************
|
||
|
radioview.h - description
|
||
|
-------------------
|
||
|
begin : Mit Mai 28 2003
|
||
|
copyright : (C) 2003 by Martin Witte
|
||
|
email : 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_RADIOVIEW_H
|
||
|
#define KRADIO_RADIOVIEW_H
|
||
|
|
||
|
#ifdef HAVE_CONFIG_H
|
||
|
#include <config.h>
|
||
|
#endif
|
||
|
|
||
|
#include <qobjectlist.h>
|
||
|
|
||
|
#include "../../src/include/radio_interfaces.h"
|
||
|
#include "../../src/include/radiodevicepool_interfaces.h"
|
||
|
#include "../../src/include/soundstreamclient_interfaces.h"
|
||
|
#include "../../src/include/timecontrol_interfaces.h"
|
||
|
#include "../../src/include/widgetplugins.h"
|
||
|
#include "radioview_element.h"
|
||
|
|
||
|
class QWidgetStack;
|
||
|
class QToolButton;
|
||
|
class KComboBox;
|
||
|
class QTabWidget;
|
||
|
class KPopupMenu;
|
||
|
|
||
|
|
||
|
|
||
|
class RadioView : public QWidget,
|
||
|
public WidgetPluginBase,
|
||
|
public IRadioClient,
|
||
|
public IRadioDevicePoolClient,
|
||
|
public ISoundStreamClient,
|
||
|
public ITimeControlClient
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
public:
|
||
|
|
||
|
RadioView(const QString &name);
|
||
|
virtual ~RadioView();
|
||
|
|
||
|
virtual QString pluginClassName() const { return "RadioView"; }
|
||
|
|
||
|
const QString &name() const { return PluginBase::name(); }
|
||
|
QString &name() { return PluginBase::name(); }
|
||
|
|
||
|
// WidgetPluginBase
|
||
|
|
||
|
public:
|
||
|
virtual void saveState (KConfig *) const;
|
||
|
virtual void restoreState (KConfig *);
|
||
|
|
||
|
virtual bool connectI(Interface *i);
|
||
|
virtual bool disconnectI(Interface *i);
|
||
|
|
||
|
virtual void noticeWidgetPluginShown(WidgetPluginBase *p, bool shown);
|
||
|
virtual void noticePluginsChanged(const PluginList &);
|
||
|
|
||
|
virtual ConfigPageInfo createConfigurationPage();
|
||
|
virtual AboutPageInfo createAboutPage();
|
||
|
|
||
|
public slots:
|
||
|
// connects destroy-msg with remove-function
|
||
|
bool addElement (RadioViewElement *);
|
||
|
bool removeElement (QObject *);
|
||
|
|
||
|
protected:
|
||
|
void selectTopWidgets();
|
||
|
|
||
|
|
||
|
// IRadioClient
|
||
|
|
||
|
RECEIVERS:
|
||
|
bool noticePowerChanged(bool on);
|
||
|
bool noticeStationChanged (const RadioStation &, int idx);
|
||
|
bool noticeStationsChanged(const StationList &sl);
|
||
|
bool noticePresetFileChanged(const QString &/*f*/) { return false; }
|
||
|
|
||
|
bool noticeCurrentSoundStreamIDChanged(SoundStreamID id);
|
||
|
|
||
|
// IRadioDevicePoolClient
|
||
|
|
||
|
RECEIVERS:
|
||
|
bool noticeActiveDeviceChanged(IRadioDevice *rd);
|
||
|
bool noticeDevicesChanged(const QPtrList<IRadioDevice> &) { return false; }
|
||
|
bool noticeDeviceDescriptionChanged(const QString &) { return false; }
|
||
|
|
||
|
// ISoundStreamClient
|
||
|
|
||
|
RECEIVERS:
|
||
|
void noticeConnectedI (ISoundStreamServer *s, bool pointer_valid);
|
||
|
|
||
|
bool startRecordingWithFormat(SoundStreamID /*id*/,
|
||
|
const SoundFormat &/*proposed_format*/,
|
||
|
SoundFormat &/*real_format*/);
|
||
|
bool stopRecording(SoundStreamID /*id*/);
|
||
|
|
||
|
bool noticeSoundStreamChanged(SoundStreamID id);
|
||
|
|
||
|
// ITimeControlClient
|
||
|
|
||
|
RECEIVERS:
|
||
|
bool noticeAlarmsChanged(const AlarmVector &) { return false; }
|
||
|
bool noticeAlarm(const Alarm &) { return false; }
|
||
|
bool noticeNextAlarmChanged(const Alarm *) { return false; }
|
||
|
bool noticeCountdownStarted(const QDateTime &end);
|
||
|
bool noticeCountdownStopped();
|
||
|
bool noticeCountdownZero();
|
||
|
bool noticeCountdownSecondsChanged(int) { return false; }
|
||
|
|
||
|
protected slots:
|
||
|
|
||
|
void slotPower (bool on);
|
||
|
void slotPause();
|
||
|
void slotConfigure (bool show);
|
||
|
void slotRecord ();
|
||
|
void slotSnooze (bool start);
|
||
|
void slotSnooze (int time);
|
||
|
void slotRecordingMenu(int i);
|
||
|
void slotBtnPluginsClicked();
|
||
|
void slotComboStationSelected(int);
|
||
|
|
||
|
void slotConfigPageDeleted(QObject*);
|
||
|
void slotElementConfigPageDeleted(QObject*);
|
||
|
|
||
|
public slots:
|
||
|
|
||
|
void toggleShown() { WidgetPluginBase::pToggleShown(); }
|
||
|
void showOnOrgDesktop();
|
||
|
void show();
|
||
|
void hide();
|
||
|
|
||
|
protected:
|
||
|
virtual void showEvent(QShowEvent *);
|
||
|
virtual void hideEvent(QHideEvent *);
|
||
|
|
||
|
virtual void autoSetCaption();
|
||
|
|
||
|
const QWidget *getWidget() const { return this; }
|
||
|
QWidget *getWidget() { return this; }
|
||
|
|
||
|
void addConfigurationTabFor(RadioViewElement *, QTabWidget *);
|
||
|
void addCommonConfigurationTab(QTabWidget *);
|
||
|
|
||
|
protected:
|
||
|
bool enableToolbarFlag;
|
||
|
|
||
|
QToolButton *btnPower;
|
||
|
QToolButton *btnConfigure;
|
||
|
QToolButton *btnQuit;
|
||
|
QToolButton *btnRecording;
|
||
|
QToolButton *btnSnooze;
|
||
|
QToolButton *btnPlugins;
|
||
|
KComboBox *comboStations;
|
||
|
|
||
|
struct ElementCfg
|
||
|
{
|
||
|
RadioViewElement *element;
|
||
|
QObject *cfg;
|
||
|
ElementCfg() : element(NULL), cfg(NULL) {}
|
||
|
ElementCfg(RadioViewElement *e, QObject *w) : element(e), cfg(w) {}
|
||
|
ElementCfg(RadioViewElement *e) : element(e), cfg(NULL) {}
|
||
|
ElementCfg(QObject *w) : element(NULL), cfg(w) {}
|
||
|
bool operator == (const ElementCfg &x) const;
|
||
|
};
|
||
|
|
||
|
typedef QPtrList<RadioViewElement> ElementList;
|
||
|
typedef QPtrListIterator<RadioViewElement> ElementListIterator;
|
||
|
typedef QValueList<ElementCfg> ElementCfgList;
|
||
|
typedef QValueListIterator<ElementCfg> ElementCfgListIterator;
|
||
|
|
||
|
ElementList elements;
|
||
|
ElementCfgList elementConfigPages;
|
||
|
QObjectList configPages;
|
||
|
QWidgetStack * widgetStacks[clsClassMAX];
|
||
|
float maxUsability[clsClassMAX];
|
||
|
|
||
|
IRadioDevice *currentDevice;
|
||
|
|
||
|
KPopupMenu *m_RecordingMenu;
|
||
|
KPopupMenu *m_pauseMenu;
|
||
|
KPopupMenu *m_SnoozeMenu;
|
||
|
int m_NextRecordingMenuID;
|
||
|
QMap<int, SoundStreamID> m_MenuID2StreamID;
|
||
|
QMap<SoundStreamID, int> m_StreamID2MenuID;
|
||
|
|
||
|
KPopupMenu *m_PluginMenu;
|
||
|
QMap<WidgetPluginBase *, int> m_Plugins2MenuID;
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#endif
|