You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
3.2 KiB
109 lines
3.2 KiB
/***************************************************************************
|
|
* copyright : (C) 2005 Seb Ruiz <me@sebruiz.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 AMAROK_QUEUEMANAGER_H
|
|
#define AMAROK_QUEUEMANAGER_H
|
|
|
|
#include "playlistitem.h"
|
|
|
|
#include <kdialogbase.h> //baseclass
|
|
#include <tdelistview.h> //baseclass
|
|
|
|
#include <tqmap.h>
|
|
|
|
class KPushButton;
|
|
|
|
class QueueItem : public TDEListViewItem
|
|
{
|
|
public:
|
|
QueueItem( TQListView *parent, TQListViewItem *after, TQString t )
|
|
: TDEListViewItem( parent, after, t )
|
|
{ };
|
|
|
|
void paintCell( TQPainter *p, const TQColorGroup &cg, int column, int width, int align );
|
|
|
|
};
|
|
|
|
class QueueList : public TDEListView
|
|
{
|
|
TQ_OBJECT
|
|
|
|
|
|
friend class QueueManager;
|
|
|
|
public:
|
|
QueueList( TQWidget *parent, const char *name = 0 );
|
|
~QueueList() {};
|
|
|
|
bool hasSelection();
|
|
bool isEmpty() { return ( childCount() == 0 ); }
|
|
TQPtrList<TQListViewItem> 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
|
|
{
|
|
TQ_OBJECT
|
|
|
|
|
|
public:
|
|
QueueManager( TQWidget *parent = 0, const char *name = 0 );
|
|
~QueueManager();
|
|
|
|
TQPtrList<PlaylistItem> 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<TQListViewItem*, PlaylistItem*> 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 */
|