From ad801015af3afad53e0b245afc3a2214373a1b44 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Sun, 13 Apr 2008 20:02:30 +0000 Subject: [PATCH] Merging r726:730 from trunk to branches/0.3. This forwardports everything except the post-branch cleanups. --- quassel.desktop | 4 +- src/client/networkmodel.cpp | 5 +- src/common/ircuser.cpp | 70 +++++---------------- src/common/ircuser.h | 40 +++++++----- src/core/ircserverhandler.cpp | 51 ++++++++++++++- src/core/ircserverhandler.h | 6 ++ src/qtui/chatline-old.cpp | 6 +- src/qtui/inputwidget.cpp | 2 +- src/qtui/mainwin.cpp | 1 - src/qtui/settingspages/colorsettingspage.ui | 2 +- version.inc | 4 +- 11 files changed, 111 insertions(+), 80 deletions(-) diff --git a/quassel.desktop b/quassel.desktop index 1dbf9e0f..728d3b23 100644 --- a/quassel.desktop +++ b/quassel.desktop @@ -1,10 +1,10 @@ [Desktop Entry] Type=Application -Version=0.2.0-alpha1 +Version=1.0 Name=Quassel IRC GenericName=IRC Client Comment=Distributed IRC client with central core component Icon=quassel TryExec=quassel Exec=quassel -Categories=Network;Chat;IRCClient; +Categories=Qt;Network;Chat;IRCClient; diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 0dfb533b..713198aa 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -590,7 +590,10 @@ QString IrcUserItem::toolTip(int column) const { 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()) { diff --git a/src/common/ircuser.cpp b/src/common/ircuser.cpp index e911d334..eee29a8d 100644 --- a/src/common/ircuser.cpp +++ b/src/common/ircuser.cpp @@ -40,6 +40,7 @@ IrcUser::IrcUser(const QString &hostmask, Network *network) : SyncableObject(net // _idleTime(QDateTime::currentDateTime()), _ircOperator(), _lastAwayMessage(0), + _whoisServiceReply(), _network(network), _codecForEncoding(0), _codecForDecoding(0) @@ -54,60 +55,16 @@ IrcUser::~IrcUser() { // 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; @@ -117,13 +74,6 @@ QStringList IrcUser::channels() const { 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())); @@ -133,10 +83,6 @@ void IrcUser::setCodecForEncoding(QTextCodec *codec) { _codecForEncoding = codec; } -QTextCodec *IrcUser::codecForDecoding() const { - return _codecForDecoding; -} - void IrcUser::setCodecForDecoding(const QString &name) { setCodecForDecoding(QTextCodec::codecForName(name.toAscii())); } @@ -239,6 +185,20 @@ void IrcUser::setNick(const QString &nick) { } } +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); } diff --git a/src/common/ircuser.h b/src/common/ircuser.h index 6916f0eb..00df169c 100644 --- a/src/common/ircuser.h +++ b/src/common/ircuser.h @@ -47,6 +47,8 @@ class IrcUser : public SyncableObject { 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) @@ -55,27 +57,29 @@ public: 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); @@ -96,6 +100,8 @@ public slots: 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); @@ -120,6 +126,8 @@ signals: 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); @@ -157,7 +165,9 @@ private: QDateTime _loginTime; QString _ircOperator; int _lastAwayMessage; - + QString _whoisServiceReply; + QString _suserHost; + // QSet _channels; QSet _channels; QString _userModes; diff --git a/src/core/ircserverhandler.cpp b/src/core/ircserverhandler.cpp index 74192f17..138b7534 100644 --- a/src/core/ircserverhandler.cpp +++ b/src/core/ircserverhandler.cpp @@ -389,7 +389,7 @@ void IrcServerHandler::handle005(const QString &prefix, const QList 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"; @@ -406,6 +406,33 @@ void IrcServerHandler::handle005(const QString &prefix, const QList } } +/* RPL_UMODEIS - " []" */ +void IrcServerHandler::handle221(const QString &prefix, const QList ¶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 ¶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 ¶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 ¶ms) { + Q_UNUSED(prefix) + //TODO: save information in network object + emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("%1").arg(serverDecode(params).join(" "))); +} /* WHOIS-Message: @@ -451,6 +478,28 @@ void IrcServerHandler::handle301(const QString &prefix, const QList } } +/* RPL_WHOISSERVICE - " is registered nick" */ +void IrcServerHandler::handle307(const QString &prefix, const QList ¶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 - " is available for help." */ +void IrcServerHandler::handle310(const QString &prefix, const QList ¶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 - " * :" */ void IrcServerHandler::handle311(const QString &prefix, const QList ¶ms) { Q_UNUSED(prefix) diff --git a/src/core/ircserverhandler.h b/src/core/ircserverhandler.h index 562c422d..fe629041 100644 --- a/src/core/ircserverhandler.h +++ b/src/core/ircserverhandler.h @@ -46,7 +46,13 @@ public slots: void handle001(const QString &prefix, const QList ¶ms); // RPL_WELCOME void handle005(const QString &prefix, const QList ¶ms); // RPL_ISUPPORT + void handle221(const QString &prefix, const QList ¶ms); // RPL_UMODEIS + void handle250(const QString &prefix, const QList ¶ms); // RPL_STATSDLINE + void handle265(const QString &prefix, const QList ¶ms); // RPL_LOCALUSERS + void handle266(const QString &prefix, const QList ¶ms); // RPL_GLOBALUSERS void handle301(const QString &prefix, const QList ¶ms); // RPL_AWAY + void handle307(const QString &prefix, const QList ¶ms); // RPL_WHOISSERVICE + void handle310(const QString &prefix, const QList ¶ms); // RPL_SUSERHOST void handle311(const QString &prefix, const QList ¶ms); // RPL_WHOISUSER void handle312(const QString &prefix, const QList ¶ms); // RPL_WHOISSERVER void handle313(const QString &prefix, const QList ¶ms); // RPL_WHOISOPERATOR diff --git a/src/qtui/chatline-old.cpp b/src/qtui/chatline-old.cpp index 0a3cc200..c1cd7d2f 100644 --- a/src/qtui/chatline-old.cpp +++ b/src/qtui/chatline-old.cpp @@ -23,6 +23,8 @@ #include "network.h" #include "qtui.h" +#include "qtuisettings.h" + //! Construct a ChatLineOld object from a message. /** * \param m The message to be layouted and rendered @@ -316,8 +318,10 @@ void ChatLineOld::draw(QPainter *p, const QPointF &pos) { p->drawRect(QRectF(pos, QSizeF(tsWidth + QtUi::style()->sepTsSender() + senderWidth + QtUi::style()->sepSenderText() + textWidth, height()))); } else { if(isHighlight) { + QtUiSettings s("QtUi/Colors"); + QColor highlightColor = s.value("highlightColor", QVariant(QColor("lightcoral"))).value(); p->setPen(Qt::NoPen); - p->setBrush(QColor("lightcoral") /*pal.brush(QPalette::AlternateBase) */); + p->setBrush(highlightColor /*pal.brush(QPalette::AlternateBase) */); p->drawRect(QRectF(pos, QSizeF(tsWidth + QtUi::style()->sepTsSender() + senderWidth + QtUi::style()->sepSenderText() + textWidth, height()))); } if(selectionMode == Partial) { diff --git a/src/qtui/inputwidget.cpp b/src/qtui/inputwidget.cpp index 53b64c83..a1267178 100644 --- a/src/qtui/inputwidget.cpp +++ b/src/qtui/inputwidget.cpp @@ -139,7 +139,7 @@ void InputWidget::updateNickSelector() const { } if(net->me() && nickIdx < nicks.count()) - nicks[nickIdx] = net->myNick() + QString(" (%1)").arg(net->me()->userModes()); + nicks[nickIdx] = net->myNick() + QString(" (+%1)").arg(net->me()->userModes()); ui.ownNick->addItems(nicks); ui.ownNick->setCurrentIndex(nickIdx); diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index b87d31c9..cf7a6e0f 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -297,7 +297,6 @@ void MainWin::setupStatusBar() { UiSettings uiSettings; - //TODO: save status bool enabled = uiSettings.value("ShowStatusBar", QVariant(true)).toBool(); showStatusbar->setChecked(enabled); enabled ? statusBar()->show() : statusBar()->hide(); diff --git a/src/qtui/settingspages/colorsettingspage.ui b/src/qtui/settingspages/colorsettingspage.ui index e6171279..ab646f20 100644 --- a/src/qtui/settingspages/colorsettingspage.ui +++ b/src/qtui/settingspages/colorsettingspage.ui @@ -535,7 +535,7 @@ - false + true diff --git a/version.inc b/version.inc index 77582243..a294d206 100644 --- a/version.inc +++ b/version.inc @@ -4,8 +4,8 @@ { using namespace Global; quasselVersion = "0.2.0-beta1-pre"; - quasselDate = "2008-04-11"; - quasselBuild = 725; + quasselDate = "2008-04-13"; + quasselBuild = 729; //! Minimum client build number the core needs clientBuildNeeded = 642; -- 2.20.1