-rw-r--r-- | libopie2/opieui/okeyconfigwidget.cpp | 89 | ||||
-rw-r--r-- | libopie2/opieui/okeyconfigwidget.h | 41 |
2 files changed, 117 insertions, 13 deletions
diff --git a/libopie2/opieui/okeyconfigwidget.cpp b/libopie2/opieui/okeyconfigwidget.cpp index 273f15b..41be1be 100644 --- a/libopie2/opieui/okeyconfigwidget.cpp +++ b/libopie2/opieui/okeyconfigwidget.cpp @@ -363,2 +363,3 @@ bool OKeyConfigItem::isEmpty()const { if ( !m_text.isEmpty() ) return false; + if ( m_id != -1 ) return false; @@ -371,7 +372,9 @@ bool OKeyConfigItem::isEmpty()const { bool OKeyConfigItem::operator==( const OKeyConfigItem& conf ) { - if ( isEmpty() == conf.isEmpty() ) return true; +/* if ( isEmpty() == conf.isEmpty() ) return true; else if ( isEmpty() != conf.isEmpty() ) return false; else if ( !isEmpty()!= conf.isEmpty() ) return false; +*/ if ( m_id != conf.m_id ) return false; + if ( m_obj != conf.m_obj ) return false; if ( m_text != conf.m_text ) return false; @@ -380,2 +383,4 @@ bool OKeyConfigItem::operator==( const OKeyConfigItem& conf ) { + + return true; @@ -507,3 +512,5 @@ void OKeyConfigManager::save() { OKeyPair deft = (*it).defaultKeyPair(); - /* don't write if it is the default setting */ + /* + * don't write if it is the default setting + * FIXME allow to remove Keys if ( (pair.keycode() == deft.keycode()) && @@ -511,2 +518,3 @@ void OKeyConfigManager::save() { return; + */ @@ -549,5 +557,5 @@ OKeyConfigItem OKeyConfigManager::handleKeyEvent( QKeyEvent* e ) { else if ( mod & 512 ) - new_mod |= Qt::AltButton; - else if ( mod & 1024 ) new_mod |= Qt::ControlButton; + else if ( mod & 1024 ) + new_mod |= Qt::AltButton; @@ -588,2 +596,3 @@ void OKeyConfigManager::addKeyConfig( const OKeyConfigItem& item ) { m_keys.append( item ); + qWarning( "m_keys count is now %d", m_keys.count() ); delete m_map; m_map = 0; @@ -597,2 +606,3 @@ void OKeyConfigManager::removeKeyConfig( const OKeyConfigItem& item ) { m_keys.remove( item ); + qWarning( "m_keys count is now %d", m_keys.count() ); delete m_map; m_map = 0; @@ -739,3 +749,5 @@ namespace Private { OKeyConfigItem& item(); + OKeyConfigItem origItem()const; void setItem( const OKeyConfigItem& item ); + void updateText(); @@ -744,2 +756,3 @@ namespace Private { OKeyConfigItem m_item; + OKeyConfigItem m_origItem; OKeyConfigManager* m_manager; @@ -750,2 +763,3 @@ namespace Private { : Opie::Ui::OListViewItem( parent ), m_manager( man ) { + m_origItem = item; setItem( item ); @@ -756,2 +770,5 @@ namespace Private { } + OKeyConfigItem OKeyListViewItem::origItem() const{ + return m_origItem; + } OKeyConfigManager* OKeyListViewItem::manager() { @@ -763,5 +780,12 @@ namespace Private { setText ( 1, m_item.text() ); + m_item.keyPair().isEmpty() ? setText( 2, QObject::tr( "None" ) ) : setText ( 2, keyToString( m_item.keyPair() ) ); + + m_item.defaultKeyPair().isEmpty() ? setText( 3, QObject::tr( "None" ) ) : setText ( 3, keyToString( m_item.defaultKeyPair() ) ); } + void OKeyListViewItem::updateText() { + m_item.keyPair().isEmpty() ? setText( 2, QObject::tr( "None" ) ) : + setText( 2, keyToString( m_item.keyPair() ) ); + } @@ -850,2 +874,3 @@ void OKeyConfigWidget::initUi() { m_view->addColumn( tr("Default Key" ) ); + m_view->setRootIsDecorated( true ); connect(m_view, SIGNAL(currentChanged(QListViewItem*)), @@ -899,4 +924,6 @@ void OKeyConfigWidget::initUi() { + connect(m_btn, SIGNAL(clicked()), + this, SLOT(slotConfigure())); - m_box = gr; + m_box = box; } @@ -951,2 +978,16 @@ void OKeyConfigWidget::load() { void OKeyConfigWidget::save() { + /* + * Iterate over all config items + */ + QListViewItemIterator it( m_view ); + while ( it.current() ) { + if (it.current()->parent() ) { + Opie::Ui::Private::OKeyListViewItem *item = static_cast<Opie::Ui::Private::OKeyListViewItem*>( it.current() ); + OKeyConfigManager *man = item->manager(); + man->removeKeyConfig( item->origItem() ); + man->addKeyConfig( item->item() ); + } + ++it; + } + @@ -969,2 +1010,3 @@ void OKeyConfigWidget::slotListViewItem( QListViewItem* _item) { OKeyConfigItem keyItem= item->item(); + m_lbl->setText( tr("Default: " )+ item->text( 3 ) ); if ( keyItem.keyPair().isEmpty() ) { @@ -990,3 +1032,3 @@ void OKeyConfigWidget::slotNoKey() { - if ( !m_view->currentItem() || m_view->currentItem()->parent() ) + if ( !m_view->currentItem() || !m_view->currentItem()->parent() ) return; @@ -1002,2 +1044,3 @@ void OKeyConfigWidget::slotNoKey() { item->item().setKeyPair( OKeyPair::emptyKey() ); + item->updateText(); @@ -1009,9 +1052,8 @@ void OKeyConfigWidget::slotNoKey() { void OKeyConfigWidget::slotDefaultKey() { - qWarning( "Slot Default Key" ); - m_none->setChecked( true ); + m_none->setChecked( false ); m_cus ->setChecked( false ); m_btn ->setEnabled( false ); - m_def ->setChecked( false ); + m_def ->setChecked( true ); - if ( !m_view->currentItem() || m_view->currentItem()->parent() ) + if ( !m_view->currentItem() || !m_view->currentItem()->parent() ) return; @@ -1027,2 +1069,3 @@ void OKeyConfigWidget::slotDefaultKey() { item->item().setKeyPair( item->item().defaultKeyPair() ); + item->updateText(); @@ -1033,3 +1076,2 @@ void OKeyConfigWidget::slotDefaultKey() { void OKeyConfigWidget::slotCustomKey() { - qWarning( "SlotCustom Key" ); m_cus ->setChecked( true ); @@ -1039,3 +1081,3 @@ void OKeyConfigWidget::slotCustomKey() { - if ( !m_view->currentItem() || m_view->currentItem()->parent() ) + if ( !m_view->currentItem() || !m_view->currentItem()->parent() ) return; @@ -1044 +1086,24 @@ void OKeyConfigWidget::slotCustomKey() { +void OKeyConfigWidget::slotConfigure() { + +} + + +OKeyChooserConfigDialog::OKeyChooserConfigDialog( QWidget* par, const char* nam, + bool mod, WFlags fl ) + : QDialog( par, nam, mod, fl ) { +} + +OKeyChooserConfigDialog::~OKeyChooserConfigDialog() { +} + +Opie::Ui::OKeyPair OKeyChooserConfigDialog::keyPair()const{ +} + +void OKeyChooserConfigDialog::keyPressEvent( QKeyEvent* ev ) { + ev->ignore(); +} + +void OKeyChooserConfigDialog::keyReleaseEvent( QKeyEvent* ev ) { + ev->ignore(); +} diff --git a/libopie2/opieui/okeyconfigwidget.h b/libopie2/opieui/okeyconfigwidget.h index a7a5f48..8d2a1ef 100644 --- a/libopie2/opieui/okeyconfigwidget.h +++ b/libopie2/opieui/okeyconfigwidget.h @@ -250,3 +250,3 @@ private slots: void slotCustomKey(); - + void slotConfigure(); @@ -265,2 +265,41 @@ private: + +/** + * This is a small dialog that allows you to + * capture a key sequence. + * If you want it to close after a key was captured you + * can use this code snippet. + * + * \code + * OKeyChooserConfigDialog diag(0,0,true); + * connect(&diag,SIGNAL(keyCaptured()), + * this,SLOT(accept())); + * if( QPEApplication::execDialog(&diag) == QDialog::Accept ){ + * take_the_key_and_do_something + * } + * + * \endcode + * + */ +class OKeyChooserConfigDialog : public QDialog { + Q_OBJECT +public: + OKeyChooserConfigDialog( QWidget* parent = 0, const char* name = 0, bool modal = false, WFlags fl = 0 ); + ~OKeyChooserConfigDialog(); + + OKeyPair keyPair()const; + +protected: + void keyPressEvent( QKeyEvent* ); + void keyReleaseEvent( QKeyEvent* ); + +signals: + void keyCaptured(); + +private: + OKeyPair m_keyPair; + class Private; + Private *d; +}; + } |