1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
/*
SPDX-FileCopyrightText: 2005 Tobias Koenig <tokoe@kde.org>
SPDX-License-Identifier: MIT
*/
#include <common/messagehandler.h>
#include <common/parsercontext.h>
#include "binding.h"
#include "port.h"
#include <QDebug>
using namespace KWSDL;
Port::Port()
{
}
Port::Port(const QString &nameSpace)
: Element(nameSpace)
{
}
Port::~Port()
{
}
void Port::setName(const QString &name)
{
mName = name;
}
QString Port::name() const
{
return mName;
}
void Port::setBindingName(const QName &bindingName)
{
mBindingName = bindingName;
}
QName Port::bindingName() const
{
return mBindingName;
}
void Port::loadXML(ParserContext *context, Binding::List *bindings, const QDomElement &element)
{
mName = element.attribute(QLatin1String("name"));
if (mName.isEmpty()) {
context->messageHandler()->warning(QLatin1String("Port: 'name' required"));
}
mBindingName = element.attribute(QLatin1String("binding"));
if (mBindingName.isEmpty()) {
context->messageHandler()->warning(QLatin1String("Port: 'binding' required"));
} else if (mBindingName.nameSpace().isEmpty()) { // well, always true...
mBindingName.setNameSpace(nameSpace());
}
for (int i = 0; i < bindings->count(); ++i) {
if ((*bindings)[i].name() == mBindingName.localName()) {
AbstractBinding *binding = const_cast<AbstractBinding *>((*bindings)[i].binding());
if (binding) {
binding->parsePort(context, element);
}
// else // ignore unimplemented bindings
// context->messageHandler()->error( "No binding set" );
}
}
}
void Port::saveXML(ParserContext *context, const Binding::List *bindings, QDomDocument &document, QDomElement &parent) const
{
QDomElement element = document.createElement(QLatin1String("port"));
parent.appendChild(element);
if (!mName.isEmpty()) {
element.setAttribute(QLatin1String("name"), mName);
} else {
context->messageHandler()->warning(QLatin1String("Port: 'name' required"));
}
if (!mBindingName.isEmpty()) {
element.setAttribute(QLatin1String("binding"), mBindingName.qname());
} else {
context->messageHandler()->warning(QLatin1String("Port: 'binding' required"));
}
for (int i = 0; i < bindings->count(); ++i) {
if ((*bindings)[i].name() == mBindingName.localName()) {
const AbstractBinding *binding = (*bindings)[i].binding();
if (binding) {
binding->synthesizePort(context, document, element);
}
// else // ignore unimplemented bindings
// context->messageHandler()->error( "No binding set" );
}
}
}
|