summaryrefslogtreecommitdiff
path: root/libopie2
authorzecke <zecke>2004-09-10 11:04:16 (UTC)
committer zecke <zecke>2004-09-10 11:04:16 (UTC)
commit2ec724fc789cd34f6b3743896516f2fef2731456 (patch) (unidiff)
tree67830cb237efa4201ff530bb0c66e496222a5fd3 /libopie2
parent29ed6115bd14aa95d29cf922fd179a6e470b5d53 (diff)
downloadopie-2ec724fc789cd34f6b3743896516f2fef2731456.zip
opie-2ec724fc789cd34f6b3743896516f2fef2731456.tar.gz
opie-2ec724fc789cd34f6b3743896516f2fef2731456.tar.bz2
Move handleWidget of OKeyConfigManager to a slot
Add some @see statements to the OKeyConfigManager
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/okeyconfigmanager.cpp10
-rw-r--r--libopie2/opiecore/okeyconfigmanager.h7
2 files changed, 14 insertions, 3 deletions
diff --git a/libopie2/opiecore/okeyconfigmanager.cpp b/libopie2/opiecore/okeyconfigmanager.cpp
index ccb96cc..891cda7 100644
--- a/libopie2/opiecore/okeyconfigmanager.cpp
+++ b/libopie2/opiecore/okeyconfigmanager.cpp
@@ -449,303 +449,313 @@ bool OKeyConfigItem::operator!=( const OKeyConfigItem& conf )const {
449 * Opie::Ui::OKeyConfigWidget *wid = new Opie::Ui::OKeyConfigWidget(manager,&diag); 449 * Opie::Ui::OKeyConfigWidget *wid = new Opie::Ui::OKeyConfigWidget(manager,&diag);
450 * wid->setChangeMode(Opie::Ui::OKeyConfigWidget::Queu); 450 * wid->setChangeMode(Opie::Ui::OKeyConfigWidget::Queu);
451 * lay->addWidget(wid); 451 * lay->addWidget(wid);
452 * if(QPEApplication::execDialog( &diag)== QDialog::Accepted){ 452 * if(QPEApplication::execDialog( &diag)== QDialog::Accepted){
453 * wid->save(); 453 * wid->save();
454 * } 454 * }
455 * } 455 * }
456 * 456 *
457 * .... 457 * ....
458 * MyListView::keyPressEvent( QKeyEvent* e ){ 458 * MyListView::keyPressEvent( QKeyEvent* e ){
459 * Opie::Ui::OKeyConfigItem item = manager->handleKeyEvent(e); 459 * Opie::Ui::OKeyConfigItem item = manager->handleKeyEvent(e);
460 * if(!item.isEmpty() ){ 460 * if(!item.isEmpty() ){
461 * switch(item.id()){ 461 * switch(item.id()){
462 * case My_Delete_Key: 462 * case My_Delete_Key:
463 * break; 463 * break;
464 * } 464 * }
465 * } 465 * }
466 * } 466 * }
467 * 467 *
468 * \endcode 468 * \endcode
469 * 469 *
470 * @param conf The Config where the KeySetting should be stored 470 * @param conf The Config where the KeySetting should be stored
471 * @param group The group where the KeySetting will be stored 471 * @param group The group where the KeySetting will be stored
472 * @param black Which keys shouldn't be allowed to handle 472 * @param black Which keys shouldn't be allowed to handle
473 * @param grabkeyboard Calls QPEApplication::grabKeyboard to allow handling of DeviceButtons 473 * @param grabkeyboard Calls QPEApplication::grabKeyboard to allow handling of DeviceButtons
474 * @param par The parent/owner of this manager 474 * @param par The parent/owner of this manager
475 * @param name The name of this object 475 * @param name The name of this object
476 */ 476 */
477OKeyConfigManager::OKeyConfigManager( Opie::Core::OConfig* conf, 477OKeyConfigManager::OKeyConfigManager( Opie::Core::OConfig* conf,
478 const QString& group, 478 const QString& group,
479 const OKeyPair::List& black, 479 const OKeyPair::List& black,
480 bool grabkeyboard, QObject* par, 480 bool grabkeyboard, QObject* par,
481 const char* name) 481 const char* name)
482 : QObject( par, name ), m_conf( conf ), m_group( group ), 482 : QObject( par, name ), m_conf( conf ), m_group( group ),
483 m_blackKeys( black ), m_grab( grabkeyboard ), m_map( 0 ){ 483 m_blackKeys( black ), m_grab( grabkeyboard ), m_map( 0 ){
484 if ( m_grab ) 484 if ( m_grab )
485 QPEApplication::grabKeyboard(); 485 QPEApplication::grabKeyboard();
486 m_event_mask = OKeyConfigManager::MaskReleased; 486 m_event_mask = OKeyConfigManager::MaskReleased;
487} 487}
488 488
489 489
490/** 490/**
491 * Destructor 491 * Destructor
492 */ 492 */
493OKeyConfigManager::~OKeyConfigManager() { 493OKeyConfigManager::~OKeyConfigManager() {
494 if ( m_grab ) 494 if ( m_grab )
495 QPEApplication::ungrabKeyboard(); 495 QPEApplication::ungrabKeyboard();
496 delete m_map; 496 delete m_map;
497} 497}
498 498
499/** 499/**
500 * Load the Configuration from the OConfig 500 * Load the Configuration from the OConfig
501 * If a Key is restricted but was in the config we will 501 * If a Key is restricted but was in the config we will
502 * make it be the empty key paur 502 * make it be the empty key paur
503 * We will change the group but restore to the previous. 503 * We will change the group but restore to the previous.
504 * 504 *
505 * @see OKeyPair::emptyKey 505 * @see OKeyPair::emptyKey
506 */ 506 */
507void OKeyConfigManager::load() { 507void OKeyConfigManager::load() {
508 Opie::Core::OConfigGroupSaver grp( m_conf, m_group ); 508 Opie::Core::OConfigGroupSaver grp( m_conf, m_group );
509 509
510 /* 510 /*
511 * Read each item 511 * Read each item
512 */ 512 */
513 int key, mod; 513 int key, mod;
514 for( OKeyConfigItem::List::Iterator it = m_keys.begin(); it != m_keys.end(); ++it ) { 514 for( OKeyConfigItem::List::Iterator it = m_keys.begin(); it != m_keys.end(); ++it ) {
515 key = m_conf->readNumEntry( (*it).configKey()+"key", 515 key = m_conf->readNumEntry( (*it).configKey()+"key",
516 (*it).defaultKeyPair().keycode() ); 516 (*it).defaultKeyPair().keycode() );
517 mod = m_conf->readNumEntry( (*it).configKey()+"mod", 517 mod = m_conf->readNumEntry( (*it).configKey()+"mod",
518 (*it).defaultKeyPair().modifier() ); 518 (*it).defaultKeyPair().modifier() );
519 OKeyPair okey( key, mod ); 519 OKeyPair okey( key, mod );
520 520
521 if ( !m_blackKeys.contains( okey ) && key != -1 && mod != -1 ) 521 if ( !m_blackKeys.contains( okey ) && key != -1 && mod != -1 )
522 (*it).setKeyPair( okey ); 522 (*it).setKeyPair( okey );
523 else 523 else
524 (*it).setKeyPair( OKeyPair::emptyKey() ); 524 (*it).setKeyPair( OKeyPair::emptyKey() );
525 } 525 }
526 delete m_map; m_map = 0; 526 delete m_map; m_map = 0;
527} 527}
528 528
529/** 529/**
530 * We will save the current configuration 530 * We will save the current configuration
531 * to the OConfig. We will change the group but restore 531 * to the OConfig. We will change the group but restore
532 * to the previous 532 * to the previous
533 */ 533 */
534void OKeyConfigManager::save() { 534void OKeyConfigManager::save() {
535 Opie::Core::OConfigGroupSaver grp( m_conf, m_group ); 535 Opie::Core::OConfigGroupSaver grp( m_conf, m_group );
536 536
537 /* 537 /*
538 * Write each item 538 * Write each item
539 */ 539 */
540 for( OKeyConfigItem::List::Iterator it = m_keys.begin();it != m_keys.end(); ++it ) { 540 for( OKeyConfigItem::List::Iterator it = m_keys.begin();it != m_keys.end(); ++it ) {
541 /* skip empty items */ 541 /* skip empty items */
542 if ( (*it).isEmpty() ) 542 if ( (*it).isEmpty() )
543 continue; 543 continue;
544 OKeyPair pair = (*it).keyPair(); 544 OKeyPair pair = (*it).keyPair();
545 OKeyPair deft = (*it).defaultKeyPair(); 545 OKeyPair deft = (*it).defaultKeyPair();
546 /* 546 /*
547 * don't write if it is the default setting 547 * don't write if it is the default setting
548 * FIXME allow to remove Keys from config 548 * FIXME allow to remove Keys from config
549 if ( (pair.keycode() == deft.keycode()) && 549 if ( (pair.keycode() == deft.keycode()) &&
550 (pair.modifier()== deft.modifier() ) ) 550 (pair.modifier()== deft.modifier() ) )
551 return; 551 return;
552 */ 552 */
553 553
554 m_conf->writeEntry((*it).configKey()+"key", pair.keycode() ); 554 m_conf->writeEntry((*it).configKey()+"key", pair.keycode() );
555 m_conf->writeEntry((*it).configKey()+"mod", pair.modifier() ); 555 m_conf->writeEntry((*it).configKey()+"mod", pair.modifier() );
556 } 556 }
557 m_conf->write(); 557 m_conf->write();
558} 558}
559 559
560/** 560/**
561 * This is function uses a QMap internally but you can have the same keycode 561 * This is function uses a QMap internally but you can have the same keycode
562 * with different modifier key. The behaviour is undefined if you add a OKeyConfigItem 562 * with different modifier key. The behaviour is undefined if you add a OKeyConfigItem
563 * with same keycode and modifier key. The GUI takes care that a user can't 563 * with same keycode and modifier key. The GUI takes care that a user can't
564 * cofigure two keys. 564 * cofigure two keys.
565 * 565 *
566 * Make sure you call e->ignore if you don't want to handle this event 566 * Make sure you call e->ignore if you don't want to handle this event
567 */ 567 */
568OKeyConfigItem OKeyConfigManager::handleKeyEvent( QKeyEvent* e ) { 568OKeyConfigItem OKeyConfigManager::handleKeyEvent( QKeyEvent* e ) {
569 /* 569 /*
570 * Fix Up issues with Qt/E, my keybard, and virtual input 570 * Fix Up issues with Qt/E, my keybard, and virtual input
571 * methods 571 * methods
572 * First my Keyboard delivers 256,512,1024 for shift/ctrl/alt instead of the button state 572 * First my Keyboard delivers 256,512,1024 for shift/ctrl/alt instead of the button state
573 * Also key() on virtual inputmethods are zero and only ascii. We need to fix upper and lower 573 * Also key() on virtual inputmethods are zero and only ascii. We need to fix upper and lower
574 * case ascii 574 * case ascii
575 */ 575 */
576 int key, mod; 576 int key, mod;
577 Opie::Core::Internal::fixupKeys( key, mod, e ); 577 Opie::Core::Internal::fixupKeys( key, mod, e );
578 578
579 OKeyConfigItem::List _keyList = keyList( key ); 579 OKeyConfigItem::List _keyList = keyList( key );
580 if ( _keyList.isEmpty() ) 580 if ( _keyList.isEmpty() )
581 return OKeyConfigItem(); 581 return OKeyConfigItem();
582 582
583 OKeyConfigItem item; 583 OKeyConfigItem item;
584 for ( OKeyConfigItem::List::Iterator it = _keyList.begin(); it != _keyList.end(); 584 for ( OKeyConfigItem::List::Iterator it = _keyList.begin(); it != _keyList.end();
585 ++it ) { 585 ++it ) {
586 if ( (*it).keyPair().modifier() == mod ) { 586 if ( (*it).keyPair().modifier() == mod ) {
587 item = *it; 587 item = *it;
588 break; 588 break;
589 } 589 }
590 590
591 } 591 }
592 592
593 return item; 593 return item;
594} 594}
595 595
596/** 596/**
597 * Return the associated id of the item or -1 if no item 597 * Return the associated id of the item or -1 if no item
598 * matched the key 598 * matched the key
599 * 599 *
600 * @see handleKeyEvent 600 * @see handleKeyEvent
601 */ 601 */
602int OKeyConfigManager::handleKeyEventId( QKeyEvent* ev) { 602int OKeyConfigManager::handleKeyEventId( QKeyEvent* ev) {
603 return handleKeyEvent( ev ).id(); 603 return handleKeyEvent( ev ).id();
604} 604}
605 605
606/** 606/**
607 * Add Key Config to the List of items 607 * Add Key Config to the List of items
608 */ 608 */
609void OKeyConfigManager::addKeyConfig( const OKeyConfigItem& item ) { 609void OKeyConfigManager::addKeyConfig( const OKeyConfigItem& item ) {
610 m_keys.append( item ); 610 m_keys.append( item );
611 delete m_map; m_map = 0; 611 delete m_map; m_map = 0;
612} 612}
613 613
614/** 614/**
615 * Remove the Key from the Config. Internal lists will be destroyed 615 * Remove the Key from the Config. Internal lists will be destroyed
616 * and rebuild on demand later 616 * and rebuild on demand later
617 */ 617 */
618void OKeyConfigManager::removeKeyConfig( const OKeyConfigItem& item ) { 618void OKeyConfigManager::removeKeyConfig( const OKeyConfigItem& item ) {
619 m_keys.remove( item ); 619 m_keys.remove( item );
620 delete m_map; m_map = 0; 620 delete m_map; m_map = 0;
621} 621}
622 622
623/** 623/**
624 * Clears the complete list 624 * Clears the complete list
625 */ 625 */
626void OKeyConfigManager::clearKeyConfig() { 626void OKeyConfigManager::clearKeyConfig() {
627 m_keys.clear(); 627 m_keys.clear();
628 delete m_map; m_map = 0; 628 delete m_map; m_map = 0;
629} 629}
630 630
631/** 631/**
632 * 632 *
633 */ 633 */
634Opie::Core::OKeyConfigItem::List OKeyConfigManager::keyConfigList()const{ 634Opie::Core::OKeyConfigItem::List OKeyConfigManager::keyConfigList()const{
635 return m_keys; 635 return m_keys;
636} 636}
637 637
638/** 638/**
639 * Add this OKeyPair to the blackList. 639 * Add this OKeyPair to the blackList.
640 * Internal lists will be destroyed 640 * Internal lists will be destroyed
641 *
642 * @see clearBlackList
643 * @see removeFromBlackList
641 */ 644 */
642void OKeyConfigManager::addToBlackList( const OKeyPair& key) { 645void OKeyConfigManager::addToBlackList( const OKeyPair& key) {
643 m_blackKeys.append( key ); 646 m_blackKeys.append( key );
644 delete m_map; m_map = 0; 647 delete m_map; m_map = 0;
645} 648}
646 649
647 650
648/** 651/**
649 * Remove this OKeyPair from the black List 652 * Remove this OKeyPair from the black List
650 * Internal lists will be destroyed 653 * Internal lists will be destroyed
654 *
655 * @see addToBlackList
656 * @see clearBlackList
651 */ 657 */
652void OKeyConfigManager::removeFromBlackList( const OKeyPair& key ) { 658void OKeyConfigManager::removeFromBlackList( const OKeyPair& key ) {
653 m_blackKeys.remove( key ); 659 m_blackKeys.remove( key );
654 delete m_map; m_map = 0; 660 delete m_map; m_map = 0;
655} 661}
656 662
657 663
658/** 664/**
659 * Clear the blackList 665 * Clear the blackList
660 */ 666 */
661void OKeyConfigManager::clearBlackList() { 667void OKeyConfigManager::clearBlackList() {
662 m_blackKeys.clear(); 668 m_blackKeys.clear();
663 delete m_map; m_map = 0; 669 delete m_map; m_map = 0;
664} 670}
665 671
666 672
667/** 673/**
668 * Return a copy of the blackList 674 * Return a copy of the blackList
675 *
676 * @see addToBlackList
677 * @see clearBlackList
678 * @see removeFromBlackList
669 */ 679 */
670OKeyPair::List OKeyConfigManager::blackList()const { 680OKeyPair::List OKeyConfigManager::blackList()const {
671 return m_blackKeys; 681 return m_blackKeys;
672} 682}
673 683
674 684
675/** 685/**
676 * Ask the Manager to handle KeyEvents for you. 686 * Ask the Manager to handle KeyEvents for you.
677 * All handled keys will emit a QSignal and return true 687 * All handled keys will emit a QSignal and return true
678 * that it handled the keyevent 688 * that it handled the keyevent
679 */ 689 */
680void OKeyConfigManager::handleWidget( QWidget* wid ) { 690void OKeyConfigManager::handleWidget( QWidget* wid ) {
681 wid->installEventFilter( this ); 691 wid->installEventFilter( this );
682} 692}
683 693
684/** 694/**
685 * @internal 695 * @internal
686 */ 696 */
687bool OKeyConfigManager::eventFilter( QObject* obj, QEvent* ev) { 697bool OKeyConfigManager::eventFilter( QObject* obj, QEvent* ev) {
688 if ( !obj->isWidgetType() ) 698 if ( !obj->isWidgetType() )
689 return false; 699 return false;
690 700
691 /* 701 /*
692 * check if we care for the event 702 * check if we care for the event
693 */ 703 */
694 if ( (ev->type() != QEvent::KeyPress||!testEventMask(MaskPressed)) && 704 if ( (ev->type() != QEvent::KeyPress||!testEventMask(MaskPressed)) &&
695 (ev->type() != QEvent::KeyRelease||!testEventMask(MaskReleased)) ) 705 (ev->type() != QEvent::KeyRelease||!testEventMask(MaskReleased)) )
696 return false; 706 return false;
697 707
698 QKeyEvent *key = static_cast<QKeyEvent*>( ev ); 708 QKeyEvent *key = static_cast<QKeyEvent*>( ev );
699 OKeyConfigItem item = handleKeyEvent( key ); 709 OKeyConfigItem item = handleKeyEvent( key );
700 710
701 if ( item.isEmpty() ) 711 if ( item.isEmpty() )
702 return false; 712 return false;
703 713
704 QWidget *wid = static_cast<QWidget*>( obj ); 714 QWidget *wid = static_cast<QWidget*>( obj );
705 715
706 if ( item.object() && !item.slot().isEmpty() ) { 716 if ( item.object() && !item.slot().isEmpty() ) {
707 connect( this, SIGNAL( actionActivated(QWidget*, QKeyEvent*)), 717 connect( this, SIGNAL( actionActivated(QWidget*, QKeyEvent*)),
708 item.object(), item.slot().data() ); 718 item.object(), item.slot().data() );
709 emit actionActivated(wid, key); 719 emit actionActivated(wid, key);
710 disconnect( this, SIGNAL(actionActivated(QWidget*,QKeyEvent*)), 720 disconnect( this, SIGNAL(actionActivated(QWidget*,QKeyEvent*)),
711 item.object(), item.slot().data() ); 721 item.object(), item.slot().data() );
712 } 722 }
713 emit actionActivated( wid, key, item ); 723 emit actionActivated( wid, key, item );
714 724
715 return true; 725 return true;
716} 726}
717 727
718/** 728/**
719 * @internal 729 * @internal
720 */ 730 */
721OKeyConfigItem::List OKeyConfigManager::keyList( int keycode) { 731OKeyConfigItem::List OKeyConfigManager::keyList( int keycode) {
722 /* 732 /*
723 * Create the map if not existing anymore 733 * Create the map if not existing anymore
724 */ 734 */
725 if ( !m_map ) { 735 if ( !m_map ) {
726 m_map = new OKeyMapConfigPrivate; 736 m_map = new OKeyMapConfigPrivate;
727 /* for every key */ 737 /* for every key */
728 for ( OKeyConfigItem::List::Iterator it = m_keys.begin(); 738 for ( OKeyConfigItem::List::Iterator it = m_keys.begin();
729 it!= m_keys.end(); ++it ) { 739 it!= m_keys.end(); ++it ) {
730 740
731 bool add = true; 741 bool add = true;
732 /* see if this key is blocked */ 742 /* see if this key is blocked */
733 OKeyPair pair = (*it).keyPair(); 743 OKeyPair pair = (*it).keyPair();
734 for ( OKeyPair::List::Iterator pairIt = m_blackKeys.begin(); 744 for ( OKeyPair::List::Iterator pairIt = m_blackKeys.begin();
735 pairIt != m_blackKeys.end(); ++pairIt ) { 745 pairIt != m_blackKeys.end(); ++pairIt ) {
736 if ( (*pairIt).keycode() == pair.keycode() && 746 if ( (*pairIt).keycode() == pair.keycode() &&
737 (*pairIt).modifier() == pair.modifier() ) { 747 (*pairIt).modifier() == pair.modifier() ) {
738 add = false; 748 add = false;
739 break; 749 break;
740 } 750 }
741 } 751 }
742 /* check if we added it */ 752 /* check if we added it */
743 if ( add ) 753 if ( add )
744 (*m_map)[pair.keycode()].append( *it ); 754 (*m_map)[pair.keycode()].append( *it );
745 } 755 }
746 } 756 }
747 return (*m_map)[keycode]; 757 return (*m_map)[keycode];
748} 758}
749 759
750} 760}
751} 761}
diff --git a/libopie2/opiecore/okeyconfigmanager.h b/libopie2/opiecore/okeyconfigmanager.h
index d0a6247..12804ee 100644
--- a/libopie2/opiecore/okeyconfigmanager.h
+++ b/libopie2/opiecore/okeyconfigmanager.h
@@ -1,280 +1,281 @@
1/* 1/*
2 * Copyright (C) 2004 2 * Copyright (C) 2004
3 * LGPL v2 zecke@handhelds.org 3 * LGPL v2 zecke@handhelds.org
4 */ 4 */
5 5
6 6
7#ifndef ODP_KEY_MANAGER_WIDGET_H 7#ifndef ODP_KEY_MANAGER_WIDGET_H
8#define ODP_KEY_MANAGER_WIDGET_H 8#define ODP_KEY_MANAGER_WIDGET_H
9 9
10#include <opie2/oconfig.h> 10#include <opie2/oconfig.h>
11#include <opie2/odevice.h> 11#include <opie2/odevice.h>
12 12
13#include <qstring.h> 13#include <qstring.h>
14#include <qpixmap.h> 14#include <qpixmap.h>
15#include <qcstring.h> 15#include <qcstring.h>
16#include <qvaluelist.h> 16#include <qvaluelist.h>
17 17
18namespace Opie { 18namespace Opie {
19namespace Core { 19namespace Core {
20 20
21/** 21/**
22 * \brief small class representing a Key with possible modifiers 22 * \brief small class representing a Key with possible modifiers
23 * This class holds information about key code and possible 23 * This class holds information about key code and possible
24 * modifier state. That is the lowest level of the key input 24 * modifier state. That is the lowest level of the key input
25 * functions. 25 * functions.
26 * There are also static methods to get special keys. 26 * There are also static methods to get special keys.
27 * OKeyPair will be used with \see OKeyConfigItem 27 * OKeyPair will be used with \see OKeyConfigItem
28 * 28 *
29 * @since 1.2 29 * @since 1.2
30 */ 30 */
31class OKeyPair { 31class OKeyPair {
32public: 32public:
33 typedef QValueList<OKeyPair> List; 33 typedef QValueList<OKeyPair> List;
34 OKeyPair( int key = -1, int modifier = -1); 34 OKeyPair( int key = -1, int modifier = -1);
35 ~OKeyPair(); 35 ~OKeyPair();
36 36
37 bool operator==( const OKeyPair& )const; 37 bool operator==( const OKeyPair& )const;
38 bool operator!=( const OKeyPair& )const; 38 bool operator!=( const OKeyPair& )const;
39 39
40 bool isEmpty()const; 40 bool isEmpty()const;
41 41
42 int keycode()const; 42 int keycode()const;
43 int modifier()const; 43 int modifier()const;
44 44
45 void setKeycode( int ); 45 void setKeycode( int );
46 void setModifier( int ); 46 void setModifier( int );
47 47
48 static OKeyPair returnKey(); 48 static OKeyPair returnKey();
49 static OKeyPair leftArrowKey(); 49 static OKeyPair leftArrowKey();
50 static OKeyPair rightArrowKey(); 50 static OKeyPair rightArrowKey();
51 static OKeyPair upArrowKey(); 51 static OKeyPair upArrowKey();
52 static OKeyPair downArrowKey(); 52 static OKeyPair downArrowKey();
53 static OKeyPair emptyKey(); 53 static OKeyPair emptyKey();
54 static OKeyPair::List hardwareKeys(); 54 static OKeyPair::List hardwareKeys();
55 55
56private: 56private:
57 int m_key; 57 int m_key;
58 int m_mod; 58 int m_mod;
59 class Private; 59 class Private;
60 Private* d; 60 Private* d;
61}; 61};
62 62
63/** 63/**
64 * A class to represent an OKeyPair. 64 * A class to represent an OKeyPair.
65 * It consists out of a Text exposed to the user, Config Key Item, 65 * It consists out of a Text exposed to the user, Config Key Item,
66 * Pixmap, A default OKeyPair and the set OKeyPair. 66 * Pixmap, A default OKeyPair and the set OKeyPair.
67 * You can also pass an id to it 67 * You can also pass an id to it
68 * 68 *
69 * @since 1.1.2 69 * @since 1.2
70 */ 70 */
71class OKeyConfigItem { 71class OKeyConfigItem {
72 friend class OKeyConfigManager; 72 friend class OKeyConfigManager;
73public: 73public:
74 typedef QValueList<OKeyConfigItem> List; 74 typedef QValueList<OKeyConfigItem> List;
75 OKeyConfigItem( const QString& text = QString::null , const QCString& config_key = QCString(), 75 OKeyConfigItem( const QString& text = QString::null , const QCString& config_key = QCString(),
76 const QPixmap& symbol = QPixmap(), 76 const QPixmap& symbol = QPixmap(),
77 int id = -1, 77 int id = -1,
78 const OKeyPair& def = OKeyPair::emptyKey(), 78 const OKeyPair& def = OKeyPair::emptyKey(),
79 QObject *caller = 0, const char* slot = 0); 79 QObject *caller = 0, const char* slot = 0);
80 OKeyConfigItem( const Opie::Core::ODeviceButton& ); 80 OKeyConfigItem( const Opie::Core::ODeviceButton& );
81 ~OKeyConfigItem(); 81 ~OKeyConfigItem();
82 82
83 bool operator==( const OKeyConfigItem& )const; 83 bool operator==( const OKeyConfigItem& )const;
84 bool operator!=( const OKeyConfigItem& )const; 84 bool operator!=( const OKeyConfigItem& )const;
85 85
86 QString text()const; 86 QString text()const;
87 QPixmap pixmap()const; 87 QPixmap pixmap()const;
88 int id()const; 88 int id()const;
89 89
90 90
91 91
92 OKeyPair keyPair()const; 92 OKeyPair keyPair()const;
93 OKeyPair defaultKeyPair()const; 93 OKeyPair defaultKeyPair()const;
94 QCString configKey()const; 94 QCString configKey()const;
95 95
96 96
97 void setText( const QString& text ); 97 void setText( const QString& text );
98 void setPixmap( const QPixmap& ); 98 void setPixmap( const QPixmap& );
99 void setKeyPair( const OKeyPair& ); 99 void setKeyPair( const OKeyPair& );
100 void setDefaultKeyPair( const OKeyPair& ); 100 void setDefaultKeyPair( const OKeyPair& );
101 101
102 bool isEmpty()const; 102 bool isEmpty()const;
103 103
104protected: 104protected:
105 QObject *object()const; 105 QObject *object()const;
106 QCString slot()const; 106 QCString slot()const;
107 void setId( int id ); 107 void setId( int id );
108 void setConfigKey( const QCString& ); 108 void setConfigKey( const QCString& );
109 109
110private: 110private:
111 QString m_text; 111 QString m_text;
112 QCString m_config; 112 QCString m_config;
113 QPixmap m_pix; 113 QPixmap m_pix;
114 int m_id; 114 int m_id;
115 OKeyPair m_key; 115 OKeyPair m_key;
116 OKeyPair m_def; 116 OKeyPair m_def;
117 QObject *m_obj; 117 QObject *m_obj;
118 QCString m_str; 118 QCString m_str;
119 class Private; 119 class Private;
120 Private *d; 120 Private *d;
121}; 121};
122 122
123 123
124 124
125/** 125/**
126 * \brief A manager to load and save Key Actions and get notified 126 * \brief A manager to load and save Key Actions and get notified
127 * This is the Manager for KeyActions. 127 * This is the Manager for KeyActions.
128 * You can say from which config and group to read data, to grab the 128 * You can say from which config and group to read data, to grab the
129 * keyboard to handle hardware keys, you can supply a blacklist of 129 * keyboard to handle hardware keys, you can supply a blacklist of
130 * keys which should not be used by allowed to be used. 130 * keys which should not be used by allowed to be used.
131 * You can even pass this manager to a Widget to do the configuration for you. 131 * You can even pass this manager to a Widget to do the configuration for you.
132 * You need to add OKeyConfigItem for your keys and then issue a load() to 132 * You need to add OKeyConfigItem for your keys and then issue a load() to
133 * read the Key information. 133 * read the Key information.
134 * You can either handle the QKeyEvent yourself and ask this class if it is 134 * You can either handle the QKeyEvent yourself and ask this class if it is
135 * handled by your action and let give you the action. Or you can install 135 * handled by your action and let give you the action. Or you can install
136 * the event filter and get a signal. 136 * the event filter and get a signal.
137 * You need to load and save yourself! 137 * You need to load and save yourself!
138 * 138 *
139 * Again if you want to extend it and I missed a virtual, tell me so I can improve (zecke@handhelds.org) 139 * Again if you want to extend it and I missed a virtual, tell me so I can improve (zecke@handhelds.org)
140 * 140 *
141 * @since 1.1.2 141 * @since 1.1.2
142 */ 142 */
143class OKeyConfigManager : public QObject { 143class OKeyConfigManager : public QObject {
144 Q_OBJECT 144 Q_OBJECT
145 typedef QMap<int, OKeyConfigItem::List> OKeyMapConfigPrivate; 145 typedef QMap<int, OKeyConfigItem::List> OKeyMapConfigPrivate;
146public: 146public:
147 enum EventMask { 147 enum EventMask {
148 MaskPressed = 0x1, 148 MaskPressed = 0x1,
149 MaskReleased = 0x2, 149 MaskReleased = 0x2,
150 }; 150 };
151 151
152 OKeyConfigManager(Opie::Core::OConfig *conf = 0, 152 OKeyConfigManager(Opie::Core::OConfig *conf = 0,
153 const QString& group = QString::null, 153 const QString& group = QString::null,
154 const OKeyPair::List &block = OKeyPair::List(), 154 const OKeyPair::List &block = OKeyPair::List(),
155 bool grabkeyboard = false, QObject * par = 0, 155 bool grabkeyboard = false, QObject * par = 0,
156 const char* name = 0 ); 156 const char* name = 0 );
157 virtual ~OKeyConfigManager(); 157 virtual ~OKeyConfigManager();
158 158
159public slots:
159 virtual void load(); 160 virtual void load();
160 virtual void save(); 161 virtual void save();
162 void handleWidget( QWidget* );
161 163
164public:
162 virtual OKeyConfigItem handleKeyEvent( QKeyEvent* ); 165 virtual OKeyConfigItem handleKeyEvent( QKeyEvent* );
163 int handleKeyEventId( QKeyEvent* ); 166 int handleKeyEventId( QKeyEvent* );
164 167
165 void addKeyConfig( const OKeyConfigItem& ); 168 void addKeyConfig( const OKeyConfigItem& );
166 void removeKeyConfig( const OKeyConfigItem& ); 169 void removeKeyConfig( const OKeyConfigItem& );
167 void clearKeyConfig(); 170 void clearKeyConfig();
168 171
169 void addToBlackList( const OKeyPair& ); 172 void addToBlackList( const OKeyPair& );
170 void removeFromBlackList( const OKeyPair& ); 173 void removeFromBlackList( const OKeyPair& );
171 void clearBlackList(); 174 void clearBlackList();
172 OKeyPair::List blackList()const; 175 OKeyPair::List blackList()const;
173 176
174 void handleWidget( QWidget* );
175
176 bool eventFilter( QObject*, QEvent* ); 177 bool eventFilter( QObject*, QEvent* );
177 178
178 /** 179 /**
179 * Sets the event mask flags aMask. 180 * Sets the event mask flags aMask.
180 * 181 *
181 * aMask is a combination of OKeyConfigManager::EventMask 182 * aMask is a combination of OKeyConfigManager::EventMask
182 * 183 *
183 * @see eventMask(), testEventMask(), addEventMask(), clearEventMask() 184 * @see eventMask(), testEventMask(), addEventMask(), clearEventMask()
184 */ 185 */
185 void setEventMask(uint aMask); 186 void setEventMask(uint aMask);
186 /** 187 /**
187 * Returns the event mask flags set. 188 * Returns the event mask flags set.
188 * 189 *
189 * aMask is a combination of OKeyConfigManager::EventMask 190 * aMask is a combination of OKeyConfigManager::EventMask
190 * 191 *
191 * @see setEventMask(), testEventMask(), addEventMask(), clearEventMask() 192 * @see setEventMask(), testEventMask(), addEventMask(), clearEventMask()
192 */ 193 */
193 uint eventMask()const; 194 uint eventMask()const;
194 /** 195 /**
195 * Test if the event mask flag aMask is set. 196 * Test if the event mask flag aMask is set.
196 * 197 *
197 * @param aMask one of OKeyConfigManager::EventMask 198 * @param aMask one of OKeyConfigManager::EventMask
198 * 199 *
199 * @see eventMask(), setEventMask(), addEventMask(), clearEventMask() 200 * @see eventMask(), setEventMask(), addEventMask(), clearEventMask()
200 */ 201 */
201 bool testEventMask(uint aMask); 202 bool testEventMask(uint aMask);
202 /** 203 /**
203 * Add the event mask flag aMask. 204 * Add the event mask flag aMask.
204 * 205 *
205 * @param aMask one of OKeyConfigManager::EventMask 206 * @param aMask one of OKeyConfigManager::EventMask
206 * 207 *
207 * @see eventMask(), setEventMask(), addEventMask(), clearEventMask() 208 * @see eventMask(), setEventMask(), addEventMask(), clearEventMask()
208 */ 209 */
209 void addEventMask(uint aMask); 210 void addEventMask(uint aMask);
210 /** 211 /**
211 * Clears the event mask flag aMask. 212 * Clears the event mask flag aMask.
212 * 213 *
213 * @param aMask is one of OKeyConfigManager::EventMask 214 * @param aMask is one of OKeyConfigManager::EventMask
214 * 215 *
215 * @see eventMask(), testEventMask(), addEventMask(), setEventMask() 216 * @see eventMask(), testEventMask(), addEventMask(), setEventMask()
216 */ 217 */
217 void clearEventMask(uint aMask); 218 void clearEventMask(uint aMask);
218 219
219 OKeyConfigItem::List keyConfigList()const; 220 OKeyConfigItem::List keyConfigList()const;
220 221
221signals: 222signals:
222 /** 223 /**
223 * The Signals are triggered on KeyPress and KeyRelease! 224 * The Signals are triggered on KeyPress and KeyRelease!
224 * You can check the isDown of the QKeyEvent 225 * You can check the isDown of the QKeyEvent
225 * @see QKeyEvent 226 * @see QKeyEvent
226 */ 227 */
227 void actionActivated( QWidget*, QKeyEvent*, const Opie::Core::OKeyConfigItem& ); 228 void actionActivated( QWidget*, QKeyEvent*, const Opie::Core::OKeyConfigItem& );
228 229
229 /** 230 /**
230 * This Signal correspondents to the OKeyConfigItem slot 231 * This Signal correspondents to the OKeyConfigItem slot
231 * and object 232 * and object
232 * 233 *
233 * @see OKeyConfigItem::slot 234 * @see OKeyConfigItem::slot
234 * @see OKeyConfigItem::object 235 * @see OKeyConfigItem::object
235 */ 236 */
236 void actionActivated( QWidget* par, QKeyEvent* key); 237 void actionActivated( QWidget* par, QKeyEvent* key);
237 238
238private: 239private:
239 OKeyConfigItem::List keyList( int ); 240 OKeyConfigItem::List keyList( int );
240 OKeyConfigItem::List m_keys; 241 OKeyConfigItem::List m_keys;
241 QValueList<QWidget*> m_widgets; 242 QValueList<QWidget*> m_widgets;
242 Opie::Core::OConfig *m_conf; 243 Opie::Core::OConfig *m_conf;
243 QString m_group; 244 QString m_group;
244 OKeyPair::List m_blackKeys; 245 OKeyPair::List m_blackKeys;
245 bool m_grab : 1; 246 bool m_grab : 1;
246 OKeyMapConfigPrivate *m_map; 247 OKeyMapConfigPrivate *m_map;
247 class Private; 248 class Private;
248 Private *d; 249 Private *d;
249 uint m_event_mask; 250 uint m_event_mask;
250}; 251};
251 252
252inline bool OKeyConfigManager::testEventMask(uint aMask) 253inline bool OKeyConfigManager::testEventMask(uint aMask)
253{ 254{
254 return (m_event_mask&aMask)!=0; 255 return (m_event_mask&aMask)!=0;
255} 256}
256 257
257inline void OKeyConfigManager::addEventMask(uint aMask) 258inline void OKeyConfigManager::addEventMask(uint aMask)
258{ 259{
259 m_event_mask |= aMask; 260 m_event_mask |= aMask;
260} 261}
261 262
262inline void OKeyConfigManager::clearEventMask(uint aMask) 263inline void OKeyConfigManager::clearEventMask(uint aMask)
263{ 264{
264 m_event_mask &= ~aMask; 265 m_event_mask &= ~aMask;
265} 266}
266 267
267inline void OKeyConfigManager::setEventMask(uint aMask) 268inline void OKeyConfigManager::setEventMask(uint aMask)
268{ 269{
269 m_event_mask = aMask; 270 m_event_mask = aMask;
270} 271}
271 272
272inline uint OKeyConfigManager::eventMask()const 273inline uint OKeyConfigManager::eventMask()const
273{ 274{
274 return m_event_mask; 275 return m_event_mask;
275} 276}
276 277
277} 278}
278} 279}
279 280
280#endif 281#endif