Qmmp
Loading...
Searching...
No Matches
PlayListModel Class Reference

#include <qmmpui/playlistmodel.h>

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 addTrack (PlayListTrack *track)
 
void addTracks (const QList< PlayListTrack * > &tracks)
 
void addPath (const QString &path)
 
void addPaths (const QStringList &paths)
 
void insertTrack (int index, PlayListTrack *track)
 
void insertTracks (int index, const QList< PlayListTrack * > &tracks)
 
void insertJson (int index, const QByteArray &json)
 
void insertPath (int index, const QString &path)
 
void insertPaths (int index, const QStringList &paths)
 
void insertUrls (int index, const QList< QUrl > &urls)
 
void clear ()
 
void clearSelection ()
 
void removeSelected ()
 
void removeUnselected ()
 
void removeTrack (int i)
 
void removeTrack (PlayListTrack *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 trackIndex)
 
void randomizeList ()
 
void reverseList ()
 
void sortSelection (PlayListModel::SortMode mode)
 
void sort (PlayListModel::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 tracksAdded (const QList< PlayListTrack * > &tracks)
 
void nameChanged (const QString &name)
 
void loaderFinished ()
 
void scrollToRequest (int trackIndex)
 
void sortingByColumnFinished (int column, bool reverted)
 
void currentTrackRemoved ()
 

Public Member Functions

 PlayListModel (const QString &name, QObject *parent=nullptr)
 
 ~PlayListModel ()
 
QString name () const
 
void setName (const QString &name)
 
int groupCount () const
 
int trackCount () const
 
bool isEmpty () const
 
int columnCount () const
 
PlayListTrackcurrentTrack () const
 
PlayListTracknextTrack () const
 
int indexOf (PlayListItem *item) const
 
PlayListTracktrack (int index) const
 
PlayListGroupgroup (int index) const
 
int currentIndex () const
 
bool setCurrent (int index)
 
bool setCurrent (PlayListTrack *track)
 
void setSelected (PlayListItem *item, bool selected=true)
 
void setSelected (const QList< PlayListTrack * > &tracks, bool selected=true)
 
void setSelected (const QList< PlayListItem * > &items, bool selected=true)
 
void setSelectedLines (int firstLine, int lastLine, bool selected=true)
 
bool next ()
 
bool previous ()
 
int lineCount () const
 
PlayListItemitemAtLine (int lineIndex) const
 
PlayListTracktrackAtLine (int lineIndex) const
 
QList< PlayListItem * > itemsAtLines (int pos, int count=-1) const
 
int findLine (PlayListItem *item) const
 
int findLine (int trackIndex) const
 
int subIndexOfLine (int lineIndex) const
 
int trackIndexAtLine (int lineIndex) const
 
bool alternateColor (int lineIndex) const
 
int linesPerGroup () const
 
void moveTracks (int from, int to)
 
const QList< PlayListTrack * > & queuedTracks () const
 
bool isEmptyQueue () const
 
int queueSize () const
 
bool isStopAfter (const PlayListItem *track) const
 
SimpleSelection getSelection (int trackIndex)
 
QList< int > selectedLines () const
 
void setSelectedLine (int line, bool selected=true)
 
QList< int > selectedTrackIndexes () const
 
QList< PlayListTrack * > selectedTracks () const
 
QList< PlayListTrack * > tracks () const
 
int firstSelectedUpper (int trackIndex)
 
int firstSelectedLower (int trackIndex)
 
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)
 
PlayListTrackfindTrack (int trackIndex) 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
 ----------------------------------
| line  | sub-line | item  | item  |
| index | index    | index | type  |
 ----------------------------------
|  0    |  0       |  0    | group |
|  1    |  1       |  0    | group |
|  2    |  2       |  0    | group |
 ----------------------------------
|  3    |  0       |  0    | track |
|  4    |  0       |  1    | track |
|  5    |  0       |  2    | track |
 ----------------------------------
|  6    |  0       |  1    | group |
|  7    |  1       |  1    | group |
|  8    |  2       |  1    | group |
 ----------------------------------
|  9    |  0       |  3    | track |
| 10    |  0       |  4    | 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

◆ addPath

void addPath ( const QString & path)
slot

Adds a list of files and directories to the playlist

Parameters
pathFull path of file or directory.

◆ addPaths

void addPaths ( const QStringList & paths)
slot

Adds a list of files and directories to the playlist

Parameters
pathsFull paths of files and directories.

◆ addToQueue

void addToQueue ( )
slot

Adds/removes selected items to/from playback queue.

◆ addTrack

void addTrack ( PlayListTrack * track)
slot

Adds track to the playlist.

◆ addTracks

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

Adds a list of tracks to the playlist.

Parameters
tracksList of tracks.

◆ alternateColor()

bool alternateColor ( int lineIndex) const

Return true if the line lineIndex should be painted using alternate color. Otherwise returns false.

◆ 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.

◆ currentIndex()

int currentIndex ( ) const

Returns index of the current track or -1 if model is empty.

◆ currentTrack()

PlayListTrack * currentTrack ( ) const

Returns the current track.

◆ currentTrackRemoved

void currentTrackRemoved ( )
signal

Emitted when the current track is removed.

◆ doCurrentVisibleRequest

void doCurrentVisibleRequest ( )
slot

Ensures that the current track is visible.

◆ findLine() [1/2]

int findLine ( int trackIndex) const

Finds line for track with index trackIndex. Returns -1 if the line for this track is not available.

◆ findLine() [2/2]

int findLine ( PlayListItem * item) const

Finds line for item item. Returns -1 if line for this item is not available.

◆ findTrack()

PlayListTrack * findTrack ( int trackIndex) const

Finds track with index trackIndex. 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 trackIndex)

Returns number of first track that selected lower the trackIndex track.

◆ firstSelectedUpper()

int firstSelectedUpper ( int trackIndex)

Returns number of first track index that selected upper the trackIndex track.

◆ getSelection()

SimpleSelection getSelection ( int trackIndex)

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

◆ group()

PlayListGroup * group ( int index) const

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

◆ groupCount()

int groupCount ( ) const

Returns number of groups.

◆ indexOf()

int indexOf ( PlayListItem * item) const

Returns index of track or group.

Parameters
itemtrack or group pointer.

◆ insertJson

void insertJson ( 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.

◆ insertPath

void insertPath ( 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.

◆ insertPaths

void insertPaths ( 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.

◆ insertTrack

void insertTrack ( int index,
PlayListTrack * track )
slot

Inserts track at index position index in the playlist.

◆ insertTracks

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

Inserts tracks at index position index in the playlist.

◆ insertUrls

void insertUrls ( 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.

◆ 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.

◆ isLoaderRunning()

bool isLoaderRunning ( ) const

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

◆ isStopAfter()

bool isStopAfter ( const PlayListItem * track) const

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

◆ itemAtLine()

PlayListItem * itemAtLine ( int lineIndex) const

Returns item at line lineIndex or nullptr if item at line lineIndex is not available.

◆ itemsAtLines()

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

Returns a list of the items, starting at line pos

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

◆ lineCount()

int lineCount ( ) const

Returns total line count.

◆ linesPerGroup()

int linesPerGroup ( ) const

Returns the number of lines needed to draw the group.

◆ 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.

◆ moveTracks()

void moveTracks ( int from,
int to )

Moves the track 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 nullptr 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 tracks 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 ( PlayListTrack * 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 tracks order.

◆ savePlaylist()

void savePlaylist ( const QString & f_name)

Saves current songs to the playlist with f_name name.

◆ scrollTo

void scrollTo ( int trackIndex)
slot

Ensures that the playlist track at trackIndex is visible.

◆ scrollToRequest

void scrollToRequest ( int trackIndex)
signal

Tells playlist widget to show track at index trackIndex.

◆ selectAll

void selectAll ( )
slot

Selects all items.

◆ selectedLines()

QList< int > selectedLines ( ) const

Returns a list of the selected lines.

◆ selectedTrackIndexes()

QList< int > selectedTrackIndexes ( ) const

Returns list with selected track indexes.

◆ selectedTracks()

QList< PlayListTrack * > selectedTracks ( ) const

Returns list of PlayListTrack pointers that are selected.

◆ setCurrent() [1/2]

bool setCurrent ( int index)

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

Parameters
indexNumber of the track.

◆ setCurrent() [2/2]

bool setCurrent ( PlayListTrack * track)

Sets current track to track. 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/3]

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() [2/3]

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() [3/3]

void setSelected ( PlayListItem * item,
bool selected = true )

Sets the selected state of the item to select

Parameters
itemTrack or group pointer.
selectedSelection state (true - select, false - unselect)

◆ setSelectedLine()

void setSelectedLine ( int line,
bool selected = true )

Selects or unselects group or track at line line.

Parameters
lineLine number.
selectedSelection state.

◆ setSelectedLines()

void setSelectedLines ( int firstLine,
int lastLine,
bool selected = true )

Sets the selected state of the list of items range.

Parameters
firstLineFirts line in the range.
lastLineLast line in the range.
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 ( PlayListModel::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 ( PlayListModel::SortMode mode)
slot

Sorts selected items in mode sort mode.

◆ stopAfterSelected

void stopAfterSelected ( )
slot

Toggles 'stop after selected' feature.

◆ subIndexOfLine()

int subIndexOfLine ( int lineIndex) const

Return sub-index of the line lineIndex.

◆ 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 nullptr if track doesn't exist.

◆ trackAtLine()

PlayListTrack * trackAtLine ( int lineIndex) const

Returns track at line lineIndex or nullptr if track at line lineIndex is not available.

◆ trackCount()

int trackCount ( ) const

Returns number of tracks.

◆ trackIndexAtLine()

int trackIndexAtLine ( int lineIndex) const

Return track index of the line lineIndex. Returns -1 if the line does not contain track.

◆ tracks()

QList< PlayListTrack * > tracks ( ) const

Returns list of all PlayListTrack pointers.

◆ tracksAdded

void tracksAdded ( const QList< PlayListTrack * > & tracks)
signal

Emitted when new tracks have added.

Parameters
tracksA list of pointers of the new playlist tracks.

◆ updateMetaData

void updateMetaData ( )
slot

Requires to update metadata.


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