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

MappingsHandler.cpp

Go to the documentation of this file.
00001 #include "MappingsHandler.h"
00002 
00003 void MappingsHandler::dispose(QXmlReader* parser, QXmlContentHandler* parent)
00004 {
00005         m_parser = parser;
00006         m_parent = parent;
00007         m_parser->setContentHandler(this);
00008 }
00009 
00010 bool MappingsHandler::startElement(const QString& /* namespaceURI */,
00011         const QString& localName,
00012         const QString& /* qName */,
00013         const QXmlAttributes& attr)
00014 {
00015         if(localName == "define"){
00016                 /* 変数初期化 */
00017                 m_code = 0;
00018                 m_mask = 0;
00019                 m_mapcode = 0;
00020                 m_unicode = 0;
00021                 m_mapmodifiers.clear();
00022                 m_mapunicodes.clear();
00023                 for(int i=0; i<attr.length(); i++){
00024                         if(attr.localName(i).lower() == "key"){
00025                                 /* keyname */
00026                                 m_code = KeyNames::getCode(attr.value(i));
00027                         } else if(attr.localName(i).lower() == "code"){
00028                                 /* keycode */
00029                                 m_code = KHUtil::hex2int(attr.value(i).lower());
00030                         }
00031                 }
00032         } else if(localName == "modifier"){
00033                 /* modifier keys */
00034                 for(int i=0; i<attr.length(); i++){
00035                         if(attr.value(i).lower() == "on"){
00036                                 m_mask |= m_pModifiers->getMask(attr.localName(i));
00037                         }
00038                 }
00039         } else if(localName == "map"){
00040                 /* mapping key */
00041                 for(int i=0; i<attr.length(); i++){
00042                         if(attr.localName(i).lower() == "key"){
00043                                 /* keyname */
00044                                 m_mapcode = KeyNames::getCode(attr.value(i));
00045                         } else if(attr.localName(i).lower() == "code"){
00046                                 /* keycode */
00047                                 m_mapcode = KHUtil::hex2int(attr.value(i).lower());
00048                         }
00049                 }
00050         } else if(localName == "map_modifier"){
00051                 /* mapping modifiers */
00052                 for(int i=0; i<attr.length(); i++){
00053                         m_mapmodifiers[attr.localName(i)] = attr.value(i);
00054                 }
00055         } else if(localName == "map_unicode"){
00056                 /* mapping unicodes */
00057                 for(int i=0; i<attr.length(); i++){
00058                         if(attr.localName(i).lower() == "char"){
00059                                 /* unicode char */
00060                                 m_unicode = attr.value(i)[0].unicode();
00061                         } else if(attr.localName(i).lower() == "code"){
00062                                 /* unicode code */
00063                                 m_unicode = KHUtil::hex2int(attr.value(i).lower());
00064                         } else {
00065                                 m_mapunicodes[attr.localName(i)] = attr.value(i);
00066                         }
00067                 }
00068         }
00069         return(true);
00070 }
00071 
00072 bool MappingsHandler::endElement(const QString& /* namespaceURI */,
00073         const QString& localName,
00074         const QString& /* qName */)
00075 {
00076         if(localName == "define"){
00077                 if(m_code > 0){
00078                         /* assign mapping */
00079                         m_pMappings->assign(m_code, m_mask, m_mapcode);
00080 
00081                         for(QMap<QString,QString>::Iterator it=m_mapmodifiers.begin();
00082                                         it!=m_mapmodifiers.end(); ++it){
00083                                 /* assign mapping modifier state */
00084                                 m_pMappings->assignModifier(it.key(), it.data());
00085                         }
00086 
00087                         if(m_unicode > 0){
00088                                 m_pMappings->assignUnicode(m_unicode);
00089                         } else {
00090                                 for(QMap<QString,QString>::Iterator it=m_mapunicodes.begin();
00091                                                 it!=m_mapunicodes.end(); ++it){
00092                                         /* assign mapping unicode */
00093                                         m_pMappings->assignUnicode(it.key(), it.data());
00094                                 }
00095                         }
00096                 }
00097         } else if(localName == "mappings"){
00098                 /* return parent */
00099                 m_parser->setContentHandler(m_parent);
00100         }
00101         return(true);
00102 }

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