summaryrefslogtreecommitdiff
path: root/libopie2/opieui
authoralwin <alwin>2004-04-07 12:43:00 (UTC)
committer alwin <alwin>2004-04-07 12:43:00 (UTC)
commitd581038dd7875aa65a750f099333a94f43c37ef2 (patch) (unidiff)
treefb84b2bb05294583f6bf62866e06822700859db8 /libopie2/opieui
parent0e2322d2bc926036d62153346bb03776df1ca987 (diff)
downloadopie-d581038dd7875aa65a750f099333a94f43c37ef2.zip
opie-d581038dd7875aa65a750f099333a94f43c37ef2.tar.gz
opie-d581038dd7875aa65a750f099333a94f43c37ef2.tar.bz2
workaround for a OConfig bug so all keys will realy written
Diffstat (limited to 'libopie2/opieui') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opieui/okeyconfigwidget.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/libopie2/opieui/okeyconfigwidget.cpp b/libopie2/opieui/okeyconfigwidget.cpp
index eb7acbd..d6d34f5 100644
--- a/libopie2/opieui/okeyconfigwidget.cpp
+++ b/libopie2/opieui/okeyconfigwidget.cpp
@@ -401,256 +401,257 @@ bool OKeyConfigItem::operator!=( const OKeyConfigItem& conf )const {
401 * 401 *
402 * You can use this manager in multiple ways. Either make it handle 402 * You can use this manager in multiple ways. Either make it handle
403 * QKeyEvents 403 * QKeyEvents
404 * 404 *
405 * \code 405 * \code
406 * Opie::Core::Config conf = oApp->config(); 406 * Opie::Core::Config conf = oApp->config();
407 * Opie::Ui::OKeyPairList blackList; 407 * Opie::Ui::OKeyPairList blackList;
408 * blackList.append(Opie::Ui::OKeyPair::leftArrowKey()); 408 * blackList.append(Opie::Ui::OKeyPair::leftArrowKey());
409 * blackList.append(Opie::Ui::OKeyPair::rightArrowKey()); 409 * blackList.append(Opie::Ui::OKeyPair::rightArrowKey());
410 * Opie::Ui::OKeyConfigManager *manager = new Opie::Ui::OKeyConfigManager(conf,"key_actions",blackList, 410 * Opie::Ui::OKeyConfigManager *manager = new Opie::Ui::OKeyConfigManager(conf,"key_actions",blackList,
411 * false); 411 * false);
412 * QListView *view = new QListView(); 412 * QListView *view = new QListView();
413 * manager->handleWidget(view); 413 * manager->handleWidget(view);
414 * manager->addKeyConfig( Opie::Ui::OKeyPair::returnKey()); 414 * manager->addKeyConfig( Opie::Ui::OKeyPair::returnKey());
415 * manager->load(); 415 * manager->load();
416 * 416 *
417 * connect(manager,SIGNAL(actionActivated(QWidget*,QKeyEvent*,const Opie::Ui::OKeyConfigItem&)), 417 * connect(manager,SIGNAL(actionActivated(QWidget*,QKeyEvent*,const Opie::Ui::OKeyConfigItem&)),
418 * this,SLOT(slotHandleKey(QWidget*,QKeyEvent*,const Opie::Ui::OKeyConfigItem&))); 418 * this,SLOT(slotHandleKey(QWidget*,QKeyEvent*,const Opie::Ui::OKeyConfigItem&)));
419 * 419 *
420 * .... 420 * ....
421 * 421 *
422 * void update(){ 422 * void update(){
423 * QDialog diag(true); 423 * QDialog diag(true);
424 * QHBoxLayout *lay = new QHBoxLayout(&diag); 424 * QHBoxLayout *lay = new QHBoxLayout(&diag);
425 * Opie::Ui::OKeyConfigWidget *wid = new Opie::Ui::OKeyConfigWidget(manager,&diag); 425 * Opie::Ui::OKeyConfigWidget *wid = new Opie::Ui::OKeyConfigWidget(manager,&diag);
426 * wid->setChangeMode(Opie::Ui::OKeyConfigWidget::Queu); 426 * wid->setChangeMode(Opie::Ui::OKeyConfigWidget::Queu);
427 * lay->addWidget(wid); 427 * lay->addWidget(wid);
428 * if(QPEApplication::execDialog( &diag)== QDialog::Accepted){ 428 * if(QPEApplication::execDialog( &diag)== QDialog::Accepted){
429 * wid->save(); 429 * wid->save();
430 * } 430 * }
431 * } 431 * }
432 * 432 *
433 * .... 433 * ....
434 * MyListView::keyPressEvent( QKeyEvent* e ){ 434 * MyListView::keyPressEvent( QKeyEvent* e ){
435 * Opie::Ui::OKeyConfigItem item = manager->handleKeyEvent(e); 435 * Opie::Ui::OKeyConfigItem item = manager->handleKeyEvent(e);
436 * if(!item.isEmpty() ){ 436 * if(!item.isEmpty() ){
437 * switch(item.id()){ 437 * switch(item.id()){
438 * case My_Delete_Key: 438 * case My_Delete_Key:
439 * break; 439 * break;
440 * } 440 * }
441 * } 441 * }
442 * } 442 * }
443 * 443 *
444 * \endcode 444 * \endcode
445 * 445 *
446 * @param conf The Config where the KeySetting should be stored 446 * @param conf The Config where the KeySetting should be stored
447 * @param group The group where the KeySetting will be stored 447 * @param group The group where the KeySetting will be stored
448 * @param black Which keys shouldn't be allowed to handle 448 * @param black Which keys shouldn't be allowed to handle
449 * @param grabkeyboard Calls QPEApplication::grabKeyboard to allow handling of DeviceButtons 449 * @param grabkeyboard Calls QPEApplication::grabKeyboard to allow handling of DeviceButtons
450 * @param par The parent/owner of this manager 450 * @param par The parent/owner of this manager
451 * @param name The name of this object 451 * @param name The name of this object
452 */ 452 */
453OKeyConfigManager::OKeyConfigManager( Opie::Core::OConfig* conf, 453OKeyConfigManager::OKeyConfigManager( Opie::Core::OConfig* conf,
454 const QString& group, 454 const QString& group,
455 const OKeyPair::List& black, 455 const OKeyPair::List& black,
456 bool grabkeyboard, QObject* par, 456 bool grabkeyboard, QObject* par,
457 const char* name) 457 const char* name)
458 : QObject( par, name ), m_conf( conf ), m_group( group ), 458 : QObject( par, name ), m_conf( conf ), m_group( group ),
459 m_blackKeys( black ), m_grab( grabkeyboard ), m_map( 0 ){ 459 m_blackKeys( black ), m_grab( grabkeyboard ), m_map( 0 ){
460 if ( m_grab ) 460 if ( m_grab )
461 QPEApplication::grabKeyboard(); 461 QPEApplication::grabKeyboard();
462} 462}
463 463
464 464
465/** 465/**
466 * Destructor 466 * Destructor
467 */ 467 */
468OKeyConfigManager::~OKeyConfigManager() { 468OKeyConfigManager::~OKeyConfigManager() {
469 if ( m_grab ) 469 if ( m_grab )
470 QPEApplication::ungrabKeyboard(); 470 QPEApplication::ungrabKeyboard();
471} 471}
472 472
473/** 473/**
474 * Load the Configuration from the OConfig 474 * Load the Configuration from the OConfig
475 * If a Key is restricted but was in the config we will 475 * If a Key is restricted but was in the config we will
476 * make it be the empty key paur 476 * make it be the empty key paur
477 * We will change the group but restore to the previous. 477 * We will change the group but restore to the previous.
478 * 478 *
479 * @see OKeyPair::emptyKey 479 * @see OKeyPair::emptyKey
480 */ 480 */
481void OKeyConfigManager::load() { 481void OKeyConfigManager::load() {
482 Opie::Core::OConfigGroupSaver( m_conf, m_group ); 482 Opie::Core::OConfigGroupSaver( m_conf, m_group );
483 483
484 /* 484 /*
485 * Read each item 485 * Read each item
486 */ 486 */
487 int key, mod; 487 int key, mod;
488 for( OKeyConfigItem::List::Iterator it = m_keys.begin(); it != m_keys.end(); ++it ) { 488 for( OKeyConfigItem::List::Iterator it = m_keys.begin(); it != m_keys.end(); ++it ) {
489 key = m_conf->readNumEntry( (*it).configKey()+"key", (*it).defaultKeyPair().keycode() ); 489 key = m_conf->readNumEntry( (*it).configKey()+"key", (*it).defaultKeyPair().keycode() );
490 mod = m_conf->readNumEntry( (*it).configKey()+"mod", (*it).defaultKeyPair().modifier() ); 490 mod = m_conf->readNumEntry( (*it).configKey()+"mod", (*it).defaultKeyPair().modifier() );
491 OKeyPair okey( key, mod ); 491 OKeyPair okey( key, mod );
492 492
493 if ( !m_blackKeys.contains( okey ) && key != -1 && mod != -1 ) 493 if ( !m_blackKeys.contains( okey ) && key != -1 && mod != -1 )
494 (*it).setKeyPair( OKeyPair(key, mod) ); 494 (*it).setKeyPair( OKeyPair(key, mod) );
495 else 495 else
496 (*it).setKeyPair( OKeyPair::emptyKey() ); 496 (*it).setKeyPair( OKeyPair::emptyKey() );
497 } 497 }
498 delete m_map; m_map = 0; 498 delete m_map; m_map = 0;
499} 499}
500 500
501/** 501/**
502 * We will save the current configuration 502 * We will save the current configuration
503 * to the OConfig. We will change the group but restore 503 * to the OConfig. We will change the group but restore
504 * to the previous 504 * to the previous
505 */ 505 */
506void OKeyConfigManager::save() { 506void OKeyConfigManager::save() {
507 Opie::Core::OConfigGroupSaver( m_conf, m_group ); 507 Opie::Core::OConfigGroupSaver( m_conf, m_group );
508 508
509 /* 509 /*
510 * Write each item 510 * Write each item
511 */ 511 */
512 for( OKeyConfigItem::List::Iterator it = m_keys.begin();it != m_keys.end(); ++it ) { 512 for( OKeyConfigItem::List::Iterator it = m_keys.begin();it != m_keys.end(); ++it ) {
513 /* skip empty items */ 513 /* skip empty items */
514 if ( (*it).isEmpty() ) 514 if ( (*it).isEmpty() )
515 continue; 515 continue;
516 OKeyPair pair = (*it).keyPair(); 516 OKeyPair pair = (*it).keyPair();
517 OKeyPair deft = (*it).defaultKeyPair(); 517 OKeyPair deft = (*it).defaultKeyPair();
518 /* 518 /*
519 * don't write if it is the default setting 519 * don't write if it is the default setting
520 * FIXME allow to remove Keys from config 520 * FIXME allow to remove Keys from config
521 if ( (pair.keycode() == deft.keycode()) && 521 if ( (pair.keycode() == deft.keycode()) &&
522 (pair.modifier()== deft.modifier() ) ) 522 (pair.modifier()== deft.modifier() ) )
523 return; 523 return;
524 */ 524 */
525 525
526 m_conf->writeEntry((*it).configKey()+"key", pair.keycode() ); 526 m_conf->writeEntry((*it).configKey()+"key", pair.keycode() );
527 m_conf->writeEntry((*it).configKey()+"mod", pair.modifier() ); 527 m_conf->writeEntry((*it).configKey()+"mod", pair.modifier() );
528 } 528 }
529 m_conf->write();
529} 530}
530 531
531/** 532/**
532 * This is function uses a QMap internally but you can have the same keycode 533 * This is function uses a QMap internally but you can have the same keycode
533 * with different modifier key. The behaviour is undefined if you add a OKeyConfigItem 534 * with different modifier key. The behaviour is undefined if you add a OKeyConfigItem
534 * with same keycode and modifier key. The GUI takes care that a user can't 535 * with same keycode and modifier key. The GUI takes care that a user can't
535 * cofigure two keys. 536 * cofigure two keys.
536 * 537 *
537 * Make sure you call e->ignore if you don't want to handle this event 538 * Make sure you call e->ignore if you don't want to handle this event
538 */ 539 */
539OKeyConfigItem OKeyConfigManager::handleKeyEvent( QKeyEvent* e ) { 540OKeyConfigItem OKeyConfigManager::handleKeyEvent( QKeyEvent* e ) {
540 /* 541 /*
541 * Fix Up issues with Qt/E, my keybard, and virtual input 542 * Fix Up issues with Qt/E, my keybard, and virtual input
542 * methods 543 * methods
543 * First my Keyboard delivers 256,512,1024 for shift/ctrl/alt instead of the button state 544 * First my Keyboard delivers 256,512,1024 for shift/ctrl/alt instead of the button state
544 * Also key() on virtual inputmethods are zero and only ascii. We need to fix upper and lower 545 * Also key() on virtual inputmethods are zero and only ascii. We need to fix upper and lower
545 * case ascii 546 * case ascii
546 */ 547 */
547 int key, mod; 548 int key, mod;
548 Opie::Ui::Internal::fixupKeys( key, mod, e ); 549 Opie::Ui::Internal::fixupKeys( key, mod, e );
549 550
550 OKeyConfigItem::List _keyList = keyList( key ); 551 OKeyConfigItem::List _keyList = keyList( key );
551 if ( _keyList.isEmpty() ) 552 if ( _keyList.isEmpty() )
552 return OKeyConfigItem(); 553 return OKeyConfigItem();
553 554
554 OKeyConfigItem item; 555 OKeyConfigItem item;
555 for ( OKeyConfigItem::List::Iterator it = _keyList.begin(); it != _keyList.end(); 556 for ( OKeyConfigItem::List::Iterator it = _keyList.begin(); it != _keyList.end();
556 ++it ) { 557 ++it ) {
557 if ( (*it).keyPair().modifier() == mod ) { 558 if ( (*it).keyPair().modifier() == mod ) {
558 item = *it; 559 item = *it;
559 break; 560 break;
560 } 561 }
561 562
562 } 563 }
563 564
564 return item; 565 return item;
565} 566}
566 567
567/** 568/**
568 * Return the associated id of the item or -1 if no item 569 * Return the associated id of the item or -1 if no item
569 * matched the key 570 * matched the key
570 * 571 *
571 * @see handleKeyEvent 572 * @see handleKeyEvent
572 */ 573 */
573int OKeyConfigManager::handleKeyEventId( QKeyEvent* ev) { 574int OKeyConfigManager::handleKeyEventId( QKeyEvent* ev) {
574 return handleKeyEvent( ev ).id(); 575 return handleKeyEvent( ev ).id();
575} 576}
576 577
577/** 578/**
578 * Add Key Config to the List of items 579 * Add Key Config to the List of items
579 */ 580 */
580void OKeyConfigManager::addKeyConfig( const OKeyConfigItem& item ) { 581void OKeyConfigManager::addKeyConfig( const OKeyConfigItem& item ) {
581 m_keys.append( item ); 582 m_keys.append( item );
582 delete m_map; m_map = 0; 583 delete m_map; m_map = 0;
583} 584}
584 585
585/** 586/**
586 * Remove the Key from the Config. Internal lists will be destroyed 587 * Remove the Key from the Config. Internal lists will be destroyed
587 * and rebuild on demand later 588 * and rebuild on demand later
588 */ 589 */
589void OKeyConfigManager::removeKeyConfig( const OKeyConfigItem& item ) { 590void OKeyConfigManager::removeKeyConfig( const OKeyConfigItem& item ) {
590 m_keys.remove( item ); 591 m_keys.remove( item );
591 delete m_map; m_map = 0; 592 delete m_map; m_map = 0;
592} 593}
593 594
594/** 595/**
595 * Clears the complete list 596 * Clears the complete list
596 */ 597 */
597void OKeyConfigManager::clearKeyConfig() { 598void OKeyConfigManager::clearKeyConfig() {
598 m_keys.clear(); 599 m_keys.clear();
599 delete m_map; m_map = 0; 600 delete m_map; m_map = 0;
600} 601}
601 602
602/** 603/**
603 * 604 *
604 */ 605 */
605Opie::Ui::OKeyConfigItem::List OKeyConfigManager::keyConfigList()const{ 606Opie::Ui::OKeyConfigItem::List OKeyConfigManager::keyConfigList()const{
606 return m_keys; 607 return m_keys;
607} 608}
608 609
609/** 610/**
610 * Add this OKeyPair to the blackList. 611 * Add this OKeyPair to the blackList.
611 * Internal lists will be destroyed 612 * Internal lists will be destroyed
612 */ 613 */
613void OKeyConfigManager::addToBlackList( const OKeyPair& key) { 614void OKeyConfigManager::addToBlackList( const OKeyPair& key) {
614 m_blackKeys.append( key ); 615 m_blackKeys.append( key );
615 delete m_map; m_map = 0; 616 delete m_map; m_map = 0;
616} 617}
617 618
618 619
619/** 620/**
620 * Remove this OKeyPair from the black List 621 * Remove this OKeyPair from the black List
621 * Internal lists will be destroyed 622 * Internal lists will be destroyed
622 */ 623 */
623void OKeyConfigManager::removeFromBlackList( const OKeyPair& key ) { 624void OKeyConfigManager::removeFromBlackList( const OKeyPair& key ) {
624 m_blackKeys.remove( key ); 625 m_blackKeys.remove( key );
625 delete m_map; m_map = 0; 626 delete m_map; m_map = 0;
626} 627}
627 628
628 629
629/** 630/**
630 * Clear the blackList 631 * Clear the blackList
631 */ 632 */
632void OKeyConfigManager::clearBlackList() { 633void OKeyConfigManager::clearBlackList() {
633 m_blackKeys.clear(); 634 m_blackKeys.clear();
634 delete m_map; m_map = 0; 635 delete m_map; m_map = 0;
635} 636}
636 637
637 638
638/** 639/**
639 * Return a copy of the blackList 640 * Return a copy of the blackList
640 */ 641 */
641OKeyPair::List OKeyConfigManager::blackList()const { 642OKeyPair::List OKeyConfigManager::blackList()const {
642 return m_blackKeys; 643 return m_blackKeys;
643} 644}
644 645
645 646
646/** 647/**
647 * Ask the Manager to handle KeyEvents for you. 648 * Ask the Manager to handle KeyEvents for you.
648 * All handled keys will emit a QSignal and return true 649 * All handled keys will emit a QSignal and return true
649 * that it handled the keyevent 650 * that it handled the keyevent
650 */ 651 */
651void OKeyConfigManager::handleWidget( QWidget* wid ) { 652void OKeyConfigManager::handleWidget( QWidget* wid ) {
652 wid->installEventFilter( this ); 653 wid->installEventFilter( this );
653} 654}
654 655
655/** 656/**
656 * @internal 657 * @internal