Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

KeyHelper.cpp

Go to the documentation of this file.
00001 #include "KeyHelper.h"
00002 #include <opie2/okeyfilter.h>
00003 #include <opie2/odebug.h>
00004 
00005 KeyHelper::KeyHelper()
00006 {
00007     qDebug("KeyHelper::KeyHelper()");
00008     load();
00009 
00010     m_oAction.setKeyModifiers(&m_oModifiers);
00011     m_oAction.setKeyMappings(&m_oMappings);
00012     m_oAction.setKeyExtensions(&m_oExtensions);
00013     m_oAction.setKeyRepeater(&m_oRepeater);
00014     m_oExtensions.setKeyModifiers(&m_oModifiers);
00015 }
00016 
00017 KeyHelper::~KeyHelper()
00018 {
00019     unset();
00020     qDebug("KeyHelper::~KeyHelper()");
00021 }
00022 
00023 bool KeyHelper::filter(int unicode, int keycode, int modifiers,
00024         bool isPress, bool autoRepeat)
00025 {
00026     odebug << "KeyHelper <<< "<<unicode<<" - "<<keycode<<" - "<<modifiers<<"\n";
00027     m_oAction.setAction(unicode, keycode, modifiers,
00028         isPress, autoRepeat);
00029     return(m_oAction.doAction());
00030 }
00031 
00032 void KeyHelper::unset()
00033 {
00034     Opie::Core::OKeyFilter::inst()->remHandler(this);;
00035 }
00036 
00037 void KeyHelper::set()
00038 {
00039     Opie::Core::OKeyFilter::inst()->addHandler(this);
00040     m_oModifiers.resetStates();
00041 }
00042 
00043 void KeyHelper::enable()
00044 {
00045     m_oAction.enable();
00046 }
00047 
00048 void KeyHelper::disable()
00049 {
00050     m_oAction.disable();
00051     m_oRepeater.stop();
00052 }
00053 
00054 bool KeyHelper::load(const QString& file)
00055 {
00056     KeycfgReader oReader;
00057     oReader.setKeyModifiers(&m_oModifiers);
00058     oReader.setKeyMappings(&m_oMappings);
00059     oReader.setKeyExtensions(&m_oExtensions);
00060     oReader.setKeyRepeater(&m_oRepeater);
00061 
00062     bool success;
00063     if(file.length() == 0){
00064         success = oReader.load();
00065     } else if(file[0] == '/'){
00066         success = oReader.load(file);
00067     } else {
00068         //QString filepath = QString(::getenv("HOME")) + "/Settings/" + file;
00069         QString filepath = QDir::homeDirPath() + "/Settings/" + file;
00070         success = oReader.load(filepath);
00071     }
00072     if(success == false){
00073         qDebug("config xml load error");
00074         setDefault();
00075     }
00076     return(success);
00077 }
00078 
00079 bool KeyHelper::reload(const QString& file)
00080 {
00081     m_oModifiers.reset();
00082     m_oMappings.reset();
00083     m_oExtensions.reset();
00084     m_oRepeater.reset();
00085 
00086     return(load(file));
00087 }
00088 
00089 void KeyHelper::setDefault()
00090 {
00091     /* default settings */
00092     m_oExtensions.assign("switch", Qt::Key_F12,
00093         m_oModifiers.getMask("Shift"), KeyNames::getCode("Shift"));
00094     m_oExtensions.assign("select", Qt::Key_F11,
00095         m_oModifiers.getMask("Shift"), KeyNames::getCode("Shift"));
00096 }
00097 
00098 void KeyHelper::statistics()
00099 {
00100     m_oModifiers.statistics();
00101     m_oMappings.statistics();
00102     m_oExtensions.statistics();
00103     m_oRepeater.statistics();
00104 }
00105 
00106 void KeyHelper::dumpkeymap()
00107 {
00108     const QWSServer::KeyMap* m = QWSServer::keyMap();
00109     qWarning("KeyHelper::dumpkeymap()");
00110     while(m->key_code != 0){
00111         qWarning(" [%04x][%04x][%04x][%04x]", m->key_code, m->unicode, m->shift_unicode, m->ctrl_unicode);
00112         m++;
00113     }
00114 }

Generated on Sat Nov 5 16:16:42 2005 for OPIE by  doxygen 1.4.2