X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fplaylist_model.hpp;h=eb3711258db9501c5e4d51de4cbffada0756d233;hb=30d0aba730ec2c15871d70b963b11f137f821b98;hp=38efe739706d5ef1200403427b69dc944870210c;hpb=7a57427bbc9487342e333ce2c63f237c55f4d66e;p=vlc diff --git a/modules/gui/qt4/playlist_model.hpp b/modules/gui/qt4/playlist_model.hpp index 38efe73970..eb3711258d 100644 --- a/modules/gui/qt4/playlist_model.hpp +++ b/modules/gui/qt4/playlist_model.hpp @@ -24,21 +24,24 @@ #ifndef _PLAYLIST_MODEL_H_ #define _PLAYLIST_MODEL_H_ +#include +#include +#include + #include #include #include - -#include -#include -#include +#include +#include class PLModel; +class QSignalMapper; class PLItem { public: - PLItem( int, int, PLItem *parent , PLModel *); - PLItem( playlist_item_t *, PLItem *parent, PLModel *); + PLItem( int, int, PLItem *parent , PLModel * ); + PLItem( playlist_item_t *, PLItem *parent, PLModel * ); ~PLItem(); int row() const; @@ -54,7 +57,7 @@ public: QString columnString( int col ) { return strings.value( col ); }; PLItem *parent() { return parentItem; }; - void update( playlist_item_t *, bool); + void update( playlist_item_t *, bool ); protected: QList children; QList strings; @@ -62,6 +65,9 @@ protected: int type; int i_id; int i_input_id; + int i_showflags; + + void updateview( void ); friend class PLModel; private: void init( int, int, PLItem *, PLModel * ); @@ -72,6 +78,7 @@ private: static int ItemUpdate_Type = QEvent::User + 2; static int ItemDelete_Type = QEvent::User + 3; static int ItemAppend_Type = QEvent::User + 4; +static int PLUpdate_Type = QEvent::User + 5; class PLEvent : public QEvent { @@ -94,26 +101,28 @@ class PLModel : public QAbstractItemModel Q_OBJECT public: - PLModel( playlist_t *, playlist_item_t *, int, QObject *parent = 0); + PLModel( playlist_t *, intf_thread_t *, + playlist_item_t *, int, QObject *parent = 0 ); ~PLModel(); /* All types of lookups / QModel stuff */ - QVariant data( const QModelIndex &index, int role) const; - Qt::ItemFlags flags( const QModelIndex &index) const; + QVariant data( const QModelIndex &index, int role ) const; + Qt::ItemFlags flags( const QModelIndex &index ) const; QVariant headerData( int section, Qt::Orientation orientation, - int role = Qt::DisplayRole) const; + int role = Qt::DisplayRole ) const; QModelIndex index( int r, int c, const QModelIndex &parent ) const; QModelIndex index( PLItem *, int c ) const; int itemId( const QModelIndex &index ) const; bool isCurrent( const QModelIndex &index ); - QModelIndex parent( const QModelIndex &index) const; + QModelIndex parent( const QModelIndex &index ) const; int childrenCount( const QModelIndex &parent = QModelIndex() ) const; int rowCount( const QModelIndex &parent = QModelIndex() ) const; int columnCount( const QModelIndex &parent = QModelIndex() ) const; bool b_need_update; int i_items_to_append; - void rebuild(); void rebuild( playlist_item_t *); + + void rebuild(); void rebuild( playlist_item_t * ); bool hasRandom(); bool hasLoop(); bool hasRepeat(); /* Actions made by the views */ @@ -121,6 +130,19 @@ public: void doDelete( QModelIndexList selected ); void search( QString search ); void sort( int column, Qt::SortOrder order ); + void removeItem( int ); + + /* DnD handling */ + Qt::DropActions supportedDropActions() const; + QMimeData* mimeData( const QModelIndexList &indexes ) const; + bool dropMimeData( const QMimeData *data, Qt::DropAction action, + int row, int column, const QModelIndex &target ); + QStringList mimeTypes() const; + + void sendArt( QString url ); + void removeArt( ); + + int shownFlags() { return rootItem->i_showflags; } private: void addCallbacks(); void delCallbacks(); @@ -129,6 +151,7 @@ private: PLItem *rootItem; playlist_t *p_playlist; + intf_thread_t *p_intf; int i_depth; static QIcon icons[ITEM_TYPE_NUMBER]; @@ -144,12 +167,13 @@ private: void UpdateNodeChildren( playlist_item_t *, PLItem * ); /* Actions */ - void recurseDelete( QList children, QModelIndexList *fullList); + void recurseDelete( QList children, QModelIndexList *fullList ); void doDeleteItem( PLItem *item, QModelIndexList *fullList ); /* Popup */ int i_popup_item, i_popup_parent; QModelIndexList current_selection; + QSignalMapper *ContextUpdateMapper; /* Lookups */ PLItem *FindById( PLItem *, int ); @@ -159,6 +183,9 @@ private: PLItem *p_cached_item_bi; int i_cached_id; int i_cached_input_id; +signals: + void artSet( QString ); + void shouldRemove( int ); public slots: void activateItem( const QModelIndex &index ); void activateItem( playlist_item_t *p_item ); @@ -171,6 +198,10 @@ private slots: void popupInfo(); void popupStream(); void popupSave(); +#ifdef WIN32 + void popupExplore(); +#endif + void viewchanged( int ); friend class PLItem; };