summaryrefslogtreecommitdiff
authorzecke <zecke>2004-04-02 06:43:42 (UTC)
committer zecke <zecke>2004-04-02 06:43:42 (UTC)
commita31c8ad914e72b874062dcb31e72476aca735bb0 (patch) (side-by-side diff)
tree2db1bfd49893369c4ab71bec0e546527c01d6bcd
parentfbe21a008888cef12eb863151b4aaee1e75f0f22 (diff)
downloadopie-a31c8ad914e72b874062dcb31e72476aca735bb0.zip
opie-a31c8ad914e72b874062dcb31e72476aca735bb0.tar.gz
opie-a31c8ad914e72b874062dcb31e72476aca735bb0.tar.bz2
Add OKeyConfigWidget to the .pro file
and also allow single character shortcuts
Diffstat (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
@@ -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
}