diff options
Diffstat (limited to 'src/ui/playlistmodel.h')
| -rw-r--r-- | src/ui/playlistmodel.h | 353 |
1 files changed, 0 insertions, 353 deletions
diff --git a/src/ui/playlistmodel.h b/src/ui/playlistmodel.h deleted file mode 100644 index a5231b44f..000000000 --- a/src/ui/playlistmodel.h +++ /dev/null @@ -1,353 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006-2008 by Ilya Kotov * - * forkotov02@hotmail.ru * - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef PLAYLISTMODEL_H -#define PLAYLISTMODEL_H - -#include <QObject> -#include <QString> -#include <QStringList> -#include <QMap> -#include <QPointer> -#include <QVector> - -//#include "fileloader.h" -class FileLoader; - -/** - @author Ilya Kotov <forkotov02@hotmail.ru> -*/ - -class PlayListItem; -class PlayState; -class PlaylistFormat; -class PlayListModel; - -struct SimpleSelection -{ - SimpleSelection() - { - ; - } - inline bool isValid()const - { - return (m_bottom != -1) && (m_anchor != -1) && (m_top != -1); - } - inline void dump()const - { - qWarning("top: %d\tbotom: %d\tanchor: %d",m_top,m_bottom,m_anchor); - } - inline int count()const - { - return m_bottom - m_top + 1; - } - int m_bottom; - int m_top; - int m_anchor; - QList<int>m_selected_rows; -}; - -/*! - * Helper class used for tags update after details dialog closing. - * @author Vladimir Kuznetsov <vovanec@gmail.com> - */ -class TagUpdater : public QObject -{ - Q_OBJECT - QObject* m_observable; - PlayListItem* m_item; -public: - TagUpdater(QObject* o, PlayListItem* item); -protected slots: - void updateTag(); -}; - - -class PlayListModel : public QObject -{ - Q_OBJECT -public: - PlayListModel(QObject *parent = 0); - - ~PlayListModel(); - - int count(); - PlayListItem* currentItem(); - int row(PlayListItem* item)const - { - return m_items.indexOf(item); - } - PlayListItem* item(int row)const - { - return m_items.at(row); - } - int currentRow(); - bool setCurrent (int); - bool isSelected(int); - void setSelected(int, bool); - - bool next(); - 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 - */ - bool isQueued(PlayListItem* item) const; - - bool isRepeatableList()const - { - return is_repeatable_list; - } - - /*! - * 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 - */ - int queuedIndex(PlayListItem* item)const - { - 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. - */ - QList<int> getSelectedRows()const; - /*! - * Returns vector of \b PlayListItem pointers that are selected. - */ - QList<PlayListItem*> getSelectedItems()const; - - 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. - */ - int totalLength()const - { - return m_total_length; - } - - /*! - * Loads playlist with \b f_name name. - */ - void loadPlaylist(const QString& f_name); - - /*! - * Saves current songs to the playlist with \b f_name name. - */ - void savePlaylist(const QString& f_name); - - /*! - * Enum of available sort modes - */ - enum SortMode - { - TITLE,FILENAME,PATH_AND_FILENAME,DATE,TRACK - }; - -signals: - void listChanged(); - void currentChanged(); - void firstAdded(); - -public slots: - void load(PlayListItem *); - void clear(); - void clearSelection(); - void removeSelected(); - void removeUnselected(); - void invertSelection(); - void selectAll(); - void showDetails(); - void doCurrentVisibleRequest(); - - void addFile(const QString&); - - /*! - * 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), - * returns \b TRUE if at least one file has been successfully loaded, - * otherwise \b FALSE - */ - bool setFileList(const QStringList&); - - void addFileList(const QStringList &l); - - void randomizeList(); - void reverseList(); - - /*! - * Prepares model for shuffle playing. \b yes parameter is 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. - */ - 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(); - -private: - - /*! - * This internal method performs sorting of \b list_to_sort list of items. - */ - void doSort(int mode,QList<PlayListItem*>& list_to_sort); - /*! - * 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); - -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) - PlayState* m_play_state; - - bool m_block_update_signals; - - int m_total_length; - - typedef QPointer<FileLoader> GuardedFileLoader; - - /*! Vector of currently running file loaders. - * All loaders are automatically sheduled for deletion - * when finished. - */ - QVector<GuardedFileLoader> m_running_loaders; - - friend class MainWindow; -}; - - -#endif |
