diff options
Diffstat (limited to 'src/qmmpui')
| -rw-r--r-- | src/qmmpui/playlistitem.h | 70 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.h | 296 |
2 files changed, 267 insertions, 99 deletions
diff --git a/src/qmmpui/playlistitem.h b/src/qmmpui/playlistitem.h index 6f7a6755d..85241a70e 100644 --- a/src/qmmpui/playlistitem.h +++ b/src/qmmpui/playlistitem.h @@ -25,36 +25,82 @@ class FileInfo; class QSettings; -/** - @author Ilya Kotov <forkotov02@hotmail.ru> -*/ + +/** @brief The QTableWidgetItem class provides an item for use with the PlayListModel class. + * @author Ilya Kotov <forkotov02@hotmail.ru> + */ class PlayListItem : public AbstractPlaylistItem { public: /*! - * Current state of media file. + * Current state of playlist item. * FREE - instance is free and may be deleted * EDITING - instance is currently busy in some kind of operation(tags editing etc.) - * and can't be deleted at the moment. Set flag SCHEDULED_FOR_DELETION for it + * and can't be deleted at the moment. Set flag SCHEDULED_FOR_DELETION for it * instead of delete operator call. */ - enum FLAGS{FREE = 0,EDITING,SCHEDULED_FOR_DELETION}; + enum FLAGS + { + FREE = 0, /*!< instance is free and may be deleted */ + EDITING, /*!< instance is currently busy */ + SCHEDULED_FOR_DELETION /*!< instance is sheduled for deletion */ + }; + /*! + * Constructs an empty plalist item. + */ PlayListItem(); + /*! + * Constructs plalist item with given metadata. + * @param info Media file information. + */ PlayListItem(FileInfo *info); - + /*! + * Object destructor. + */ ~PlayListItem(); - - //playlist support - void setSelected(bool yes); + /*! + * Sets item selection flag to \b select + * @param select State of selection (\b true select, \b false unselect) + */ + void setSelected(bool select); + /*! + * Return \b true if item is selected, otherwise \b false. + * @param yes State of current (\b true - set flag, \b false - unset flag) + */ bool isSelected() const; + /*! + * It is used by PlayListModel class. + */ void setCurrent(bool yes); + /*! + * Returns \b true if the item is the current item; otherwise returns \b false. + */ bool isCurrent() const; - FLAGS flag()const; + /*! + * Returns current state of the playlist item. + */ + FLAGS flag() const; + /*! + * Sets state of the playlist item. + */ void setFlag(FLAGS); + /*! + * Returns item short title. + */ const QString text() const; + /*! + * Direct access to the item short title. + * @param title New short title. + */ void setText(const QString &title); - //modify functions + /*! + * Updates current metadata. + * @param metaData Map with metadata values. + */ void updateMetaData(const QMap <Qmmp::MetaData, QString> &metaData); + /*! + * Gets new metadata from file (works for local files only). + */ void updateTags(); private: diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h index d133f25d6..500182ce1 100644 --- a/src/qmmpui/playlistmodel.h +++ b/src/qmmpui/playlistmodel.h @@ -28,30 +28,41 @@ #include <QVector> class FileLoader; - -/** - @author Ilya Kotov <forkotov02@hotmail.ru> -*/ - class PlayListItem; class PlayState; class PlaylistFormat; class PlayListModel; +/*! @brief Helper class that keeps track of a view's selected items. + * + * @author Vladimir Kuznetsov <vovanec@gmail.com> + */ struct SimpleSelection { + /*! + * Constructs an empty selection model. + */ SimpleSelection() { ; } + /*! + * Returns \p true if this selection is valid; otherwise returns \p false. + */ inline bool isValid()const { return (m_bottom != -1) && (m_anchor != -1) && (m_top != -1); } + /*! + * Prints object state. + */ inline void dump()const { qWarning("top: %d\tbotom: %d\tanchor: %d",m_top,m_bottom,m_anchor); } + /*! + * Returns number of selected items. + */ inline int count()const { return m_bottom - m_top + 1; @@ -61,9 +72,8 @@ struct SimpleSelection int m_anchor; QList<int>m_selected_rows; }; - -/*! - * Helper class used for tags update after details dialog closing. +/*! @brief Helper class used for tags update after details dialog closing. + * * @author Vladimir Kuznetsov <vovanec@gmail.com> */ class TagUpdater : public QObject @@ -78,51 +88,101 @@ public: protected slots: void updateTag(); }; - - +/*! @brief This class provides a data model for the playlist. + * + * @author Vladimir Kuznetsov <vovanec@gmail.com> + * @author Ilya Kotov <forkotov02@hotmail.ru> + */ class PlayListModel : public QObject { Q_OBJECT public: + /*! + * Constructs a playlist model. + * @param parent QObject parent + */ PlayListModel(QObject *parent = 0); - + /*! + * Object destructor. + */ ~PlayListModel(); - + /*! + * Returns number of items. + */ int count(); + /*! + * Returns the current item. + */ PlayListItem* currentItem(); + /*! + * Returns the row of the \b item + */ int row(PlayListItem* item) const { return m_items.indexOf(item); } + /*! + * Returns the item of the \b row or 0 if item doesn't exist. + */ PlayListItem* item(int row) const; + /*! + * Returns current row. + */ int currentRow(); - bool setCurrent (int); - bool isSelected(int); - void setSelected(int, bool); - + /*! + * Sets current row number. + * Returns \b false if item with this number doesn't exist, otherwise \b true + * @param row Number of item. + */ + bool setCurrent (int row); + /*! + * Returns \b true if \b row is selected, otherwise \b false + */ + bool isSelected(int row); + /*! + * Sets the selected state of the item to \b select + * @param row Number of item. + * @param select Selection state (\b true - select, \b false - unselect) + */ + void setSelected(int row, bool select); + /*! + * Advances to the next item. Returns \b false if next iten doesn't exist, + * otherwise \b true + */ bool next(); + /*! + * Goes back to the previous item. Returns \b false if previous iten doesn't exist, + * otherwise \b true + */ bool previous(); - - QList <QString> getTitles(int,int); - QList <QString> getTimes(int,int); - - void moveItems(int from,int to); - /*! - * Returns \b true if \b f file is in play queue, else return \b false + * Returns a list of the formated titles. + * @param first First item. + * @param last Last item. + */ + QList <QString> getTitles(int first,int last); + /*! + * Returns a list of the formated durations. + * @param first First item. + * @param last Last item. + */ + QList <QString> getTimes(int first,int last); + /*! + * Moves the item at index position \b from to index position \b to + */ + void moveItems(int from, int to); + /*! + * Returns \b true if \b f file is in play queue, else returns \b false */ bool isQueued(PlayListItem* item) const; - /*! * Sets current song to the file that is nex in queue, if queue is empty - does nothing */ void setCurrentToQueued(); - /*! * Returns \b true if play queue is empty,otherwise - \b false. */ bool isEmptyQueue()const; - /*! * Returns index of \b f file in queue.e */ @@ -130,37 +190,34 @@ public: { return m_queued_songs.indexOf(item); } - /*! * Returns current selection(playlist can contain a lot of selections, * this method returns selection which \b row belongs to) */ const SimpleSelection& getSelection(int row); - /*! - * Returns vector with selected rows indexes. + * Returns list with selected rows indexes. */ QList<int> getSelectedRows()const; /*! - * Returns vector of \b PlayListItem pointers that are selected. + * Returns list of \b PlayListItem pointers that are selected. */ QList<PlayListItem*> getSelectedItems()const; - + /*! + * Returns list of all \b PlayListItem pointers. + */ QList<PlayListItem*> items()const { return m_items; } - /*! * Returns number of first item that selected upper the \b row item. */ int firstSelectedUpper(int row); - /*! * Returns number of first item that selected lower the \b row item. */ int firstSelectedLower(int row); - /*! * Returns total lenght in seconds of all songs. */ @@ -168,7 +225,6 @@ public: { return m_total_length; } - /*! * Loads playlist with \b f_name name. */ @@ -178,109 +234,188 @@ public: * Saves current songs to the playlist with \b f_name name. */ void savePlaylist(const QString& f_name); - + /*! + * Returns state of "Repeat All" option. + */ bool isRepeatableList() const; + /*! + * Returns state of "Shuffle" option. + */ bool isShuffle() const; - /*! * Enum of available sort modes */ enum SortMode { - TITLE,FILENAME,PATH_AND_FILENAME,DATE,TRACK + TITLE, /*!< by title */ + FILENAME, /*!< by file name */ + PATH_AND_FILENAME, /*!< by path and file name */ + DATE, /*!< by date */ + TRACK /*!< by track */ }; signals: + /*! + * Emitted when the state of PlayListModel has changed. + */ void listChanged(); + /*! + * Emitted when current item has changed. + */ void currentChanged(); + /*! + * Emitted when first item has added. + */ void firstAdded(); - void repeatableListChanged(bool); - void shuffleChanged(bool); + /*! + * Emitted when state of the "Repeat All" option has changed. + * @param state New state of the "Repeat All" option (\b true - enabled, \b false disabled) + */ + void repeatableListChanged(bool state); + /*! + * Emitted when state of the "Shuffle" option has changed. + * @param state New state of the "Shuffle" option (\b true - enabled, \b false disabled) + */ + void shuffleChanged(bool state); + /*! + * Emitted when other settings (format, metadata, etc) have changed. + */ void settingsChanged(); public slots: - void load(PlayListItem *); + /*! + * Adds \b item to the playlist. + */ + void load(PlayListItem *item); + /*! + * Removes all items. + */ void clear(); + /*! + * Clears selection. + */ void clearSelection(); + /*! + * Removes selected items. + */ void removeSelected(); + /*! + * Removes unselected items. + */ void removeUnselected(); + /*! + * Removes items with \b i index. + */ void removeAt (int i); + /*! + * Inverts selection (selects unselected items and unselects selected items) + */ void invertSelection(); + /*! + * Selects all items. + */ void selectAll(); + /*! + * Shows details for the first selected item. + */ void showDetails(); + /*! + * Emits update signals manually. + */ void doCurrentVisibleRequest(); - - void addFile(const QString&); - + /*! + * Adds file \b path to the playlist. File should be supported. + */ + void addFile(const QString &path); /*! * Adds the list \b l of files to the model. */ void addFiles(const QStringList& l); - /*! * Adds \b dir to the model. */ void addDirectory(const QString& dir); - /*! - * Loads list of files (regular files or directories), + * Removes previous items and loads list of files (regular files or directories), * returns \b TRUE if at least one file has been successfully loaded, * otherwise \b FALSE */ - bool setFileList(const QStringList&); - + bool setFileList(const QStringList &l); + /*! + * Loads list of files (regular files or directories) + */ void addFileList(const QStringList &l); - + /*! + * Randomly changes items order. + */ void randomizeList(); + /*! + * Reverces items order. + */ void reverseList(); - /*! - * Prepares model for shuffle playing. \b yes parameter is true - model iterates in shuffle mode. + * Prepares model for shuffle playing. \b yes parameter is \b true - model iterates in shuffle mode. */ void prepareForShufflePlaying(bool yes); - /*! - * Prepares model for shuffle playing. \b yes parameter is true - model iterates in repeat mode. - */ + * Prepares model for shuffle playing. \b yes parameter is true - model iterates in repeat mode. + */ void prepareForRepeatablePlaying(bool); - /*! * Sorts selected items in \b mode sort mode. */ void sortSelection(int mode); - /*! * Sorts items in \b mode sort mode. */ void sort(int mode); - /*! * Adds selected items to play queue. */ void addToQueue(); - /*! * Sets \b f media file to queue. */ void setQueued(PlayListItem* f); - - void preparePlayState(); - - /*! - * settings + * Returns state of the "Convert underscores to blanks" option (\b true - enabled, \b false - disabled). */ bool convertUnderscore(); + /*! + * Returns state of the "Convert %20 to blanks" option (\b true - enabled, \b false - disabled). + */ bool convertTwenty(); + /*! + * Returns the state of metadata usage (\b true - use, \b false - not use). + */ bool useMetadata(); + /*! + * Returns title format string. + */ const QString format() const; - void setConvertUnderscore(bool); - void setConvertTwenty(bool); - void setUseMetadata(bool); + /*! + * Sets the "Convert underscores to blanks" option state to \b enabled + * @param enabled Option state (\b true - enabled, \b false - disabled) + */ + void setConvertUnderscore(bool enabled); + /*! + * Sets the "Convert %20 to blanks" option state to \b enabled + * @param enabled Option state (\b true - enabled, \b false - disabled) + */ + void setConvertTwenty(bool enabled); + /*! + * Sets metadata usage option state to \b enabled + * @param enabled Option state (\b true - enabled, \b false - disabled) + */ + void setUseMetadata(bool enabled); + /*! + * Sets short title format + * @param format title format. (Expressions: %p - artist, %a - album, %t - title, %n - track, + * %g - genre, %f - file name, %F - full path, %y - year) + */ void setFormat(const QString &format); private: - /*! * This internal method performs sorting of \b list_to_sort list of items. */ @@ -289,71 +424,58 @@ private: * Returns topmost row in current selection */ int topmostInSelection(int); - /*! * Returns bottommost row in current selection */ int bottommostInSelection(int); - /*! * Creates and initializes file loader object. */ FileLoader* createFileLoader(); - - /*! * Is someone of file loaders is running? */ bool isFileLoaderRunning()const; - /*! * Removes items from model. If \b inverted is \b false - * selected items will be removed, else - unselected. */ void removeSelection(bool inverted = false); + void preparePlayState(); private: - QList <PlayListItem*> m_items; QList <PlayListItem*> m_editing_items; PlayListItem* m_currentItem; - int m_current; void readSettings(); void writeSettings(); - void setUpdatesEnabled(bool); - bool updatesEnabled()const { return !m_block_update_signals; } - /*! * This flyweight object represents current selection. */ SimpleSelection m_selection; - /*! * Songs in play queue. */ QList<PlayListItem*> m_queued_songs; - /*! * Is playlist repeatable? */ bool is_repeatable_list; - - /// Current playing state (Normal or Shuffle) + /*! + * Current playing state (Normal or Shuffle) + */ PlayState* m_play_state; - bool m_block_update_signals; - int m_total_length; - typedef QPointer<FileLoader> GuardedFileLoader; - - /*! Vector of currently running file loaders. + /*! + * Vector of currently running file loaders. * All loaders are automatically sheduled for deletion * when finished. */ |
