Commit 3e8d0beb authored by Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf

Qt4 - Improve the hotkeys preferences.

parent d5107810
...@@ -978,31 +978,35 @@ KeySelectorControl::KeySelectorControl( vlc_object_t *_p_this, ...@@ -978,31 +978,35 @@ KeySelectorControl::KeySelectorControl( vlc_object_t *_p_this,
{ {
QWidget *keyContainer = new QWidget; QWidget *keyContainer = new QWidget;
QGridLayout *gLayout = new QGridLayout( keyContainer ); QGridLayout *gLayout = new QGridLayout( keyContainer );
label = new QLabel(
qtr( "Select an action to change the associated hotkey") );
label = new QLabel( qtr("Select an action to change the associated hotkey") ); /* Deactivated for now
QLabel *searchLabel = new QLabel( qtr( "Search" ) ); QLabel *searchLabel = new QLabel( qtr( "Search" ) );
QLineEdit *actionSearch = new QLineEdit;*/
table = new QTreeWidget; table = new QTreeWidget;
table->setColumnCount(2); table->setColumnCount(2);
table->headerItem()->setText( 0, qtr( "Action" ) ); table->headerItem()->setText( 0, qtr( "Action" ) );
table->headerItem()->setText( 1, qtr( "Shortcut" ) ); table->headerItem()->setText( 1, qtr( "Shortcut" ) );
QLineEdit *shortcutValue = new QLineEdit; shortcutValue = new KeyShortcutEdit;
shortcutValue->setReadOnly(true); shortcutValue->setReadOnly(true);
QLineEdit *actionSearch = new QLineEdit;
QPushButton *clearButton = new QPushButton( qtr( "Clear" ) ); QPushButton *clearButton = new QPushButton( qtr( "Clear" ) );
QPushButton *setButton = new QPushButton( qtr( "Set" ) ); QPushButton *setButton = new QPushButton( qtr( "Set" ) );
finish(); finish();
gLayout->addWidget( label, 0, 0, 1, 4 ); gLayout->addWidget( label, 0, 0, 1, 4 );
/* deactivated for now
gLayout->addWidget( searchLabel, 1, 0, 1, 2 ); gLayout->addWidget( searchLabel, 1, 0, 1, 2 );
gLayout->addWidget( actionSearch, 1, 2, 1, 2 ); gLayout->addWidget( actionSearch, 1, 2, 1, 2 ); */
gLayout->addWidget( table, 2, 0, 1, 4 ); gLayout->addWidget( table, 2, 0, 1, 4 );
gLayout->addWidget( clearButton, 3, 0, 1, 1 ); gLayout->addWidget( clearButton, 3, 0, 1, 1 );
gLayout->addWidget( shortcutValue, 3, 1, 1, 2 ); gLayout->addWidget( shortcutValue, 3, 1, 1, 2 );
gLayout->addWidget( setButton, 3, 3, 1, 1 ); gLayout->addWidget( setButton, 3, 3, 1, 1 );
if( !l ) /* This shouldn't happen */ if( !l ) /* This shouldn't happen */
{ {
QVBoxLayout *layout = new QVBoxLayout(); QVBoxLayout *layout = new QVBoxLayout();
...@@ -1013,6 +1017,8 @@ KeySelectorControl::KeySelectorControl( vlc_object_t *_p_this, ...@@ -1013,6 +1017,8 @@ KeySelectorControl::KeySelectorControl( vlc_object_t *_p_this,
{ {
l->addWidget( keyContainer, 0, 0, 1, 2 ); l->addWidget( keyContainer, 0, 0, 1, 2 );
} }
CONNECT( clearButton, clicked(), shortcutValue, clear() );
BUTTONACT( setButton, setTheKey() );
} }
void KeySelectorControl::finish() void KeySelectorControl::finish()
...@@ -1045,16 +1051,31 @@ void KeySelectorControl::finish() ...@@ -1045,16 +1051,31 @@ void KeySelectorControl::finish()
} }
table->resizeColumnToContents( 0 ); table->resizeColumnToContents( 0 );
CONNECT( table, itemClicked( QTreeWidgetItem *, int ),
this, select1Key( QTreeWidgetItem * ) );
CONNECT( table, itemDoubleClicked( QTreeWidgetItem *, int ), CONNECT( table, itemDoubleClicked( QTreeWidgetItem *, int ),
this, selectKey( QTreeWidgetItem * ) ); this, selectKey( QTreeWidgetItem * ) );
CONNECT( shortcutValue, pressed(), this, selectKey() );
}
void KeySelectorControl::select1Key( QTreeWidgetItem *keyItem )
{
shortcutValue->setText( keyItem->text( 1 ) );
} }
void KeySelectorControl::selectKey( QTreeWidgetItem *keyItem ) void KeySelectorControl::selectKey( QTreeWidgetItem *keyItem )
{ {
module_config_t *p_keyItem = static_cast<module_config_t*> /* This happens when triggered by ClickEater */
if( keyItem == NULL ) keyItem = table->currentItem();
/* This can happen when nothing is selected on the treeView
and the shortcutValue is clicked */
if( !keyItem ) return;
module_config_t *p_keyItem = static_cast<module_config_t*>
(keyItem->data( 0, Qt::UserRole ).value<void*>()); (keyItem->data( 0, Qt::UserRole ).value<void*>());
KeyInputDialog *d = new KeyInputDialog( values, p_keyItem->psz_text ); KeyInputDialog *d = new KeyInputDialog( values, p_keyItem->psz_text, widget );
d->exec(); d->exec();
if( d->result() == QDialog::Accepted ) if( d->result() == QDialog::Accepted )
{ {
...@@ -1068,15 +1089,20 @@ void KeySelectorControl::selectKey( QTreeWidgetItem *keyItem ) ...@@ -1068,15 +1089,20 @@ void KeySelectorControl::selectKey( QTreeWidgetItem *keyItem )
(it->data( 0, Qt::UserRole ).value<void*>()); (it->data( 0, Qt::UserRole ).value<void*>());
if( p_keyItem != p_item && p_item->value.i == d->keyValue ) if( p_keyItem != p_item && p_item->value.i == d->keyValue )
p_item->value.i = 0; p_item->value.i = 0;
it->setText( 1, VLCKeyToString( p_item->value.i ) ); shortcutValue->setText( VLCKeyToString( p_item->value.i ) );
} }
} }
else else
keyItem->setText( 1, VLCKeyToString( p_keyItem->value.i ) ); shortcutValue->setText( VLCKeyToString( p_keyItem->value.i ) );
} }
delete d; delete d;
} }
void KeySelectorControl::setTheKey()
{
table->currentItem()->setText( 1, shortcutValue->text() );
}
void KeySelectorControl::doApply() void KeySelectorControl::doApply()
{ {
foreach( module_config_t *p_current, values ) foreach( module_config_t *p_current, values )
...@@ -1086,8 +1112,9 @@ void KeySelectorControl::doApply() ...@@ -1086,8 +1112,9 @@ void KeySelectorControl::doApply()
} }
KeyInputDialog::KeyInputDialog( QList<module_config_t*>& _values, KeyInputDialog::KeyInputDialog( QList<module_config_t*>& _values,
const char * _keyToChange ) : const char * _keyToChange,
QDialog(0), keyValue(0) QWidget *_parent ) :
QDialog( _parent ), keyValue(0)
{ {
setModal( true ); setModal( true );
values = _values; values = _values;
...@@ -1151,3 +1178,8 @@ void KeyInputDialog::wheelEvent( QWheelEvent *e ) ...@@ -1151,3 +1178,8 @@ void KeyInputDialog::wheelEvent( QWheelEvent *e )
checkForConflicts( i_vlck ); checkForConflicts( i_vlck );
keyValue = i_vlck; keyValue = i_vlck;
} }
void KeyShortcutEdit::mousePressEvent( QMouseEvent *)
{
emit pressed();
}
...@@ -412,7 +412,7 @@ private slot: ...@@ -412,7 +412,7 @@ private slot:
class KeyInputDialog : public QDialog class KeyInputDialog : public QDialog
{ {
public: public:
KeyInputDialog( QList<module_config_t *> &, const char * ); KeyInputDialog( QList<module_config_t *> &, const char *, QWidget * );
int keyValue; int keyValue;
bool conflicts; bool conflicts;
private: private:
...@@ -425,6 +425,15 @@ private: ...@@ -425,6 +425,15 @@ private:
QList<module_config_t*> values; QList<module_config_t*> values;
}; };
class KeyShortcutEdit: public QLineEdit
{
Q_OBJECT
private:
virtual void mousePressEvent( QMouseEvent *event );
signals:
void pressed();
};
class KeySelectorControl : public ConfigControl class KeySelectorControl : public ConfigControl
{ {
Q_OBJECT; Q_OBJECT;
...@@ -440,9 +449,13 @@ private: ...@@ -440,9 +449,13 @@ private:
void finish(); void finish();
QLabel *label; QLabel *label;
QTreeWidget *table; QTreeWidget *table;
KeyShortcutEdit *shortcutValue;
QList<module_config_t *> values; QList<module_config_t *> values;
//QWidget *parent;
private slots: private slots:
void selectKey( QTreeWidgetItem *); void setTheKey();
void selectKey( QTreeWidgetItem * = NULL );
void select1Key( QTreeWidgetItem *);
}; };
#endif #endif
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