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

KeyExtensions.cpp

Go to the documentation of this file.
00001 #include "KeyExtensions.h"
00002 
00003 KeyExtensions::KeyExtensions()
00004 {
00005         qDebug("KeyExtensions::KeyExtensions()");
00006         m_cancelcode = 0;
00007 }
00008 
00009 KeyExtensions::~KeyExtensions()
00010 {
00011         qDebug("KeyExtensions::~KeyExtensions()");
00012         clear();
00013 }
00014 
00015 void KeyExtensions::assign(const QString& kind, int keycode,
00016         int keymask, const QValueList<int>& modcodes)
00017 {
00018         ExtensionInterface* ext;
00019 #if 0
00020         ext = m_oExtFactory.createInstance(kind);
00021         if(ext != NULL){
00022                 ext->setKeycode(keycode);
00023                 ext->setKeymask(keymask);
00024                 ext->setModcodes(modcodes);
00025         }
00026 #else
00027         ext = m_oExtFactory.createInstance(kind, keycode, keymask);
00028         if(ext != NULL){
00029                 ext->setModcodes(modcodes);
00030         }
00031 #endif
00032 }
00033 
00034 void KeyExtensions::assign(const QString& kind, int keycode,
00035         int keymask, int modcode)
00036 {
00037         QValueList<int> modcodes;
00038         modcodes.append(modcode);
00039         assign(kind, keycode, keymask, modcodes);
00040 }
00041 
00042 bool KeyExtensions::doKey(int keycode, int keymask, bool isPress)
00043 {
00044         bool fCancel = false;
00045         ExtensionList& list = m_oExtFactory.getList();
00046         for(ExtensionList::Iterator it=list.begin();
00047                         it!=list.end(); ++it){
00048                 if(isPress){
00049                         int code = (*it)->getKeycode();
00050                         if((*it)->getKeymask() == keymask
00051                                 && (code == 0 || code == keycode)){
00052                                 if((*it)->onKeyPress(keycode)){
00053                                         fCancel = true;
00054                                 }
00055                                 qWarning("ext:onKeyPress[%s][%x][%d]",
00056                                         (*it)->kind().latin1(),
00057                                         (*it)->getKeycode(),
00058                                         fCancel);
00059                         }
00060                 } else {
00061                         if(keycode == m_cancelcode){
00062                                 fCancel = true;
00063                         }
00064                         const QValueList<int>& rlist = (*it)->getModcodes();
00065                         if(rlist.contains(keycode)){
00066                                 if((*it)->onModRelease(keycode)){
00067                                         m_pModifiers->resetToggles();
00068                                 }
00069                                 qWarning("ext:onModRelease[%s][%x]",
00070                                         (*it)->kind().latin1(),
00071                                         keycode);
00072                         }
00073                 }
00074         }
00075         if(isPress && fCancel){
00076                 m_cancelcode = keycode;
00077         } else {
00078                 m_cancelcode = 0;
00079         }
00080         return(fCancel);
00081 }
00082 
00083 void KeyExtensions::clear()
00084 {
00085         m_oExtFactory.clear();
00086 }
00087 
00088 void KeyExtensions::reset()
00089 {
00090         //clear();
00091         m_oExtFactory.reset();
00092 }
00093 
00094 void KeyExtensions::init()
00095 {
00096         m_oExtFactory.sweep();
00097 }
00098 
00099 void KeyExtensions::statistics()
00100 {
00101         qWarning("KeyExtensions::statistics()");
00102         ExtensionList& list = m_oExtFactory.getList();
00103         for(ExtensionList::Iterator it=list.begin();
00104                         it!=list.end(); ++it){
00105                 qWarning(" [%s][%x][%x]",
00106                         (*it)->kind().latin1(),
00107                         (*it)->getKeycode(),
00108                         (*it)->getKeymask());
00109         }
00110 }
00111 

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