]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/components/playlist/playlist_item.hpp
Qt: Rework Models.
[vlc] / modules / gui / qt4 / components / playlist / playlist_item.hpp
index c3d6aee4f32d66d49391161921f4c095948bc023..1aa7d06cb6b09eea9c8d6af412fec3f1067ee0a2 100644 (file)
 #endif
 
 #include <QList>
+#include <QString>
+#include <QUrl>
+
+enum
+{
+    INPUTITEM_ID = 1,
+    PLAYLIST_ID,
+    MLMEDIA_ID
+};
 
 class AbstractPLItem
 {
     friend class PLItem; /* super ugly glue stuff */
     friend class MLItem;
+    friend class VLCModel;
     friend class PLModel;
     friend class MLModel;
 
+public:
+    virtual ~AbstractPLItem() {}
+
 protected:
-    virtual int id() const = 0;
+    virtual int id( int type ) = 0;
     int childCount() const { return children.count(); }
     int indexOf( AbstractPLItem *item ) const { return children.indexOf( item ); };
     int lastIndexOf( AbstractPLItem *item ) const { return children.lastIndexOf( item ); };
@@ -47,7 +60,10 @@ protected:
     void insertChild( AbstractPLItem *item, int pos = -1 ) { children.insert( pos, item ); }
     void appendChild( AbstractPLItem *item ) { insertChild( item, children.count() ); } ;
     virtual AbstractPLItem *child( int id ) const = 0;
+    void removeChild( AbstractPLItem *item );
     void clearChildren();
+    virtual QUrl getURI() const = 0;
+    virtual QString getTitle() const = 0;
 
     QList<AbstractPLItem *> children;
     AbstractPLItem *parentItem;
@@ -60,23 +76,24 @@ class PLItem : public AbstractPLItem
 public:
     virtual ~PLItem();
     bool hasSameParent( PLItem *other ) { return parent() == other->parent(); }
-    bool operator< ( PLItem& );
+    bool operator< ( AbstractPLItem& );
 
 private:
     /* AbstractPLItem */
-    int id() const { return i_id; };
+    int id( int type );
     input_item_t *inputItem() { return p_input; }
     AbstractPLItem *child( int id ) const { return children.value( id ); };
+    virtual QUrl getURI() const;
+    virtual QString getTitle() const;
 
     /* Local */
     PLItem( playlist_item_t *, PLItem *parent );
     int row();
-    void removeChild( PLItem * );
     void takeChildAt( int );
 
     PLItem( playlist_item_t * );
     void init( playlist_item_t *, PLItem * );
-    int i_id;
+    int i_playlist_id;
     input_item_t *p_input;
 };