Qmmp
Public Types | Public Slots | Signals | Public Member Functions | List of all members
PlayListModel Class Reference

#include <playlistmodel.h>

Inherits QObject.

Public Types

enum  SortMode {
  TITLE = 0 , ALBUM , DISCNUMBER , ARTIST ,
  ALBUMARTIST , FILENAME , PATH_AND_FILENAME , DATE ,
  TRACK , FILE_CREATION_DATE , FILE_MODIFICATION_DATE , GROUP
}
 
enum  UpdateFlags {
  STRUCTURE = 0x01 , SELECTION = 0x02 , QUEUE = 0x04 , CURRENT = 0x08 ,
  STOP_AFTER = 0x10 , METADATA = 0x20
}
 

Public Slots

void add (PlayListTrack *track)
 
void add (const QList< PlayListTrack * > &tracks)
 
void add (const QString &path)
 
void add (const QStringList &paths)
 
void insert (int index, PlayListTrack *track)
 
void insert (PlayListItem *before, PlayListTrack *track)
 
void insert (int index, const QList< PlayListTrack * > &tracks)
 
void insert (int index, const QByteArray &json)
 
void insert (PlayListItem *before, const QList< PlayListTrack * > &tracks)
 
void insert (int index, const QString &path)
 
void insert (int index, const QStringList &paths)
 
void insert (int index, const QList< QUrl > &urls)
 
void clear ()
 
void clearSelection ()
 
void removeSelected ()
 
void removeUnselected ()
 
void removeTrack (int i)
 
void removeTrack (PlayListItem *track)
 
void removeTracks (const QList< PlayListItem * > &items)
 
void removeTracks (const QList< PlayListTrack * > &tracks)
 
void invertSelection ()
 
void selectAll ()
 
void showDetails (QWidget *parent=nullptr)
 
void showDetailsForCurrent (QWidget *parent=nullptr)
 
void doCurrentVisibleRequest ()
 
void scrollTo (int index)
 
void randomizeList ()
 
void reverseList ()
 
void sortSelection (SortMode mode)
 
void sort (SortMode mode)
 
void sortByColumn (int column)
 
void addToQueue ()
 
void setQueued (PlayListTrack *t)
 
void removeInvalidTracks ()
 
void removeDuplicates ()
 
void refresh ()
 
void clearQueue ()
 
void stopAfterSelected ()
 
void rebuildGroups ()
 
void updateMetaData ()
 

Signals

void listChanged (int flags)
 
void trackAdded (PlayListTrack *track)
 
void nameChanged (const QString &name)
 
void loaderFinished ()
 
void scrollToRequest (int index)
 
void sortingByColumnFinished (int column, bool reverted)
 

Public Member Functions

 PlayListModel (const QString &name, QObject *parent=nullptr)
 
 ~PlayListModel ()
 
QString name () const
 
void setName (const QString &name)
 
int count () const
 
int trackCount () const
 
bool isEmpty () const
 
int columnCount () const
 
PlayListTrackcurrentTrack () const
 
PlayListTracknextTrack () const
 
int indexOf (PlayListItem *item) const
 
PlayListItemitem (int index) const
 
PlayListTracktrack (int index) const
 
PlayListGroupgroup (int index) const
 
int currentIndex () const
 
bool setCurrent (int index)
 
bool setCurrent (PlayListTrack *item)
 
bool isTrack (int index) const
 
bool isGroup (int index) const
 
bool isSelected (int index) const
 
void setSelected (int index, bool selected=true)
 
void setSelected (const QList< PlayListTrack * > &tracks, bool selected=true)
 
void setSelected (const QList< PlayListItem * > &items, bool selected=true)
 
void setSelected (int first, int last, bool selected=true)
 
void setSelected (const QList< int > &indexes, bool selected=true)
 
bool next ()
 
bool previous ()
 
QList< PlayListItem * > mid (int pos, int count=-1) const
 
void moveItems (int from, int to)
 
const QList< PlayListTrack * > & queuedTracks () const
 
bool isEmptyQueue () const
 
int queueSize () const
 
bool isStopAfter (const PlayListItem *item) const
 
const SimpleSelectiongetSelection (int row)
 
QList< int > selectedIndexes () const
 
QList< PlayListTrack * > selectedTracks () const
 
QList< PlayListItem * > items () const
 
int firstSelectedUpper (int row)
 
int firstSelectedLower (int row)
 
qint64 totalDuration () const
 
void loadPlaylist (const QString &f_name)
 
void loadPlaylist (const QString &fmt, const QByteArray &data)
 
void savePlaylist (const QString &f_name)
 
bool isLoaderRunning () const
 
bool contains (const QString &url)
 
int indexOfTrack (int index) const
 
PlayListTrackfindTrack (int track_index) const
 
QList< PlayListItem * > findTracks (const QString &str) const
 

Detailed Description

The PlayListModel class provides a data model for the playlist.

Author
Vladimir Kuznetsov vovan.nosp@m.ec@g.nosp@m.mail..nosp@m.com
Ilya Kotov forko.nosp@m.tov0.nosp@m.2@ya..nosp@m.ru
    Playlist Structure
 -----------------------
| item  | track | item  |
| index | index | type  |
 -----------------------
|  0    |       | group |
|  1    |  0    | track |
|  2    |  1    | track |
|  3    |  2    | track |
|  4    |  3    | track |
|  5    |       | group |
|  6    |  4    | track |
|  7    |  5    | track |
|  8    |  6    | track |

Member Enumeration Documentation

◆ SortMode

enum SortMode

Enum of the available sort modes.

Enumerator
TITLE 

by title

ALBUM 

by album

DISCNUMBER 

by discnumber

ARTIST 

by artist

ALBUMARTIST 

by album artist

FILENAME 

by file name

PATH_AND_FILENAME 

by path and file name

DATE 

by date

TRACK 

by track

FILE_CREATION_DATE 

by file creation date

FILE_MODIFICATION_DATE 

by file modification date

GROUP 

by group name

◆ UpdateFlags

Enum of the playlist update flags.

Enumerator
STRUCTURE 

Structure of the playlist has been changed

SELECTION 

Current selection has been changed

QUEUE 

Track queue has been changed

CURRENT 

Current track has been changed

STOP_AFTER 

Stop track has been changed

METADATA 

Metadata has been changed

Constructor & Destructor Documentation

◆ PlayListModel()

PlayListModel ( const QString &  name,
QObject *  parent = nullptr 
)
explicit

Constructs a playlist model.

Parameters
namePlaylist name.
parentQObject parent

◆ ~PlayListModel()

Object destructor.

Member Function Documentation

◆ add [1/4]

void add ( const QList< PlayListTrack * > &  tracks)
slot

Adds a list of tracks to the playlist.

Parameters
tracksList of tracks.

◆ add [2/4]

void add ( const QString &  path)
slot

Adds a list of files and directories to the playlist

Parameters
pathFull path of file or directory.

◆ add [3/4]

void add ( const QStringList &  paths)
slot

Adds a list of files and directories to the playlist

Parameters
pathsFull paths of files and directories.

◆ add [4/4]

void add ( PlayListTrack track)
slot

Adds track to the playlist.

◆ addToQueue

void addToQueue ( )
slot

Adds/removes selected items to/from playback queue.

◆ clear

void clear ( )
slot

Removes all items.

◆ clearQueue

void clearQueue ( )
slot

Removes all items from queue.

◆ clearSelection

void clearSelection ( )
slot

Clears selection.

◆ columnCount()

int columnCount ( ) const

Returns number of columns.

◆ contains()

bool contains ( const QString &  url)

Returns true if the playlist contains an item with URL url; otherwise returns false.

◆ count()

int count ( ) const

Returns number of items.

◆ currentIndex()

int currentIndex ( ) const

Returns index of the current item.

◆ currentTrack()

PlayListTrack* currentTrack ( ) const

Returns the current track.

◆ doCurrentVisibleRequest

void doCurrentVisibleRequest ( )
slot

Ensures that the current track is visible.

◆ findTrack()

PlayListTrack* findTrack ( int  track_index) const

Finds track with index track_index. Returns null pointer if playlist does not contain track with index track_index.

◆ findTracks()

QList<PlayListItem *> findTracks ( const QString &  str) const

Finds tracks by string str. The search is case insensitive. Returns a list of PlayListItem pointers.

◆ firstSelectedLower()

int firstSelectedLower ( int  row)

Returns number of first item that selected lower the row item.

◆ firstSelectedUpper()

int firstSelectedUpper ( int  row)

Returns number of first item that selected upper the row item.

◆ getSelection()

const SimpleSelection& getSelection ( int  row)

Returns current selection(playlist can contain a lot of selections, this method returns selection which row belongs to)

◆ group()

PlayListGroup* group ( int  index) const

Returns the group with the index index or 0 if group doesn't exist.

◆ indexOf()

int indexOf ( PlayListItem item) const

Returns the row of the item

◆ indexOfTrack()

int indexOfTrack ( int  index) const

Converts item index index to track index Returns -1 if item with index index is not a track or does not exist.

◆ insert [1/8]

void insert ( int  index,
const QByteArray &  json 
)
slot

Inserts serialized content json at index position index in the playlist. May be useful for fast drag-and-drop.

◆ insert [2/8]

void insert ( int  index,
const QList< PlayListTrack * > &  tracks 
)
slot

Inserts tracks at index position index in the playlist.

◆ insert [3/8]

void insert ( int  index,
const QList< QUrl > &  urls 
)
slot

Adds a list of URLs at index position index in the playlist.

Parameters
urlsA list of URLs.
indexPosition in the playlist.

◆ insert [4/8]

void insert ( int  index,
const QString &  path 
)
slot

Inserts file or directory at index position index in the playlist.

Parameters
pathFull path of file or directory.
indexPosition in the playlist.

◆ insert [5/8]

void insert ( int  index,
const QStringList &  paths 
)
slot

Adds a list of files and directories at index position index in the playlist.

Parameters
pathsFull paths of files and directories.
indexPosition in the playlist.

◆ insert [6/8]

void insert ( int  index,
PlayListTrack track 
)
slot

Inserts track at index position index in the playlist.

◆ insert [7/8]

void insert ( PlayListItem before,
const QList< PlayListTrack * > &  tracks 
)
slot

Inserts tracks after item before in the playlist.

◆ insert [8/8]

void insert ( PlayListItem before,
PlayListTrack track 
)
slot

Inserts track before playlist item before.

◆ invertSelection

void invertSelection ( )
slot

Inverts selection (selects unselected items and unselects selected items)

◆ isEmpty()

bool isEmpty ( ) const

Returns true if the model contains no tracks; otherwise returns false.

◆ isEmptyQueue()

bool isEmptyQueue ( ) const

Returns true if play queue is empty,otherwise returns - false.

◆ isGroup()

bool isGroup ( int  index) const

Returns true if a playlist contains group separator with the index index. Otherwise returns false.

◆ isLoaderRunning()

bool isLoaderRunning ( ) const

Returns true if the file loader thread is active; otherwise returns false.

◆ isSelected()

bool isSelected ( int  index) const

Returns true if item with index is selected, otherwise returns false

◆ isStopAfter()

bool isStopAfter ( const PlayListItem item) const

Returns true if playback stops after item, otherwise returns false.

◆ isTrack()

bool isTrack ( int  index) const

Returns true if a playlist contains track with the index index. Otherwise returns false.

◆ item()

PlayListItem* item ( int  index) const

Returns the item with the index index or 0 if item doesn't exist.

◆ items()

QList<PlayListItem*> items ( ) const

Returns list of all PlayListItem pointers.

◆ listChanged

void listChanged ( int  flags)
signal

Emitted when the state of PlayListModel has changed.

Parameters
flagsPlaylist updated flags. See UpdateFlags enum for details.

◆ loaderFinished

void loaderFinished ( )
signal

Emitted when playlist loader thread has finished.

◆ loadPlaylist() [1/2]

void loadPlaylist ( const QString &  f_name)

Loads playlist with f_name name.

◆ loadPlaylist() [2/2]

void loadPlaylist ( const QString &  fmt,
const QByteArray &  data 
)

Loads playlist from content.

Parameters
fmtPlaylist format (short name).
dataContent of the playlist file.

◆ mid()

QList<PlayListItem *> mid ( int  pos,
int  count = -1 
) const

Returns a list of the items, starting at position pos

Parameters
posFirst item position.
countA number of items. If count is -1 (the default), all items from pos are returned.

◆ moveItems()

void moveItems ( int  from,
int  to 
)

Moves the item at index position from to index position to.

◆ name()

QString name ( ) const

Returns playlist name.

◆ nameChanged

void nameChanged ( const QString &  name)
signal

Emitted when playlist name has chanded.

Parameters
nameNew playlist name.

◆ next()

bool next ( )

Advances to the next item. Returns false if next iten doesn't exist, otherwise returns true

◆ nextTrack()

PlayListTrack* nextTrack ( ) const

Returns the next playing track or 0 if next track is unknown.

◆ previous()

bool previous ( )

Goes back to the previous item. Returns false if previous iten doesn't exist, otherwise returns true

◆ queuedTracks()

const QList<PlayListTrack *>& queuedTracks ( ) const

Returns a list of queued tracks.

◆ queueSize()

int queueSize ( ) const

Returns the number of items in the queue

◆ randomizeList

void randomizeList ( )
slot

Randomly changes items order.

◆ rebuildGroups

void rebuildGroups ( )
slot

Rebuilds groups

◆ refresh

void refresh ( )
slot

Removes invalid tracks and scans parent directories for the new files

◆ removeDuplicates

void removeDuplicates ( )
slot

Removes duplicate tracks by URL.

◆ removeInvalidTracks

void removeInvalidTracks ( )
slot

Removes invalid tracks from playlist

◆ removeSelected

void removeSelected ( )
slot

Removes selected items.

◆ removeTrack [1/2]

void removeTrack ( int  i)
slot

Removes track with i index.

◆ removeTrack [2/2]

void removeTrack ( PlayListItem track)
slot

Removes track track from playlist.

◆ removeTracks [1/2]

void removeTracks ( const QList< PlayListItem * > &  items)
slot

Removes tracks items from playlist.

◆ removeTracks [2/2]

void removeTracks ( const QList< PlayListTrack * > &  tracks)
slot

Removes tracks tracks from playlist.

◆ removeUnselected

void removeUnselected ( )
slot

Removes unselected items.

◆ reverseList

void reverseList ( )
slot

Reverces items order.

◆ savePlaylist()

void savePlaylist ( const QString &  f_name)

Saves current songs to the playlist with f_name name.

◆ scrollTo

void scrollTo ( int  index)
slot

Ensures that the playlist item at index is visible.

◆ scrollToRequest

void scrollToRequest ( int  index)
signal

Tells playlist widget to show item at index index.

◆ selectAll

void selectAll ( )
slot

Selects all items.

◆ selectedIndexes()

QList<int> selectedIndexes ( ) const

Returns list with selected items indexes.

◆ selectedTracks()

QList<PlayListTrack *> selectedTracks ( ) const

Returns list of PlayListItem pointers that are selected.

◆ setCurrent() [1/2]

bool setCurrent ( int  index)

Sets current index. Returns false if item with this index doesn't exist, otherwise returns true

Parameters
indexNumber of item.

◆ setCurrent() [2/2]

bool setCurrent ( PlayListTrack item)

Sets current item to item. Returns true if success, otherwise returns false

◆ setName()

void setName ( const QString &  name)

Sets the name of the playlist to name.

◆ setQueued

void setQueued ( PlayListTrack t)
slot

Adds/removes track t to/from playback queue.

◆ setSelected() [1/5]

void setSelected ( const QList< int > &  indexes,
bool  selected = true 
)

Sets the selected state of the items with indexes to select

Parameters
indexesList of item indexes.
selectedSelection state (true - select, false - unselect)

◆ setSelected() [2/5]

void setSelected ( const QList< PlayListItem * > &  items,
bool  selected = true 
)

Sets the selected state of the list of items to select

Parameters
itemsList of items.
selectedSelection state (true - select, false - unselect)

◆ setSelected() [3/5]

void setSelected ( const QList< PlayListTrack * > &  tracks,
bool  selected = true 
)

Sets the selected state of the list of tracks to select

Parameters
tracksList of tracks.
selectedSelection state (true - select, false - unselect)

◆ setSelected() [4/5]

void setSelected ( int  first,
int  last,
bool  selected = true 
)

Sets the selected state of the list of items range.

Parameters
firstFirts item in the range.
lastLast item in the range.
selectedSelection state (true - select, false - unselect).

◆ setSelected() [5/5]

void setSelected ( int  index,
bool  selected = true 
)

Sets the selected state of the item to select

Parameters
indexNumber of item.
selectedSelection state (true - select, false - unselect)

◆ showDetails

void showDetails ( QWidget *  parent = nullptr)
slot

Shows details for the first selected item.

Parameters
parentparent Widget.

◆ showDetailsForCurrent

void showDetailsForCurrent ( QWidget *  parent = nullptr)
slot

Shows the details for the current song (if any).

Parameters
parentparent widget.

◆ sort

void sort ( SortMode  mode)
slot

Sorts items in mode sort mode.

◆ sortByColumn

void sortByColumn ( int  column)
slot

Sorts tracks by the column with index column.

◆ sortingByColumnFinished

void sortingByColumnFinished ( int  column,
bool  reverted 
)
signal

Emitted when sorting by column is finished.

Parameters
columnColumn index.
revertedSort direction.

◆ sortSelection

void sortSelection ( SortMode  mode)
slot

Sorts selected items in mode sort mode.

◆ stopAfterSelected

void stopAfterSelected ( )
slot

Toggles 'stop after selected' feature.

◆ totalDuration()

qint64 totalDuration ( ) const

Returns total duration in milliseconds of all songs.

◆ track()

PlayListTrack* track ( int  index) const

Returns the track with the index index or 0 if track doesn't exist.

◆ trackAdded

void trackAdded ( PlayListTrack track)
signal

Emitted when new track has added.

Parameters
trackPointer of the new playlist track.

◆ trackCount()

int trackCount ( ) const

Returns number of tracks.

◆ updateMetaData

void updateMetaData ( )
slot

Requires to update metadata.


The documentation for this class was generated from the following file: