|
|
|
/***************************************************************************
|
|
|
|
* ktouchkey.cpp *
|
|
|
|
* ------------- *
|
|
|
|
* Copyright (C) 2000 by Håvard Frøiland, 2004 by Andreas Nicolai *
|
|
|
|
* ghorwin@users.sourceforge.net *
|
|
|
|
* *
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
|
|
* (at your option) any later version. *
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#include "ktouchkey.h"
|
|
|
|
#include <kdebug.h>
|
|
|
|
#include <utility> // for std::min
|
|
|
|
|
|
|
|
KTouchKey::KTouchKey(keytype_t type, int x, int y, int w, int h, TQChar ch)
|
|
|
|
: m_type(type), m_x(x), m_y(y), m_w(w), m_h(h)
|
|
|
|
{
|
|
|
|
m_chars[0].m_ch = ch;
|
|
|
|
m_chars[0].m_bold = true;
|
|
|
|
m_chars[0].m_pos = KTouchKeyChar::TOP_LEFT;
|
|
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
KTouchKey::KTouchKey(int x, int y, int w, int h, TQString text) :
|
|
|
|
m_x(x), m_y(y), m_w(w), m_h(h)
|
|
|
|
{
|
|
|
|
m_type = OTHER;
|
|
|
|
m_chars[0].m_ch = 0;
|
|
|
|
m_chars[0].m_bold = true;
|
|
|
|
m_chars[0].m_pos = KTouchKeyChar::TOP_LEFT;
|
|
|
|
m_chars[0].m_text = text;
|
|
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void KTouchKey::resize(double scale) {
|
|
|
|
m_xS = static_cast<int>(scale*m_x);
|
|
|
|
m_yS = static_cast<int>(scale*m_y);
|
|
|
|
m_wS = static_cast<int>(scale*m_w);
|
|
|
|
m_hS = static_cast<int>(scale*m_h);
|
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
// Reads the key data from the DomElement
|
|
|
|
bool KTouchKey::read(TQDomNode node) {
|
|
|
|
/*
|
|
|
|
if (node.isNull())
|
|
|
|
return false; // TODO : Error message
|
|
|
|
TQString primaryCharText = node.firstChild().nodeValue();
|
|
|
|
if (primaryCharText.length() >= 1)
|
|
|
|
m_primaryChar = primaryCharText[0];
|
|
|
|
else
|
|
|
|
return false; // TODO : Error message
|
|
|
|
TQDomNamedNodeMap nmap = node.attributes();
|
|
|
|
// Get height, widht, x and y
|
|
|
|
node = nmap.namedItem("Height");
|
|
|
|
if (node.isNull())
|
|
|
|
return false; // TODO : Error message
|
|
|
|
m_h = node.nodeValue().toInt();
|
|
|
|
node = nmap.namedItem("Width");
|
|
|
|
if (node.isNull())
|
|
|
|
return false; // TODO : Error message
|
|
|
|
m_w = node.nodeValue().toInt();
|
|
|
|
node = nmap.namedItem("X");
|
|
|
|
if (node.isNull())
|
|
|
|
return false; // TODO : Error message
|
|
|
|
m_x = node.nodeValue().toInt();
|
|
|
|
node = nmap.namedItem("Y");
|
|
|
|
if (node.isNull())
|
|
|
|
return false; // TODO : Error message
|
|
|
|
m_y = node.nodeValue().toInt();
|
|
|
|
// read type of key
|
|
|
|
node = nmap.namedItem("Type");
|
|
|
|
if (node.isNull())
|
|
|
|
return false; // TODO : Error message
|
|
|
|
TQString typetext = node.nodeValue();
|
|
|
|
if (typetext=="NORMAL") m_type = NORMAL;
|
|
|
|
else if (typetext=="FINGER") m_type = FINGER;
|
|
|
|
else if (typetext=="ENTER") m_type = ENTER;
|
|
|
|
else if (typetext=="BACKSPACE") m_type = BACKSPACE;
|
|
|
|
else if (typetext=="SHIFT") m_type = SHIFT;
|
|
|
|
else if (typetext=="SPACE") m_type = SPACE;
|
|
|
|
else if (typetext=="OTHER") {
|
|
|
|
m_type = OTHER;
|
|
|
|
node = nmap.namedItem("OtherKeyText");
|
|
|
|
if (!node.isNull())
|
|
|
|
m_otherKeyText = node.nodeValue();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return false; // TODO : Error message
|
|
|
|
// read optional secondary character
|
|
|
|
node = nmap.namedItem("SecondaryChar");
|
|
|
|
TQString charvalue;
|
|
|
|
if (!node.isNull())
|
|
|
|
charvalue = node.nodeValue();
|
|
|
|
if (charvalue.length() >= 1)
|
|
|
|
m_secondaryChar = charvalue[0];
|
|
|
|
else
|
|
|
|
m_secondaryChar = TQChar(0);
|
|
|
|
kdDebug() << "H:" << m_h << " W:" << m_w << " X:" << m_x << " Y:" << m_y
|
|
|
|
<< " Type:" << m_type << " SecondaryChar:" << m_secondaryChar
|
|
|
|
<< "' PrimaryChar:" << m_primaryChar << "'" << endl;
|
|
|
|
*/
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
// Writes the key data into the DomElement
|
|
|
|
void KTouchKey::write(TQDomDocument& doc, TQDomElement& root) const {
|
|
|
|
/*
|
|
|
|
TQDomElement element = doc.createElement("KeyDefinition");
|
|
|
|
switch (m_type) {
|
|
|
|
case NORMAL : element.setAttribute("Type", "NORMAL"); break;
|
|
|
|
case FINGER : element.setAttribute("Type", "FINGER"); break;
|
|
|
|
case ENTER : element.setAttribute("Type", "ENTER"); break;
|
|
|
|
case BACKSPACE : element.setAttribute("Type", "BACKSPACE"); break;
|
|
|
|
case SHIFT : element.setAttribute("Type", "SHIFT"); break;
|
|
|
|
case SPACE : element.setAttribute("Type", "SPACE"); break;
|
|
|
|
case OTHER :
|
|
|
|
element.setAttribute("Type", "OTHER");
|
|
|
|
element.setAttribute("OtherKeyText", m_otherKeyText);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
TQDomText charnode = doc.createTextNode(TQString(m_primaryChar));
|
|
|
|
element.appendChild(charnode);
|
|
|
|
// element.setAttribute("PrimaryChar", TQString(m_primaryChar));
|
|
|
|
if (m_secondaryChar!=TQChar(0))
|
|
|
|
element.setAttribute("SecondaryChar", TQString(m_secondaryChar));
|
|
|
|
element.setAttribute("X", m_x);
|
|
|
|
element.setAttribute("Y", m_y);
|
|
|
|
element.setAttribute("Width", m_w);
|
|
|
|
element.setAttribute("Height", m_h);
|
|
|
|
root.appendChild(element);
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|