From bfffe8bfbce5ec499f4ab04f89c18b4b3752df93 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Cl=C3=A9ment=20Stenac?= Date: Sun, 8 Oct 2006 17:02:56 +0000 Subject: [PATCH] Very beginning of hotkey widget + Fix 4.2 compilation issue --- .../gui/qt4/components/extended_panels.cpp | 2 +- modules/gui/qt4/components/preferences.cpp | 19 ++++- .../qt4/components/preferences_widgets.cpp | 70 ++++++++++++++++++- .../qt4/components/preferences_widgets.hpp | 21 ++++++ 4 files changed, 108 insertions(+), 4 deletions(-) diff --git a/modules/gui/qt4/components/extended_panels.cpp b/modules/gui/qt4/components/extended_panels.cpp index 272151978c..2e7a6a5f73 100644 --- a/modules/gui/qt4/components/extended_panels.cpp +++ b/modules/gui/qt4/components/extended_panels.cpp @@ -49,7 +49,7 @@ static const QString band_frequencies[] = Equalizer::Equalizer( intf_thread_t *_p_intf, QWidget *_parent ) : QWidget( _parent ) , p_intf( _p_intf ) { - QFont smallFont = QApplication::font(0); + QFont smallFont = QApplication::font( static_cast(0) ); smallFont.setPointSize( smallFont.pointSize() - 3 ); ui.setupUi( this ); diff --git a/modules/gui/qt4/components/preferences.cpp b/modules/gui/qt4/components/preferences.cpp index aeba7bb91e..54ba38b57d 100644 --- a/modules/gui/qt4/components/preferences.cpp +++ b/modules/gui/qt4/components/preferences.cpp @@ -159,7 +159,7 @@ PrefsTree::PrefsTree( intf_thread_t *_p_intf, QWidget *_parent ) : continue; } data = new PrefsItemData(); - data->name = QString( qfu( config_CategoryNameGet( + data->name = QString( qfu( config_CategoryNameGet( p_item->i_value)) ); psz_help = config_CategoryHelpGet( p_item->i_value ); if( psz_help ) @@ -413,7 +413,7 @@ PrefsPanel::PrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, QLabel *label = new QLabel( head ); global_layout->addWidget( label ); - QFont myFont = QApplication::font(0); + QFont myFont = QApplication::font( static_cast(0) ); myFont.setPointSize( myFont.pointSize() + 3 ); myFont.setBold( true ); label->setFont( myFont ); @@ -431,6 +431,7 @@ PrefsPanel::PrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, QGridLayout *layout = new QGridLayout(); int i_line = 0, i_boxline = 0; + bool has_hotkey = false; if( p_item ) do { @@ -454,6 +455,13 @@ PrefsPanel::PrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, box = new QGroupBox( qfu(p_item->psz_text) ); boxlayout = new QGridLayout(); } + /* Only one hotkey control */ + if( has_hotkey && p_item->i_type & CONFIG_ITEM && p_item->psz_name && + strstr( p_item->psz_name, "key-" ) ) + continue; + if( p_item->i_type & CONFIG_ITEM && p_item->psz_name && + strstr( p_item->psz_name, "key-" ) ) + has_hotkey = true; ConfigControl *control; if( ! box ) @@ -465,6 +473,13 @@ PrefsPanel::PrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, if( !control ) continue; + if( has_hotkey ) + { + /* A hotkey widget takes 2 lines */ + if( box ) i_boxline ++; + else i_line++; + } + if( box ) i_boxline++; else i_line++; controls.append( control ); diff --git a/modules/gui/qt4/components/preferences_widgets.cpp b/modules/gui/qt4/components/preferences_widgets.cpp index 7167c853dc..477c7ddd78 100644 --- a/modules/gui/qt4/components/preferences_widgets.cpp +++ b/modules/gui/qt4/components/preferences_widgets.cpp @@ -100,6 +100,9 @@ ConfigControl *ConfigControl::createControl( vlc_object_t *p_this, case CONFIG_ITEM_DIRECTORY: fprintf( stderr, "Todo (CONFIG_ITEM_DIRECTORY)\n" ); break; + case CONFIG_ITEM_KEY: + p_control = new KeySelectorControl( p_this, p_item, parent, l, line ); + break; case CONFIG_ITEM_BOOL: p_control = new BoolConfigControl( p_this, p_item, parent, l, line ); break; @@ -129,7 +132,7 @@ void ConfigControl::doApply( intf_thread_t *p_intf ) } case 2: { - VFloatConfigControl *vfcc = + VFloatConfigControl *vfcc = qobject_cast(this); config_PutFloat( p_intf, vfcc->getName(), vfcc->getValue() ); break; @@ -140,6 +143,11 @@ void ConfigControl::doApply( intf_thread_t *p_intf ) qobject_cast(this); config_PutPsz( p_intf, vscc->getName(), qta( vscc->getValue() ) ); } + case 4: + { + KeySelectorControl *ksc = qobject_cast(this); + ksc->doApply(); + } } } @@ -704,3 +712,63 @@ void FloatRangeConfigControl::finish() spin->setMaximum( (double)p_item->f_max ); spin->setMinimum( (double)p_item->f_min ); } + + +/********************************************************************** + * Key selector widget + **********************************************************************/ +KeySelectorControl::KeySelectorControl( vlc_object_t *_p_this, + module_config_t *_p_item, + QWidget *_parent, QGridLayout *l, + int &line ) : + ConfigControl( _p_this, _p_item, _parent ) + +{ + label = new QLabel( qtr("Select an action to change the associated hotkey") ); + table = new QTreeWidget( 0 ); + finish(); + + if( !l ) + { + QVBoxLayout *layout = new QVBoxLayout(); + layout->addWidget( label, 0 ); layout->addWidget( table, 1 ); + widget->setLayout( layout ); + } + else + { + l->addWidget( label, line, 0, 1, 2 ); + l->addWidget( table, line+1, 0, 1,2 ); + } +} + +void KeySelectorControl::finish() +{ + if( label ) + label->setToolTip( qfu(p_item->psz_longtext) ); + + /* Fill the table */ + table->setColumnCount( 2 ); + table->setAlternatingRowColors( true ); + + module_t *p_main = config_FindModule( p_this, "main" ); + assert( p_main ); + module_config_t *p_item = p_main->p_config; + + if( p_item ) do + { + if( p_item->i_type & CONFIG_ITEM && p_item->psz_name && + strstr( p_item->psz_name , "key-" ) ) + { + QTreeWidgetItem *treeItem = new QTreeWidgetItem(); + treeItem->setText( 0, qfu( p_item->psz_text ) ); + treeItem->setText( 1, p_item->psz_value ); + treeItem->setData( 0, Qt::UserRole, QVariant( p_item->psz_name ) ); + table->addTopLevelItem( treeItem ); + } + } while( p_item->i_type != CONFIG_HINT_END && p_item++ ); +} + +void KeySelectorControl::doApply() +{ + +} diff --git a/modules/gui/qt4/components/preferences_widgets.hpp b/modules/gui/qt4/components/preferences_widgets.hpp index 52a0b5586e..e5c7f4f082 100644 --- a/modules/gui/qt4/components/preferences_widgets.hpp +++ b/modules/gui/qt4/components/preferences_widgets.hpp @@ -26,6 +26,7 @@ #define _INFOPANELS_H_ #include #include +#include #include #include #include @@ -306,4 +307,24 @@ private slot: }; #endif +/********************************************************************** + * Key selector widget + **********************************************************************/ +class KeySelectorControl : public ConfigControl +{ + Q_OBJECT; +public: + KeySelectorControl( vlc_object_t *, module_config_t *, QWidget *, + QGridLayout*, int& ); + virtual int getType() { return 4; } + virtual ~KeySelectorControl() {}; + virtual void hide() { table->hide(); label->hide(); } + virtual void show() { table->show(); label->show(); } + void doApply(); +private: + void finish(); + QLabel *label; + QTreeWidget *table; +}; + #endif -- 2.39.2