-rw-r--r-- | libopie2/opieui/okeyconfigwidget.cpp | 20 | ||||
-rw-r--r-- | libopie2/opieui/okeyconfigwidget.h | 2 |
2 files changed, 19 insertions, 3 deletions
diff --git a/libopie2/opieui/okeyconfigwidget.cpp b/libopie2/opieui/okeyconfigwidget.cpp index 2ea0bd5..273f15b 100644 --- a/libopie2/opieui/okeyconfigwidget.cpp +++ b/libopie2/opieui/okeyconfigwidget.cpp @@ -525,33 +525,32 @@ void OKeyConfigManager::save() { */ OKeyConfigItem OKeyConfigManager::handleKeyEvent( QKeyEvent* e ) { /* * Fix Up issues with Qt/E, my keybard, and virtual input * methods * First my Keyboard delivers 256,512,1024 for shift/ctrl/alt instead of the button state * Also key() on virtual inputmethods are zero and only ascii. We need to fix upper and lower * case ascii */ int key = e->key(); int mod = e->state(); /* * virtual keyboard * else change the button mod only */ - qWarning( "handleKeyEvent...." ); if ( key == 0 ) { key = e->ascii(); if ( key > 96 && key < 123) key -= 32; }else{ int new_mod = 0; if ( mod & 256 ) new_mod |= Qt::ShiftButton; else if ( mod & 512 ) new_mod |= Qt::AltButton; else if ( mod & 1024 ) new_mod |= Qt::ControlButton; mod = new_mod == 0? mod : new_mod; } @@ -594,32 +593,38 @@ void OKeyConfigManager::addKeyConfig( const OKeyConfigItem& item ) { * Remove the Key from the Config. Internal lists will be destroyed * and rebuild on demand later */ void OKeyConfigManager::removeKeyConfig( const OKeyConfigItem& item ) { m_keys.remove( item ); delete m_map; m_map = 0; } /** * Clears the complete list */ void OKeyConfigManager::clearKeyConfig() { m_keys.clear(); delete m_map; m_map = 0; } +/** + * + */ +Opie::Ui::OKeyConfigItem::List OKeyConfigManager::keyConfigList()const{ + return m_keys; +} /** * Add this OKeyPair to the blackList. * Internal lists will be destroyed */ void OKeyConfigManager::addToBlackList( const OKeyPair& key) { m_blackKeys.append( key ); delete m_map; m_map = 0; } /** * Remove this OKeyPair from the black List * Internal lists will be destroyed */ void OKeyConfigManager::removeFromBlackList( const OKeyPair& key ) { @@ -740,37 +745,37 @@ namespace Private { OKeyConfigManager* m_manager; }; OKeyListViewItem::OKeyListViewItem( const OKeyConfigItem& item, OKeyConfigManager* man, OListViewItem* parent) : Opie::Ui::OListViewItem( parent ), m_manager( man ) { setItem( item ); } OKeyListViewItem::~OKeyListViewItem() {} OKeyConfigItem &OKeyListViewItem::item(){ return m_item; } OKeyConfigManager* OKeyListViewItem::manager() { return m_manager; } void OKeyListViewItem::setItem( const OKeyConfigItem& item ) { + m_item = item; setPixmap( 0, m_item.pixmap() ); setText ( 1, m_item.text() ); setText ( 2, keyToString( m_item.keyPair() ) ); setText ( 3, keyToString( m_item.defaultKeyPair() ) ); - m_item = item; } QString keyToString( const OKeyPair& pair ) { int mod = 0; if ( pair.modifier() & Qt::ShiftButton ) mod |= Qt::SHIFT; if ( pair.modifier() & Qt::ControlButton ) mod |= Qt::CTRL; if ( pair.modifier() & Qt::AltButton ) mod |= Qt::ALT; return QAccel::keyToString( mod + pair.keycode() ); } struct OKeyConfigWidgetPrivate{ OKeyConfigWidgetPrivate(const QString& = QString::null, @@ -840,33 +845,32 @@ void OKeyConfigWidget::initUi() { m_view->setFocus(); m_view->setAllColumnsShowFocus( true ); m_view->addColumn( tr("Pixmap") ); m_view->addColumn( tr("Name","Name of the Action in the ListView Header" ) ); m_view->addColumn( tr("Key" ) ); m_view->addColumn( tr("Default Key" ) ); connect(m_view, SIGNAL(currentChanged(QListViewItem*)), this, SLOT(slotListViewItem(QListViewItem*)) ); gridLay->addMultiCellWidget( m_view, 1, 1, 0, 1 ); /* * GROUP with button info */ QGroupBox *box = new QGroupBox( this ); - box ->setEnabled( false ); box ->setTitle( tr("Shortcut for Selected Action") ); box ->setFrameStyle( QFrame::Box | QFrame::Sunken ); layout->addWidget( box, 1 ); gridLay = new QGridLayout( box, 3, 4 ); gridLay->addRowSpacing( 0, fontMetrics().lineSpacing() ); gridLay->setMargin( 4 ); QButtonGroup *gr = new QButtonGroup( box ); gr->hide(); gr->setExclusive( true ); QRadioButton *rad = new QRadioButton( tr( "&None" ), box ); connect( rad, SIGNAL(clicked()), this, SLOT(slotNoKey()) ); gr->insert( rad, 10 ); @@ -916,33 +920,40 @@ OKeyConfigWidget::ChangeMode OKeyConfigWidget::changeMode()const { } /** * insert these items before calling load */ void OKeyConfigWidget::insert( const QString& str, OKeyConfigManager* man ) { Opie::Ui::Private::OKeyConfigWidgetPrivate root( str, man ); m_list.append(root); } /** * loads the items and allows editing them */ void OKeyConfigWidget::load() { + Opie::Ui::Private::OKeyConfigWidgetPrivateList::Iterator it; + for ( it = m_list.begin(); it != m_list.end(); ++it ) { + OListViewItem *item = new OListViewItem( m_view, (*it).name ); + OKeyConfigItem::List list = (*it).manager->keyConfigList(); + for (OKeyConfigItem::List::Iterator keyIt = list.begin(); keyIt != list.end();++keyIt ) + (void )new Opie::Ui::Private::OKeyListViewItem(*keyIt, (*it).manager, item ); + } } /** * Saves if in Queue Mode. It'll update the supplied * OKeyConfigManager objects. * If in Queue mode it'll just return */ void OKeyConfigWidget::save() { } /** * @internal */ void OKeyConfigWidget::slotListViewItem( QListViewItem* _item) { @@ -958,73 +969,76 @@ void OKeyConfigWidget::slotListViewItem( QListViewItem* _item) { OKeyConfigItem keyItem= item->item(); if ( keyItem.keyPair().isEmpty() ) { m_none->setChecked( true ); m_btn ->setEnabled( false ); m_def ->setChecked( false ); m_cus ->setChecked( false ); }else { m_none->setChecked( false ); m_cus ->setChecked( true ); m_btn ->setEnabled( true ); m_def ->setChecked( false ); } } } void OKeyConfigWidget::slotNoKey() { + qWarning( "No Key" ); m_none->setChecked( true ); m_cus ->setChecked( false ); m_btn ->setEnabled( false ); m_def ->setChecked( false ); if ( !m_view->currentItem() || m_view->currentItem()->parent() ) return; /* * If immediate we need to remove and readd the key */ Opie::Ui::Private::OKeyListViewItem *item = static_cast<Opie::Ui::Private::OKeyListViewItem*>(m_view->currentItem()); if ( m_mode == Imediate ) item->manager()->removeKeyConfig( item->item() ); item->item().setKeyPair( OKeyPair::emptyKey() ); if ( m_mode == Imediate ) item->manager()->addKeyConfig( item->item() ); } void OKeyConfigWidget::slotDefaultKey() { + qWarning( "Slot Default Key" ); m_none->setChecked( true ); m_cus ->setChecked( false ); m_btn ->setEnabled( false ); m_def ->setChecked( false ); if ( !m_view->currentItem() || m_view->currentItem()->parent() ) return; Opie::Ui::Private::OKeyListViewItem *item = static_cast<Opie::Ui::Private::OKeyListViewItem*>(m_view->currentItem()); /* * If immediate we need to remove and readd the key */ if ( m_mode == Imediate ) item->manager()->removeKeyConfig( item->item() ); item->item().setKeyPair( item->item().defaultKeyPair() ); if ( m_mode == Imediate ) item->manager()->addKeyConfig( item->item() ); } void OKeyConfigWidget::slotCustomKey() { + qWarning( "SlotCustom Key" ); m_cus ->setChecked( true ); m_btn ->setEnabled( true ); m_def ->setChecked( false ); m_none->setChecked( false ); if ( !m_view->currentItem() || m_view->currentItem()->parent() ) return; } diff --git a/libopie2/opieui/okeyconfigwidget.h b/libopie2/opieui/okeyconfigwidget.h index b3309af..a7a5f48 100644 --- a/libopie2/opieui/okeyconfigwidget.h +++ b/libopie2/opieui/okeyconfigwidget.h @@ -167,32 +167,34 @@ public: OKeyConfigItem handleKeyEvent( QKeyEvent* ); int handleKeyEventId( QKeyEvent* ); void addKeyConfig( const OKeyConfigItem& ); void removeKeyConfig( const OKeyConfigItem& ); void clearKeyConfig(); void addToBlackList( const OKeyPair& ); void removeFromBlackList( const OKeyPair& ); void clearBlackList(); OKeyPair::List blackList()const; void handleWidget( QWidget* ); bool eventFilter( QObject*, QEvent* ); + + OKeyConfigItem::List keyConfigList()const; signals: /** * The Signals are triggered on KeyPress and KeyRelease! * You can check the isDown of the QKeyEvent * @see QKeyEvent */ void actionActivated( QWidget*, QKeyEvent*, const Opie::Ui::OKeyConfigItem& ); /** * This Signal correspondents to the OKeyConfigItem slot * and object * * @see OKeyConfigItem::slot * @see OKeyConfigItem::object */ void actionActivated( QWidget* par, QKeyEvent* key); |