preferences.cpp: Changed the preferences dialog to use a tree of categories

and plugins, the way wxwindows do it.
pluginsbox.(cpp|h): removed the "Configure" button from CONFIG_ITEM_MODULE
widgets, as it isn't needed anymore
parent 70f82bff
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* pluginbox.cpp: the pluginbox class * pluginbox.cpp: the pluginbox class
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * Copyright (C) 2001 VideoLAN
* $Id: pluginsbox.cpp,v 1.2 2002/08/12 17:38:10 sigmunau Exp $ * $Id: pluginsbox.cpp,v 1.3 2003/03/29 14:30:55 sigmunau Exp $
* *
* Authors: Sigmund Augdal <sigmunau@idi.ntnu.no> Mon Aug 12 2002 * Authors: Sigmund Augdal <sigmunau@idi.ntnu.no> Mon Aug 12 2002
* *
...@@ -45,15 +45,12 @@ KPluginsBox::KPluginsBox(intf_thread_t *p_intf, ...@@ -45,15 +45,12 @@ KPluginsBox::KPluginsBox(intf_thread_t *p_intf,
listView->addColumn(_("Name")); listView->addColumn(_("Name"));
listView->addColumn(_("Description")); listView->addColumn(_("Description"));
KButtonBox *item_bbox = new KButtonBox(item_vbox); KButtonBox *item_bbox = new KButtonBox(item_vbox);
configure = item_bbox->addButton( _("Configure") );
configure->setEnabled(false);
selectButton = item_bbox->addButton( _("Select") ); selectButton = item_bbox->addButton( _("Select") );
QHBox *item_hbox = new QHBox(item_vbox); QHBox *item_hbox = new QHBox(item_vbox);
item_hbox->setSpacing(spacing); item_hbox->setSpacing(spacing);
new QLabel( _("Selected:"), item_hbox ); new QLabel( _("Selected:"), item_hbox );
line = new KLineEdit( value, item_hbox ); line = new KLineEdit( value, item_hbox );
connect(selectButton, SIGNAL(clicked()), this, SLOT(selectClicked())); connect(selectButton, SIGNAL(clicked()), this, SLOT(selectClicked()));
connect(configure, SIGNAL(clicked()), this, SLOT(configureClicked()));
connect(listView, SIGNAL(selectionChanged( QListViewItem *)), connect(listView, SIGNAL(selectionChanged( QListViewItem *)),
this, SLOT( selectionChanged( QListViewItem *))); this, SLOT( selectionChanged( QListViewItem *)));
} }
...@@ -76,15 +73,7 @@ void KPluginsBox::selectClicked() ...@@ -76,15 +73,7 @@ void KPluginsBox::selectClicked()
} }
} }
void KPluginsBox::configureClicked()
{
if (listView->selectedItem()) {
new KPreferences(p_intf, listView->selectedItem()->text(0), this);
}
}
void KPluginsBox::selectionChanged( QListViewItem *item ) void KPluginsBox::selectionChanged( QListViewItem *item )
{ {
selectButton->setEnabled(true); selectButton->setEnabled(true);
/* look for module 'psz_name' */
configure->setEnabled(owner->isConfigureable(item->text(0)));
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* pluginbox.h: includes for the pluginbox class * pluginbox.h: includes for the pluginbox class
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * Copyright (C) 2001 VideoLAN
* $Id: pluginsbox.h,v 1.2 2002/08/12 17:38:10 sigmunau Exp $ * $Id: pluginsbox.h,v 1.3 2003/03/29 14:30:55 sigmunau Exp $
* *
* Authors: Sigmund Augdal <sigmunau@idi.ntnu.no> Mon Aug 12 2002 * Authors: Sigmund Augdal <sigmunau@idi.ntnu.no> Mon Aug 12 2002
* *
...@@ -39,7 +39,6 @@ class KPluginsBox : public QGroupBox ...@@ -39,7 +39,6 @@ class KPluginsBox : public QGroupBox
private slots: private slots:
void selectClicked(void); void selectClicked(void);
void configureClicked(void);
void selectionChanged( QListViewItem * ); void selectionChanged( QListViewItem * );
signals: signals:
...@@ -48,7 +47,6 @@ class KPluginsBox : public QGroupBox ...@@ -48,7 +47,6 @@ class KPluginsBox : public QGroupBox
private: private:
intf_thread_t *p_intf; intf_thread_t *p_intf;
KListView *listView; KListView *listView;
QPushButton *configure;
QPushButton *selectButton; QPushButton *selectButton;
KLineEdit *line; KLineEdit *line;
KPreferences *owner; KPreferences *owner;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* preferences.cpp: preferences window for the kde gui * preferences.cpp: preferences window for the kde gui
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * Copyright (C) 2001 VideoLAN
* $Id: preferences.cpp,v 1.12 2003/02/09 12:18:40 sam Exp $ * $Id: preferences.cpp,v 1.13 2003/03/29 14:30:55 sigmunau Exp $
* *
* Authors: Sigmund Augdal <sigmunau@idi.ntnu.no> Mon Aug 12 2002 * Authors: Sigmund Augdal <sigmunau@idi.ntnu.no> Mon Aug 12 2002
* *
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
*/ */
KPreferences::KPreferences(intf_thread_t *p_intf, const char *psz_module_name, KPreferences::KPreferences(intf_thread_t *p_intf, const char *psz_module_name,
QWidget *parent, const QString &caption) : QWidget *parent, const QString &caption) :
KDialogBase ( Tabbed, caption, Ok| Apply|Cancel|User1, Ok, parent, KDialogBase ( TreeList, caption, Ok| Apply|Cancel|User1, Ok, parent,
"vlc preferences", true, false, i18n("&Save") ) "vlc preferences", true, false, i18n("&Save") )
{ {
module_t *p_parser = NULL; module_t *p_parser = NULL;
...@@ -64,192 +64,186 @@ KPreferences::KPreferences(intf_thread_t *p_intf, const char *psz_module_name, ...@@ -64,192 +64,186 @@ KPreferences::KPreferences(intf_thread_t *p_intf, const char *psz_module_name,
/* List all modules */ /* List all modules */
p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE, FIND_ANYWHERE ); p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE, FIND_ANYWHERE );
/* Look for the selected module */
for( i_index = 0; i_index < p_list->i_count; i_index++ ) for( i_index = 0; i_index < p_list->i_count; i_index++ )
{ {
p_parser = (module_t *)p_list->p_values[i_index].p_object ; p_parser = (module_t *)p_list->p_values[i_index].p_object ;
msg_Dbg( p_intf,"adding module: %s", p_parser->psz_object_name );
if( psz_module_name p_item = p_parser->p_config;
&& !strcmp( psz_module_name, p_parser->psz_object_name ) ) while( p_item && p_item->i_type != CONFIG_HINT_END )
{
break;
}
}
if( !p_parser || i_index == p_list->i_count )
{
vlc_list_release( p_list );
return;
}
p_item = p_parser->p_config;
if( p_item ) do
{
switch( p_item->i_type )
{ {
msg_Dbg( p_intf, "adding item: %s type: %d", p_item->psz_text,p_item->i_type );
switch( p_item->i_type )
{
case CONFIG_HINT_CATEGORY: case CONFIG_HINT_CATEGORY:
case CONFIG_HINT_END: case CONFIG_HINT_END:
/* /*
* Now we can start taking care of the new category * Now we can start taking care of the new category
*/ */
if( p_item->i_type == CONFIG_HINT_CATEGORY ) if( p_item->i_type == CONFIG_HINT_CATEGORY )
{ {
category_label = new QString( p_item->psz_text ); category_label = new QString( p_item->psz_text );
QFrame *page = addPage( *category_label ); QStringList path;
QVBoxLayout *toplayout = new QVBoxLayout( page); if ( strcmp( p_parser->psz_object_name, "main" ) )
QScrollView *sv = new QScrollView(page); {
sv->setResizePolicy(QScrollView::AutoOneFit); path += _( "Plugins" );
sv->setFrameStyle(QScrollView::NoFrame); path += p_parser->psz_capability;
toplayout->addWidget(sv); path += p_parser->psz_object_name;
category_table = new QVBox(sv->viewport()); }
sv->addChild(category_table); path += *category_label;
toplayout->addStretch(10); QFrame *page = addPage( path );
category_table->setSpacing(spacingHint()); QVBoxLayout *toplayout = new QVBoxLayout( page);
} QScrollView *sv = new QScrollView(page);
sv->setResizePolicy(QScrollView::AutoOneFit);
sv->setFrameStyle(QScrollView::NoFrame);
toplayout->addWidget(sv);
category_table = new QVBox(sv->viewport());
sv->addChild(category_table);
category_table->setSpacing(spacingHint());
}
break; break;
case CONFIG_ITEM_MODULE: case CONFIG_ITEM_MODULE:
{
vlc_mutex_lock( p_item->p_lock );
KPluginsBox *item_frame =
new KPluginsBox( p_intf, p_item->psz_text,
p_item->psz_value ? p_item->psz_value :"",
category_table,
spacingHint(),
this );
QConfigItem *ci = new QConfigItem(this,
p_item->psz_name,
p_item->i_type,
p_item->psz_value);
connect(item_frame, SIGNAL(selectionChanged(const QString &)),
ci, SLOT(setValue(const QString &)));
/* build a list of available plugins */
for( i_index = 0; i_index < p_list->i_count; i_index++ )
{ {
p_parser = (module_t *)p_list->p_values[i_index].p_object ; vlc_mutex_lock( p_item->p_lock );
KPluginsBox *item_frame =
if( !strcmp( p_parser->psz_capability, new KPluginsBox( p_intf, p_item->psz_text,
p_item->psz_type ) ) p_item->psz_value ? p_item->psz_value :"",
category_table,
spacingHint(),
this );
QConfigItem *ci = new QConfigItem(this,
p_item->psz_name,
p_item->i_type,
p_item->psz_value);
connect(item_frame, SIGNAL(selectionChanged(const QString &)),
ci, SLOT(setValue(const QString &)));
/* build a list of available plugins */
for( int i_index = 0; i_index < p_list->i_count; i_index++ )
{ {
new QListViewItem(item_frame->getListView(), module_t *p_parser = (module_t *)p_list->p_values[i_index].p_object ;
p_parser->psz_object_name,
p_parser->psz_longname); if( !strcmp( p_parser->psz_capability,
p_item->psz_type ) )
{
new QListViewItem(item_frame->getListView(),
p_parser->psz_object_name,
p_parser->psz_longname);
}
} }
}
vlc_mutex_unlock( p_item->p_lock ); vlc_mutex_unlock( p_item->p_lock );
} }
break; break;
case CONFIG_ITEM_STRING: case CONFIG_ITEM_STRING:
{ {
QHBox *hb = new QHBox(category_table); QHBox *hb = new QHBox(category_table);
hb->setSpacing(spacingHint()); hb->setSpacing(spacingHint());
new QLabel(p_item->psz_text, hb); new QLabel(p_item->psz_text, hb);
/* add input box with default value */ /* add input box with default value */
vlc_mutex_lock( p_item->p_lock ); vlc_mutex_lock( p_item->p_lock );
KLineEdit *kl = new KLineEdit( p_item->psz_value ? KLineEdit *kl = new KLineEdit( p_item->psz_value ?
p_item->psz_value : "", hb); p_item->psz_value : "", hb);
QConfigItem *ci = new QConfigItem(this, p_item->psz_name, QConfigItem *ci = new QConfigItem(this, p_item->psz_name,
p_item->i_type, p_item->i_type,
p_item->psz_value ? p_item->psz_value ?
p_item->psz_value : ""); p_item->psz_value : "");
connect(kl, SIGNAL(textChanged ( const QString & )), connect(kl, SIGNAL(textChanged ( const QString & )),
ci, SLOT(setValue( const QString &))); ci, SLOT(setValue( const QString &)));
QToolTip::add(kl, p_item->psz_longtext); QToolTip::add(kl, p_item->psz_longtext);
kl->setMaxLength(40); kl->setMaxLength(40);
vlc_mutex_unlock( p_item->p_lock ); vlc_mutex_unlock( p_item->p_lock );
} }
break; break;
case CONFIG_ITEM_FILE: case CONFIG_ITEM_FILE:
{ {
QHBox *hb = new QHBox(category_table); QHBox *hb = new QHBox(category_table);
hb->setSpacing(spacingHint()); hb->setSpacing(spacingHint());
new QLabel(p_item->psz_text, hb); new QLabel(p_item->psz_text, hb);
/* add input box with default value */ /* add input box with default value */
vlc_mutex_lock( p_item->p_lock ); vlc_mutex_lock( p_item->p_lock );
// KLineEdit *kl = new KLineEdit( p_item->psz_value ? // KLineEdit *kl = new KLineEdit( p_item->psz_value ?
// p_item->psz_value : "", hb); // p_item->psz_value : "", hb);
QConfigItem *ci = new QConfigItem(this, p_item->psz_name, QConfigItem *ci = new QConfigItem(this, p_item->psz_name,
p_item->i_type, p_item->i_type,
p_item->psz_value ? p_item->psz_value ?
p_item->psz_value : ""); p_item->psz_value : "");
// QPushButton *bbrowse = new QPushButton( _("Browse"), hb ); // QPushButton *bbrowse = new QPushButton( _("Browse"), hb );
KURLRequester *kfile = new KURLRequester( p_item->psz_value ? KURLRequester *kfile = new KURLRequester( p_item->psz_value ?
p_item->psz_value : "", p_item->psz_value : "",
hb ); hb );
connect(kfile, SIGNAL(textChanged ( const QString & )), connect(kfile, SIGNAL(textChanged ( const QString & )),
ci, SLOT(setValue( const QString &))); ci, SLOT(setValue( const QString &)));
QToolTip::add(kfile, p_item->psz_longtext); QToolTip::add(kfile, p_item->psz_longtext);
vlc_mutex_unlock( p_item->p_lock ); vlc_mutex_unlock( p_item->p_lock );
} }
break; break;
case CONFIG_ITEM_INTEGER: case CONFIG_ITEM_INTEGER:
/* add input box with default value */ /* add input box with default value */
{ {
QHBox *hb = new QHBox(category_table); QHBox *hb = new QHBox(category_table);
hb->setSpacing(spacingHint()); hb->setSpacing(spacingHint());
new QLabel(p_item->psz_text, hb); new QLabel(p_item->psz_text, hb);
QSpinBox *item_adj = new QSpinBox(-1, 99999, 1, hb); QSpinBox *item_adj = new QSpinBox(-1, 99999, 1, hb);
QConfigItem *ci = new QConfigItem(this, p_item->psz_name, QConfigItem *ci = new QConfigItem(this, p_item->psz_name,
p_item->i_type, p_item->i_type,
p_item->i_value); p_item->i_value);
item_adj->setValue( p_item->i_value ); item_adj->setValue( p_item->i_value );
connect(item_adj, SIGNAL(valueChanged( int)), connect(item_adj, SIGNAL(valueChanged( int)),
ci, SLOT(setValue(int))); ci, SLOT(setValue(int)));
QToolTip::add(item_adj, p_item->psz_longtext); QToolTip::add(item_adj, p_item->psz_longtext);
} }
break; break;
case CONFIG_ITEM_FLOAT: case CONFIG_ITEM_FLOAT:
{ {
QHBox *hb = new QHBox(category_table); QHBox *hb = new QHBox(category_table);
hb->setSpacing(spacingHint()); hb->setSpacing(spacingHint());
new QLabel(p_item->psz_text, hb); new QLabel(p_item->psz_text, hb);
KDoubleNumInput *kdi= new KDoubleNumInput(p_item->f_value, hb); KDoubleNumInput *kdi= new KDoubleNumInput(p_item->f_value, hb);
kdi->setRange(-1, 99999, 0.01, false); kdi->setRange(-1, 99999, 0.01, false);
QConfigItem *ci = new QConfigItem(this, p_item->psz_name, QConfigItem *ci = new QConfigItem(this, p_item->psz_name,
p_item->i_type, p_item->i_type,
p_item->f_value); p_item->f_value);
connect(kdi, SIGNAL(valueChanged(double)), connect(kdi, SIGNAL(valueChanged(double)),
ci, SLOT(setValue(double))); ci, SLOT(setValue(double)));
QToolTip::add(kdi, p_item->psz_longtext); QToolTip::add(kdi, p_item->psz_longtext);
} }
break; break;
case CONFIG_ITEM_BOOL: case CONFIG_ITEM_BOOL:
/* add check button */ /* add check button */
{ {
QCheckBox *bool_checkbutton = QCheckBox *bool_checkbutton =
new QCheckBox(QString(p_item->psz_text), category_table); new QCheckBox(QString(p_item->psz_text), category_table);
QConfigItem *ci = new QConfigItem(this, p_item->psz_name, QConfigItem *ci = new QConfigItem(this, p_item->psz_name,
p_item->i_type, p_item->i_type,
p_item->i_value); p_item->i_value);
bool_checkbutton->setChecked(p_item->i_value); bool_checkbutton->setChecked(p_item->i_value);
connect(bool_checkbutton, SIGNAL(stateChanged( int)), connect(bool_checkbutton, SIGNAL(stateChanged( int)),
ci, SLOT(setValue(int))); ci, SLOT(setValue(int)));
QToolTip::add(bool_checkbutton, p_item->psz_longtext); QToolTip::add(bool_checkbutton, p_item->psz_longtext);
} }
break; break;
} }
p_item++; p_item++;
}
} }
while( p_item->i_type != CONFIG_HINT_END );
vlc_list_release( p_list ); vlc_list_release( p_list );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment