summaryrefslogtreecommitdiff
path: root/libopie2
Side-by-side diff
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opieui/okeyconfigwidget.cpp7
-rw-r--r--libopie2/opieui/opieui.pro2
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
@@ -1095,152 +1095,153 @@ bool OKeyConfigWidget::sanityCheck( Opie::Ui::Private::OKeyListViewItem* item,
"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
}