playlist.h 2.94 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
/***************************************************************************
                          playlist.h  -  description
                             -------------------
    begin                : Sat Feb 16 2002
    copyright            : (C) 2002 by Scott Wheeler
    email                : scott@slackorama.net
***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef PLAYLIST_H
#define PLAYLIST_H

#include <klistview.h>

#include <qstringlist.h>

#include "playlistitem.h"

class Playlist : public KListView
{
    Q_OBJECT
30

31 32
public:
    Playlist(QWidget *parent = 0, const char *name = 0);
33
    Playlist(const QFileInfo &playlistFile, QWidget *parent = 0, const char *name = 0);
34 35
    virtual ~Playlist();

36 37 38 39
    virtual void save();
    virtual void saveAs();

    virtual void refresh();
40

41
    virtual void clearItems(const PlaylistItemList &items);
42

43 44 45 46 47
    /** All of the files in the list. */
    QStringList files() const;
    /** All of the items in the list. */
    PlaylistItemList items() const;
    PlaylistItemList selectedItems() const;
48 49

    void remove();
50
    void remove(const PlaylistItemList &items);
51

52 53 54
    /** Allow duplicate files in the playlist. */
    void setAllowDuplicates(bool allow);

55 56
    /** This gets the next item to be played in the playlist. */
    static PlaylistItem *nextItem(PlaylistItem *current, bool random = false);
57

58 59 60
    /** This is being used as a mini-factory of sorts to make the construction
	of PlaylistItems virtual. */
    virtual PlaylistItem *createItem(const QFileInfo &file);
61

62
protected:
63 64 65
    virtual QDragObject *dragObject();
    virtual void contentsDropEvent(QDropEvent *e);
    virtual void contentsDragMoveEvent(QDragMoveEvent *e);
66

67 68 69 70 71
private:
    void setup();

    QStringList members;
    int processed;
72
    bool allowDuplicates;
73 74 75 76 77

private slots:
    void emitSelected();

signals:
78 79
    /** This signal is connected to PlaylistItem::refreshed() in the 
	PlaylistItem class. */
80 81
    void dataChanged();

82 83 84 85
    /** This signal is emitted when items are added to the collection list.  
	This happens in the createItem() method when items are added to the 
	collection. */
    void collectionChanged();
86

87 88
    /** This is emitted when the playlist selection is changed.  This is used
	primarily to notify the TagEditor of the new data. */
89
    void selectionChanged(const PlaylistItemList &selection);
90 91 92
};

#endif