200 lines
3.2 KiB
C++
200 lines
3.2 KiB
C++
|
|
/*
|
||
|
|
* xmpp_discoitem.cpp
|
||
|
|
* Copyright (C) 2003 Justin Karneges
|
||
|
|
*
|
||
|
|
* This library is free software; you can redistribute it and/or
|
||
|
|
* modify it under the terms of the GNU Lesser General Public
|
||
|
|
* License as published by the Free Software Foundation; either
|
||
|
|
* version 2.1 of the License, or (at your option) any later version.
|
||
|
|
*
|
||
|
|
* This library is distributed in the hope that it will be useful,
|
||
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
|
* Lesser General Public License for more details.
|
||
|
|
*
|
||
|
|
* You should have received a copy of the GNU Lesser General Public
|
||
|
|
* License along with this library; if not, write to the Free Software
|
||
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
|
||
|
|
#include "xmpp_discoitem.h"
|
||
|
|
|
||
|
|
using namespace XMPP;
|
||
|
|
|
||
|
|
class DiscoItem::Private
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
Private()
|
||
|
|
{
|
||
|
|
action = None;
|
||
|
|
}
|
||
|
|
|
||
|
|
Jid jid;
|
||
|
|
QString name;
|
||
|
|
QString node;
|
||
|
|
Action action;
|
||
|
|
|
||
|
|
Features features;
|
||
|
|
Identities identities;
|
||
|
|
};
|
||
|
|
|
||
|
|
DiscoItem::DiscoItem()
|
||
|
|
{
|
||
|
|
d = new Private;
|
||
|
|
}
|
||
|
|
|
||
|
|
DiscoItem::DiscoItem(const DiscoItem &from)
|
||
|
|
{
|
||
|
|
d = new Private;
|
||
|
|
*this = from;
|
||
|
|
}
|
||
|
|
|
||
|
|
DiscoItem & DiscoItem::operator= (const DiscoItem &from)
|
||
|
|
{
|
||
|
|
d->jid = from.d->jid;
|
||
|
|
d->name = from.d->name;
|
||
|
|
d->node = from.d->node;
|
||
|
|
d->action = from.d->action;
|
||
|
|
d->features = from.d->features;
|
||
|
|
d->identities = from.d->identities;
|
||
|
|
|
||
|
|
return *this;
|
||
|
|
}
|
||
|
|
|
||
|
|
DiscoItem::~DiscoItem()
|
||
|
|
{
|
||
|
|
delete d;
|
||
|
|
}
|
||
|
|
|
||
|
|
AgentItem DiscoItem::toAgentItem() const
|
||
|
|
{
|
||
|
|
AgentItem ai;
|
||
|
|
|
||
|
|
ai.setJid( jid() );
|
||
|
|
ai.setName( name() );
|
||
|
|
|
||
|
|
Identity id;
|
||
|
|
if ( !identities().isEmpty() )
|
||
|
|
id = identities().first();
|
||
|
|
|
||
|
|
ai.setCategory( id.category );
|
||
|
|
ai.setType( id.type );
|
||
|
|
|
||
|
|
ai.setFeatures( d->features );
|
||
|
|
|
||
|
|
return ai;
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiscoItem::fromAgentItem(const AgentItem &ai)
|
||
|
|
{
|
||
|
|
setJid( ai.jid() );
|
||
|
|
setName( ai.name() );
|
||
|
|
|
||
|
|
Identity id;
|
||
|
|
id.category = ai.category();
|
||
|
|
id.type = ai.type();
|
||
|
|
id.name = ai.name();
|
||
|
|
|
||
|
|
Identities idList;
|
||
|
|
idList << id;
|
||
|
|
|
||
|
|
setIdentities( idList );
|
||
|
|
|
||
|
|
setFeatures( ai.features() );
|
||
|
|
}
|
||
|
|
|
||
|
|
const Jid &DiscoItem::jid() const
|
||
|
|
{
|
||
|
|
return d->jid;
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiscoItem::setJid(const Jid &j)
|
||
|
|
{
|
||
|
|
d->jid = j;
|
||
|
|
}
|
||
|
|
|
||
|
|
const QString &DiscoItem::name() const
|
||
|
|
{
|
||
|
|
return d->name;
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiscoItem::setName(const QString &n)
|
||
|
|
{
|
||
|
|
d->name = n;
|
||
|
|
}
|
||
|
|
|
||
|
|
const QString &DiscoItem::node() const
|
||
|
|
{
|
||
|
|
return d->node;
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiscoItem::setNode(const QString &n)
|
||
|
|
{
|
||
|
|
d->node = n;
|
||
|
|
}
|
||
|
|
|
||
|
|
DiscoItem::Action DiscoItem::action() const
|
||
|
|
{
|
||
|
|
return d->action;
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiscoItem::setAction(Action a)
|
||
|
|
{
|
||
|
|
d->action = a;
|
||
|
|
}
|
||
|
|
|
||
|
|
const Features &DiscoItem::features() const
|
||
|
|
{
|
||
|
|
return d->features;
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiscoItem::setFeatures(const Features &f)
|
||
|
|
{
|
||
|
|
d->features = f;
|
||
|
|
}
|
||
|
|
|
||
|
|
const DiscoItem::Identities &DiscoItem::identities() const
|
||
|
|
{
|
||
|
|
return d->identities;
|
||
|
|
}
|
||
|
|
|
||
|
|
void DiscoItem::setIdentities(const Identities &i)
|
||
|
|
{
|
||
|
|
d->identities = i;
|
||
|
|
|
||
|
|
if ( name().isEmpty() && i.count() )
|
||
|
|
setName( i.first().name );
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
DiscoItem::Action DiscoItem::string2action(QString s)
|
||
|
|
{
|
||
|
|
Action a;
|
||
|
|
|
||
|
|
if ( s == "update" )
|
||
|
|
a = Update;
|
||
|
|
else if ( s == "remove" )
|
||
|
|
a = Remove;
|
||
|
|
else
|
||
|
|
a = None;
|
||
|
|
|
||
|
|
return a;
|
||
|
|
}
|
||
|
|
|
||
|
|
QString DiscoItem::action2string(Action a)
|
||
|
|
{
|
||
|
|
QString s;
|
||
|
|
|
||
|
|
if ( a == Update )
|
||
|
|
s = "update";
|
||
|
|
else if ( a == Remove )
|
||
|
|
s = "remove";
|
||
|
|
else
|
||
|
|
s = QString::null;
|
||
|
|
|
||
|
|
return s;
|
||
|
|
}
|
||
|
|
|
||
|
|
|