diff options
author | Slávek Banko <slavek.banko@axis.cz> | 2016-03-26 13:50:43 +0100 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2016-03-26 13:50:43 +0100 |
commit | d62c8c002c51fb7c36487839eeeb4ac89f044dee (patch) | |
tree | bb4d1f5c631ab1f22a3018ba39e6a806035f80fd /part/kxeattributedialog.cpp | |
download | kxmleditor-d62c8c002c51fb7c36487839eeeb4ac89f044dee.tar.gz kxmleditor-d62c8c002c51fb7c36487839eeeb4ac89f044dee.zip |
Initial import of kxmleditor 1.1.4
Diffstat (limited to 'part/kxeattributedialog.cpp')
-rw-r--r-- | part/kxeattributedialog.cpp | 179 |
1 files changed, 179 insertions, 0 deletions
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 <klineedit.h> +#include <kdebug.h> +#include <klocale.h> + +#include <qpushbutton.h> +#include <qlabel.h> + +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 ""; +} |