Extensions/Qt: information panel for Extensions
[vlc.git] / modules / gui / qt4 / dialogs / plugins.hpp
index f862703..31298dc 100644 (file)
 #define QVLC_PLUGIN_DIALOG_H_ 1
 
 #include "util/qvlcframe.hpp"
+#include "util/singleton.hpp"
 
+#include <vlc_extensions.h>
+
+#include <QStringList>
+#include <QTreeWidgetItem>
+#include <QListWidgetItem>
+
+class QLabel;
+class QTabWidget;
+class QComboBox;
 class QTreeWidget;
 class QLineEdit;
-
+class QTextBrowser;
+class PluginTab;
+class ExtensionTab;
+class ExtensionListItem;
 class SearchLineEdit;
-class PluginDialog : public QVLCFrame
+
+class PluginDialog : public QVLCFrame, public Singleton<PluginDialog>
 {
     Q_OBJECT;
-public:
-    PluginDialog( intf_thread_t * );
+
 private:
-    void FillTree();
+    PluginDialog( intf_thread_t * );
     virtual ~PluginDialog();
 
+    QTabWidget *tabs;
+    PluginTab *pluginTab;
+    ExtensionTab *extensionTab;
+
+    friend class Singleton<PluginDialog>;
+};
+
+class PluginTab : public QVLCFrame
+{
+    Q_OBJECT;
+
+private:
+    PluginTab( intf_thread_t *p_intf );
+    virtual ~PluginTab();
+
+    void FillTree();
     QTreeWidget *treePlugins;
     SearchLineEdit *edit;
+
 private slots:
-    void search( const QString );
+    void search( const QString& );
+
+    friend class PluginDialog;
+};
+
+class ExtensionTab : public QVLCFrame
+{
+    Q_OBJECT;
+
+private:
+    ExtensionTab( intf_thread_t *p_intf );
+    virtual ~ExtensionTab();
+
+    QComboBox *extList;
+    QLabel *author, *version, *url;
+    QTextBrowser *description;
+    QLineEdit *name;
+
+private slots:
+    void fillList();
+    void selectionChanged( int index );
+    void reloadExtensions();
+
+    friend class PluginDialog;
+};
+
+class PluginTreeItem : public QTreeWidgetItem
+{
+public:
+    PluginTreeItem(QStringList &qs_item, int Type = QTreeWidgetItem::Type)
+            : QTreeWidgetItem (qs_item, Type) {}
+    virtual ~PluginTreeItem() {}
+
+    virtual bool operator< ( const QTreeWidgetItem & other ) const;
 };
 
 #endif