xbl_protohandler.cpp [plain text]
#ifndef KHTML_NO_XBL
#include "qstringlist.h"
#include "qstring.h"
#include "xbl_protohandler.h"
using DOM::DOMString;
namespace XBL {
const int XBLPrototypeHandler::shiftKey = (1<<1);
const int XBLPrototypeHandler::altKey = (1<<2);
const int XBLPrototypeHandler::ctrlKey = (1<<3);
const int XBLPrototypeHandler::metaKey = (1<<4);
const int XBLPrototypeHandler::allKeys = shiftKey | altKey | ctrlKey | metaKey;
const int XBLPrototypeHandler::bubblingPhase = 0;
const int XBLPrototypeHandler::capturingPhase = 1;
const int XBLPrototypeHandler::targetPhase = 2;
XBLPrototypeHandler::XBLPrototypeHandler(const DOMString& event,
const DOMString& phase,
const DOMString& action,
const DOMString& keycode,
const DOMString& charcode,
const DOMString& modifiers,
const DOMString& button,
const DOMString& clickcount,
const DOMString& preventdefault,
XBLPrototypeBinding* binding)
:m_binding(binding), m_next(0), m_eventName(event),
m_phase(bubblingPhase), m_preventDefault(false), m_keyMask(0), m_misc(0), m_button(-1), m_unused(0)
{
if (event.isEmpty())
return;
if (phase == "capturing")
m_phase = capturingPhase;
else if (phase == "target")
m_phase = targetPhase;
if (!action.isEmpty())
m_handlerText = action;
if (!modifiers.isEmpty()) {
QStringList result = QStringList::split(",", modifiers.string());
for (QStringList::Iterator it = result.begin(); it != result.end(); ++it) {
QString modifier = (*it).stripWhiteSpace();
if (modifier == "shift")
m_keyMask |= shiftKey;
else if (modifier == "alt")
m_keyMask |= altKey;
else if (modifier == "control")
m_keyMask |= ctrlKey;
else if (modifier == "meta" || modifier == "accel" || modifier == "access")
m_keyMask |= metaKey; }
}
if (!charcode.isEmpty()) {
m_key = charcode;
if ((m_keyMask & shiftKey) != 0)
m_key = m_key.upper();
else
m_key = m_key.lower();
m_misc = 1;
}
else if (!keycode.isEmpty())
m_key = keycode;
if (!clickcount.isEmpty())
m_misc = clickcount.toInt();
if (!button.isEmpty())
m_button = button.toInt();
}
XBLPrototypeHandler::~XBLPrototypeHandler()
{
delete m_next;
}
void XBLPrototypeHandler::appendData(const QString& ch)
{
m_handlerText += ch;
}
}
#endif