if(_ircUser->isAway()) toolTip[0].append(" is away");
if(!_ircUser->awayMessage().isEmpty()) toolTip[0].append(QString(" (%1)").arg(_ircUser->awayMessage()));
if(!_ircUser->realName().isEmpty()) toolTip.append(_ircUser->realName());
- if(!_ircUser->ircOperator().isEmpty()) toolTip.append(_ircUser->ircOperator());
+ if(!_ircUser->ircOperator().isEmpty()) toolTip.append(QString("%1 %2").arg(nickName()).arg(_ircUser->ircOperator()));
+ if(!_ircUser->suserHost().isEmpty()) toolTip.append(_ircUser->suserHost());
+ if(!_ircUser->whoisServiceReply().isEmpty()) toolTip.append(_ircUser->whoisServiceReply());
+
toolTip.append(_ircUser->hostmask().remove(0, _ircUser->hostmask().indexOf("!")+1));
if(_ircUser->idleTime().isValid()) {
// _idleTime(QDateTime::currentDateTime()),
_ircOperator(),
_lastAwayMessage(0),
+ _whoisServiceReply(),
_network(network),
_codecForEncoding(0),
_codecForDecoding(0)
// PUBLIC:
// ====================
-QString IrcUser::user() const {
- return _user;
-}
-
-QString IrcUser::host() const {
- return _host;
-}
-
-QString IrcUser::nick() const {
- return _nick;
-}
-
-QString IrcUser::realName() const {
- return _realName;
-}
-
QString IrcUser::hostmask() const {
return QString("%1!%2@%3").arg(nick()).arg(user()).arg(host());
}
-bool IrcUser::isAway() const {
- return _away;
-}
-
-QString IrcUser::awayMessage() const {
- return _awayMessage;
-}
-
-QString IrcUser::server() const {
- return _server;
-}
-
QDateTime IrcUser::idleTime() {
if(QDateTime::currentDateTime().toTime_t() - _idleTimeSet.toTime_t() > 1200)
_idleTime = QDateTime();
return _idleTime;
}
-QDateTime IrcUser::loginTime() const {
- return _loginTime;
-}
-
-QString IrcUser::ircOperator() const {
- return _ircOperator;
-}
-
-int IrcUser::lastAwayMessage() const {
- return _lastAwayMessage;
-}
-
-QString IrcUser::userModes() const {
- return _userModes;
-}
-
QStringList IrcUser::channels() const {
QStringList chanList;
IrcChannel *channel;
return chanList;
}
-Network* IrcUser::network() const {
- return _network;
-}
-
-QTextCodec *IrcUser::codecForEncoding() const {
- return _codecForEncoding;
-}
void IrcUser::setCodecForEncoding(const QString &name) {
setCodecForEncoding(QTextCodec::codecForName(name.toAscii()));
_codecForEncoding = codec;
}
-QTextCodec *IrcUser::codecForDecoding() const {
- return _codecForDecoding;
-}
-
void IrcUser::setCodecForDecoding(const QString &name) {
setCodecForDecoding(QTextCodec::codecForName(name.toAscii()));
}
}
}
+void IrcUser::setWhoisServiceReply(const QString &whoisServiceReply) {
+ if(!whoisServiceReply.isEmpty() && whoisServiceReply != _whoisServiceReply) {
+ _whoisServiceReply = whoisServiceReply;
+ emit whoisServiceReplySet(whoisServiceReply);
+ }
+}
+
+void IrcUser::setSuserHost(const QString &suserHost) {
+ if(!suserHost.isEmpty() && suserHost != _suserHost) {
+ _suserHost = suserHost;
+ emit suserHostSet(suserHost);
+ }
+}
+
void IrcUser::updateObjectName() {
renameObject(QString::number(network()->networkId().toInt()) + "/" + _nick);
}
Q_PROPERTY(QString server READ server WRITE setServer STORED false)
Q_PROPERTY(QString ircOperator READ ircOperator WRITE setIrcOperator STORED false)
Q_PROPERTY(int lastAwayMessage READ lastAwayMessage WRITE setLastAwayMessage STORED false)
+ Q_PROPERTY(QString whoisServiceReply READ whoisServiceReply WRITE setWhoisServiceReply STORED false)
+ Q_PROPERTY(QString suserHost READ suserHost WRITE setSuserHost STORED false)
Q_PROPERTY(QStringList channels READ channels STORED false)
Q_PROPERTY(QString userModes READ userModes WRITE setUserModes)
IrcUser(const QString &hostmask, Network *network);
virtual ~IrcUser();
- QString user() const;
- QString host() const;
- QString nick() const;
- QString realName() const;
+ inline QString user() const { return _user; }
+ inline QString host() const { return _host; }
+ inline QString nick() const { return _nick; }
+ inline QString realName() const { return _realName; }
QString hostmask() const;
- bool isAway() const;
- QString awayMessage() const;
+ inline bool isAway() const { return _away; }
+ inline QString awayMessage() const { return _awayMessage; }
QDateTime idleTime();
- QDateTime loginTime() const;
- QString server() const;
- QString ircOperator() const;
- int lastAwayMessage() const;
- Network *network() const;
+ inline QDateTime loginTime() const { return _loginTime; }
+ inline QString server() const { return _server; }
+ inline QString ircOperator() const { return _ircOperator; }
+ inline int lastAwayMessage() const { return _lastAwayMessage; }
+ inline QString whoisServiceReply() const { return _whoisServiceReply; }
+ inline QString suserHost() const { return _suserHost; }
+ inline Network *network() const { return _network; }
- QString userModes() const;
+ inline QString userModes() const { return _userModes; }
QStringList channels() const;
// user-specific encodings
- QTextCodec *codecForEncoding() const;
- QTextCodec *codecForDecoding() const;
+ inline QTextCodec *codecForEncoding() const { return _codecForEncoding; }
+ inline QTextCodec *codecForDecoding() const { return _codecForDecoding; }
void setCodecForEncoding(const QString &codecName);
void setCodecForEncoding(QTextCodec *codec);
void setCodecForDecoding(const QString &codecName);
void setServer(const QString &server);
void setIrcOperator(const QString &ircOperator);
void setLastAwayMessage(const int &lastAwayMessage);
+ void setWhoisServiceReply(const QString &whoisServiceReply);
+ void setSuserHost(const QString &suserHost);
void updateHostmask(const QString &mask);
void setUserModes(const QString &modes);
void serverSet(QString server);
void ircOperatorSet(QString ircOperator);
void lastAwayMessageSet(int lastAwayMessage);
+ void whoisServiceReplySet(QString whoisServiceReply);
+ void suserHostSet(QString suserHost);
void hostmaskUpdated(QString mask);
void userModesSet(QString modes);
QDateTime _loginTime;
QString _ircOperator;
int _lastAwayMessage;
-
+ QString _whoisServiceReply;
+ QString _suserHost;
+
// QSet<QString> _channels;
QSet<IrcChannel *> _channels;
QString _userModes;
qWarning() << "IrcServerHandler::handle005(): received RPL_ISUPPORT (005) with too few parameters:" << serverDecode(params);
return;
}
-
+
QString rpl_isupport_suffix = serverDecode(params.last());
if(!rpl_isupport_suffix.toLower().contains("supported")) {
qWarning() << "Received invalid RPL_ISUPPORT! Suffix is:" << rpl_isupport_suffix << "Excpected: are supported by this server";
}
}
+/* RPL_UMODEIS - "<user_modes> [<user_mode_params>]" */
+void IrcServerHandler::handle221(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix)
+ //TODO: save information in network object
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("%1").arg(serverDecode(params).join(" ")));
+}
+
+/* RPL_STATSCONN - "Highest connection cout: 8000 (7999 clients)" */
+void IrcServerHandler::handle250(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix)
+ //TODO: save information in network object
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("%1").arg(serverDecode(params).join(" ")));
+}
+
+/* RPL_LOCALUSERS - "Current local user: 5024 Max: 7999 */
+void IrcServerHandler::handle265(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix)
+ //TODO: save information in network object
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("%1").arg(serverDecode(params).join(" ")));
+}
+
+/* RPL_GLOBALUSERS - "Current global users: 46093 Max: 47650" */
+void IrcServerHandler::handle266(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix)
+ //TODO: save information in network object
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("%1").arg(serverDecode(params).join(" ")));
+}
/*
WHOIS-Message:
}
}
+/* RPL_WHOISSERVICE - "<user> is registered nick" */
+void IrcServerHandler::handle307(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix)
+ QString whoisServiceReply = serverDecode(params).join(" ");
+ IrcUser *ircuser = network()->ircUser(serverDecode(params[0]));
+ if(ircuser) {
+ ircuser->setWhoisServiceReply(whoisServiceReply);
+ }
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1").arg(whoisServiceReply));
+}
+
+/* RPL_SUSERHOST - "<user> is available for help." */
+void IrcServerHandler::handle310(const QString &prefix, const QList<QByteArray> ¶ms) {
+ Q_UNUSED(prefix)
+ QString suserHost = serverDecode(params).join(" ");
+ IrcUser *ircuser = network()->ircUser(serverDecode(params[0]));
+ if(ircuser) {
+ ircuser->setSuserHost(suserHost);
+ }
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1").arg(suserHost));
+}
+
/* RPL_WHOISUSER - "<nick> <user> <host> * :<real name>" */
void IrcServerHandler::handle311(const QString &prefix, const QList<QByteArray> ¶ms) {
Q_UNUSED(prefix)
void handle001(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_WELCOME
void handle005(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_ISUPPORT
+ void handle221(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_UMODEIS
+ void handle250(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_STATSDLINE
+ void handle265(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_LOCALUSERS
+ void handle266(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_GLOBALUSERS
void handle301(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_AWAY
+ void handle307(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_WHOISSERVICE
+ void handle310(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_SUSERHOST
void handle311(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_WHOISUSER
void handle312(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_WHOISSERVER
void handle313(const QString &prefix, const QList<QByteArray> ¶ms); // RPL_WHOISOPERATOR
UiSettings uiSettings;
- //TODO: save status
bool enabled = uiSettings.value("ShowStatusBar", QVariant(true)).toBool();
showStatusbar->setChecked(enabled);
enabled ? statusBar()->show() : statusBar()->hide();
{ using namespace Global;
quasselVersion = "0.2.0-beta1-pre";
- quasselDate = "2008-04-11";
- quasselBuild = 727;
+ quasselDate = "2008-04-12";
+ quasselBuild = 728;
//! Minimum client build number the core needs
clientBuildNeeded = 642;