From 06d1877811fa6aa97dddc0e03bcde4e766928c87 Mon Sep 17 00:00:00 2001 From: vovanec Date: Thu, 7 Feb 2008 13:36:34 +0000 Subject: new directory structure git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@232 90c681e8-e032-0410-971d-27865f9a5e38 --- src/playlistmodel.h | 377 ---------------------------------------------------- 1 file changed, 377 deletions(-) delete mode 100644 src/playlistmodel.h (limited to 'src/playlistmodel.h') diff --git a/src/playlistmodel.h b/src/playlistmodel.h deleted file mode 100644 index b3ac19c04..000000000 --- a/src/playlistmodel.h +++ /dev/null @@ -1,377 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 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 -#include -#include -#include -#include -#include - -//#include "fileloader.h" -class FileLoader; - -/** - @author Ilya Kotov -*/ - -class MediaFile; -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; - QListm_selected_rows; -}; - -/*! - * Helper class used for tags update after details dialog closing. - * @author Vladimir Kuznetsov - */ -class TagUpdater : public QObject -{ - Q_OBJECT - QObject* m_observable; - MediaFile* m_file; -public: - TagUpdater(QObject* o,MediaFile* f); -protected slots: - void updateTag(); -}; - - -class PlayListModel : public QObject -{ - Q_OBJECT -public: - PlayListModel(QObject *parent = 0); - - ~PlayListModel(); - - int count(); - MediaFile* currentItem(); - int row(MediaFile* f)const - { - return m_files.indexOf(f); - } - MediaFile* item(int row)const - { - return m_files.at(row); - } - int currentRow(); - bool setCurrent (int); - bool isSelected(int); - void setSelected(int, bool); - - bool next(); - bool previous(); - - QList getTitles(int,int); - QList 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(MediaFile* f) 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(MediaFile* f)const - { - return m_queued_songs.indexOf(f); - } - - /*! - * 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 getSelectedRows()const; - /*! - * Returns vector of \b MediaFile pointers that are selected. - */ - QList getSelectedItems()const; - - QList items()const - { - return m_files; - } - - /*! - * 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; - } - - /*! - * Registers playlist format parser. - */ - bool registerPlaylistFormat(PlaylistFormat* p); - - /*! - * Checks and loads external playlist format plugins - */ - void loadExternalPlaylistFormats(); - - /*! - * Returns vector of reistered format parsers. - */ - const QList registeredPlaylistFormats()const - { - return m_registered_pl_formats.values(); - } - - const QStringList registeredPlaylistFormatNames()const - { - return m_registered_pl_formats.keys(); - } - - /*! - * 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 - }; - -signals: - void listChanged(); - void currentChanged(); - -public slots: - void load(MediaFile *); - 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(MediaFile* f); - - void preparePlayState(); - -private: - - /*! - * This internal method performs sorting of \b list_to_sort list of items. - */ - void doSort(int mode,QList& 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 m_files; - QList m_editing_files; - MediaFile* 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. - */ - QListm_queued_songs; - - QMap m_registered_pl_formats; - - /*! - * 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 GuardedFileLoader; - - /*! Vector of currently running file loaders. - * All loaders are automatically sheduled for deletion - * when finished. - */ - QVector m_running_loaders; - - friend class MainWindow; -}; - - -#endif -- cgit v1.2.3-13-gbd6f