/* This file is part of the KMPlayer application Copyright (C) 2003 Koos Vriezen 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 #include #include #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 TQTabWidget; class TQGroupBox; class TQLineEdit; class TQCheckBox; class KComboBox; class KConfig; class KMPLAYER_NO_EXPORT TVDevicePage : public TQFrame { Q_OBJECT TQ_OBJECT public: TVDevicePage (TQWidget *tqparent, KMPlayer::NodePtr dev); KDE_NO_CDTOR_EXPORT ~TVDevicePage () {} TQLineEdit * name; KURLRequester * audiodevice; TQLineEdit * sizewidth; TQLineEdit * sizeheight; TQCheckBox * noplayback; TQTabWidget * inputsTab; KMPlayer::NodePtrW device_doc; signals: void deleted (TVDevicePage *); private slots: void slotDelete (); }; class KMPLAYER_NO_EXPORT KMPlayerPrefSourcePageTV : public TQFrame { Q_OBJECT TQ_OBJECT public: KMPlayerPrefSourcePageTV (TQWidget *tqparent, KMPlayerTVSource *); KDE_NO_CDTOR_EXPORT ~KMPlayerPrefSourcePageTV () {} TQLineEdit * driver; KURLRequester * device; TQPushButton * scan; TQTabWidget * notebook; protected: void showEvent (TQShowEvent *); KMPlayerTVSource * m_tvsource; }; class KMPLAYER_NO_EXPORT TVNode : public KMPlayer::GenericMrl { public: TVNode (KMPlayer::NodePtr &d, const TQString &s, const char * t, short id, const TQString &n=TQString ()); virtual void setNodeName (const TQString &); }; /* * Element for channels */ class KMPLAYER_NO_EXPORT TVChannel : public TVNode { public: TVChannel (KMPlayer::NodePtr & d, const TQString & 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 TQString & n, int id); TVInput (KMPlayer::NodePtr & d); KDE_NO_CDTOR_EXPORT ~TVInput () {} KMPlayer::NodePtr childFromTag (const TQString &); void setNodeName (const TQString &); void closed (); }; /* * Element for TV devices */ class KMPLAYER_NO_EXPORT TVDevice : public TVNode { public: TVDevice (KMPlayer::NodePtr & d, const TQString & s); TVDevice (KMPlayer::NodePtr & d); ~TVDevice (); KMPlayer::NodePtr childFromTag (const TQString &); void closed (); void childDone (KMPlayer::NodePtr child); void setNodeName (const TQString &); bool expose () const { return false; } void updateNodeName (); void updateDevicePage (); bool zombie; TQGuardedPtr device_page; }; class KMPLAYER_NO_EXPORT TVDocument : public FileDocument { KMPlayerTVSource * m_source; public: TVDocument (KMPlayerTVSource *); KMPlayer::NodePtr childFromTag (const TQString &); 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 TQ_OBJECT public: TVDeviceScannerSource (KMPlayerTVSource * src); KDE_NO_CDTOR_EXPORT ~TVDeviceScannerSource () {}; virtual void init (); virtual bool processOutput (const TQString & line); virtual TQString filterOptions (); virtual bool hasLength (); virtual bool isSeekable (); virtual bool scan (const TQString & device, const TQString & 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; TQString m_driver; TQRegExp m_nameRegExp; TQRegExp m_sizesRegExp; TQRegExp m_inputRegExp; }; /* * Source form TV devices, also implementing preference page for it */ class KMPLAYER_NO_EXPORT KMPlayerTVSource : public KMPlayerMenuSource, public KMPlayer::PreferencesPage { Q_OBJECT TQ_OBJECT public: KMPlayerTVSource (KMPlayerApp * app, TQPopupMenu * m); virtual ~KMPlayerTVSource (); virtual TQString filterOptions (); virtual bool hasLength (); virtual bool isSeekable (); virtual KMPlayer::NodePtr root (); void buildMenu (); virtual TQString prettyName (); virtual void write (KConfig *); virtual void read (KConfig *); virtual void sync (bool); virtual void prefLocation (TQString & item, TQString & icon, TQString & tab); virtual TQFrame * prefPage (TQWidget * tqparent); 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; TQPopupMenu * m_channelmenu; TQString tvdriver; KMPlayerPrefSourcePageTV * m_configpage; TVDeviceScannerSource * scanner; int tree_id; bool config_read; // whether tv.xml is read }; #endif //_KMPLAYER_TV_SOURCE_H_