예제 #1
0
QKeyPushButton * widgetKeyBoard::createNewKey(QString keyValue)
{
	QKeyPushButton *tmp = new QKeyPushButton(this);
        QString        style = QString(DEFAULT_STYLE_BUTTON) + QString(DEFAULT_BACKGROUND_BUTTON);
        QSize          imageDim;
        int            width = 0, height = 0;

        if (this->isEmbeddedKeyboard() == true) {
            imageDim.setWidth(16);
            imageDim.setHeight(16);
        }
        else {
            imageDim.setWidth(32);
            imageDim.setHeight(32);
        }
        if (IS_PASSWORD(keyValue) == true || IS_PASSWORD_EMB(keyValue) == true) {
            tmp->setIconSize(imageDim);
            tmp->setIcon(QPixmap(":/TastieraVirtuale/normalEcho"));            
        }        
        else if (IS_PASTE(keyValue) == true) {
            tmp->setIconSize(imageDim);
            tmp->setEnabled(false);
            tmp->setIcon(QPixmap(":/TastieraVirtuale/paste"));
        }
        else if (IS_COPY(keyValue) == true) {
            tmp->setIconSize(imageDim);
            tmp->setIcon(QPixmap(":/TastieraVirtuale/copy"));
        }
        else if (IS_CUT_LEFT(keyValue) == true) {
            tmp->setIconSize(imageDim);
            tmp->setIcon(QPixmap(":/TastieraVirtuale/cut"));
        }
        tmp->setText(keyValue);
        if (this->isEmbeddedKeyboard() == true) {
            width = KEY_WIDTH_EMBEDDED;
            height = KEY_HEIGHT_EMBEDDED;
            style += QString(EMBEDDED_KEYBOARD);
        }
        else {
            width = 54;
            height = 40;
        }
        tmp->setObjectName(keyValue);
        tmp->setMinimumSize(width, height);
        tmp->setMaximumSize(width, height);
        tmp->setStyleSheet(style);
	tmp->setVisible(true);
	return (tmp);
}
예제 #2
0
void QKeyPushButton::mousePressEvent(QMouseEvent * /*event */)
{
        static bool 	m_capsActive = true;
        widgetKeyBoard  *tmpKeyBoard = (widgetKeyBoard *) this->m_parent;
        static int      yMarginKeyboard = tmpKeyBoard->rect().y();
	QString		text = this->text();
        short           adjustZoomedKey = HEIGHT_ZOOM_KEY;
        QString         defaultStyleButton = QString(DEFAULT_STYLE_BUTTON);
        QString         changedColorButton = QString(CHANGED_BACKGROUND_BUTTON);
	//
	// se si tratta del maiuscolo:
        if (IS_CAPS(text) == true) {
                if (m_capsActive == false)
			m_capsActive = true;
		else {
                        changedColorButton = QString(DEFAULT_BACKGROUND_BUTTON);
			m_capsActive = false;
		}
                this->setStyleSheet(defaultStyleButton + changedColorButton + this->style_embedded);
		this->repaint();
		QCoreApplication::processEvents();
	}
        else if (tmpKeyBoard->isEnabledSwitchingEcho() == true && (IS_PASSWORD(text) == true || IS_PASSWORD_EMB(text) == true))
            tmpKeyBoard->switchKeyEchoMode(tmpKeyBoard->currentTextBox());
	else {
                this->setStyleSheet(defaultStyleButton + changedColorButton + this->style_embedded);
		this->repaint();
		QCoreApplication::processEvents();
		emit pressedKey(m_capsActive);
	}
        this->m_oldYKey = 0;
        if (tmpKeyBoard->isEmbeddedKeyboard() == true && tmpKeyBoard->isZoomFacilityEnable() && NO_SPECIAL_KEY(text) && text.trimmed().length() != 0) {
            tmpKeyBoard->setCursor(Qt::BlankCursor);
            if (this->y() - adjustZoomedKey - KEY_HEIGHT_EMBEDDED < yMarginKeyboard)
                this->m_oldYKey = this->y();
            else
                adjustZoomedKey = -HEIGHT_ZOOM_KEY;
            this->setGeometry(this->x() - 10, this->y() + adjustZoomedKey - KEY_HEIGHT_EMBEDDED, KEY_WIDTH_EMBEDDED + WIDTH_ZOOM_KEY, KEY_HEIGHT_EMBEDDED + HEIGHT_ZOOM_KEY);
            this->setStyleSheet(changedColorButton + defaultStyleButton);
            QCoreApplication::processEvents();
        }
}
예제 #3
0
void QKeyPushButton::mouseReleaseEvent(QMouseEvent * /* event */)
{
    widgetKeyBoard  *tmpKeyBoard = (widgetKeyBoard *) this->m_parent;
    bool            pressedEcho = IS_PASSWORD(this->text()) == true || IS_PASSWORD_EMB(this->text()) == true;

    if (IS_CAPS(this->text()) == false && pressedEcho == false) {
        if (tmpKeyBoard->isEmbeddedKeyboard() == true && tmpKeyBoard->isZoomFacilityEnable() && NO_SPECIAL_KEY(this->text())  && this->text().trimmed().length() != 0) {
            tmpKeyBoard->setCursor(Qt::ArrowCursor);
            if (this->m_oldYKey != 0)
                this->setGeometry(this->x() + 10, this->m_oldYKey, KEY_WIDTH_EMBEDDED, KEY_HEIGHT_EMBEDDED);
            else
                this->setGeometry(this->x() + 10, this->y() + HEIGHT_ZOOM_KEY + KEY_HEIGHT_EMBEDDED, KEY_WIDTH_EMBEDDED, KEY_HEIGHT_EMBEDDED);
            this->m_oldYKey = 0;
            QCoreApplication::processEvents();
        }        
        this->setStyleSheet(QString(DEFAULT_STYLE_BUTTON) + QString(DEFAULT_BACKGROUND_BUTTON) + this->style_embedded);
    }
    else if (pressedEcho == true && tmpKeyBoard->isEnabledSwitchingEcho() == false && tmpKeyBoard->currentTextBox()->echoMode() == QLineEdit::Normal)
        this->setStyleSheet(QString(DEFAULT_STYLE_BUTTON) + QString(DEFAULT_BACKGROUND_BUTTON) + this->style_embedded);
    tmpKeyBoard->soundClick();
}
예제 #4
0
void QKeyPushButton::getKeyPress(bool capsStatus)
{
	int 		keyCode = 0;
	QKeyEvent	*key = NULL;
	QString		text = this->text();
	//
	// per tutti i car speciali tranne il CAPS (RETURN, ALT, SHIFT, ecc...) inoltra al componente widgetKeyBoard:
        if (NO_SPECIAL_KEY(text) == false && (IS_BACK(text) == true || IS_BACK_EMB(text) == true || IS_TAB(text) == true || IS_RETURN(text) == true || IS_CTRL_LEFT(text) == true ||
                        IS_ALT(text) == true || IS_CANC(text) == true || IS_CUT_LEFT(text) == true || IS_PASSWORD(text) || IS_PASSWORD_EMB(text) || IS_PASTE(text) || IS_COPY(text)))
		key = new QKeyEvent(QEvent::KeyPress, keyCode, Qt::NoModifier, text);
	else { // trattasi di caratteri stampabili
		keyCode = text.toAscii()[0]; // prende il valore numerico (sempre maiuscolo)
                if (capsStatus == false) { // se deve prendere minuscolo, controlla se il carattere è alfabetico
                    if (keyCode >= tr("A")[0] && keyCode <= tr("Z")[0]) {
                            keyCode += 32; // carattere piccolo
                            text = (char ) keyCode; // carattere piccolo
                    }
                    key = new QKeyEvent(QEvent::KeyPress, keyCode, Qt::NoModifier, text);
		}
		else
                    key = new QKeyEvent(QEvent::KeyPress, keyCode, Qt::ShiftModifier, text);
	}
        ((widgetKeyBoard *) this->m_parent)->receiptChildKey(key, NULL);
	QCoreApplication::processEvents();
}