author | zecke <zecke> | 2004-04-02 06:43:42 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-04-02 06:43:42 (UTC) |
commit | a31c8ad914e72b874062dcb31e72476aca735bb0 (patch) (side-by-side diff) | |
tree | 2db1bfd49893369c4ab71bec0e546527c01d6bcd | |
parent | fbe21a008888cef12eb863151b4aaee1e75f0f22 (diff) | |
download | opie-a31c8ad914e72b874062dcb31e72476aca735bb0.zip opie-a31c8ad914e72b874062dcb31e72476aca735bb0.tar.gz opie-a31c8ad914e72b874062dcb31e72476aca735bb0.tar.bz2 |
Add OKeyConfigWidget to the .pro file
and also allow single character shortcuts
-rw-r--r-- | libopie2/opieui/okeyconfigwidget.cpp | 7 | ||||
-rw-r--r-- | libopie2/opieui/opieui.pro | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/libopie2/opieui/okeyconfigwidget.cpp b/libopie2/opieui/okeyconfigwidget.cpp index 8967d77..ef6d713 100644 --- a/libopie2/opieui/okeyconfigwidget.cpp +++ b/libopie2/opieui/okeyconfigwidget.cpp @@ -999,248 +999,249 @@ void OKeyConfigWidget::slotListViewItem( QListViewItem* _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() { 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()); updateItem( item, OKeyPair::emptyKey() ); } void OKeyConfigWidget::slotDefaultKey() { m_none->setChecked( false ); m_cus ->setChecked( false ); m_btn ->setEnabled( false ); m_def ->setChecked( true ); if ( !m_view->currentItem() || !m_view->currentItem()->parent() ) return; Opie::Ui::Private::OKeyListViewItem *item = static_cast<Opie::Ui::Private::OKeyListViewItem*>(m_view->currentItem()); updateItem( item, item->item().defaultKeyPair() ); } void OKeyConfigWidget::slotCustomKey() { 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; } void OKeyConfigWidget::slotConfigure() { if ( !m_view->currentItem() || !m_view->currentItem()->parent() ) return; /* FIXME make use of OModalHelper */ OKeyChooserConfigDialog dlg( this, "Dialog Name", true ); dlg.setCaption(tr("Configure Key")); connect(&dlg, SIGNAL(keyCaptured()), &dlg, SLOT(accept()) ); if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ) { Opie::Ui::Private::OKeyListViewItem *item = static_cast<Opie::Ui::Private::OKeyListViewItem*>(m_view->currentItem()); updateItem( item, dlg.keyPair() ); } } bool OKeyConfigWidget::sanityCheck( Opie::Ui::Private::OKeyListViewItem* item, const OKeyPair& newItem ) { OKeyPair::List bList = item->manager()->blackList(); for ( OKeyPair::List::Iterator it = bList.begin(); it != bList.end(); ++it ) { /* black list matched */ if ( *it == newItem ) { QMessageBox::warning( 0, tr("Key is on BlackList" ), tr("<qt>The Key you choose is on the black list " "and may not be used with this manager. Please " "use a different key.</qt>" ) ); return false; } } /* no we need to check the other items which is dog slow */ QListViewItemIterator it( item->parent() ); while ( it.current() ) { /* if not our parent and not us */ if (it.current()->parent() && it.current() != item) { /* damn already given away*/ if ( newItem == static_cast<Opie::Ui::Private::OKeyListViewItem*>(it.current() )->item().keyPair() ) { QMessageBox::warning( 0, tr("Key is already assigned" ), tr("<qt>The Key you choose is already taken by " "a different Item of your config. Please try" "using a different key.</qt>" ) ); return false; } } ++it; } return true; } void OKeyConfigWidget::updateItem( Opie::Ui::Private::OKeyListViewItem *item, const OKeyPair& newItem) { /* sanity check * check against the blacklist of the manager * check if another item uses this key which is o(n) at least */ if ( !newItem.isEmpty() && !sanityCheck(item, newItem )) return; /* * If immediate we need to remove and readd the key */ if ( m_mode == Imediate ) item->manager()->removeKeyConfig( item->item() ); item->item().setKeyPair( newItem ); item->updateText(); if ( m_mode == Imediate ) item->manager()->addKeyConfig( item->item() ); } ///// OKeyChooserConfigDialog::OKeyChooserConfigDialog( QWidget* par, const char* nam, bool mod, WFlags fl ) : QDialog( par, nam, mod, fl ), m_virtKey( false ), m_keyPair( OKeyPair::emptyKey() ) , m_key( 0 ), m_mod( 0 ) { setFocusPolicy( StrongFocus ); QHBoxLayout *lay = new QHBoxLayout( this ); QLabel *lbl = new QLabel( tr("Configure Key" ), this ); lay->addWidget( lbl ); lbl->setFocusPolicy( NoFocus ); m_lbl = new QLabel( this ); lay->addWidget( m_lbl ); m_lbl->setFocusPolicy( NoFocus ); m_timer = new QTimer( this ); connect(m_timer, SIGNAL(timeout()), this, SLOT(slotTimeUp()) ); } OKeyChooserConfigDialog::~OKeyChooserConfigDialog() { } Opie::Ui::OKeyPair OKeyChooserConfigDialog::keyPair()const{ return m_keyPair; } void OKeyChooserConfigDialog::keyPressEvent( QKeyEvent* ev ) { QDialog::keyPressEvent( ev ); if ( ev->isAutoRepeat() ) return; int mod, key; Opie::Ui::Private::fixupKeys( key,mod, ev ); /* either we used software keyboard * or we've true support */ if ( !m_virtKey && !ev->key()) { m_virtKey = true; m_keyPair = OKeyPair( key, mod ); }else{ mod = 0; switch( key ) { case Qt::Key_Control: mod = Qt::ControlButton; break; case Qt::Key_Shift: mod = Qt::ShiftButton; break; case Qt::Key_Alt: mod = Qt::AltButton; break; default: break; } - if (mod ) + if (mod ) { m_mod |= mod; - else + key = 0; + }else m_key = key; - if ( ( !mod || m_key ) && !m_timer->isActive() ) + if ( ( !mod || m_key || key ) && !m_timer->isActive() ) m_timer->start( 150, true ); m_keyPair = OKeyPair( m_key, m_mod ); } m_lbl->setText( Opie::Ui::Private::keyToString( m_keyPair ) ); } void OKeyChooserConfigDialog::keyReleaseEvent( QKeyEvent* ev ) { m_timer->stop(); QDialog::keyPressEvent( ev ); if ( ev->isAutoRepeat() ) return; if ( m_virtKey && !ev->key()) { m_virtKey = false; slotTimeUp(); }else { int mod = 0; int key = ev->key(); switch( key ) { case Qt::Key_Control: mod = Qt::ControlButton; break; case Qt::Key_Shift: mod = Qt::ShiftButton; break; case Qt::Key_Alt: mod = Qt::AltButton; break; default: break; } if (mod ) m_mod &= ~mod; else m_key = key; m_keyPair = OKeyPair( m_key, m_mod ); m_lbl->setText( Opie::Ui::Private::keyToString( m_keyPair ) ); } } void OKeyChooserConfigDialog::slotTimeUp() { m_mod = m_key = 0; QTimer::singleShot(0, this, SIGNAL(keyCaptured()) ); } diff --git a/libopie2/opieui/opieui.pro b/libopie2/opieui/opieui.pro index 0749f7d..e97e82c 100644 --- a/libopie2/opieui/opieui.pro +++ b/libopie2/opieui/opieui.pro @@ -1,63 +1,65 @@ TEMPLATE = lib CONFIG += qt warn_on DESTDIR = $(OPIEDIR)/lib HEADERS = oclickablelabel.h \ odialog.h \ ofontselector.h \ oimageeffect.h \ + okeyconfigwidget.h \ olistview.h \ opixmapeffect.h \ opopupmenu.h \ opixmapprovider.h \ oselector.h \ oseparator.h \ otabinfo.h \ otabbar.h \ otabwidget.h \ otaskbarapplet.h \ oticker.h \ otimepicker.h \ oversatileview.h \ oversatileviewitem.h \ owait.h SOURCES = oclickablelabel.cpp \ odialog.cpp \ ofontselector.cpp \ oimageeffect.cpp \ + okeyconfigwidget.cpp \ olistview.cpp \ opixmapeffect.cpp \ opopupmenu.cpp \ opixmapprovider.cpp \ oselector.cpp \ oseparator.cpp \ otabbar.cpp \ otabwidget.cpp \ otaskbarapplet.cpp \ oticker.cpp \ otimepicker.cpp \ oversatileview.cpp \ oversatileviewitem.cpp \ owait.cpp include ( big-screen/big-screen.pro ) include ( fileselector/fileselector.pro ) INTERFACES = otimepickerbase.ui TARGET = opieui2 VERSION = 1.8.5 INCLUDEPATH += $(OPIEDIR)/include DEPENDPATH += $(OPIEDIR)/include LIBS += -lopiecore2 !contains( platform, x11 ) { include ( $(OPIEDIR)/include.pro ) } contains( platform, x11 ) { LIBS += -L$(OPIEDIR)/lib -Wl,-rpath,$(OPIEDIR)/lib } |