Commit 756eb4fe authored by Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf

Qt: simplify too complex UI for keys

Noone understood this UI, but me...
parent ae8b4b81
...@@ -1297,7 +1297,7 @@ KeySelectorControl::KeySelectorControl( vlc_object_t *_p_this, ...@@ -1297,7 +1297,7 @@ KeySelectorControl::KeySelectorControl( vlc_object_t *_p_this,
qtr( "Select an action to change the associated hotkey") ); qtr( "Select an action to change the associated hotkey") );
QLabel *searchLabel = new QLabel( qtr( "Search" ) ); QLabel *searchLabel = new QLabel( qtr( "Search" ) );
actionSearch = new SearchLineEdit( keyContainer ); SearchLineEdit *actionSearch = new SearchLineEdit( keyContainer );
table = new QTreeWidget; table = new QTreeWidget;
table->setColumnCount(3); table->setColumnCount(3);
...@@ -1307,27 +1307,17 @@ KeySelectorControl::KeySelectorControl( vlc_object_t *_p_this, ...@@ -1307,27 +1307,17 @@ KeySelectorControl::KeySelectorControl( vlc_object_t *_p_this,
table->setAlternatingRowColors( true ); table->setAlternatingRowColors( true );
table->setSelectionBehavior( QAbstractItemView::SelectItems ); table->setSelectionBehavior( QAbstractItemView::SelectItems );
shortcutValue = new KeyShortcutEdit; table->installEventFilter( this );
shortcutValue->setReadOnly(true);
QPushButton *clearButton = new QPushButton( qtr( "Clear" ) );
QPushButton *setButton = new QPushButton( qtr( "Apply" ) );
setButton->setDefault( true );
finish(); finish();
gLayout->addWidget( label, 0, 0, 1, 4 ); gLayout->addWidget( label, 0, 0, 1, 4 );
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( shortcutValue, 3, 1, 1, 2 );
gLayout->addWidget( setButton, 3, 3, 1, 1 );
l->addWidget( keyContainer, line, 0, 1, -1 ); l->addWidget( keyContainer, line, 0, 1, -1 );
CONNECT( clearButton, clicked(), shortcutValue, clear() );
CONNECT( clearButton, clicked(), this, setTheKey() );
BUTTONACT( setButton, setTheKey() );
CONNECT( actionSearch, textChanged( const QString& ), CONNECT( actionSearch, textChanged( const QString& ),
this, filter( const QString& ) ); this, filter( const QString& ) );
} }
...@@ -1396,14 +1386,8 @@ void KeySelectorControl::finish() ...@@ -1396,14 +1386,8 @@ void KeySelectorControl::finish()
table->resizeColumnToContents( 0 ); table->resizeColumnToContents( 0 );
CONNECT( table, itemDoubleClicked( QTreeWidgetItem *, int ), CONNECT( table, itemActivated( QTreeWidgetItem *, int ),
this, selectKey( QTreeWidgetItem *, int ) ); this, selectKey( QTreeWidgetItem *, int ) );
CONNECT( table, itemClicked( QTreeWidgetItem *, int ),
this, select( QTreeWidgetItem *, int) );
CONNECT( table, itemSelectionChanged(),
this, select1Key() );
CONNECT( shortcutValue, pressed(), this, selectKey() );
} }
void KeySelectorControl::filter( const QString &qs_search ) void KeySelectorControl::filter( const QString &qs_search )
...@@ -1417,20 +1401,6 @@ void KeySelectorControl::filter( const QString &qs_search ) ...@@ -1417,20 +1401,6 @@ void KeySelectorControl::filter( const QString &qs_search )
} }
} }
void KeySelectorControl::select( QTreeWidgetItem *, int column )
{
shortcutValue->setGlobal( column == 2 );
}
/* Show the key selected from the table in the keySelector */
void KeySelectorControl::select1Key()
{
QTreeWidgetItem *keyItem = table->currentItem();
shortcutValue->setText( keyItem->text( 1 ) );
shortcutValue->setValue( keyItem->data( 1, Qt::UserRole ).toString() );
shortcutValue->setGlobal( false );
}
void KeySelectorControl::selectKey( QTreeWidgetItem *keyItem, int column ) void KeySelectorControl::selectKey( QTreeWidgetItem *keyItem, int column )
{ {
/* This happens when triggered by ClickEater */ /* This happens when triggered by ClickEater */
...@@ -1452,10 +1422,8 @@ void KeySelectorControl::selectKey( QTreeWidgetItem *keyItem, int column ) ...@@ -1452,10 +1422,8 @@ void KeySelectorControl::selectKey( QTreeWidgetItem *keyItem, int column )
if( d->result() == QDialog::Accepted ) if( d->result() == QDialog::Accepted )
{ {
QString newKey = VLCKeyToString( d->keyValue ); QString newKey = VLCKeyToString( d->keyValue );
shortcutValue->setText( newKey );
shortcutValue->setValue( newKey );
shortcutValue->setGlobal( b_global );
/* In case of conflict, reset other keys*/
if( d->conflicts ) if( d->conflicts )
{ {
QTreeWidgetItem *it; QTreeWidgetItem *it;
...@@ -1470,22 +1438,14 @@ void KeySelectorControl::selectKey( QTreeWidgetItem *keyItem, int column ) ...@@ -1470,22 +1438,14 @@ void KeySelectorControl::selectKey( QTreeWidgetItem *keyItem, int column )
it->setText( 1 + b_global, qtr( "Unset" ) ); it->setText( 1 + b_global, qtr( "Unset" ) );
} }
} }
/* We already made an OK once. */
setTheKey();
} }
keyItem->setText( column, newKey );
keyItem->setData( column, Qt::UserRole, newKey );
} }
delete d; delete d;
} }
void KeySelectorControl::setTheKey()
{
if( !table->currentItem() ) return;
table->currentItem()->setText( shortcutValue->getGlobal() ? 2 : 1,
shortcutValue->text() );
table->currentItem()->setData( shortcutValue->getGlobal() ? 2 : 1,
Qt::UserRole, shortcutValue->getValue() );
}
void KeySelectorControl::doApply() void KeySelectorControl::doApply()
{ {
QTreeWidgetItem *it; QTreeWidgetItem *it;
...@@ -1504,6 +1464,29 @@ void KeySelectorControl::doApply() ...@@ -1504,6 +1464,29 @@ void KeySelectorControl::doApply()
} }
} }
bool KeySelectorControl::eventFilter( QObject *obj, QEvent *e )
{
if( obj != table || e->type() != QEvent::KeyPress )
return ConfigControl::eventFilter(obj, e);
QKeyEvent *keyEv = static_cast<QKeyEvent*>(e);
QTreeWidget *aTable = static_cast<QTreeWidget *>(obj);
if( keyEv->key() == Qt::Key_Escape )
{
aTable->clearFocus();
return true;
}
else if( keyEv->key() == Qt::Key_Return ||
keyEv->key() == Qt::Key_Enter )
{
selectKey( aTable->currentItem(), aTable->currentColumn() );
return true;
}
else
return false;
}
/** /**
* Class KeyInputDialog * Class KeyInputDialog
**/ **/
...@@ -1521,7 +1504,7 @@ KeyInputDialog::KeyInputDialog( QTreeWidget *_table, ...@@ -1521,7 +1504,7 @@ KeyInputDialog::KeyInputDialog( QTreeWidget *_table,
+ qtr( "Hotkey for " ) + keyToChange ); + qtr( "Hotkey for " ) + keyToChange );
setWindowRole( "vlc-key-input" ); setWindowRole( "vlc-key-input" );
vLayout = new QVBoxLayout( this ); QVBoxLayout *vLayout = new QVBoxLayout( this );
selected = new QLabel( qtr( "Press the new keys for " ) + keyToChange ); selected = new QLabel( qtr( "Press the new keys for " ) + keyToChange );
vLayout->addWidget( selected , Qt::AlignCenter ); vLayout->addWidget( selected , Qt::AlignCenter );
...@@ -1586,8 +1569,3 @@ void KeyInputDialog::wheelEvent( QWheelEvent *e ) ...@@ -1586,8 +1569,3 @@ void KeyInputDialog::wheelEvent( QWheelEvent *e )
keyValue = i_vlck; keyValue = i_vlck;
} }
void KeyShortcutEdit::mousePressEvent( QMouseEvent *)
{
emit pressed();
}
...@@ -446,26 +446,6 @@ private slot: ...@@ -446,26 +446,6 @@ private slot:
/********************************************************************** /**********************************************************************
* Key selector widget * Key selector widget
**********************************************************************/ **********************************************************************/
class KeyShortcutEdit: public QLineEdit
{
Q_OBJECT
public:
void setValue( const QString& value ){ this->value = value; }
QString getValue() const { return value; }
void setGlobal( bool _value ) { b_global = _value; }
bool getGlobal() const { return b_global; }
public slots:
virtual void clear(void) { value = qfu(""); QLineEdit::clear(); }
private:
QString value;
bool b_global;
virtual void mousePressEvent( QMouseEvent *event );
signals:
void pressed();
};
class SearchLineEdit;
class KeySelectorControl : public ConfigControl class KeySelectorControl : public ConfigControl
{ {
Q_OBJECT Q_OBJECT
...@@ -476,18 +456,15 @@ public: ...@@ -476,18 +456,15 @@ public:
virtual void hide() { table->hide(); if( label ) label->hide(); } virtual void hide() { table->hide(); if( label ) label->hide(); }
virtual void show() { table->show(); if( label ) label->show(); } virtual void show() { table->show(); if( label ) label->show(); }
virtual void doApply(); virtual void doApply();
protected:
virtual bool eventFilter( QObject *, QEvent * );
private: 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;
SearchLineEdit *actionSearch;
private slots: private slots:
void setTheKey();
void selectKey( QTreeWidgetItem * = NULL, int column = 1 ); void selectKey( QTreeWidgetItem * = NULL, int column = 1 );
void select( QTreeWidgetItem * = NULL, int column = 1 );
void select1Key();
void filter( const QString & ); void filter( const QString & );
}; };
...@@ -497,14 +474,15 @@ public: ...@@ -497,14 +474,15 @@ public:
KeyInputDialog( QTreeWidget *, const QString&, QWidget *, bool b_global = false); KeyInputDialog( QTreeWidget *, const QString&, QWidget *, bool b_global = false);
int keyValue; int keyValue;
bool conflicts; bool conflicts;
private: private:
QTreeWidget *table; QTreeWidget *table;
QLabel *selected, *warning;
QDialogButtonBox *buttonBox;
void checkForConflicts( int i_vlckey ); void checkForConflicts( int i_vlckey );
void keyPressEvent( QKeyEvent *); void keyPressEvent( QKeyEvent *);
void wheelEvent( QWheelEvent *); void wheelEvent( QWheelEvent *);
QLabel *selected, *warning;
QVBoxLayout *vLayout;
QDialogButtonBox *buttonBox;
bool b_global; bool b_global;
}; };
#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