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.
kplayer/kplayer/kplayerplaylist.h

279 lines
9.4 KiB

/***************************************************************************
kplayerplaylist.h
------------------
begin : Wed Sep 3 2003
copyright : (C) 2003-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 KPLAYERPLAYLIST_H
#define KPLAYERPLAYLIST_H
#include <tdeaction.h>
#include <kcombobox.h>
#include "kplayerprocess.h"
#include "kplayernode.h"
#include "kplayernodeaction.h"
/**The playlist combobox widget.
*@author kiriuja
*/
class KPlayerPlaylistCombobox : public TQComboBox
{
Q_OBJECT
public:
/** The KPlayerPlaylistCombobox constructor. */
KPlayerPlaylistCombobox (TQWidget* parent = 0, const char* name = 0);
/** Configuration. */
KPlayerConfiguration* configuration (void) const
{ return KPlayerEngine::engine() -> configuration(); }
/** Returns the popup menu. */
TQPopupMenu* popupMenu (void) const
{ return m_popup; }
/** Sets the popup menu. */
void setPopupMenu (TQPopupMenu* menu)
{ m_popup = menu; }
/** The size hint. */
virtual TQSize sizeHint() const;
/** The minimum size hint. */
virtual TQSize minimumSizeHint() const;
protected:
/** Displays the right click popup menu. */
virtual void contextMenuEvent (TQContextMenuEvent*);
/** Popup menu. */
TQPopupMenu* m_popup;
};
/**Playlist class, contains the list of playlist items.
*@author kiriuja
*/
class KPlayerPlaylist : public TQObject
{
Q_OBJECT
public:
/** The KPlayerPlaylist constructor. Creates an empty playlist. */
KPlayerPlaylist (TDEActionCollection* ac, TQObject* parent = 0, const char* name = 0);
/** The KPlayerPlaylist destructor. */
virtual ~KPlayerPlaylist();
/** Initializes playlist. */
void initialize (TQPopupMenu* menu);
/** Releases referenced nodes. */
void terminate (void);
/** Engine. */
KPlayerEngine* engine (void) const
{ return KPlayerEngine::engine(); }
/** Configuration. */
KPlayerConfiguration* configuration (void) const
{ return engine() -> configuration(); }
/** Settings. */
KPlayerSettings* settings (void) const
{ return engine() -> settings(); }
/** Process. */
KPlayerProcess* process (void) const
{ return engine() -> process(); }
/** Now playing node. */
KPlayerNowPlayingNode* nowplaying (void) const
{ return m_nowplaying; }
/** Retrieves an action from the actionCollection by name. */
TDEAction* action (const char* name) const
{ return m_ac -> action (name); }
/** Retrieves a toggle action from the actionCollection by name. */
TDEToggleAction* toggleAction (const char* name) const
{ return (TDEToggleAction*) action (name); }
/** Returns the playlist action list. */
KPlayerContainerActionList* playlistActionList (void) const
{ return m_playlists; }
/** Returns the recent action list. */
KPlayerNodeActionList* recentActionList (void) const
{ return m_recent; }
/** Recents node. */
KPlayerRecentsNode* recent (void) const
{ return (KPlayerRecentsNode*) recentActionList() -> node(); }
/** Returns the devices action list. */
KPlayerDevicesActionList* devicesActionList (void) const
{ return m_devices; }
/** Returns the playlist add action list. */
KPlayerContainerActionList* playlistAddActionList (void) const
{ return m_playlists_add; }
/** Returns a pointer to the playlist combobox object. */
KPlayerPlaylistCombobox* playlist (void)
{ return (KPlayerPlaylistCombobox*) ((KWidgetAction*) action ("player_list")) -> widget(); }
/** List of nodes. */
const KPlayerPlaylistNodeList& nodes (void) const
{ return m_nodes; }
/** Returns whether the playlist is empty. */
bool isEmpty (void) const
{ return nodes().isEmpty(); }
/** Returns the number of items on the playlist. */
uint count (void) const
{ return nodes().count(); }
/** Returns the current node. */
KPlayerNode* currentNode (void) const
{ return m_current; }
/** Sets the current node. */
void setCurrentNode (KPlayerNode* node);
/** Returns the next node. */
KPlayerNode* nextNode (void) const
{ return m_next.getFirst(); }
/** Sets the next nodes. */
void setNextNodes (const KPlayerNodeList& nodes);
/** Adds the given nodes to the list of next nodes. */
void addNextNodes (const KPlayerNodeList& nodes);
/** Plays the given nodes. */
void play (const KPlayerNodeList& list);
/** Plays the given nodes after the currently played item finishes playing. */
void playNext (const KPlayerNodeList& list);
/** Queues the given nodes. */
void queue (const KPlayerNodeList& list);
/** Queues the given nodes for playing after the currently played item finishes playing. */
void queueNext (const KPlayerNodeList& list);
/** Puts the given list of URLs on the playlist and starts playback. */
void playUrls (const KURL::List& list);
/** Puts the given list of URLs on the playlist and plays them after the currently played item finishes playing. */
void playNextUrls (const KURL::List& list);
/** Adds the given list of URLs to the end of the playlist. */
void queueUrls (const KURL::List& list);
/** Adds the given list of URLs to the playlist and plays them after the currently played item finishes playing. */
void queueNextUrls (const KURL::List& list);
/** Shuffles the playlist entries. */
void randomize (KPlayerNode* node = 0);
/** Checks the given list of URLs for validity. */
static bool checkUrls (const KURL::List& list);
signals:
/** Emitted when playback starts. */
void started (void);
/** Emitted when a new item is chosen from the playlist and loaded into the engine. */
void activated (void);
/** Emitted when an item is finished playing and no new item will be loaded. */
void stopped (void);
/** Emitted when an action group is enabled or disabled. */
void enableActionGroup (const TQString& name, bool enable);
public slots:
/** Plays the given node. */
void play (KPlayerNode* node);
/** Plays the selected item. */
void play (int index);
/** Plays the current item. */
void play (void);
/** Plays the next item. */
void next (void);
/** Plays the previous item. */
void previous (void);
/** Toggles the option to loop through the playlist. */
void loop (void);
/** Toggles the option to play items in random order. */
void shuffle (void);
/** Displays the Open File dialog and starts playing the chosen file. */
void filePlay (void);
/** Displays the Open URL dialog and starts playing from the entered URL. */
void filePlayUrl (void);
/** Displays the Open File dialog and adds the chosen files to the playlist. */
void addFiles (void);
/** Displays the Open URL dialog and adds the entered URL to the playlist. */
void addUrl (void);
/** Saves the playlist as a new playlist. */
void addToPlaylists (void);
/** Adds the playlist items to an existing playlist. */
void addToPlaylist (KPlayerNode*);
/** Saves the playlist as a new folder in the collection. */
void addToCollection (void);
protected slots:
/** Adds the given nodes to the list. */
void added (KPlayerContainerNode*, const KPlayerNodeList& nodes, KPlayerNode* after = 0);
/** Removes the given nodes from the list. */
void removed (KPlayerContainerNode*, const KPlayerNodeList& nodes);
/** Updates the given node attributes. */
void updated (KPlayerContainerNode* parent, KPlayerNode* node);
/** Updates the playlist combobox. */
void update (void);
/** Plays the next item when appropriate. */
void playerStateChanged (KPlayerProcess::State, KPlayerProcess::State);
/** Adjusts the playlist to the user preferences. */
void refreshSettings (void);
protected:
/** Populates and connects the given node. */
void attach (KPlayerContainerNode* node);
/** Vacates and disconnects the given node. */
void detach (KPlayerContainerNode* node);
/** Appends the given nodes to the list. */
void append (const KPlayerNodeList& nodes);
/** Inserts the given nodes at the given location. */
int insert (const KPlayerNodeList& nodes, int index);
/** Enables or disables the next and previous actions according to the current state. */
void enableNextPrevious (void) const;
/** Updates actions according to the current state. */
void updateActions (void) const;
/** Now Playing node. */
KPlayerNowPlayingNode* m_nowplaying;
/** Current node. */
KPlayerNode* m_current;
/** Next nodes. */
KPlayerNodeList m_next;
/** List of nodes. */
KPlayerPlaylistNodeList m_nodes;
/** Action collection. */
TDEActionCollection* m_ac;
/** Set next node indicator. */
bool m_set_next;
/** Playlist action list. */
KPlayerContainerActionList* m_playlists;
/** Recent action list. */
KPlayerNodeActionList* m_recent;
/** Devices action list. */
KPlayerDevicesActionList* m_devices;
/** Playlist add action list. */
KPlayerContainerActionList* m_playlists_add;
/** Play requested indicator. */
bool m_play_requested;
};
#endif