]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/dialogs/plugins.hpp
Qt: ExtensionListModel: don't specialize
[vlc] / modules / gui / qt4 / dialogs / plugins.hpp
index 20ba74081a5540009f4d86cab559f5d03dfa07ae..cb118b107840c3b174f1b08282a0670e69473bb2 100644 (file)
@@ -69,6 +69,13 @@ private:
 class PluginTab : public QVLCFrame
 {
     Q_OBJECT
+public:
+    enum
+    {
+        NAME = 0,
+        CAPABILITY,
+        SCORE
+    };
 
 protected:
     virtual void keyPressEvent( QKeyEvent *keyEvent );
@@ -100,6 +107,7 @@ private:
 
 private slots:
     void moreInformation();
+    void updateButtons();
 
 private:
     QListView *extList;
@@ -124,9 +132,32 @@ class ExtensionListModel : public QAbstractListModel
     Q_OBJECT
 
 public:
-    ExtensionListModel( QListView *view, intf_thread_t *p_intf );
+    /* Safe copy of the extension_t struct */
+    class ExtensionCopy
+    {
+
+    public:
+        ExtensionCopy( extension_t * );
+        ~ExtensionCopy();
+        QVariant data( int role ) const;
+
+    private:
+        QString name, title, description, shortdesc, author, version, url;
+        QPixmap *icon;
+    };
+
+    ExtensionListModel( QObject *parent, intf_thread_t *p_intf );
     virtual ~ExtensionListModel();
 
+    enum
+    {
+        DescriptionRole = Qt::UserRole,
+        VersionRole,
+        AuthorRole,
+        LinkRole,
+        NameRole
+    };
+
     virtual QVariant data( const QModelIndex& index, int role ) const;
     virtual QModelIndex index( int row, int column = 0,
                                const QModelIndex& = QModelIndex() ) const;
@@ -136,6 +167,7 @@ private slots:
     void updateList();
 
 private:
+
     intf_thread_t *p_intf;
     QList<ExtensionCopy*> extensions;
 };
@@ -143,7 +175,7 @@ private:
 class ExtensionItemDelegate : public QStyledItemDelegate
 {
 public:
-    ExtensionItemDelegate( intf_thread_t *p_intf, QListView *view );
+    ExtensionItemDelegate( QObject *parent );
     virtual ~ExtensionItemDelegate();
 
     virtual void paint( QPainter *painter,
@@ -151,21 +183,18 @@ public:
                         const QModelIndex &index ) const;
     virtual QSize sizeHint( const QStyleOptionViewItem &option,
                             const QModelIndex &index ) const;
+    virtual void initStyleOption( QStyleOptionViewItem *option,
+                                  const QModelIndex &index ) const;
 
 private:
-    QListView *view;
-    intf_thread_t *p_intf;
+    QMargins margins;
 };
 
 class ExtensionInfoDialog : public QVLCDialog
 {
 public:
-    ExtensionInfoDialog( const ExtensionCopy& extension,
+    ExtensionInfoDialog( const QModelIndex &index,
                          intf_thread_t *p_intf, QWidget *parent );
-    virtual ~ExtensionInfoDialog();
-
-private:
-    ExtensionCopy *extension;
 };
 
 #endif