You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdenetwork/kopete/protocols/irc/libkirc/kircentity.cpp

133 lines
2.9 KiB

/*
kircentity.cpp - IRC Client
Copyright (c) 2004 by Michel Hermier <michel.hermier@wanadoo.fr>
Kopete (c) 2004 by the Kopete developers <kopete-devel@kde.org>
*************************************************************************
* *
* 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 "kircengine.h"
#include "kircentity.h"
#include <kdebug.h>
using namespace KIRC;
using namespace KNetwork;
/**
* Match a possible user definition:
* nick!user@host
* where user and host are optionnal.
* NOTE: If changes are done to the regexp string, update also the sm_userStrictRegExp regexp string.
*/
const QRegExp Entity::sm_userRegExp(QString::fromLatin1("^([^\\s,:!@]+)(?:(?:!([^\\s,:!@]+))?(?:@([^\\s,!@]+)))?$"));
/**
* Regexp to match strictly the complete user definition:
* nick!user@host
* NOTE: If changes are done to the regexp string, update also the sm_userRegExp regexp string.
*/
const QRegExp Entity::sm_userStrictRegExp(QString::fromLatin1("^([^\\s,:!@]+)!([^\\s,:!@]+)@([^\\s,:!@]+)$"));
const QRegExp Entity::sm_channelRegExp( QString::fromLatin1("^[#!+&][^\\s,]+$") );
Entity::Entity(const QString &, const Type type)
: QObject(0, "KIRC::Entity"),
m_type(type)
{
// rename(name, type);
}
Entity::~Entity()
{
emit destroyed(this);
}
QString Entity::name() const
{
return m_name;
}
QString Entity::host() const
{
switch(m_type)
{
// case Unknown:
case Server:
return m_name;
// case Channel:
case Service:
case User:
return userHost();
default:
kdDebug(14121) << k_funcinfo << "No host defined for type:" << m_type;
return QString::null;
}
}
KIRC::Entity::Type Entity::type() const
{
return m_type;
}
KIRC::Entity::Type Entity::guessType()
{
m_type = guessType(m_name);
return m_type;
}
// FIXME: Implement me
KIRC::Entity::Type Entity::guessType(const QString &)
{
return Unknown;
}
QString Entity::userNick() const
{
return userNick(m_name);
}
QString Entity::userNick(const QString &s)
{
return userInfo(s, 1);
}
QString Entity::userName() const
{
return userName(m_name);
}
QString Entity::userName(const QString &s)
{
return userInfo(s, 2);
}
QString Entity::userHost() const
{
return userHost(m_name);
}
QString Entity::userHost(const QString &s)
{
return userInfo(s, 3);
}
QString Entity::userInfo(const QString &s, int num)
{
QRegExp userRegExp(sm_userRegExp);
userRegExp.search(s);
return userRegExp.cap(num);
}
#include "kircentity.moc"