From d62c8c002c51fb7c36487839eeeb4ac89f044dee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Sat, 26 Mar 2016 13:50:43 +0100 Subject: Initial import of kxmleditor 1.1.4 --- part/kxeattributedialog.cpp | 179 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 part/kxeattributedialog.cpp (limited to 'part/kxeattributedialog.cpp') diff --git a/part/kxeattributedialog.cpp b/part/kxeattributedialog.cpp new file mode 100644 index 0000000..d64b796 --- /dev/null +++ b/part/kxeattributedialog.cpp @@ -0,0 +1,179 @@ +/*************************************************************************** + kxeattributedialog.cpp - description + ---------------------- + begin : Fre Jul 12 2002 + copyright : (C) 2002, 2003 by The KXMLEditor Team + email : lvanek@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 "kxeattributedialog.h" + +#include +#include +#include + +#include +#include + +KXEAttributeDialog::KXEAttributeDialog( QWidget * pParent, const char * pszName, bool fModal, WFlags fl ) + : KXEAttributeDialogBase( pParent, pszName, fModal, fl ) +{ + connect( m_pEditNamespace, SIGNAL(textChanged(const QString &)), this, SLOT(slotNamespaceChanged(const QString &)) ); + connect( m_pEditQName, SIGNAL(textChanged(const QString &)), this, SLOT(slotNameChanged(const QString &)) ); + connect( m_pEditValue, SIGNAL(textChanged(const QString &)), this, SLOT(slotValueChanged(const QString &)) ); +} + +void KXEAttributeDialog::clearDialog() +{ + m_pEditNamespace->clear(); + m_pEditQName->clear(); + m_pEditValue->clear(); +} + +int KXEAttributeDialog::exec() +{ + clearDialog(); + + m_pBtnOK->setEnabled(false); + + m_pEditQName->setFocus(); + m_pBtnOK->setDefault(true); + + int iReturn = KXEAttributeDialogBase::exec(); + if ( iReturn == Accepted ) + { + m_strNamespace = m_pEditNamespace->text(); + m_strQName = m_pEditQName->text(); + m_strValue = m_pEditValue->text(); + } + + return iReturn; +} + +void KXEAttributeDialog::slotNameChanged(const QString & strNewName) +{ + QString strMessage = checkName(strNewName); + if(strMessage.isEmpty()) + { + strMessage = checkNamespace(m_pEditNamespace->text()); + if(strMessage.isEmpty()) + strMessage = checkValue(m_pEditValue->text()); + } + + m_pTextLabelMessage->setText(strMessage); + + if ( strNewName.isEmpty() || (strMessage.length() > 0) ) + m_pBtnOK->setEnabled(false); + else + m_pBtnOK->setEnabled(true); +} + +void KXEAttributeDialog::slotValueChanged(const QString & strNewValue) +{ + QString strMessage = checkName(m_pEditQName->text()); + if(strMessage.isEmpty()) + { + strMessage = checkNamespace(m_pEditNamespace->text()); + if(strMessage.isEmpty()) + strMessage = checkValue(strNewValue); + } + + m_pTextLabelMessage->setText(strMessage); + + if ( m_pEditQName->text().isEmpty() || (strMessage.length() > 0) ) + m_pBtnOK->setEnabled(false); + else + m_pBtnOK->setEnabled(true); +} + +void KXEAttributeDialog::slotNamespaceChanged(const QString & strNewNamespace) +{ + QString strMessage = checkName(m_pEditQName->text()); + if(strMessage.isEmpty()) + { + strMessage = checkNamespace(strNewNamespace); + if(strMessage.isEmpty()) + strMessage = checkValue(m_pEditValue->text()); + } + + m_pTextLabelMessage->setText(strMessage); + + if ( m_pEditQName->text().isEmpty() || (strMessage.length() > 0) ) + m_pBtnOK->setEnabled(false); + else + m_pBtnOK->setEnabled(true); +} + +// Check, if XML attribute name is OK +QString KXEAttributeDialog::checkNamespace(const QString strAtttributeName) +{ + if(strAtttributeName.length() == 0) + return ""; + + // test for space + if(strAtttributeName.find(' ') >= 0) + return i18n("Atttribute namespace cannot contain space !"); + + // Forbidden characters + QString strForbiddenChars("<>\"'"); + for(unsigned int i = 0; i < strForbiddenChars.length(); i++) + { + QChar ch = strForbiddenChars[i]; + + if(strAtttributeName.find(ch) >= 0) + return i18n("Atttribute namespace cannot contain character: %1 !").arg(ch); + } + + return ""; +} + +// Check, if XML attribute name is OK +QString KXEAttributeDialog::checkName(const QString strAtttributeName) +{ + if(strAtttributeName.length() == 0) + return ""; + + // test for space + if(strAtttributeName.find(' ') >= 0) + return i18n("Atttribute name cannot contain space !"); + + // Forbidden characters + QString strForbiddenChars("&@#$%^()%+?=:<>;\"'*"); + for(unsigned int i = 0; i < strForbiddenChars.length(); i++) + { + QChar ch = strForbiddenChars[i]; + + if(strAtttributeName.find(ch) >= 0) + return i18n("Atttribute name cannot contain character: %1 !").arg(ch); + } + + return ""; +} + +// Check, if XML attribute value is OK +QString KXEAttributeDialog::checkValue(const QString strData) +{ + if(strData.length() == 0) + return ""; + + // Forbidden characters + QString strForbiddenChars("<>\""); + for(unsigned int i = 0; i < strForbiddenChars.length(); i++) + { + QChar ch = strForbiddenChars[i]; + + if(strData.find(ch) >= 0) + return i18n("Attribute value cannot contain character: %1 !").arg(ch); + } + + return ""; +} -- cgit v1.2.1