author | zecke <zecke> | 2004-09-10 11:04:16 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-09-10 11:04:16 (UTC) |
commit | 2ec724fc789cd34f6b3743896516f2fef2731456 (patch) (unidiff) | |
tree | 67830cb237efa4201ff530bb0c66e496222a5fd3 /libopie2 | |
parent | 29ed6115bd14aa95d29cf922fd179a6e470b5d53 (diff) | |
download | opie-2ec724fc789cd34f6b3743896516f2fef2731456.zip opie-2ec724fc789cd34f6b3743896516f2fef2731456.tar.gz opie-2ec724fc789cd34f6b3743896516f2fef2731456.tar.bz2 |
Move handleWidget of OKeyConfigManager to a slot
Add some @see statements to the OKeyConfigManager
-rw-r--r-- | libopie2/opiecore/okeyconfigmanager.cpp | 10 | ||||
-rw-r--r-- | libopie2/opiecore/okeyconfigmanager.h | 7 |
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 | |||
@@ -545,207 +545,217 @@ void OKeyConfigManager::save() { | |||
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 | */ |
568 | OKeyConfigItem OKeyConfigManager::handleKeyEvent( QKeyEvent* e ) { | 568 | OKeyConfigItem 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 | */ |
602 | int OKeyConfigManager::handleKeyEventId( QKeyEvent* ev) { | 602 | int 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 | */ |
609 | void OKeyConfigManager::addKeyConfig( const OKeyConfigItem& item ) { | 609 | void 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 | */ |
618 | void OKeyConfigManager::removeKeyConfig( const OKeyConfigItem& item ) { | 618 | void 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 | */ |
626 | void OKeyConfigManager::clearKeyConfig() { | 626 | void 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 | */ |
634 | Opie::Core::OKeyConfigItem::List OKeyConfigManager::keyConfigList()const{ | 634 | Opie::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 | */ |
642 | void OKeyConfigManager::addToBlackList( const OKeyPair& key) { | 645 | void 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 | */ |
652 | void OKeyConfigManager::removeFromBlackList( const OKeyPair& key ) { | 658 | void 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 | */ |
661 | void OKeyConfigManager::clearBlackList() { | 667 | void 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 | */ |
670 | OKeyPair::List OKeyConfigManager::blackList()const { | 680 | OKeyPair::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 | */ |
680 | void OKeyConfigManager::handleWidget( QWidget* wid ) { | 690 | void OKeyConfigManager::handleWidget( QWidget* wid ) { |
681 | wid->installEventFilter( this ); | 691 | wid->installEventFilter( this ); |
682 | } | 692 | } |
683 | 693 | ||
684 | /** | 694 | /** |
685 | * @internal | 695 | * @internal |
686 | */ | 696 | */ |
687 | bool OKeyConfigManager::eventFilter( QObject* obj, QEvent* ev) { | 697 | bool 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 | */ |
721 | OKeyConfigItem::List OKeyConfigManager::keyList( int keycode) { | 731 | OKeyConfigItem::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,271 +1,272 @@ | |||
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 | ||
18 | namespace Opie { | 18 | namespace Opie { |
19 | namespace Core { | 19 | namespace 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 | */ |
31 | class OKeyPair { | 31 | class OKeyPair { |
32 | public: | 32 | public: |
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 | ||
56 | private: | 56 | private: |
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 | */ |
71 | class OKeyConfigItem { | 71 | class OKeyConfigItem { |
72 | friend class OKeyConfigManager; | 72 | friend class OKeyConfigManager; |
73 | public: | 73 | public: |
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 | ||
104 | protected: | 104 | protected: |
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 | ||
110 | private: | 110 | private: |
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 | */ |
143 | class OKeyConfigManager : public QObject { | 143 | class OKeyConfigManager : public QObject { |
144 | Q_OBJECT | 144 | Q_OBJECT |
145 | typedef QMap<int, OKeyConfigItem::List> OKeyMapConfigPrivate; | 145 | typedef QMap<int, OKeyConfigItem::List> OKeyMapConfigPrivate; |
146 | public: | 146 | public: |
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 | ||
159 | public slots: | ||
159 | virtual void load(); | 160 | virtual void load(); |
160 | virtual void save(); | 161 | virtual void save(); |
162 | void handleWidget( QWidget* ); | ||
161 | 163 | ||
164 | public: | ||
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 | ||
221 | signals: | 222 | signals: |
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 | ||
238 | private: | 239 | private: |
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 | ||
252 | inline bool OKeyConfigManager::testEventMask(uint aMask) | 253 | inline 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 | ||
257 | inline void OKeyConfigManager::addEventMask(uint aMask) | 258 | inline void OKeyConfigManager::addEventMask(uint aMask) |
258 | { | 259 | { |
259 | m_event_mask |= aMask; | 260 | m_event_mask |= aMask; |
260 | } | 261 | } |
261 | 262 | ||
262 | inline void OKeyConfigManager::clearEventMask(uint aMask) | 263 | inline void OKeyConfigManager::clearEventMask(uint aMask) |
263 | { | 264 | { |
264 | m_event_mask &= ~aMask; | 265 | m_event_mask &= ~aMask; |
265 | } | 266 | } |
266 | 267 | ||
267 | inline void OKeyConfigManager::setEventMask(uint aMask) | 268 | inline void OKeyConfigManager::setEventMask(uint aMask) |
268 | { | 269 | { |
269 | m_event_mask = aMask; | 270 | m_event_mask = aMask; |
270 | } | 271 | } |
271 | 272 | ||