/*************************************************************************** * copyright : (C) 2005 Seb Ruiz * **************************************************************************/ /*************************************************************************** * * * 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 AMAROK_QUEUEMANAGER_H #define AMAROK_QUEUEMANAGER_H #include "playlistitem.h" #include //baseclass #include //baseclass #include class KPushButton; class QueueItem : public KListViewItem { public: QueueItem( TQListView *parent, TQListViewItem *after, TQString t ) : KListViewItem( parent, after, t ) { }; void paintCell( TQPainter *p, const TQColorGroup &cg, int column, int width, int align ); }; class QueueList : public KListView { Q_OBJECT TQ_OBJECT friend class QueueManager; public: QueueList( TQWidget *parent, const char *name = 0 ); ~QueueList() {}; bool hasSelection(); bool isEmpty() { return ( childCount() == 0 ); } TQPtrList selectedItems(); public slots: void moveSelectedUp(); void moveSelectedDown(); void removeSelected(); virtual void clear(); private: void contentsDragEnterEvent( TQDragEnterEvent *e ); void contentsDragMoveEvent( TQDragMoveEvent* e ); void contentsDropEvent( TQDropEvent *e ); void keyPressEvent( TQKeyEvent *e ); void viewportPaintEvent( TQPaintEvent* ); signals: void changed(); }; class QueueManager : public KDialogBase { Q_OBJECT TQ_OBJECT public: QueueManager( TQWidget *parent = 0, const char *name = 0 ); ~QueueManager(); TQPtrList newQueue(); static QueueManager *instance() { return s_instance; } public slots: void applyNow(); void addItems( TQListViewItem *after = 0 ); /// For the add button (uses selected playlist tracks) void changeQueuedItems( const PLItemList &in, const PLItemList &out ); /// For keeping queue/dequeue in sync void updateButtons(); private slots: void removeSelected(); void changed(); private: void insertItems(); void addQueuedItem( PlaylistItem *item ); void removeQueuedItem( PlaylistItem *item ); TQMap m_map; QueueList *m_listview; KPushButton *m_up; KPushButton *m_down; KPushButton *m_remove; KPushButton *m_add; KPushButton *m_clear; static QueueManager *s_instance; }; #endif /* AMAROK_QUEUEMANAGER_H */