| Summary: | allow empty /away command to set away | ||
|---|---|---|---|
| Product: | [Applications] konversation | Reporter: | Albert Astals Cid <aacid> |
| Component: | general | Assignee: | Konversation Bugs <konversation-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | wishlist | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | unspecified | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
Albert Astals Cid
2006-08-25 19:29:25 UTC
SVN commit 577163 by hein:
* Make parameter-less /away set away state to true with
the default away message. Use /back or /unaway to re-
turn.
BUG:132984
* Use the same "You are not marked as being away." for
repeated /away's, too. The previous "You are marked
as being away." on repeats made it seem like it fail-
ed to set away.
M +3 -13 inputfilter.cpp
M +3 -9 konversationapplication.cpp
M +18 -14 outputfilter.cpp
M +2 -1 outputfilter.h
--- trunk/extragear/network/konversation/src/inputfilter.cpp #577162:577163
@@ -1585,19 +1585,9 @@
case RPL_NOWAWAY:
{
NickInfo* nickInfo = server->getNickInfo(parameterList[0]);
- if(nickInfo)
- {
- nickInfo->setAway(true);
- }
- if(!server->isAway())
- {
- server->appendMessageToFrontmost(i18n("Away"),i18n("You are now marked as being away."));
- emit away();
- }
- else
- {
- server->appendMessageToFrontmost(i18n("Away"),i18n("You are marked as being away."));
- }
+ if (nickInfo) nickInfo->setAway(true);
+ server->appendMessageToFrontmost(i18n("Away"),i18n("You are now marked as being away."));
+ if (!server->isAway()) emit away();
break;
}
case RPL_UNAWAY:
--- trunk/extragear/network/konversation/src/konversationapplication.cpp #577162:577163
@@ -205,16 +205,10 @@
}
//alreadyaway is true if _any_ servers are away
- if(alreadyaway)
- {
- //toggle as not away
- sendMultiServerCommand("away", QString::null);
- }
+ if (alreadyaway)
+ sendMultiServerCommand("back", QString::null);
else
- {
- QString awayReason = i18n("Gone away for now.");
- sendMultiServerCommand("away", awayReason);
- }
+ sendMultiServerCommand("away", QString::null);
}
void KonversationApplication::dcopMultiServerRaw(const QString &command)
--- trunk/extragear/network/konversation/src/outputfilter.cpp #577162:577163
@@ -318,7 +318,8 @@
else if(command == "kick") result = parseKick(parameter);
else if(command == "topic") result = parseTopic(parameter);
else if(command == "away") result = parseAway(parameter);
- else if(command == "back") result = parseAway(QString::null);
+ else if(command == "unaway") result = parseBack();
+ else if(command == "back") result = parseBack();
else if(command == "invite") result = parseInvite(parameter);
else if(command == "exec") result = parseExec(parameter);
else if(command == "notify") result = parseNotify(parameter);
@@ -600,29 +601,32 @@
return result;
}
- OutputFilterResult OutputFilter::parseAway(const QString &reason)
+ OutputFilterResult OutputFilter::parseAway(QString &reason)
{
OutputFilterResult result;
- if(reason.isEmpty())
+ if (reason.isEmpty())
+ reason = i18n("Gone away for now.");
+
+ if (m_server->getIdentity()->getShowAwayMessage())
{
- result.toServer = "AWAY";
+ QString message = m_server->getIdentity()->getAwayMessage();
+ emit sendToAllChannels(message.replace(QRegExp("%s",false),reason));
}
- else
- {
- if(m_server->getIdentity()->getShowAwayMessage())
- {
- QString message = m_server->getIdentity()->getAwayMessage();
- emit sendToAllChannels(message.replace(QRegExp("%s",false),reason));
- }
- m_server->setAwayReason(reason);
- result.toServer = "AWAY :" + reason;
- }
+ m_server->setAwayReason(reason);
+ result.toServer = "AWAY :" + reason;
return result;
}
+ OutputFilterResult OutputFilter::parseBack()
+ {
+ OutputFilterResult result;
+ result.toServer = "AWAY";
+ return result;
+ }
+
OutputFilterResult OutputFilter::parseNames(const QString ¶meter)
{
OutputFilterResult result;
--- trunk/extragear/network/konversation/src/outputfilter.h #577162:577163
@@ -118,7 +118,8 @@
OutputFilterResult parseVoice(const QString& parameter);
OutputFilterResult parseUnvoice(const QString& ownNick, const QString& parameter);
OutputFilterResult parseTopic(const QString& parameter);
- OutputFilterResult parseAway(const QString& parameter);
+ OutputFilterResult parseAway(QString& parameter);
+ OutputFilterResult parseBack();
OutputFilterResult parseCtcp(const QString& parameter);
OutputFilterResult parsePing(const QString& parameter);
OutputFilterResult parseVersion(const QString& parameter);
|