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.
545 lines
17 KiB
545 lines
17 KiB
/***************************************************************************
|
|
kplayersource.h
|
|
---------------
|
|
begin : Thu Jan 12 2006
|
|
copyright : (C) 2006-2007 by kiriuja
|
|
email : http://kplayer.sourceforge.net/email.html
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* 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 3 of the License, or *
|
|
* (at your option) any later version. *
|
|
***************************************************************************/
|
|
|
|
#ifndef KPLAYERSOURCE_H
|
|
#define KPLAYERSOURCE_H
|
|
|
|
#include <kdirwatch.h>
|
|
#include <tqdir.h>
|
|
|
|
class KPlayerCollectionNode;
|
|
class KPlayerContainerNode;
|
|
class KPlayerRootNode;
|
|
class KPlayerDeviceProperties;
|
|
class KPlayerDevicesNode;
|
|
class KPlayerDeviceNode;
|
|
class KPlayerDiskNode;
|
|
class KPlayerTVNode;
|
|
class KPlayerDVBNode;
|
|
class KPlayerNode;
|
|
class KPlayerNodeList;
|
|
|
|
/**Source class, responsible for routing of subnodes into and out of the node.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerSource : public TQObject
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerSource constructor. Sets up a source. */
|
|
KPlayerSource (KPlayerContainerNode*);
|
|
/** The KPlayerSource destructor. Frees resources. */
|
|
virtual ~KPlayerSource();
|
|
|
|
/** Connects the source. */
|
|
virtual void connectOrigin (void);
|
|
|
|
/** Parent node. */
|
|
KPlayerContainerNode* parent (void) const
|
|
{ return m_parent; }
|
|
|
|
/** Returns whether there are child items or groups. */
|
|
bool has (bool groups);
|
|
/** Initializes the node retrieval process. */
|
|
void start (bool groups);
|
|
/** Retrieves the id of the next node. */
|
|
bool next (bool& group, TQString& id);
|
|
/** Verifies the given id. */
|
|
virtual bool verify (const TQString& id);
|
|
|
|
/** Saves the node data into the source. */
|
|
virtual void save (void);
|
|
|
|
/** Indicates whether leaves can be added. */
|
|
virtual bool canAddLeaves (void) const;
|
|
/** Indicates whether branches can be added. */
|
|
virtual bool canAddBranches (void) const;
|
|
/** Indicates whether nodes can be removed. */
|
|
virtual bool canRemove (void) const;
|
|
|
|
/** Adds the given nodes into the list of nodes, optionally linking to the origin. */
|
|
virtual KPlayerNode* add (const KPlayerNodeList& nodes, bool link, KPlayerNode* after = 0);
|
|
/** Removes the given nodes from the list of nodes. */
|
|
virtual void remove (const KPlayerNodeList& nodes);
|
|
|
|
public slots:
|
|
/** Adds the given nodes into the list of nodes. */
|
|
virtual void added (KPlayerContainerNode* parent, const KPlayerNodeList& nodes, KPlayerNode* after);
|
|
/** Removes the given nodes from the list of nodes. */
|
|
virtual void removed (KPlayerContainerNode* parent, const KPlayerNodeList& nodes);
|
|
|
|
protected:
|
|
/** Initializes the node retrieval process. */
|
|
virtual void enumStart (bool groups) = 0;
|
|
/** Retrieves the id of the next node. */
|
|
virtual bool enumNext (bool& group, TQString& id) = 0;
|
|
|
|
/** Connects the given node and all subnodes. */
|
|
void connectNodes (KPlayerContainerNode* node);
|
|
/** Searches for a node with the given ID in the given node and its subnodes. */
|
|
bool find (KPlayerContainerNode* node, const TQString& id);
|
|
|
|
/** Parent node. */
|
|
KPlayerContainerNode* m_parent;
|
|
/** Parent node iterator. */
|
|
TQPtrListIterator<KPlayerNode>* m_iterator;
|
|
/** Flag stored by start() for next(). */
|
|
bool m_groups;
|
|
|
|
signals:
|
|
/** Emitted when nodes have been added. */
|
|
void nodesAdded (const KPlayerNodeList&);
|
|
/** Emitted when nodes have been removed. */
|
|
void nodesRemoved (const KPlayerNodeList&);
|
|
};
|
|
|
|
/**List source class, handles subnodes of some top level nodes.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerListSource : public KPlayerSource
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerListSource constructor. Sets up a source. */
|
|
KPlayerListSource (KPlayerContainerNode*);
|
|
/** The KPlayerListSource destructor. Frees resources. */
|
|
virtual ~KPlayerListSource();
|
|
|
|
/** Saves the node data into the source. */
|
|
virtual void save (void);
|
|
|
|
/** Removes the given nodes from the list of nodes. */
|
|
virtual void remove (const KPlayerNodeList& nodes);
|
|
|
|
protected:
|
|
/** Initializes the node retrieval process. */
|
|
virtual void enumStart (bool groups);
|
|
/** Retrieves the id of the next node. */
|
|
virtual bool enumNext (bool& group, TQString& id);
|
|
|
|
/** Current iterator. */
|
|
TQStringList::ConstIterator m_iterator;
|
|
/** End iterator. */
|
|
TQStringList::ConstIterator m_end;
|
|
};
|
|
|
|
/**Fixed source class, handles subnodes of a fixed node.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerFixedSource : public KPlayerSource
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerFixedSource constructor. Sets up a source. */
|
|
KPlayerFixedSource (KPlayerContainerNode*);
|
|
/** The KPlayerFixedSource destructor. Frees resources. */
|
|
virtual ~KPlayerFixedSource();
|
|
|
|
/** Indicates whether leaves can be added. */
|
|
virtual bool canAddLeaves (void) const;
|
|
/** Indicates whether branches can be added. */
|
|
virtual bool canAddBranches (void) const;
|
|
/** Indicates whether nodes can be removed. */
|
|
virtual bool canRemove (void) const;
|
|
|
|
protected:
|
|
/** Retrieves the id of the next node. */
|
|
virtual bool enumNext (bool& group, TQString& id);
|
|
|
|
/** List of fixed IDs. */
|
|
TQStringList m_fixed_ids;
|
|
};
|
|
|
|
/**Root source class, handles subnodes of the root node.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerRootSource : public KPlayerFixedSource
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerRootSource constructor. Sets up a source. */
|
|
KPlayerRootSource (KPlayerContainerNode*);
|
|
/** The KPlayerRootSource destructor. Frees resources. */
|
|
virtual ~KPlayerRootSource();
|
|
|
|
/** Parent node. */
|
|
KPlayerRootNode* parent (void) const
|
|
{ return (KPlayerRootNode*) m_parent; }
|
|
|
|
protected:
|
|
/** Initializes the node retrieval process. */
|
|
virtual void enumStart (bool groups);
|
|
};
|
|
|
|
/**Devices source class, handles the devices node.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerDevicesSource : public KPlayerListSource
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerDevicesSource constructor. Sets up a source. */
|
|
KPlayerDevicesSource (KPlayerContainerNode*);
|
|
/** The KPlayerDevicesSource destructor. Frees resources. */
|
|
virtual ~KPlayerDevicesSource();
|
|
|
|
/** Parent node. */
|
|
KPlayerDevicesNode* parent (void) const
|
|
{ return (KPlayerDevicesNode*) m_parent; }
|
|
|
|
/** Indicates whether leaves can be added. */
|
|
virtual bool canAddLeaves (void) const;
|
|
|
|
protected:
|
|
/** Initializes the node retrieval process. */
|
|
virtual void enumStart (bool groups);
|
|
/** Retrieves the id of the next node. */
|
|
virtual bool enumNext (bool& group, TQString& id);
|
|
|
|
/** List of pending devices. */
|
|
TQStringList m_pending;
|
|
};
|
|
|
|
/**Device source class, handles device nodes.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerDeviceSource : public KPlayerSource
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerDeviceSource constructor. Sets up a source. */
|
|
KPlayerDeviceSource (KPlayerContainerNode*);
|
|
/** The KPlayerDeviceSource destructor. Frees resources. */
|
|
virtual ~KPlayerDeviceSource();
|
|
|
|
/** Indicates whether branches can be added. */
|
|
virtual bool canAddBranches (void) const;
|
|
/** Indicates whether leaves can be added. */
|
|
virtual bool canAddLeaves (void) const;
|
|
/** Indicates whether nodes can be removed. */
|
|
virtual bool canRemove (void) const;
|
|
};
|
|
|
|
/**Disk source class, handles disk device nodes.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerDiskSource : public KPlayerDeviceSource
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerDiskSource constructor. Sets up a source. */
|
|
KPlayerDiskSource (KPlayerContainerNode*);
|
|
/** The KPlayerDiskSource destructor. Frees resources. */
|
|
virtual ~KPlayerDiskSource();
|
|
|
|
/** Parent node. */
|
|
KPlayerDiskNode* parent (void) const
|
|
{ return (KPlayerDiskNode*) m_parent; }
|
|
|
|
protected:
|
|
/** Initializes the node retrieval process. */
|
|
virtual void enumStart (bool groups);
|
|
/** Retrieves the id of the next node. */
|
|
virtual bool enumNext (bool& group, TQString& id);
|
|
|
|
/** Number of tracks. */
|
|
int m_tracks;
|
|
/** Current track. */
|
|
int m_track;
|
|
};
|
|
|
|
/**Tuner source class, handles tuner device nodes.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerTunerSource : public KPlayerDeviceSource
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerTunerSource constructor. Sets up a source. */
|
|
KPlayerTunerSource (KPlayerContainerNode*);
|
|
/** The KPlayerTunerSource destructor. Frees resources. */
|
|
virtual ~KPlayerTunerSource();
|
|
|
|
protected:
|
|
/** Initializes the node retrieval process. */
|
|
virtual void enumStart (bool groups);
|
|
/** Retrieves the id of the next node. */
|
|
virtual bool enumNext (bool& group, TQString& id);
|
|
|
|
/** List of pending devices. */
|
|
TQStringList m_pending;
|
|
/** List source. */
|
|
KPlayerListSource m_list;
|
|
};
|
|
|
|
/**Store source class, handles subnodes in internal storage.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerStoreSource : public KPlayerListSource
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerStoreSource constructor. Sets up a source. */
|
|
KPlayerStoreSource (KPlayerContainerNode*);
|
|
/** The KPlayerStoreSource destructor. Frees resources. */
|
|
virtual ~KPlayerStoreSource();
|
|
|
|
/** Adds the given nodes into the list of nodes, optionally linking to the origin. */
|
|
virtual KPlayerNode* add (const KPlayerNodeList& nodes, bool link, KPlayerNode* after = 0);
|
|
|
|
protected:
|
|
/** Retrieves the id of the next node. */
|
|
virtual bool enumNext (bool& group, TQString& id);
|
|
};
|
|
|
|
/**Directory source class, handles subnodes in filesystem directory.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerDirectorySource : public KPlayerSource
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerDirectorySource constructor. Sets up a source. */
|
|
KPlayerDirectorySource (KPlayerContainerNode*);
|
|
/** The KPlayerDirectorySource destructor. Frees resources. */
|
|
virtual ~KPlayerDirectorySource();
|
|
|
|
/** Indicates whether leaves can be added. */
|
|
virtual bool canAddLeaves (void) const;
|
|
/** Indicates whether branches can be added. */
|
|
virtual bool canAddBranches (void) const;
|
|
/** Indicates whether nodes can be removed. */
|
|
virtual bool canRemove (void) const;
|
|
|
|
/** Verifies the given id. */
|
|
virtual bool verify (const TQString& id);
|
|
|
|
protected slots:
|
|
/** Receives dirty signal from directory watch. */
|
|
void dirty (const TQString& path);
|
|
|
|
protected:
|
|
/** Initializes the node retrieval process. */
|
|
virtual void enumStart (bool groups);
|
|
/** Retrieves the id of the next node. */
|
|
virtual bool enumNext (bool& group, TQString& id);
|
|
|
|
/** Directory. */
|
|
TQDir m_directory;
|
|
/** Entry info iterator. */
|
|
TQFileInfoListIterator* m_iterator;
|
|
/** Directory watch. */
|
|
KDirWatch m_watch;
|
|
};
|
|
|
|
/**Origin source class, handles subnodes of a linked node.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerOriginSource : public KPlayerSource
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerOriginSource constructor. Sets up a source. */
|
|
KPlayerOriginSource (KPlayerContainerNode* parent);
|
|
/** The KPlayerOriginSource destructor. Frees resources. */
|
|
virtual ~KPlayerOriginSource();
|
|
|
|
/** Connects the source. */
|
|
virtual void connectOrigin (void);
|
|
|
|
/** Adds the given nodes into the list of nodes, optionally linking to the origin. */
|
|
virtual KPlayerNode* add (const KPlayerNodeList& nodes, bool link, KPlayerNode* after = 0);
|
|
/** Removes the given nodes from the list of nodes. */
|
|
virtual void remove (const KPlayerNodeList& nodes);
|
|
|
|
/** Saves the node data into the source. */
|
|
virtual void save (void);
|
|
|
|
public slots:
|
|
/** Adds the given nodes into the list of nodes. */
|
|
virtual void added (KPlayerContainerNode* parent, const KPlayerNodeList& nodes, KPlayerNode* after);
|
|
/** Removes the given nodes from the list of nodes. */
|
|
virtual void removed (KPlayerContainerNode* parent, const KPlayerNodeList& nodes);
|
|
/** Detaches from the origin. */
|
|
virtual void detach (void);
|
|
|
|
protected:
|
|
/** Initializes the node retrieval process. */
|
|
virtual void enumStart (bool groups);
|
|
/** Retrieves the id of the next node. */
|
|
virtual bool enumNext (bool& group, TQString& id);
|
|
};
|
|
|
|
#if 0
|
|
/**Key source class, handles subnodes of a linked node.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerKeySource : public KPlayerSource
|
|
{
|
|
//TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerKeySource constructor. Sets up a source. */
|
|
KPlayerKeySource (KPlayerCollectionNode* parent);
|
|
/** The KPlayerKeySource destructor. Frees resources. */
|
|
virtual ~KPlayerKeySource();
|
|
|
|
/** Connects the source. */
|
|
virtual void connectOrigin (void);
|
|
|
|
/** Parent node. */
|
|
KPlayerCollectionNode* parent (void) const
|
|
{ return (KPlayerCollectionNode*) m_parent; }
|
|
|
|
/** Matches the meta information for the given ID against the criteria. */
|
|
bool match (const TQString& id);
|
|
|
|
/** Adds the given nodes into the list of nodes, optionally linking to the origin. */
|
|
virtual KPlayerNode* add (const KPlayerNodeList& nodes, bool link, KPlayerNode* after = 0);
|
|
/** Removes the given nodes from the list of nodes. */
|
|
virtual void remove (const KPlayerNodeList& nodes);
|
|
|
|
/** Sets the node meta information so that it matches the criteria. */
|
|
void brand (const KPlayerNodeList& nodes);
|
|
|
|
//public slots:
|
|
/** Adds the given nodes into the list of nodes. */
|
|
void added (const KPlayerNodeList& nodes);
|
|
/** Removes the given nodes from the list of nodes. */
|
|
void removed (const KPlayerNodeList& nodes);
|
|
|
|
protected:
|
|
/** Initializes the node retrieval process. */
|
|
virtual void enumStart (bool groups);
|
|
/** Retrieves the id of the next node. */
|
|
virtual bool enumNext (bool& group, TQString& id);
|
|
};
|
|
|
|
/**Group source class, handles subnodes of a grouped node.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerGroupSource : public KPlayerSource
|
|
{
|
|
//TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerGroupSource constructor. Sets up a source. */
|
|
KPlayerGroupSource (KPlayerCollectionNode* parent);
|
|
/** The KPlayerGroupSource destructor. Frees resources. */
|
|
virtual ~KPlayerGroupSource();
|
|
|
|
/** Connects the source. */
|
|
virtual void connectOrigin (void);
|
|
|
|
/** Parent node. */
|
|
KPlayerCollectionNode* parent (void) const
|
|
{ return (KPlayerCollectionNode*) m_parent; }
|
|
|
|
/** Adds the given nodes into the list of nodes, optionally linking to the origin. */
|
|
virtual KPlayerNode* add (const KPlayerNodeList& nodes, bool link, KPlayerNode* after = 0);
|
|
/** Removes the given nodes from the list of nodes. */
|
|
virtual void remove (const KPlayerNodeList& nodes);
|
|
|
|
//public slots:
|
|
/** Adds the given nodes into the list of nodes. */
|
|
virtual void added (KPlayerContainerNode* parent, const KPlayerNodeList& nodes, KPlayerNode* after);
|
|
|
|
protected:
|
|
/** Initializes the node retrieval process. */
|
|
virtual void enumStart (bool groups);
|
|
/** Retrieves the id of the next node. */
|
|
virtual bool enumNext (bool& group, TQString& id);
|
|
/** Removes the given nodes from the given node and its subnodes. */
|
|
void remove (KPlayerContainerNode* node, const KPlayerNodeList& nodes);
|
|
|
|
/** Current node. */
|
|
KPlayerContainerNode* m_current;
|
|
};
|
|
|
|
/**Searches source class, handles subnodes of the searches node.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerSearchesSource : public KPlayerListSource
|
|
{
|
|
//TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerSearchesSource constructor. Sets up a source. */
|
|
KPlayerSearchesSource (KPlayerContainerNode* parent);
|
|
/** The KPlayerSearchesSource destructor. Frees resources. */
|
|
virtual ~KPlayerSearchesSource();
|
|
|
|
/** Indicates whether leaves can be added. */
|
|
virtual bool canAddLeaves (void) const;
|
|
/** Indicates whether branches can be added. */
|
|
virtual bool canAddBranches (void) const;
|
|
};
|
|
|
|
/**Search source class, handles subnodes of a search node.
|
|
*@author kiriuja
|
|
*/
|
|
class KPlayerSearchSource : public KPlayerSource
|
|
{
|
|
//TQ_OBJECT
|
|
|
|
public:
|
|
/** The KPlayerSearchSource constructor. Sets up a source. */
|
|
KPlayerSearchSource (KPlayerContainerNode* parent);
|
|
/** The KPlayerSearchSource destructor. Frees resources. */
|
|
virtual ~KPlayerSearchSource();
|
|
|
|
/** Connects the source. */
|
|
virtual void connectOrigin (void);
|
|
|
|
/** Indicates whether leaves can be added. */
|
|
virtual bool canAddLeaves (void) const;
|
|
/** Indicates whether branches can be added. */
|
|
virtual bool canAddBranches (void) const;
|
|
/** Indicates whether nodes can be removed. */
|
|
virtual bool canRemove (void) const;
|
|
|
|
/** Matches the meta information for the given ID against the criteria. */
|
|
bool match (const TQString& id);
|
|
|
|
//public slots:
|
|
/** Adds the given nodes into the list of nodes. */
|
|
virtual void added (KPlayerContainerNode* parent, const KPlayerNodeList& nodes, KPlayerNode* after);
|
|
/** Detaches from the origin. */
|
|
virtual void detach (void);
|
|
|
|
protected:
|
|
/** Initializes the node retrieval process. */
|
|
virtual void enumStart (bool groups);
|
|
/** Retrieves the id of the next node. */
|
|
virtual bool enumNext (bool& group, TQString& id);
|
|
|
|
/** Current node. */
|
|
KPlayerContainerNode* m_current;
|
|
};
|
|
#endif
|
|
|
|
#endif
|