You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeedu/ktouch/src/ktouchkey.cpp

140 lines
5.1 KiB

/***************************************************************************
* 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);
*/
}
// ----------------------------------------------------------------------------