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.
219 lines
6.4 KiB
219 lines
6.4 KiB
14 years ago
|
/* This file is part of the KMPlayer application
|
||
|
Copyright (C) 2003 Koos Vriezen <koos.vriezen@xs4all.nl>
|
||
|
|
||
|
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.
|
||
|
|
||
|
This program is distributed in the hope that it will be useful,
|
||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
General Public License for more details.
|
||
|
|
||
|
You should have received a copy of the GNU General Public License
|
||
|
along with this program; see the file COPYING. If not, write to
|
||
|
the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor,
|
||
|
Boston, MA 02110-1301, USA.
|
||
|
*/
|
||
|
|
||
|
#ifndef _KMPLAYER_TV_SOURCE_H_
|
||
|
#define _KMPLAYER_TV_SOURCE_H_
|
||
|
|
||
|
#include <qguardedptr.h>
|
||
|
#include <qstring.h>
|
||
|
#include <qframe.h>
|
||
|
|
||
|
#include "kmplayerappsource.h"
|
||
|
#include "kmplayerconfig.h"
|
||
|
#include "kmplayer.h"
|
||
|
|
||
|
const short id_node_tv_document = 40;
|
||
|
const short id_node_tv_device = 41;
|
||
|
const short id_node_tv_input = 42;
|
||
|
const short id_node_tv_channel = 43;
|
||
|
|
||
|
class KMPlayerPrefSourcePageTV; // source, TV
|
||
|
class TVDeviceScannerSource;
|
||
|
class KMPlayerTVSource;
|
||
|
class KURLRequester;
|
||
|
class KHistoryCombo;
|
||
|
class KMPlayerApp;
|
||
|
class QTabWidget;
|
||
|
class QGroupBox;
|
||
|
class QLineEdit;
|
||
|
class QCheckBox;
|
||
|
class KComboBox;
|
||
|
class KConfig;
|
||
|
|
||
|
|
||
|
class KMPLAYER_NO_EXPORT TVDevicePage : public QFrame {
|
||
|
Q_OBJECT
|
||
|
public:
|
||
|
TVDevicePage (QWidget *parent, KMPlayer::NodePtr dev);
|
||
|
KDE_NO_CDTOR_EXPORT ~TVDevicePage () {}
|
||
|
|
||
|
QLineEdit * name;
|
||
|
KURLRequester * audiodevice;
|
||
|
QLineEdit * sizewidth;
|
||
|
QLineEdit * sizeheight;
|
||
|
QCheckBox * noplayback;
|
||
|
QTabWidget * inputsTab;
|
||
|
KMPlayer::NodePtrW device_doc;
|
||
|
signals:
|
||
|
void deleted (TVDevicePage *);
|
||
|
private slots:
|
||
|
void slotDelete ();
|
||
|
};
|
||
|
|
||
|
class KMPLAYER_NO_EXPORT KMPlayerPrefSourcePageTV : public QFrame {
|
||
|
Q_OBJECT
|
||
|
public:
|
||
|
KMPlayerPrefSourcePageTV (QWidget *parent, KMPlayerTVSource *);
|
||
|
KDE_NO_CDTOR_EXPORT ~KMPlayerPrefSourcePageTV () {}
|
||
|
QLineEdit * driver;
|
||
|
KURLRequester * device;
|
||
|
QPushButton * scan;
|
||
|
QTabWidget * notebook;
|
||
|
protected:
|
||
|
void showEvent (QShowEvent *);
|
||
|
KMPlayerTVSource * m_tvsource;
|
||
|
};
|
||
|
|
||
|
class KMPLAYER_NO_EXPORT TVNode : public KMPlayer::GenericMrl {
|
||
|
public:
|
||
|
TVNode (KMPlayer::NodePtr &d, const QString &s, const char * t, short id, const QString &n=QString ());
|
||
|
virtual void setNodeName (const QString &);
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* Element for channels
|
||
|
*/
|
||
|
class KMPLAYER_NO_EXPORT TVChannel : public TVNode {
|
||
|
public:
|
||
|
TVChannel (KMPlayer::NodePtr & d, const QString & n, double f);
|
||
|
TVChannel (KMPlayer::NodePtr & d);
|
||
|
KDE_NO_CDTOR_EXPORT ~TVChannel () {}
|
||
|
void closed ();
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* Element for inputs
|
||
|
*/
|
||
|
class KMPLAYER_NO_EXPORT TVInput : public TVNode {
|
||
|
public:
|
||
|
TVInput (KMPlayer::NodePtr & d, const QString & n, int id);
|
||
|
TVInput (KMPlayer::NodePtr & d);
|
||
|
KDE_NO_CDTOR_EXPORT ~TVInput () {}
|
||
|
KMPlayer::NodePtr childFromTag (const QString &);
|
||
|
void setNodeName (const QString &);
|
||
|
void closed ();
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* Element for TV devices
|
||
|
*/
|
||
|
class KMPLAYER_NO_EXPORT TVDevice : public TVNode {
|
||
|
public:
|
||
|
TVDevice (KMPlayer::NodePtr & d, const QString & s);
|
||
|
TVDevice (KMPlayer::NodePtr & d);
|
||
|
~TVDevice ();
|
||
|
KMPlayer::NodePtr childFromTag (const QString &);
|
||
|
void closed ();
|
||
|
void childDone (KMPlayer::NodePtr child);
|
||
|
void setNodeName (const QString &);
|
||
|
bool expose () const { return false; }
|
||
|
void updateNodeName ();
|
||
|
void updateDevicePage ();
|
||
|
bool zombie;
|
||
|
QGuardedPtr <TVDevicePage> device_page;
|
||
|
};
|
||
|
|
||
|
class KMPLAYER_NO_EXPORT TVDocument : public FileDocument {
|
||
|
KMPlayerTVSource * m_source;
|
||
|
public:
|
||
|
TVDocument (KMPlayerTVSource *);
|
||
|
KMPlayer::NodePtr childFromTag (const QString &);
|
||
|
void defer ();
|
||
|
KDE_NO_EXPORT const char * nodeName () const { return "tvdevices"; }
|
||
|
void childDone (KMPlayer::NodePtr child);
|
||
|
};
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Source form scanning TV devices
|
||
|
*/
|
||
|
class KMPLAYER_NO_EXPORT TVDeviceScannerSource : public KMPlayer::Source {
|
||
|
Q_OBJECT
|
||
|
public:
|
||
|
TVDeviceScannerSource (KMPlayerTVSource * src);
|
||
|
KDE_NO_CDTOR_EXPORT ~TVDeviceScannerSource () {};
|
||
|
virtual void init ();
|
||
|
virtual bool processOutput (const QString & line);
|
||
|
virtual QString filterOptions ();
|
||
|
virtual bool hasLength ();
|
||
|
virtual bool isSeekable ();
|
||
|
virtual bool scan (const QString & device, const QString & driver);
|
||
|
public slots:
|
||
|
virtual void activate ();
|
||
|
virtual void deactivate ();
|
||
|
virtual void play ();
|
||
|
virtual void stateChange (KMPlayer::Process *, KMPlayer::Process::State os, KMPlayer::Process::State ns);
|
||
|
signals:
|
||
|
void scanFinished (TVDevice * tvdevice);
|
||
|
private:
|
||
|
KMPlayerTVSource * m_tvsource;
|
||
|
TVDevice * m_tvdevice;
|
||
|
KMPlayer::Source * m_old_source;
|
||
|
QString m_driver;
|
||
|
QRegExp m_nameRegExp;
|
||
|
QRegExp m_sizesRegExp;
|
||
|
QRegExp m_inputRegExp;
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* Source form TV devices, also implementing preference page for it
|
||
|
*/
|
||
|
class KMPLAYER_NO_EXPORT KMPlayerTVSource : public KMPlayerMenuSource, public KMPlayer::PreferencesPage {
|
||
|
Q_OBJECT
|
||
|
public:
|
||
|
KMPlayerTVSource (KMPlayerApp * app, QPopupMenu * m);
|
||
|
virtual ~KMPlayerTVSource ();
|
||
|
virtual QString filterOptions ();
|
||
|
virtual bool hasLength ();
|
||
|
virtual bool isSeekable ();
|
||
|
virtual KMPlayer::NodePtr root ();
|
||
|
void buildMenu ();
|
||
|
virtual QString prettyName ();
|
||
|
virtual void write (KConfig *);
|
||
|
virtual void read (KConfig *);
|
||
|
virtual void sync (bool);
|
||
|
virtual void prefLocation (QString & item, QString & icon, QString & tab);
|
||
|
virtual QFrame * prefPage (QWidget * parent);
|
||
|
void readXML ();
|
||
|
public slots:
|
||
|
virtual void activate ();
|
||
|
virtual void deactivate ();
|
||
|
virtual void playCurrent ();
|
||
|
virtual void jump (KMPlayer::NodePtr e);
|
||
|
void menuAboutToShow ();
|
||
|
void menuClicked (int id);
|
||
|
private slots:
|
||
|
void slotScan ();
|
||
|
void slotScanFinished (TVDevice * device);
|
||
|
void slotDeviceDeleted (TVDevicePage *);
|
||
|
private:
|
||
|
void addTVDevicePage (TVDevice * dev, bool show=false);
|
||
|
void buildArguments ();
|
||
|
KMPlayer::NodePtrW m_cur_tvdevice;
|
||
|
KMPlayer::NodePtrW m_cur_tvinput;
|
||
|
QPopupMenu * m_channelmenu;
|
||
|
QString tvdriver;
|
||
|
KMPlayerPrefSourcePageTV * m_configpage;
|
||
|
TVDeviceScannerSource * scanner;
|
||
|
int tree_id;
|
||
|
bool config_read; // whether tv.xml is read
|
||
|
};
|
||
|
|
||
|
#endif //_KMPLAYER_TV_SOURCE_H_
|