]> git.sesse.net Git - vlc/commitdiff
Preferences
authorClément Stenac <zorglub@videolan.org>
Sat, 3 Jun 2006 18:03:40 +0000 (18:03 +0000)
committerClément Stenac <zorglub@videolan.org>
Sat, 3 Jun 2006 18:03:40 +0000 (18:03 +0000)
16 files changed:
modules/gui/qt4/Modules.am
modules/gui/qt4/components/preferences.cpp [new file with mode: 0644]
modules/gui/qt4/components/preferences.hpp [moved from modules/gui/qt4/components/preferences_tree.hpp with 54% similarity]
modules/gui/qt4/components/preferences_tree.cpp [deleted file]
modules/gui/qt4/components/preferences_widgets.cpp
modules/gui/qt4/components/preferences_widgets.hpp
modules/gui/qt4/dialogs/prefs_dialog.cpp [new file with mode: 0644]
modules/gui/qt4/dialogs/prefs_dialog.hpp [new file with mode: 0644]
modules/gui/qt4/dialogs_provider.cpp
modules/gui/qt4/pixmaps/advanced.xpm [new file with mode: 0644]
modules/gui/qt4/pixmaps/audio.xpm [new file with mode: 0644]
modules/gui/qt4/pixmaps/codec.xpm [new file with mode: 0644]
modules/gui/qt4/pixmaps/intf.xpm [new file with mode: 0644]
modules/gui/qt4/pixmaps/type_net.xpm [new file with mode: 0644]
modules/gui/qt4/pixmaps/type_playlist.xpm [new file with mode: 0644]
modules/gui/qt4/pixmaps/video.xpm [new file with mode: 0644]

index 2d72f7b7b766c08b2626e3eedb7f77a809569e8f..ed5d711bd2df459a074aa031993345e2aee88c6b 100644 (file)
@@ -18,9 +18,11 @@ TOMOC = main_interface \
        dialogs_provider \
        input_manager \
        dialogs/playlist \
+       dialogs/prefs_dialog \
        dialogs/streaminfo \
        components/infopanels \
        components/preferences_widgets \
+       components/preferences \
        util/input_slider
 MOCCPP := $(TOMOC:%=%.moc.cpp)
 
@@ -30,8 +32,10 @@ nodist_SOURCES_qt4 = \
                input_manager.moc.cpp \
                dialogs/playlist.moc.cpp \
                dialogs/streaminfo.moc.cpp \
+               dialogs/prefs_dialog.moc.cpp \
                components/infopanels.moc.cpp \
                components/preferences_widgets.moc.cpp \
+               components/preferences.moc.cpp \
                util/input_slider.moc.cpp
 
 if ENABLE_QT4
@@ -56,9 +60,11 @@ SOURCES_qt4 =        qt4.cpp \
                dialogs_provider.cpp \
                input_manager.cpp \
                dialogs/playlist.cpp \
+               dialogs/prefs_dialog.cpp \
                dialogs/streaminfo.cpp \
                components/infopanels.cpp \
                components/preferences_widgets.cpp \
+               components/preferences.cpp \
                util/input_slider.cpp
                $(NULL)
 
@@ -69,8 +75,16 @@ EXTRA_DIST += \
        input_manager.hpp \
        dialogs/playlist.hpp \
        dialogs/streaminfo.hpp \
+       dialogs/prefs_dialog.hpp \
        components/infopanels.hpp \
        components/preferences_widgets.hpp \
+       components/preferences.hpp \
        util/input_slider.hpp \
-       ui/input_stats.ui
-
+       ui/input_stats.ui \
+       pixmaps/advanced.xpm \
+       pixmaps/audio.xpm \
+       pixmaps/codec.xpm \
+       pixmaps/intf.xpm \
+       pixmaps/type_net.xpm \
+       pixmaps/type_playlist.xpm \
+       pixmaps/video.xpm
diff --git a/modules/gui/qt4/components/preferences.cpp b/modules/gui/qt4/components/preferences.cpp
new file mode 100644 (file)
index 0000000..50cd460
--- /dev/null
@@ -0,0 +1,518 @@
+/*****************************************************************************
+ * preferences_tree.cpp : Tree of modules for preferences
+ ****************************************************************************
+ * Copyright (C) 2000-2005 the VideoLAN team
+ * $Id: wxwidgets.cpp 15731 2006-05-25 14:43:53Z zorglub $
+ *
+ * Authors: Clément Stenac <zorglub@videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#include "components/preferences.hpp"
+#include "components/preferences_widgets.hpp"
+#include <vlc_config_cat.h>
+
+#include "pixmaps/audio.xpm"
+#include "pixmaps/video.xpm"
+#include "pixmaps/type_net.xpm"
+#include "pixmaps/type_playlist.xpm"
+#include "pixmaps/advanced.xpm"
+#include "pixmaps/codec.xpm"
+#include "pixmaps/intf.xpm"
+
+#include <QLabel>
+#include <QTreeWidget>
+#include <QTreeWidgetItem>
+#include <QVariant>
+#include <QString>
+#include <QFont>
+#include <QGroupBox>
+#include <QScrollArea>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+
+#define ITEM_HEIGHT 25
+
+/*********************************************************************
+ * The Tree
+ *********************************************************************/
+PrefsTree::PrefsTree( intf_thread_t *_p_intf, QWidget *_parent ) :
+                            QTreeWidget( _parent ), p_intf( _p_intf )
+{
+    module_t *p_module;
+    vlc_list_t *p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE,
+                                        FIND_ANYWHERE );
+    if( !p_list ) return;
+
+    setColumnCount( 1 );
+    setIconSize( QSize( ITEM_HEIGHT,ITEM_HEIGHT ) );
+
+#define BI( a,b) QIcon a##_icon = QIcon( QPixmap( b##_xpm ))
+    BI( audio, audio );
+    BI( video, video );
+    BI( input, codec );
+    BI( sout, type_net );
+    BI( advanced, advanced );
+    BI( playlist, type_playlist );
+    BI( interface, intf );
+#undef BI
+
+    /* Build the tree for the main module */
+    int i_index;
+    for( i_index = 0; i_index < p_list->i_count; i_index++ )
+    {
+        p_module = (module_t *)p_list->p_values[i_index].p_object;
+        if( !strcmp( p_module->psz_object_name, "main" ) )
+             break;
+    }
+    if( i_index < p_list->i_count )
+    {
+        module_config_t *p_item = p_module->p_config;
+        PrefsItemData *data = NULL;
+        QTreeWidgetItem *current_item = NULL;
+        if( p_item ) do
+        {
+            char *psz_help;
+            QIcon icon;
+            switch( p_item->i_type )
+            {
+            case CONFIG_CATEGORY:
+                if( p_item->i_value == -1 ) break;
+                data = new PrefsItemData();
+                data->name = QString( config_CategoryNameGet
+                                               ( p_item->i_value ) );
+                psz_help = config_CategoryHelpGet( p_item->i_value );
+                if( psz_help )
+                    data->help = QString( psz_help );
+                else
+                    data->help.clear();
+                data->i_type = TYPE_CATEGORY;
+                data->i_object_id = p_item->i_value;
+
+                switch( p_item->i_value )
+                {
+#define CI(a,b) case a: icon = b##_icon;break
+                CI( CAT_AUDIO, audio );
+                CI( CAT_VIDEO, video );
+                CI( CAT_INPUT, input );
+                CI( CAT_SOUT, sout );
+                CI( CAT_ADVANCED, advanced );
+                CI( CAT_PLAYLIST, playlist );
+                CI( CAT_INTERFACE, interface );
+#undef CI
+                }
+
+                current_item = new QTreeWidgetItem();
+                current_item->setText( 0, data->name );
+                current_item->setIcon( 0 , icon );
+                current_item->setData( 0, Qt::UserRole,
+                                       qVariantFromValue( data ) );
+                addTopLevelItem( current_item );
+                //fprintf( stderr, "Adding %s\n", current_item->text(0).toLatin1().data() );
+                break;
+            case CONFIG_SUBCATEGORY:
+                if( p_item->i_value == -1 ) break;
+                if( data &&
+                    ( p_item->i_value == SUBCAT_VIDEO_GENERAL ||
+                      p_item->i_value == SUBCAT_ADVANCED_MISC ||
+                      p_item->i_value == SUBCAT_INPUT_GENERAL ||
+                      p_item->i_value == SUBCAT_INTERFACE_GENERAL ||
+                      p_item->i_value == SUBCAT_SOUT_GENERAL||
+                      p_item->i_value == SUBCAT_PLAYLIST_GENERAL||
+                      p_item->i_value == SUBCAT_AUDIO_GENERAL ) )
+                {
+                    // Data still contains the correct thing
+                    data->i_type = TYPE_CATSUBCAT;
+                    data->i_subcat_id = p_item->i_value;
+                    data->name = QString( config_CategoryNameGet(
+                                                p_item->i_value ) );
+                    psz_help = config_CategoryHelpGet( p_item->i_value );
+                    if( psz_help )
+                        data->help = QString( psz_help );
+                    else
+                        data->help.clear();
+                    current_item->setData( 0, Qt::UserRole,
+                                           QVariant::fromValue( data ) );
+                    continue;
+                }
+                data = new PrefsItemData();
+                data->name = QString( config_CategoryNameGet( p_item->i_value));
+                psz_help = config_CategoryHelpGet( p_item->i_value );
+                if( psz_help )
+                    data->help = QString( psz_help );
+                else
+                    data->help.clear();
+                data->i_type = TYPE_SUBCATEGORY;
+                data->i_object_id = p_item->i_value;
+
+                assert( current_item );
+
+                /* TODO : Choose the image */
+                QTreeWidgetItem *subcat_item = new QTreeWidgetItem();
+                subcat_item->setText( 0, data->name );
+                //item->setIcon( 0 , XXX );
+                subcat_item->setData( 0, Qt::UserRole,
+                                      qVariantFromValue(data) );
+                subcat_item->setSizeHint( 0, QSize( -1, ITEM_HEIGHT ) );
+                current_item->addChild( subcat_item );
+                break;
+            }
+        } while( p_item->i_type != CONFIG_HINT_END && p_item++ );
+    }
+
+    /* Build the tree of plugins */
+    for( int i_index = 0; i_index < p_list->i_count; i_index++ )
+    {
+        module_config_t *p_item;
+        int i_subcategory = -1, i_category = -1, i_options = 0;
+        p_module = (module_t *)p_list->p_values[i_index].p_object;
+
+        // Main module excluded
+        if( !strcmp( p_module->psz_object_name, "main" ) ) continue;
+
+        /* Exclude empty plugins (submodules don't have config options, they
+         * are stored in the parent module) */
+        if( p_module->b_submodule ) continue;
+
+        p_item = p_module->p_config;
+        if( !p_item ) continue;
+
+        do {
+            if( p_item->i_type == CONFIG_CATEGORY )
+                i_category = p_item->i_value;
+            else if( p_item->i_type == CONFIG_SUBCATEGORY )
+                i_subcategory = p_item->i_value;
+            if( p_item->i_type & CONFIG_ITEM )
+                i_options++;
+
+            if( i_options > 0 && i_category >= 0 && i_subcategory >= 0 )
+                break;
+        } while( p_item->i_type != CONFIG_HINT_END && p_item++ );
+
+        if( !i_options ) continue; // Nothing to display
+
+        // Locate the category item;
+        QTreeWidgetItem *subcat_item = NULL;
+        bool b_found = false;
+        for( int i_cat_index = 0 ; i_cat_index < topLevelItemCount();
+                                   i_cat_index++ )
+        {
+            QTreeWidgetItem *cat_item = topLevelItem( i_cat_index );
+            PrefsItemData *data = cat_item->data( 0, Qt::UserRole ).
+                                             value<PrefsItemData *>();
+            if( data->i_object_id == i_category )
+            {
+                for( int i_sc_index = 0; i_sc_index < cat_item->childCount();
+                         i_sc_index++ )
+                {
+                    subcat_item = cat_item->child( i_sc_index );
+                    PrefsItemData *sc_data = subcat_item->data(0, Qt::UserRole).
+                                                value<PrefsItemData *>();
+                    if( sc_data && sc_data->i_object_id == i_subcategory )
+                    {
+                        b_found = true;
+                        break;
+                    }
+                }
+                if( !b_found )
+                {
+                    subcat_item = cat_item;
+                    b_found = true;
+                }
+                break;
+            }
+        }
+        if( !b_found ) continue;
+
+        PrefsItemData *module_data = new PrefsItemData();
+        module_data->b_submodule = p_module->b_submodule;
+        module_data->i_type = TYPE_MODULE;
+        module_data->i_object_id = p_module->b_submodule ?
+                         ((module_t *)p_module->p_parent)->i_object_id :
+                         p_module->i_object_id;
+        module_data->help.clear();
+        // TODO image
+        QTreeWidgetItem *module_item = new QTreeWidgetItem();
+        module_item->setText( 0, p_module->psz_shortname ?
+                      p_module->psz_shortname : p_module->psz_object_name );
+        //item->setIcon( 0 , XXX );
+        module_item->setData( 0, Qt::UserRole,
+                              QVariant::fromValue( module_data) );
+        module_item->setSizeHint( 0, QSize( -1, ITEM_HEIGHT ) );
+        subcat_item->addChild( module_item );
+    }
+
+    /* We got everything, just sort a bit */
+    sortItems( 0, Qt::AscendingOrder );
+
+    vlc_list_release( p_list );
+}
+
+PrefsTree::~PrefsTree() {}
+
+void PrefsTree::ApplyAll()
+{
+    DoAll( false );
+}
+
+void PrefsTree::CleanAll()
+{
+    DoAll( true );
+}
+
+/// \todo When cleaning, we should remove the panel ?
+void PrefsTree::DoAll( bool doclean )
+{
+    for( int i_cat_index = 0 ; i_cat_index < topLevelItemCount();
+             i_cat_index++ )
+    {
+        QTreeWidgetItem *cat_item = topLevelItem( i_cat_index );
+        for( int i_sc_index = 0; i_sc_index <= cat_item->childCount();
+                 i_sc_index++ )
+        {
+            QTreeWidgetItem *sc_item = cat_item->child( i_sc_index );
+            for( int i_module = 0 ; i_module <= sc_item->childCount();
+                     i_module++ )
+            {
+                PrefsItemData *data = sc_item->child( i_sc_index )->
+                                                 data( 0, Qt::UserRole ).
+                                                 value<PrefsItemData *>();
+                if( data->panel && doclean )
+                    data->panel->Clean();
+                else if( data->panel )
+                    data->panel->Apply();
+            }
+        }
+    }
+}
+
+
+/*********************************************************************
+ * The Panel
+ *********************************************************************/
+PrefsPanel::PrefsPanel( QWidget *_parent ) : QWidget( _parent )
+{}
+
+PrefsPanel::PrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
+                        PrefsItemData * data ) :
+                        QWidget( _parent ), p_intf( _p_intf )
+{
+    module_config_t *p_item;
+    module_t *p_module;
+    vlc_list_t *p_list = NULL;
+    global_layout = new QVBoxLayout();
+
+    if( data->i_type == TYPE_CATEGORY )
+    {
+        /* TODO */
+            return;
+    }
+    else if( data->i_type == TYPE_MODULE )
+    {
+        p_module = (module_t *) vlc_object_get( p_intf, data->i_object_id );
+    }
+    else
+    {
+        /* List the plugins */
+        int i_index;
+        vlc_bool_t b_found = VLC_FALSE;
+        p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE, FIND_ANYWHERE );
+        if( !p_list ) return;
+
+        for( i_index = 0; i_index < p_list->i_count; i_index++ )
+        {
+            p_module = (module_t *)p_list->p_values[i_index].p_object;
+            if( !strcmp( p_module->psz_object_name, "main" ) )
+            {
+                b_found = VLC_TRUE;
+                break;
+            }
+        }
+        if( !p_module && !b_found )
+        {
+            msg_Warn( p_intf, "unable to create preferences (main not found)");
+            return;
+        }
+    }
+
+    if( p_module->b_submodule )
+        p_item = ((module_t *)p_module->p_parent)->p_config;
+    else
+        p_item = p_module->p_config;
+
+    if( data->i_type == TYPE_SUBCATEGORY || data->i_type ==  TYPE_CATSUBCAT )
+    {
+        do
+        {
+            if( p_item->i_type == CONFIG_SUBCATEGORY &&
+                            ( data->i_type == TYPE_SUBCATEGORY &&
+                              p_item->i_value == data->i_object_id ) ||
+                            ( data->i_type == TYPE_CATSUBCAT &&
+                              p_item->i_value == data->i_subcat_id ) )
+            {
+                break;
+            }
+            if( p_item->i_type == CONFIG_HINT_END ) break;
+        } while( p_item++ );
+    }
+
+    QString head;
+    if( data->i_type == TYPE_SUBCATEGORY || data->i_type ==  TYPE_CATSUBCAT )
+    {
+        head = QString( data->name );
+        p_item++; // Why that ?
+    }
+    else
+        head = QString( p_module->psz_longname );
+
+    QLabel *label = new QLabel( head, this );
+    QFont font = label->font();
+    font.setPointSize( font.pointSize() + 2 ); font.setBold( true );
+    label->setFont( font );
+    QLabel *help = new QLabel( data->help, this );
+    help->setWordWrap( true );
+
+    global_layout->addWidget( label );
+    global_layout->addWidget( help );
+
+    QGroupBox *box = NULL;
+    QVBoxLayout *boxlayout = NULL;
+
+    QScrollArea *scroller= new QScrollArea;
+    QWidget *scrolled_area = new QWidget;
+
+    QVBoxLayout *layout = new QVBoxLayout();
+
+    if( p_item ) do
+    {
+        if( ( ( data->i_type == TYPE_SUBCATEGORY &&
+                p_item->i_value != data->i_object_id ) ||
+              ( data->i_type == TYPE_CATSUBCAT  &&
+                p_item->i_value != data->i_subcat_id ) ) &&
+            ( p_item->i_type == CONFIG_CATEGORY ||
+              p_item->i_type == CONFIG_SUBCATEGORY ) )
+            break;
+        if( p_item->b_internal == VLC_TRUE ) continue;
+
+        if( p_item->i_type == CONFIG_SECTION )
+        {
+            if( box )
+            {
+                box->setLayout( boxlayout );
+                layout->addWidget( box, 1 );
+            }
+            box = new QGroupBox( p_item->psz_text );
+            boxlayout = new QVBoxLayout();
+        }
+
+        ConfigControl *control = ConfigControl::createControl(
+                                    VLC_OBJECT( p_intf ), p_item,
+                                    NULL );
+        if( !control )
+        {
+            continue;
+        }
+        if( !box )
+            layout->addWidget( control );
+        else
+            boxlayout->addWidget( control );
+
+        controls.append( control );
+    }
+    while( !(p_item->i_type == CONFIG_HINT_END ||
+           ( ( data->i_type == TYPE_SUBCATEGORY ||
+               data->i_type == TYPE_CATSUBCAT ) &&
+             ( p_item->i_type == CONFIG_CATEGORY ||
+               p_item->i_type == CONFIG_SUBCATEGORY ) ) ) && p_item++ );
+
+    if( box )
+    {
+        box->setLayout( boxlayout );
+        layout->addWidget( box, 1 );
+    }
+
+    scrolled_area->setSizePolicy( QSizePolicy::Preferred,QSizePolicy::Fixed );
+    scrolled_area->setLayout( layout );
+    scroller->setWidget( scrolled_area );
+    scroller->setWidgetResizable( true );
+    global_layout->addWidget( scroller );
+
+    some_hidden_text = new QLabel( "Some options are available but hidden. "\
+                                  "Check \"Advanced options\" to see them." );
+    some_hidden_text->setWordWrap( true );
+
+    setLayout( global_layout );
+    setAdvanced( false );
+}
+
+void PrefsPanel::Apply()
+{
+    /* todo */
+    QList<ConfigControl *>::Iterator i;
+    for( i = controls.begin() ; i != controls.end() ; i++ )
+    {
+        VIntConfigControl *vicc = qobject_cast<VIntConfigControl *>(*i);
+        if( !vicc )
+        {
+            VFloatConfigControl *vfcc = qobject_cast<VFloatConfigControl *>(*i);
+            if( !vfcc)
+            {
+                VStringConfigControl *vscc =
+                               qobject_cast<VStringConfigControl *>(*i);
+                assert( vscc );
+                config_PutPsz( p_intf, vscc->getName().toAscii().data(),
+                                       vscc->getValue().toAscii().data() );
+                continue;
+            }
+            config_PutFloat( p_intf, vfcc->getName().toAscii().data(),
+                                     vfcc->getValue() );
+            continue;
+        }
+        config_PutInt( p_intf, vicc->getName().toAscii().data(),
+                               vicc->getValue() );
+    }
+}
+
+void PrefsPanel::Clean()
+{}
+
+void PrefsPanel::setAdvanced( bool adv )
+{
+    bool some_hidden = false;
+    if( adv == advanced ) return;
+
+    advanced = adv;
+    QList<ConfigControl *>::Iterator i;
+    for( i = controls.begin() ; i != controls.end() ; i++ )
+    {
+        if( (*i)->isAdvanced() )
+        {
+            fprintf( stderr, "Showing \n" );
+            if( !advanced ) some_hidden = true;
+            (*i)->setVisible( advanced );
+        }
+    }
+    if( some_hidden_text )
+    {
+        global_layout->removeWidget( some_hidden_text );
+        some_hidden_text->hide();
+    }
+    if( some_hidden )
+    {
+        global_layout->addWidget( some_hidden_text );
+        some_hidden_text->show();
+    }
+}
similarity index 54%
rename from modules/gui/qt4/components/preferences_tree.hpp
rename to modules/gui/qt4/components/preferences.hpp
index d54e905b5a38473d0dcdc2a7e9f384636c7ce5cc..913d38c7b5e44654b071e8c4d6230f651b8d2e4d 100644 (file)
 #define _PREFSTREE_H_
 
 #include <QTreeWidget>
+#include <vlc/vlc.h>
+#include <vlc/intf.h>
+
+enum
+{
+    TYPE_CATEGORY,
+    TYPE_CATSUBCAT,
+    TYPE_SUBCATEGORY,
+    TYPE_MODULE
+};
+
+class PrefsPanel;
+class QLabel;
+class QVBoxLayout;
+
+class PrefsItemData : public QObject
+{
+public:
+    PrefsItemData()
+    { panel = NULL; i_object_id = 0; i_subcat_id = -1; };
+    virtual ~PrefsItemData() {};
+    PrefsPanel *panel;
+    int i_object_id;
+    int i_subcat_id;
+    int i_type;
+    bool b_submodule;
+    QString name;
+    QString help;
+};
+
+Q_DECLARE_METATYPE( PrefsItemData* );
 
 class PrefsTree : public QTreeWidget
 {
     Q_OBJECT;
 public:
-    PrefsTree();
+    PrefsTree( intf_thread_t *, QWidget * );
     virtual ~PrefsTree();
-}
+
+    void ApplyAll();
+    void CleanAll();
+
+private:
+    void DoAll( bool );
+    intf_thread_t *p_intf;
+};
+
+class ConfigControl;
+
+class PrefsPanel : public QWidget
+{
+    Q_OBJECT
+public:
+    PrefsPanel( intf_thread_t *, QWidget *, PrefsItemData * );
+    PrefsPanel( QWidget *);
+    virtual ~PrefsPanel() {};
+    void Apply();
+    void Clean();
+private:
+    intf_thread_t *p_intf;
+    QList<ConfigControl *> controls;
+    QLabel *some_hidden_text;
+    QVBoxLayout *global_layout;
+    bool advanced;
+public slots:
+    void setAdvanced( bool );
+};
+
+#endif
diff --git a/modules/gui/qt4/components/preferences_tree.cpp b/modules/gui/qt4/components/preferences_tree.cpp
deleted file mode 100644 (file)
index d70a3de..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*****************************************************************************
- * preferences_tree.cpp : Tree of modules for preferences
- ****************************************************************************
- * Copyright (C) 2000-2005 the VideoLAN team
- * $Id: wxwidgets.cpp 15731 2006-05-25 14:43:53Z zorglub $
- *
- * Authors: Clément Stenac <zorglub@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#include "components/preferences_tree.hpp"
-
-#include <QTreeWidget>
-
index d13fea62adee9d95799761316a8f0b684eaa11d8..9552a5702c908eda5cd8c49d53602c87ba643c0b 100644 (file)
@@ -65,7 +65,7 @@ ConfigControl *ConfigControl::createControl( vlc_object_t *p_this,
         if( !p_item->i_list )
             p_control = new StringConfigControl( p_this, p_item, parent,false );
         else
-            abort();
+            fprintf(stderr, "GRAA\n" );
         break;
     default:
         break;
@@ -88,7 +88,7 @@ StringConfigControl::StringConfigControl( vlc_object_t *_p_this,
     label->setToolTip( p_item->psz_longtext );
 
     QHBoxLayout *layout = new QHBoxLayout();
-    layout->addWidget( label ); layout->addWidget( text );
+    layout->addWidget( label, 0 ); layout->addWidget( text, 1 );
     setLayout( layout );
 }
 
index bdaf843cb7d74fce054c67948e62789a17b7dbe5..5e69e1a5ae718c3c4f427f23adc3b579d09cb7bb 100644 (file)
@@ -40,7 +40,7 @@ public:
     ConfigControl( vlc_object_t *, module_config_t *, QWidget * );
     virtual ~ConfigControl();
     QString getName() { return _name; }
-    bool getAdvanced() { return _advanced; }
+    bool isAdvanced() { return _advanced; }
 
     static ConfigControl * createControl( vlc_object_t*,
                                          module_config_t*,QWidget* );
diff --git a/modules/gui/qt4/dialogs/prefs_dialog.cpp b/modules/gui/qt4/dialogs/prefs_dialog.cpp
new file mode 100644 (file)
index 0000000..b692c8d
--- /dev/null
@@ -0,0 +1,159 @@
+/*****************************************************************************
+ * prefs_dialog.cpp : Preferences
+ ****************************************************************************
+ * Copyright (C) 2000-2005 the VideoLAN team
+ * $Id: wxwidgets.cpp 15731 2006-05-25 14:43:53Z zorglub $
+ *
+ * Authors: Clément Stenac <zorglub@videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/
+
+#include "dialogs/prefs_dialog.hpp"
+#include "dialogs_provider.hpp"
+#include "util/qvlcframe.hpp"
+
+#include "components/preferences.hpp"
+#include "qt4.hpp"
+
+#include <QHBoxLayout>
+#include <QGroupBox>
+#include <QRadioButton>
+#include <QVBoxLayout>
+#include <QPushButton>
+#include <QCheckBox>
+PrefsDialog *PrefsDialog::instance = NULL;
+
+PrefsDialog::PrefsDialog( intf_thread_t *_p_intf ) : QVLCFrame( _p_intf )
+{
+     layout = new QHBoxLayout();
+     QVBoxLayout * main_layout = new QVBoxLayout();
+     setWindowTitle( _("Preferences" ) );
+     resize( 800, 450 );
+
+     advanced_tree = NULL;
+     simple_tree = NULL;
+     simple_panel = NULL;
+     advanced_panel = NULL;
+
+     vertical = new QVBoxLayout();
+
+     // Choice for types
+     types = new QGroupBox( "Show settings" );
+     QHBoxLayout *tl = new QHBoxLayout();
+     tl->setSpacing( 3 );
+     small = new QRadioButton( "Common", types );
+     all = new QRadioButton( "All", types );
+     tl->addWidget( small );
+     tl->addWidget( all );
+     types->setLayout(tl );
+
+     layout->addLayout( vertical, 1 );
+     setAll();
+
+     all->setChecked( true );
+
+     main_layout->addLayout( layout );
+     adv_chk = new QCheckBox("Advanced options");
+     main_layout->addWidget( adv_chk );
+
+     QObject::connect( adv_chk, SIGNAL( toggled(bool) ), this,
+                       SLOT( setAdvanced( bool ) ) );
+     setLayout( main_layout );
+
+     QObject::connect( small, SIGNAL( clicked() ), this, SLOT( setSmall()) );
+     QObject::connect( all, SIGNAL( clicked() ), this, SLOT( setAll()) );
+}
+
+void PrefsDialog::setAdvanced( bool advanced )
+{
+    if( advanced_panel )
+        advanced_panel->setAdvanced( advanced );
+}
+
+void PrefsDialog::setAll()
+{
+    while( (vertical->takeAt(0)) != 0  ) {}
+    if( simple_tree )
+        simple_tree->hide();
+
+    if( !advanced_tree )
+    {
+         advanced_tree = new PrefsTree( p_intf, this );
+         QObject::connect( advanced_tree,
+                           SIGNAL( currentItemChanged( QTreeWidgetItem *,
+                                   QTreeWidgetItem *) ), this,
+                           SLOT( changePanel( QTreeWidgetItem * ) ) );
+    }
+    advanced_tree->show();
+    setAdvanced( adv_chk->isChecked() );
+    vertical->addWidget( types );
+    vertical->addWidget( advanced_tree );
+
+     if( layout->count() == 2 )
+         layout->takeAt(1);
+
+     if( !advanced_panel )
+         advanced_panel = new PrefsPanel( this );
+     layout->addWidget( advanced_panel, 3 ) ;
+}
+
+void PrefsDialog::setSmall()
+{
+    while( (vertical->takeAt(0)) != 0  ) {}
+    if( advanced_tree )
+        advanced_tree->hide();
+
+    if( !simple_tree )
+         simple_tree = new QTreeWidget();
+    simple_tree->show();
+    vertical->addWidget( types );
+    vertical->addWidget( simple_tree );
+
+    if( layout->count() == 2 )
+        layout->takeAt(1);
+
+    if( !simple_panel )
+        simple_panel = new QWidget();
+    layout->addWidget( simple_panel, 3 ) ;
+}
+
+
+void PrefsDialog::init()
+{
+}
+
+PrefsDialog::~PrefsDialog()
+{
+}
+
+void PrefsDialog::changePanel( QTreeWidgetItem *item )
+{
+    PrefsItemData *data = item->data( 0, Qt::UserRole ).value<PrefsItemData*>();
+
+    if( advanced_panel )
+    {
+        layout->removeWidget( advanced_panel );
+        advanced_panel->hide();
+    }
+    if( !data->panel )
+    {
+        data->panel = new PrefsPanel( p_intf, this, data );
+    }
+    advanced_panel = data->panel;
+    advanced_panel->show();
+    setAdvanced( adv_chk->isChecked() );
+    layout->addWidget( advanced_panel, 3 );
+
+}
diff --git a/modules/gui/qt4/dialogs/prefs_dialog.hpp b/modules/gui/qt4/dialogs/prefs_dialog.hpp
new file mode 100644 (file)
index 0000000..22f5429
--- /dev/null
@@ -0,0 +1,79 @@
+/*****************************************************************************
+ * prefs_dialog.hpp : Preferences
+ ****************************************************************************
+ * Copyright (C) 2000-2005 the VideoLAN team
+ * $Id: wxwidgets.cpp 15731 2006-05-25 14:43:53Z zorglub $
+ *
+ * Authors: Clément Stenac <zorglub@videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ ****************************************************************************/
+
+#ifndef _PREFS_DIALOG_H_
+#define _PREFS_DIALOG_H_
+
+#include "util/qvlcframe.hpp"
+
+class PrefsTree;
+class PrefsPanel;
+class QTreeWidgetItem;
+class QTreeWidget;
+class QHBoxLayout;
+class QVBoxLayout;
+class QGroupBox;
+class QRadioButton;
+class QWidget;
+class QCheckBox;
+
+class PrefsDialog : public QVLCFrame
+{
+    Q_OBJECT;
+public:
+    static PrefsDialog * getInstance( intf_thread_t *_p_intf )
+    {
+        fprintf( stderr, "%p\n", _p_intf );
+        if( !instance )
+        {
+            instance = new PrefsDialog( _p_intf );
+            instance->init();
+        }
+        return instance;
+    }
+    virtual ~PrefsDialog();
+private:
+    PrefsDialog( intf_thread_t * );
+    void init();
+
+    PrefsPanel *advanced_panel;
+    PrefsTree *advanced_tree;
+    QWidget *simple_panel;
+    QTreeWidget *simple_tree;
+    QGroupBox *types;
+    // The layout for the main part
+    QHBoxLayout *layout;
+    // Layout for the left pane
+    QVBoxLayout *vertical;
+    QRadioButton *small,*all;
+    QCheckBox *adv_chk;
+
+    static PrefsDialog *instance;
+private slots:
+     void changePanel( QTreeWidgetItem *);
+     void setAll();
+     void setSmall();
+     void setAdvanced( bool );
+};
+
+#endif
index bbabc84747561fe550d7cc0406a621d680a5e914..cb6380225239f053d8652d16a600311334d47236 100644 (file)
@@ -24,6 +24,7 @@
 #include "qt4.hpp"
 #include <QEvent>
 #include "dialogs/playlist.hpp"
+#include "dialogs/prefs_dialog.hpp"
 #include "dialogs/streaminfo.hpp"
 #include <QApplication>
 
@@ -94,6 +95,7 @@ void DialogsProvider::streaminfoDialog()
 
 void DialogsProvider::prefsDialog()
 {
+    PrefsDialog::getInstance( p_intf )->toggleVisible();
 }
 
 void DialogsProvider::messagesDialog()
diff --git a/modules/gui/qt4/pixmaps/advanced.xpm b/modules/gui/qt4/pixmaps/advanced.xpm
new file mode 100644 (file)
index 0000000..4f48bbe
--- /dev/null
@@ -0,0 +1,125 @@
+/* XPM */
+static char * advanced_xpm[] = {
+"16 16 106 2",
+"      c None",
+".     c #AEAEBE",
+"+     c #D7D7E0",
+"@     c #D5D5DD",
+"#     c #C2C2CE",
+"$     c #CECED7",
+"%     c #FEFEFE",
+"&     c #DCDCE2",
+"*     c #9F9FB2",
+"=     c #C3C3CE",
+"-     c #FBFBFB",
+";     c #D0D0D8",
+">     c #86869E",
+",     c #8F8FA4",
+"'     c #EBEBEE",
+")     c #EEEEF2",
+"!     c #9595A9",
+"~     c #A2A2B5",
+"{     c #9A9AAE",
+"]     c #CACAD5",
+"^     c #F8F8F9",
+"/     c #F7F7F9",
+"(     c #9999AC",
+"_     c #A8A8B8",
+":     c #E7E7EB",
+"<     c #87879F",
+"[     c #6F6F8B",
+"}     c #BFBFCB",
+"|     c #F1F1F5",
+"1     c #E9E9EE",
+"2     c #EDEDF2",
+"3     c #DBDBE2",
+"4     c #7C7F9B",
+"5     c #818199",
+"6     c #E2E2E7",
+"7     c #D2D2DC",
+"8     c #BDBDCA",
+"9     c #E3E3E8",
+"0     c #E0E0E6",
+"a     c #E0E0E4",
+"b     c #E1E1E7",
+"c     c #C6C6D1",
+"d     c #707599",
+"e     c #9B9BAE",
+"f     c #DEDEE4",
+"g     c #D8D8E1",
+"h     c #DADAE2",
+"i     c #D8D8E0",
+"j     c #BEBECB",
+"k     c #B2B6CE",
+"l     c #B09E8F",
+"m     c #CC8B22",
+"n     c #808098",
+"o     c #AFAFBF",
+"p     c #B9B9C8",
+"q     c #B3B3C2",
+"r     c #BCBCC9",
+"s     c #C3C6DA",
+"t     c #BDAA9A",
+"u     c #CF8925",
+"v     c #E68208",
+"w     c #DA9217",
+"x     c #49496A",
+"y     c #565674",
+"z     c #4B4B6D",
+"A     c #5D6186",
+"B     c #B3A196",
+"C     c #CF8B28",
+"D     c #E98606",
+"E     c #FD8606",
+"F     c #F38F0B",
+"G     c #D59018",
+"H     c #B2721C",
+"I     c #F19C0D",
+"J     c #FEA310",
+"K     c #FEA210",
+"L     c #F8A410",
+"M     c #D28F19",
+"N     c #CF8918",
+"O     c #FEBC19",
+"P     c #FEBE1B",
+"Q     c #FEB518",
+"R     c #FEA913",
+"S     c #FDA610",
+"T     c #CF8717",
+"U     c #C98819",
+"V     c #FECE20",
+"W     c #FEAC13",
+"X     c #FE8907",
+"Y     c #FE8506",
+"Z     c #FC980B",
+"`     c #B26E16",
+" .    c #C27F18",
+"..    c #FEA410",
+"+.    c #FE9109",
+"@.    c #FE8004",
+"#.    c #FE9106",
+"$.    c #BD7013",
+"%.    c #BB650F",
+"&.    c #FE9F0D",
+"*.    c #FE9808",
+"=.    c #ED8108",
+"-.    c #915216",
+";.    c #994E10",
+">.    c #AB5A0D",
+",.    c #894914",
+"      . + @ #                   ",
+"        $ % % & *               ",
+"          = - % ;               ",
+">         , ' % ) !             ",
+"~ {       ] ^ / ) (             ",
+"_ : < [ } | 1 2 3 4             ",
+"5 6 7 8 9 0 a b c d             ",
+"  e f b g h i j k l m           ",
+"    n o p q r s t u v w         ",
+"      x y z A B C D E F G       ",
+"              H I J J K L M     ",
+"                N O P Q R S T   ",
+"                  U V W X Y Z ` ",
+"                     ...+.@.#.$.",
+"                      %.&.*.=.-.",
+"                        ;.>.,.  "};
diff --git a/modules/gui/qt4/pixmaps/audio.xpm b/modules/gui/qt4/pixmaps/audio.xpm
new file mode 100644 (file)
index 0000000..722b8ea
--- /dev/null
@@ -0,0 +1,102 @@
+/* XPM */
+static char * audio_xpm[] = {
+"16 16 83 1",
+"      c None",
+".     c #00E000",
+"+     c #00F100",
+"@     c #00F500",
+"#     c #00DE00",
+"$     c #00AF00",
+"%     c #00AF01",
+"&     c #00A402",
+"*     c #00A100",
+"=     c #00A400",
+"-     c #009401",
+";     c #009301",
+">     c #007700",
+",     c #007A02",
+"'     c #008101",
+")     c #00EE00",
+"!     c #00F300",
+"~     c #00A701",
+"{     c #009C02",
+"]     c #009C00",
+"^     c #007E03",
+"/     c #007401",
+"(     c #929292",
+"_     c #9E9E9E",
+":     c #A8A8A8",
+"<     c #747474",
+"[     c #737373",
+"}     c #6C6C6C",
+"|     c #666666",
+"1     c #787878",
+"2     c #8F8F8F",
+"3     c #A7A7A7",
+"4     c #B6B6B7",
+"5     c #6D6D6D",
+"6     c #626262",
+"7     c #646464",
+"8     c #848484",
+"9     c #969696",
+"0     c #B9B9B9",
+"a     c #C6C6C6",
+"b     c #A6A6AA",
+"c     c #6A6A6A",
+"d     c #7A7A7A",
+"e     c #B2B2B2",
+"f     c #BFBFBF",
+"g     c #BABABA",
+"h     c #B6B6B6",
+"i     c #B4B4B4",
+"j     c #D7D7D7",
+"k     c #C3C3C4",
+"l     c #6B6B6B",
+"m     c #636363",
+"n     c #606060",
+"o     c #575757",
+"p     c #555555",
+"q     c #535353",
+"r     c #888888",
+"s     c #D3D3D3",
+"t     c #E1E1E1",
+"u     c #B3B3B4",
+"v     c #383838",
+"w     c #707070",
+"x     c #585858",
+"y     c #3C3C3C",
+"z     c #3B3B3B",
+"A     c #494949",
+"B     c #DEDEDE",
+"C     c #C4C4C4",
+"D     c #57575D",
+"E     c #242424",
+"F     c #7C7C7C",
+"G     c #949494",
+"H     c #A2A2A2",
+"I     c #BCBCBC",
+"J     c #8B8B8D",
+"K     c #444444",
+"L     c #414141",
+"M     c #464646",
+"N     c #5D5D5D",
+"O     c #7B7B7B",
+"P     c #4A4A4F",
+"Q     c #4A4A4B",
+"R     c #515153",
+"      .+@#      ",
+"   $%&    *=-   ",
+"  ;         >,  ",
+" '              ",
+"       )!       ",
+"    ~{    ]-    ",
+"   ^        /   ",
+"      (_:       ",
+"   <[}||1234    ",
+"  5|667<89:0ab  ",
+"  c66defghiajk  ",
+"  l6mnopqmrstu  ",
+"  vwcxyvzA3BCD  ",
+"   EoF2GHIhJ    ",
+"     KLMNOP     ",
+"       QR       "};
diff --git a/modules/gui/qt4/pixmaps/codec.xpm b/modules/gui/qt4/pixmaps/codec.xpm
new file mode 100644 (file)
index 0000000..d2db76a
--- /dev/null
@@ -0,0 +1,151 @@
+/* XPM */
+static char * codec_xpm[] = {
+"16 16 132 2",
+"      c None",
+".     c #131313",
+"+     c #464646",
+"@     c #E0E0E0",
+"#     c #656565",
+"$     c #3D3D3D",
+"%     c #E4E9EC",
+"&     c #FBFFFF",
+"*     c #E8E9EB",
+"=     c #595858",
+"-     c #393A3B",
+";     c #D1DBE6",
+">     c #ECF8FF",
+",     c #E8F4FF",
+"'     c #D5DAE1",
+")     c #C1C1C1",
+"!     c #4F4E4D",
+"~     c #0A0A0A",
+"{     c #909295",
+"]     c #D8EAFD",
+"^     c #DFF1FF",
+"/     c #C0CAD6",
+"(     c #C6CCD4",
+"_     c #E5ECF1",
+":     c #828385",
+"<     c #080808",
+"[     c #989898",
+"}     c #5B5B5B",
+"|     c #2F2E2D",
+"1     c #898E94",
+"2     c #ADB8C6",
+"3     c #B6BDC7",
+"4     c #E6F1FD",
+"5     c #F6FFFF",
+"6     c #8D96A2",
+"7     c #121213",
+"8     c #646464",
+"9     c #B6B6B6",
+"0     c #898989",
+"a     c #767676",
+"b     c #3F3F3F",
+"c     c #292827",
+"d     c #6D6E6F",
+"e     c #D4E0F0",
+"f     c #F1FFFF",
+"g     c #B9C4D0",
+"h     c #868E98",
+"i     c #B0BBC6",
+"j     c #46484B",
+"k     c #1E1E1D",
+"l     c #C7C7C7",
+"m     c #8D8D8D",
+"n     c #818181",
+"o     c #A1A1A1",
+"p     c #5E5E5E",
+"q     c #343433",
+"r     c #777A7F",
+"s     c #B3BDC6",
+"t     c #959AA2",
+"u     c #DEE9F2",
+"v     c #F7FFFF",
+"w     c #B8C2CE",
+"x     c #363636",
+"y     c #030303",
+"z     c #8F8F8F",
+"A     c #BDBDBD",
+"B     c #999999",
+"C     c #AAAAAA",
+"D     c #E1E1E1",
+"E     c #F6F6F6",
+"F     c #EBEBEB",
+"G     c #7E7E7E",
+"H     c #3F3E3E",
+"I     c #6E6F6F",
+"J     c #D9DFE7",
+"K     c #FDFFFF",
+"L     c #EDF4F9",
+"M     c #7A7D81",
+"N     c #0C0B0B",
+"O     c #A7A7A7",
+"P     c #C4C4C4",
+"Q     c #B5B5B5",
+"R     c #C2C2C2",
+"S     c #D6D6D6",
+"T     c #D5D5D5",
+"U     c #CDCDCD",
+"V     c #C5C5C5",
+"W     c #727272",
+"X     c #5D5C5C",
+"Y     c #AEAFB0",
+"Z     c #F0F1F1",
+"`     c #929394",
+" .    c #0B0B0A",
+"..    c #868686",
+"+.    c #D9D9D9",
+"@.    c #D3D3D3",
+"#.    c #B8B8B8",
+"$.    c #9B9B9B",
+"%.    c #969696",
+"&.    c #A0A0A0",
+"*.    c #D1D1D1",
+"=.    c #919192",
+"-.    c #111111",
+";.    c #3E3E3E",
+">.    c #BEBEBE",
+",.    c #EFEFEF",
+"'.    c #E7E7E7",
+").    c #B0B0B0",
+"!.    c #CFCFCF",
+"~.    c #F4F4F4",
+"{.    c #DFDFDF",
+"].    c #5D5D5D",
+"^.    c #0C0C0C",
+"/.    c #585858",
+"(.    c #FFFFFF",
+"_.    c #FDFDFD",
+":.    c #FBFBFB",
+"<.    c #8E8E8E",
+"[.    c #252525",
+"}.    c #424242",
+"|.    c #7F7F7F",
+"1.    c #A8A8A8",
+"2.    c #939393",
+"3.    c #6D6D6D",
+"4.    c #191919",
+"5.    c #4C4C4C",
+"6.    c #6B6B6B",
+"7.    c #8B8B8B",
+"8.    c #ADADAD",
+"9.    c #B4B4B4",
+"0.    c #333333",
+"a.    c #6C6C6C",
+"                .               ",
+"              + @ #             ",
+"            $ % & * =           ",
+"          - ; > , ' ) !         ",
+"        ~ { ] ^ / ( _ : <       ",
+"      [ } | 1 2 3 4 5 6 7 .     ",
+"  8 9 0 a b c d e f g h i j k   ",
+"  l m n m o p q r s t u v w x y ",
+"z A B C D E F G H I J K L M N   ",
+"O P Q R S T U V W X Y Z `  .    ",
+"..+.@.#.[ $.%.&.*...G =.-.      ",
+";.>.,.'.).z B !.~.{.].^.        ",
+"  /.9 ,.(._.(.:.T <.[.          ",
+"    }.|.$.1.&.2.3.4.            ",
+"      5.6.7.8.9.$               ",
+"        0.# a.                  "};
diff --git a/modules/gui/qt4/pixmaps/intf.xpm b/modules/gui/qt4/pixmaps/intf.xpm
new file mode 100644 (file)
index 0000000..c5828e8
--- /dev/null
@@ -0,0 +1,235 @@
+/* XPM */
+static char * intf_xpm[] = {
+"16 16 216 2",
+"      c None",
+".     c #715F39",
+"+     c #DDA434",
+"@     c #CD8A01",
+"#     c #CC8A04",
+"$     c #B79042",
+"%     c #D49411",
+"&     c #D18D03",
+"*     c #B27D11",
+"=     c #ECECEC",
+"-     c #FFFDFA",
+";     c #FEFBF8",
+">     c #FDFAF7",
+",     c #FCFAF7",
+"'     c #FCF9F6",
+")     c #FBF8F6",
+"!     c #F8F8FA",
+"~     c #BAAB8C",
+"{     c #D09824",
+"]     c #CD8B02",
+"^     c #C88600",
+"/     c #987D48",
+"(     c #CFD1D6",
+"_     c #B0B0AF",
+":     c #FCFCFD",
+"<     c #BAC7DC",
+"[     c #C0D1E6",
+"}     c #C5D6E8",
+"|     c #C9DAEB",
+"1     c #CDDEED",
+"2     c #CFE3F3",
+"3     c #C0CCD7",
+"4     c #BE9648",
+"5     c #D3910C",
+"6     c #CD8B03",
+"7     c #A06E0A",
+"8     c #868A90",
+"9     c #FFFFFF",
+"0     c #797979",
+"a     c #B4B4B2",
+"b     c #E9ECF2",
+"c     c #2962B7",
+"d     c #3C7ED0",
+"e     c #4D8ED9",
+"f     c #5B9DE2",
+"g     c #66A9EA",
+"h     c #64A8ED",
+"i     c #868978",
+"j     c #D4961A",
+"k     c #CD8A02",
+"l     c #C08205",
+"m     c #5D5844",
+"n     c #4977C2",
+"o     c #7B7B7A",
+"p     c #B5B4B1",
+"q     c #ECEFF5",
+"r     c #3670C4",
+"s     c #3A7DD1",
+"t     c #4A8DDA",
+"u     c #5397E1",
+"v     c #60A5EC",
+"w     c #92ABC7",
+"x     c #A88A4F",
+"y     c #CF8E09",
+"z     c #C88602",
+"A     c #8E691F",
+"B     c #295A9D",
+"C     c #5287D4",
+"D     c #F4F5F7",
+"E     c #797978",
+"F     c #B6B6B5",
+"G     c #EDF0F5",
+"H     c #2E68BD",
+"I     c #3577CE",
+"J     c #3F81D4",
+"K     c #619BDE",
+"L     c #639CDB",
+"M     c #91A0B1",
+"N     c #CFCDCB",
+"O     c #A4916A",
+"P     c #9F7012",
+"Q     c #455C77",
+"R     c #2268CA",
+"S     c #4D7FCA",
+"T     c #E9E9EB",
+"U     c #787676",
+"V     c #BAB9B6",
+"W     c #EEF1F7",
+"X     c #1850AF",
+"Y     c #2363C2",
+"Z     c #3878CE",
+"`     c #4B8DDA",
+" .    c #638DBE",
+"..    c #C2C3C3",
+"+.    c #C6C5C5",
+"@.    c #8E8D8E",
+"#.    c #4E6277",
+"$.    c #2E6DC3",
+"%.    c #1A5DC0",
+"&.    c #3E6EBF",
+"*.    c #E7E8E9",
+"=.    c #797876",
+"-.    c #BBBBB9",
+";.    c #F0F3F9",
+">.    c #1048AA",
+",.    c #033FAB",
+"'.    c #2465C3",
+").    c #4F96E0",
+"!.    c #97A9BD",
+"~.    c #CFCBC6",
+"{.    c #949290",
+"].    c #6B7E8C",
+"^.    c #6EA5D8",
+"/.    c #2766C3",
+"(.    c #023CAA",
+"_.    c #3766BA",
+":.    c #E5E6E7",
+"<.    c #797976",
+"[.    c #BDBBBA",
+"}.    c #F1F4FA",
+"|.    c #164EAF",
+"1.    c #0948B1",
+"2.    c #114FB2",
+"3.    c #365885",
+"4.    c #767472",
+"5.    c #949495",
+"6.    c #566E8D",
+"7.    c #7DB0DB",
+"8.    c #70AAE6",
+"9.    c #0D4BB2",
+"0.    c #0039A8",
+"a.    c #3868BA",
+"b.    c #E3E4E5",
+"c.    c #BEBDBB",
+"d.    c #F2F5FC",
+"e.    c #215AB6",
+"f.    c #1459C1",
+"g.    c #21477E",
+"h.    c #95918B",
+"i.    c #17130F",
+"j.    c #536774",
+"k.    c #7FB4E5",
+"l.    c #76B1E9",
+"m.    c #2F6DC5",
+"n.    c #1957BA",
+"o.    c #0747B1",
+"p.    c #3C6CBD",
+"q.    c #E0E0E2",
+"r.    c #BFBEBD",
+"s.    c #F3F6FC",
+"t.    c #2965BF",
+"u.    c #1D5CB8",
+"v.    c #344256",
+"w.    c #3A352F",
+"x.    c #020407",
+"y.    c #789DBB",
+"z.    c #5694E0",
+"A.    c #397ACE",
+"B.    c #3070C9",
+"C.    c #2564C2",
+"D.    c #1152B8",
+"E.    c #4272C2",
+"F.    c #DDDDDF",
+"G.    c #C0BFBE",
+"H.    c #F1F4FB",
+"I.    c #346EC2",
+"J.    c #4067A3",
+"K.    c #29364B",
+"L.    c #09182B",
+"M.    c #336298",
+"N.    c #4F93E1",
+"O.    c #498DDC",
+"P.    c #4386D8",
+"Q.    c #3B7DD3",
+"R.    c #2F71CB",
+"S.    c #195CC0",
+"T.    c #4879C8",
+"U.    c #D9DADB",
+"V.    c #C2C1C1",
+"W.    c #FBFCFE",
+"X.    c #BAC9E2",
+"Y.    c #BFCADD",
+"Z.    c #AFBBCB",
+"`.    c #B2C6DE",
+" +    c #BAD4F1",
+".+    c #B7CFE9",
+"++    c #B4CCE7",
+"@+    c #B0C8E3",
+"#+    c #ABC2DF",
+"$+    c #A4BBDA",
+"%+    c #9BB2D5",
+"&+    c #A8B9D5",
+"*+    c #D7D7D7",
+"=+    c #7B7B7B",
+"-+    c #848484",
+";+    c #FFFFFE",
+">+    c #FDFBF9",
+",+    c #F8F6F3",
+"'+    c #F3F0EC",
+")+    c #EFEBE7",
+"!+    c #EBE7E3",
+"~+    c #E8E5E0",
+"{+    c #E4E1DD",
+"]+    c #E1DED9",
+"^+    c #DEDBD6",
+"/+    c #D8D6D2",
+"(+    c #D3D3D3",
+"_+    c #535353",
+":+    c #4F4F4F",
+"<+    c #5B5B5B",
+"[+    c #5A5A5A",
+"}+    c #595959",
+"|+    c #575757",
+"1+    c #555555",
+"2+    c #545454",
+"3+    c #414141",
+"                    . + @ #     ",
+"                    $ % & *     ",
+"  = - ; > , ' ) ! ~ { ] ^ / (   ",
+"_ : < [ } | 1 2 3 4 5 6 7 8 9 0 ",
+"a b c d e f g h i j k l m n 9 o ",
+"p q r s t u v w x y z A B C D E ",
+"F G H I J K L M N O P Q R S T U ",
+"V W X Y Z `  ...+.@.#.$.%.&.*.=.",
+"-.;.>.,.'.).!.~.{.].^./.(._.:.<.",
+"[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.E ",
+"c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.E ",
+"r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.E ",
+"G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.E ",
+"V.W.X.Y.Z.`. +.+++@+#+$+%+&+*+=+",
+"-+9 ;+- >+,+'+)+!+~+{+]+^+/+(+_+",
+"  :+<+[+}+}+|+|+|+1+1+1+_+2+3+  "};
diff --git a/modules/gui/qt4/pixmaps/type_net.xpm b/modules/gui/qt4/pixmaps/type_net.xpm
new file mode 100644 (file)
index 0000000..6c38e4a
--- /dev/null
@@ -0,0 +1,173 @@
+/* XPM */
+static char * type_net_xpm[] = {
+"16 16 154 2",
+"      c None",
+".     c #667AAC",
+"+     c #8293BC",
+"@     c #8192BA",
+"#     c #6677A0",
+"$     c #8C9BC3",
+"%     c #E9EBF5",
+"&     c #F8F8FC",
+"*     c #FDFCFE",
+"=     c #FFFFFF",
+"-     c #FCFCFF",
+";     c #E7EBF9",
+">     c #8996B4",
+",     c #99A5CD",
+"'     c #E7E8F2",
+")     c #CED2DD",
+"!     c #C0C6D6",
+"~     c #CBD1E1",
+"{     c #E7E9F4",
+"]     c #E8EAF5",
+"^     c #E7E8F4",
+"/     c #F0F2FE",
+"(     c #919DC3",
+"_     c #53659F",
+":     c #B3BBD7",
+"<     c #98A2BB",
+"[     c #93A0BE",
+"}     c #98A5C5",
+"|     c #C8CEE1",
+"1     c #D5D8E7",
+"2     c #CBCFE0",
+"3     c #D0D4E5",
+"4     c #D7DBEC",
+"5     c #D0D5EF",
+"6     c #47578E",
+"7     c #3E579E",
+"8     c #5F709B",
+"9     c #7084B1",
+"0     c #7588B6",
+"a     c #CBD1E5",
+"b     c #EBEDF6",
+"c     c #E2E6F1",
+"d     c #D9DCEB",
+"e     c #D3D7E9",
+"f     c #CBCFE5",
+"g     c #C0C5E2",
+"h     c #7B89C2",
+"i     c #29396C",
+"j     c #6273AF",
+"k     c #56699E",
+"l     c #4A619B",
+"m     c #49629E",
+"n     c #A2AECE",
+"o     c #E4E7F0",
+"p     c #E9EBF3",
+"q     c #E3E5F2",
+"r     c #D4D8EB",
+"s     c #C0C5DF",
+"t     c #8D97BF",
+"u     c #6F7FBD",
+"v     c #1F2B51",
+"w     c #3B4C83",
+"x     c #98A1D3",
+"y     c #A7AFD6",
+"z     c #7481A9",
+"A     c #1F397C",
+"B     c #234089",
+"C     c #2C4789",
+"D     c #AEB7D0",
+"E     c #EBEDF7",
+"F     c #D4D8EC",
+"G     c #959FC6",
+"H     c #364B86",
+"I     c #4159A0",
+"J     c #152652",
+"K     c #303D69",
+"L     c #919CD1",
+"M     c #AAB1D9",
+"N     c #6B79A3",
+"O     c #072670",
+"P     c #0B2C7C",
+"Q     c #001F73",
+"R     c #7989B5",
+"S     c #EDEDF8",
+"T     c #B4BCDB",
+"U     c #253D7D",
+"V     c #374B87",
+"W     c #4A62AA",
+"X     c #05143D",
+"Y     c #8490C8",
+"Z     c #5A699A",
+"`     c #123079",
+" .    c #0A2B7C",
+"..    c #0F2F7E",
+"+.    c #09297A",
+"@.    c #3B5495",
+"#.    c #B6BDDB",
+"$.    c #485F9C",
+"%.    c #09266D",
+"&.    c #5D6B9E",
+"*.    c #7483BD",
+"=.    c #415186",
+"-.    c #2F488D",
+";.    c #102E7A",
+">.    c #1A3885",
+",.    c #24418A",
+"'.    c #29458D",
+").    c #27438B",
+"!.    c #28438C",
+"~.    c #0F2E7D",
+"{.    c #233F89",
+"].    c #284694",
+"^.    c #172C60",
+"/.    c #294183",
+"(.    c #39549C",
+"_.    c #455D9D",
+":.    c #4C62A0",
+"<.    c #5065A1",
+"[.    c #4D63A0",
+"}.    c #455C9C",
+"|.    c #41599B",
+"1.    c #314E99",
+"2.    c #0E2766",
+"3.    c #2F3E6D",
+"4.    c #6375AE",
+"5.    c #7D8DC2",
+"6.    c #7A88BC",
+"7.    c #7C8BBF",
+"8.    c #7385BC",
+"9.    c #5065A0",
+"0.    c #1F305C",
+"a.    c #363D58",
+"b.    c #888FB2",
+"c.    c #676D8F",
+"d.    c #282F49",
+"e.    c #C6C6C9",
+"f.    c #8A8A8C",
+"g.    c #A8A8AF",
+"h.    c #C6C6CC",
+"i.    c #B9B9C0",
+"j.    c #C2C2C6",
+"k.    c #DADAD9",
+"l.    c #ADADB2",
+"m.    c #ABABB1",
+"n.    c #CCCCD2",
+"o.    c #8A8A91",
+"p.    c #373739",
+"q.    c #39393C",
+"r.    c #626268",
+"s.    c #68686C",
+"t.    c #6C6C6E",
+"u.    c #555559",
+"v.    c #313134",
+"w.    c #38383A",
+"            . + @ #             ",
+"        $ % & * = - ; >         ",
+"      , ' ) ! ~ { ] ^ / (       ",
+"    _ : < [ } | 1 2 3 4 5 6     ",
+"    7 8 9 0 a b c d e f g h     ",
+"  i j k l m n o p q r s t u v   ",
+"  w x y z A B C D E F G H I J   ",
+"  K L M N O P Q R S T U V W X   ",
+"    Y Z `  ...+.@.#.$.%.&.*.    ",
+"    =.-.;.>.,.'.).!.~.{.].^.    ",
+"      /.(._.:.<.[.}.|.1.2.      ",
+"        3.4.5.6.7.8.9.0.        ",
+"            a.b.c.d.            ",
+"              e.f.              ",
+"      g.h.i.j.k.k.l.m.n.o.      ",
+"        p.q.r.s.t.u.v.w.        "};
diff --git a/modules/gui/qt4/pixmaps/type_playlist.xpm b/modules/gui/qt4/pixmaps/type_playlist.xpm
new file mode 100644 (file)
index 0000000..e05fdec
--- /dev/null
@@ -0,0 +1,145 @@
+/* XPM */
+static char * type_playlist_xpm[] = {
+"16 16 126 2",
+"      c None",
+".     c #959695",
+"+     c #000000",
+"@     c #0E0E0E",
+"#     c #282828",
+"$     c #696969",
+"%     c #DADBDA",
+"&     c #E4E5E4",
+"*     c #E6E7E6",
+"=     c #D3D3D3",
+"-     c #FFFFFF",
+";     c #F9F9F9",
+">     c #F9F9F8",
+",     c #E7E7E7",
+"'     c #E4E4E4",
+")     c #CDCDCD",
+"!     c #252525",
+"~     c #C8C9C8",
+"{     c #E3E4E3",
+"]     c #F6F6F6",
+"^     c #DADADA",
+"/     c #9F9F9F",
+"(     c #FEFEFE",
+"_     c #FCFCFB",
+":     c #FBFBFB",
+"<     c #F2F2F2",
+"[     c #AFAFAE",
+"}     c #E9E9E9",
+"|     c #B3B3B3",
+"1     c #383838",
+"2     c #CECFCE",
+"3     c #9E9E9E",
+"4     c #FDFDFD",
+"5     c #FAFAF9",
+"6     c #F3F3F3",
+"7     c #A9A9A8",
+"8     c #F0F0F0",
+"9     c #F4F4F4",
+"0     c #ABABAB",
+"a     c #414141",
+"b     c #9D9D9C",
+"c     c #9A9A9A",
+"d     c #9A9A99",
+"e     c #9B9B9A",
+"f     c #9D9C9C",
+"g     c #0A0A0A",
+"h     c #9B9B9B",
+"i     c #F8F8F7",
+"j     c #F7F6F5",
+"k     c #F6F6F4",
+"l     c #F4F3F2",
+"m     c #F1F0EF",
+"n     c #F0EFED",
+"o     c #E5E4E2",
+"p     c #848381",
+"q     c #6A6763",
+"r     c #F8F7F6",
+"s     c #989897",
+"t     c #989796",
+"u     c #EBEAE8",
+"v     c #E1DFDC",
+"w     c #B6B6B4",
+"x     c #72706C",
+"y     c #B1B0AF",
+"z     c #818180",
+"A     c #AFAFAD",
+"B     c #EFEFED",
+"C     c #EFEEEC",
+"D     c #ECEBE9",
+"E     c #E8E7E5",
+"F     c #A4A4A1",
+"G     c #C4C3C0",
+"H     c #817D74",
+"I     c #7F7F7E",
+"J     c #7F7E7D",
+"K     c #EEEDEB",
+"L     c #EDECEA",
+"M     c #E8E7E4",
+"N     c #E7E6E3",
+"O     c #8B867D",
+"P     c #7D7D7C",
+"Q     c #ACABA9",
+"R     c #91908E",
+"S     c #8E8E8C",
+"T     c #E6E4E1",
+"U     c #A2A19F",
+"V     c #646462",
+"W     c #A49E93",
+"X     c #7C7B7A",
+"Y     c #7B7B7A",
+"Z     c #E7E5E2",
+"`     c #E4E3DF",
+" .    c #E3E2DE",
+"..    c #DEDDD9",
+"+.    c #DDDCD8",
+"@.    c #E0DFDB",
+"#.    c #A19C90",
+"$.    c #E6E5E2",
+"%.    c #E5E4E1",
+"&.    c #8E8E8B",
+"*.    c #747371",
+"=.    c #0B0B0B",
+"-.    c #DCDBD7",
+";.    c #DBD9D5",
+">.    c #A19B90",
+",.    c #E3E2DF",
+"'.    c #E4E2DF",
+").    c #DCDAD6",
+"!.    c #D9D7D3",
+"~.    c #E1E0DC",
+"{.    c #E2E1DD",
+"].    c #71716F",
+"^.    c #0B0B0A",
+"/.    c #706F6D",
+"(.    c #D8D6D1",
+"_.    c #9F998D",
+":.    c #999891",
+"<.    c #A39D92",
+"[.    c #A39D91",
+"}.    c #A29C90",
+"|.    c #A19B8F",
+"1.    c #9D978C",
+"2.    c #9B968A",
+"3.    c #676359",
+"4.    c #919191",
+"5.    c #757575",
+". + + + + + + + + + @ # $ % & * ",
+"+ = - - - - - ; > > , ' ) ! ~ { ",
+"+ ] ^ / - ( _ : > < [ } - | 1 2 ",
+"+ - / 3 4 _ 5 > > 6 7 8 - 9 0 a ",
+"+ - 4 b : 5 c d e f } + + + + g ",
+"+ - : h > i j k l m n n o p q + ",
+"+ - > i r j s t t t l u v w x + ",
+"+ - y z A B n C D E + + F G H + ",
+"+ - I B J K L D M N + + + v O + ",
+"+ - L P Q D R R S T + U V v W + ",
+"+ - X X Y M N Z `  .+ ..+.@.#.+ ",
+"+ - $.$.$.%.&.*.=.=.+ -.;.+.>.+ ",
+"+ - ,. .'.`  .+ + + + ).!.-.>.+ ",
+"+ - v ~.@.{.~.].=.^./.!.(.!._.+ ",
+"+ :.W <.[.<.}.|.>._._.1.1.2.3.+ ",
+"4.+ + + + + + + + + + + + + + 5."};
diff --git a/modules/gui/qt4/pixmaps/video.xpm b/modules/gui/qt4/pixmaps/video.xpm
new file mode 100644 (file)
index 0000000..91ef232
--- /dev/null
@@ -0,0 +1,143 @@
+/* XPM */
+static char * video_xpm[] = {
+"16 16 124 2",
+"      c None",
+".     c #FFFFFF",
+"+     c #1B4260",
+"@     c #1E4869",
+"#     c #1E4B6D",
+"$     c #1E4A6B",
+"%     c #204F73",
+"&     c #215175",
+"*     c #325C7C",
+"=     c #37607E",
+"-     c #255B84",
+";     c #296491",
+">     c #4D7CA0",
+",     c #6A90AB",
+"'     c #7697B0",
+")     c #235174",
+"!     c #2C6894",
+"~     c #3375A7",
+"{     c #3677A8",
+"]     c #4E8BBA",
+"^     c #81ADCE",
+"/     c #AFCBE0",
+"(     c #C7DAE9",
+"_     c #42759D",
+":     c #275478",
+"<     c #326D9B",
+"[     c #3C81B7",
+"}     c #447FAE",
+"|     c #5390BF",
+"1     c #5994C2",
+"2     c #5C95C2",
+"3     c #92B8D6",
+"4     c #C8DBEA",
+"5     c #4D7EA4",
+"6     c #2D5B80",
+"7     c #366E9D",
+"8     c #3974A3",
+"9     c #336893",
+"0     c #3D7DB0",
+"a     c #5592C3",
+"b     c #5792C3",
+"c     c #89B3D5",
+"d     c #B4CFE4",
+"e     c #CADDEC",
+"f     c #4A7DA6",
+"g     c #3E6688",
+"h     c #42749D",
+"i     c #BDBDBD",
+"j     c #326088",
+"k     c #4380B5",
+"l     c #396D99",
+"m     c #6C9FCA",
+"n     c #8CB6D8",
+"o     c #99BDDD",
+"p     c #6EA2CE",
+"q     c #3C74A4",
+"r     c #446B8C",
+"s     c #000000",
+"t     c #5F5F5F",
+"u     c #969696",
+"v     c #959595",
+"w     c #447AA5",
+"x     c #3D6B94",
+"y     c #6198C9",
+"z     c #6BA1D1",
+"A     c #639CCE",
+"B     c #4E8FC8",
+"C     c #4279A9",
+"D     c #424242",
+"E     c #7F7F7F",
+"F     c #606060",
+"G     c #636363",
+"H     c #484848",
+"I     c #1E1E1E",
+"J     c #7A7A7A",
+"K     c #5C80A2",
+"L     c #6594C1",
+"M     c #70A5D6",
+"N     c #6FA3D4",
+"O     c #5E8AB4",
+"P     c #8C8C8C",
+"Q     c #383838",
+"R     c #3D3D3D",
+"S     c #5D5D5D",
+"T     c #B8B8B8",
+"U     c #6A6A6A",
+"V     c #4C4C4C",
+"W     c #171717",
+"X     c #94BCE2",
+"Y     c #205B07",
+"Z     c #1F5A06",
+"`     c #2A2A2A",
+" .    c #4E4E4E",
+"..    c #4B4B4B",
+"+.    c #585858",
+"@.    c #727272",
+"#.    c #454545",
+"$.    c #050505",
+"%.    c #2B2B2B",
+"&.    c #121212",
+"*.    c #36960D",
+"=.    c #318A0C",
+"-.    c #246608",
+";.    c #363636",
+">.    c #323232",
+",.    c #4D4D4D",
+"'.    c #3E3E3E",
+").    c #1B1B1B",
+"!.    c #154700",
+"~.    c #236308",
+"{.    c #2B780A",
+"].    c #31840E",
+"^.    c #3E7326",
+"/.    c #468A29",
+"(.    c #0B0B0B",
+"_.    c #040404",
+":.    c #517D3E",
+"<.    c #328E0B",
+"[.    c #389013",
+"}.    c #3E9A17",
+"|.    c #2F840B",
+"1.    c #308C09",
+"2.    c #FDFDFD",
+"3.    c #FBFBFB",
+". . . . . . . . . . . . . . . . ",
+". + @ # $ % & & & & * = * & & . ",
+". # - ; ; ; ; ; ; > , ' , > ; . ",
+". ) ! ~ ~ { { ~ ] ^ / ( / ^ _ . ",
+". : < [ [ } | 1 2 3 4 . 4 3 5 . ",
+". 6 7 8 . 9 0 a b c d e d c f . ",
+". g h . i . j k l m n o n p q . ",
+". r s t u v . w . x y z A B C . ",
+". s D E F G H I J . K L M N O . ",
+". s P D Q R s S T U V W X Y Z . ",
+". `  .s s ..+.@.#.$.%.&.Y *.=.. ",
+". -.Y ;.>.V ,.'.).s !.~.{.{.].. ",
+". ^./.{.~.(._.!.~.{.].*.~.{.*.. ",
+". :.*.*.<.].].{.].[.}.|.*.1.*.. ",
+". . . . . . . . . 2.3.3.. . . . ",
+"                                "};