]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/components/playlist/selector.hpp
Qt4: remove proto combo from open net tab
[vlc] / modules / gui / qt4 / components / playlist / selector.hpp
index 14f2b9007ed79aea75f583959a61e13118957cd3..3682b27769d1408b4b3a4662d2383c62ce61e83c 100644 (file)
 # include "config.h"
 #endif
 
-#include <QWidget>
+#include <QTreeWidget>
 #include <QTreeWidgetItem>
+#include <QStyledItemDelegate>
+#include <QPainter>
+#include <QPushButton>
+#include <QLabel>
+#include <QHBoxLayout>
 
 #include <vlc_playlist.h>
 
 #include "qt4.hpp"
 
-class QTreeWidget;
 class PlaylistWidget;
+class QVLCIconLabel;
 
-enum {
-    PL_TYPE,
-    ML_TYPE,
+enum SelectorItemType {
+    CATEGORY_TYPE,
     SD_TYPE,
+    PL_ITEM_TYPE
+};
+
+enum SpecialData {
+    IS_PODCAST = 1,
+    IS_PL,
+    IS_ML
+};
+
+enum {
+    TYPE_ROLE = Qt::UserRole,
+    NAME_ROLE, //QString
+    LONGNAME_ROLE, //QString
+    PL_ITEM_ROLE, //playlist_item_t*
+    PL_ITEM_ID_ROLE, //playlist_item_t->i_id
+    IN_ITEM_ROLE, //input_item_t->i_id
+    SPECIAL_ROLE //SpecialData
+};
+
+enum ItemAction {
+    ADD_ACTION,
+    RM_ACTION
+};
+
+class PLSelItem : public QWidget
+{
+    Q_OBJECT;
+public:
+    PLSelItem( QTreeWidgetItem*, const QString& );
+    void setText( const QString& );
+    void addAction( ItemAction, const QString& toolTip = 0 );
+    QTreeWidgetItem *treeItem() { return qitem; }
+    QString text() { return lbl->text(); }
+public slots:
+    void showAction();
+    void hideAction();
+private slots:
+    void triggerAction() { emit action( this ); }
+signals:
+    void action( PLSelItem* );
+private:
+    void enterEvent( QEvent* );
+    void leaveEvent( QEvent* );
+    QTreeWidgetItem* qitem;
+    QVLCIconLabel *lblAction;
+    QLabel *lbl;
+    QHBoxLayout *layout;
 };
 
 Q_DECLARE_METATYPE( playlist_item_t *);
-class PLSelector: public QWidget
+Q_DECLARE_METATYPE( input_item_t *);
+class PLSelector: public QTreeWidget
 {
     Q_OBJECT;
 public:
@@ -55,11 +107,25 @@ public:
 protected:
     friend class PlaylistWidget;
 private:
-    intf_thread_t *p_intf;
-    QTreeWidget *view;
+    QStringList mimeTypes () const;
+    bool dropMimeData ( QTreeWidgetItem * parent, int index, const QMimeData * data, Qt::DropAction action );
     void createItems();
+    PLSelItem * addItem (
+        SelectorItemType type, const QString& str, bool drop,
+        QTreeWidgetItem* parentItem = 0 );
+    PLSelItem * addPodcastItem( playlist_item_t *p_item );
+    inline PLSelItem * itemWidget( QTreeWidgetItem * );
+    intf_thread_t *p_intf;
+    QTreeWidgetItem *podcastsParent;
+    int podcastsParentId;
 private slots:
     void setSource( QTreeWidgetItem *item );
+    void plItemAdded( int, int );
+    void plItemRemoved( int );
+    void inputItemUpdate( input_item_t * );
+    void podcastAdd( PLSelItem* );
+    void podcastRemove( PLSelItem* );
+
 signals:
     void activated( playlist_item_t * );
 };