diff options
| author | 2008-07-08 14:48:40 +0000 | |
|---|---|---|
| committer | 2008-07-08 14:48:40 +0000 | |
| commit | 3c8ad9ff801070680abdcac7f8d114874104b345 (patch) | |
| tree | 8125ea7de2460ac118178ea8d66be7f900545db5 /src | |
| parent | patched for cmake 2.6 complaining about wrong policies (diff) | |
| download | KVIrc-3c8ad9ff801070680abdcac7f8d114874104b345.tar.gz KVIrc-3c8ad9ff801070680abdcac7f8d114874104b345.tar.bz2 KVIrc-3c8ad9ff801070680abdcac7f8d114874104b345.zip | |
added the ability to expose the fact that kvirc has an avatar set, so others can request it without the need to CTCP avatar the whole channel creating noise;
added an option value to enable/disable exposure;
partially implements feature request #166
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@2036 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvilib/irc/kvi_ircuserdb.cpp | 24 | ||||
| -rw-r--r-- | src/kvirc/kernel/kvi_ircconnection.cpp | 20 | ||||
| -rw-r--r-- | src/kvirc/kernel/kvi_options.cpp | 3 | ||||
| -rw-r--r-- | src/kvirc/kernel/kvi_options.h | 4 | ||||
| -rw-r--r-- | src/kvirc/sparser/kvi_sp_numeric.cpp | 16 | ||||
| -rw-r--r-- | src/modules/options/optw_irc.cpp | 3 |
6 files changed, 49 insertions, 21 deletions
diff --git a/src/kvilib/irc/kvi_ircuserdb.cpp b/src/kvilib/irc/kvi_ircuserdb.cpp index ba15b8116..6b7f2b53f 100644 --- a/src/kvilib/irc/kvi_ircuserdb.cpp +++ b/src/kvilib/irc/kvi_ircuserdb.cpp @@ -56,17 +56,21 @@ void KviIrcUserEntry::setRealName(const QString &rn) { if( (m_szRealName[0].unicode()==KVI_TEXT_COLOR) && (m_szRealName[2].unicode()==KVI_TEXT_RESET) ) { - switch(m_szRealName[1].unicode()) + // hum.. encoded as hidden color code eh ? publish is somewhere, so others might implement this... + // for backwards compatibily, 3=bot + if(m_szRealName[1].unicode() & 1 & 2) { - case '1': // hum.. encoded as hidden color code eh ? publish is somewhere, so others might implement this... - setGender(Male); - break; - case '2': - setGender(Female); - break; - case '3': - setBot(true); - break; + setBot(true); //3 + } else { + if(m_szRealName[1].unicode() & 1) + { + setGender(Male); //1 + } else { + if(m_szRealName[1].unicode() & 2) + { + setGender(Female); //2 + } + } } m_szRealName.remove(0,3); } diff --git a/src/kvirc/kernel/kvi_ircconnection.cpp b/src/kvirc/kernel/kvi_ircconnection.cpp index 7c71b78ad..92ec18411 100644 --- a/src/kvirc/kernel/kvi_ircconnection.cpp +++ b/src/kvirc/kernel/kvi_ircconnection.cpp @@ -979,19 +979,27 @@ void KviIrcConnection::loginToIrcServer() return; } - QString szGenderTag; + QString szGenderAvatarTag; + int iGenderAvatarTag=0; if(KVI_OPTION_BOOL(KviOption_boolPrependGenderInfoToRealname) && !KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender).isEmpty()) { - szGenderTag.append(KVI_TEXT_COLOR); if(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender).startsWith("m",Qt::CaseInsensitive)) { - szGenderTag.append("1"); + iGenderAvatarTag|=1; } else if(KVI_OPTION_STRING(KviOption_stringCtcpUserInfoGender).startsWith("f",Qt::CaseInsensitive)) { - szGenderTag.append("2"); + iGenderAvatarTag|=2; } - szGenderTag.append(KVI_TEXT_RESET); - szReal.prepend(KviQString::toUtf8(szGenderTag)); + } + if(KVI_OPTION_BOOL(KviOption_boolPrependAvatarInfoToRealname) && !KVI_OPTION_STRING(KviOption_stringMyAvatar).isEmpty()) + { + iGenderAvatarTag|=4; + } + + if(iGenderAvatarTag!=0) + { + szGenderAvatarTag.sprintf("%c%d%c",KVI_TEXT_COLOR,iGenderAvatarTag,KVI_TEXT_RESET); + szReal.prepend(KviQString::toUtf8(szGenderAvatarTag)); } if(!sendFmtData("USER %s 0 %s :%s",szUser.data(), diff --git a/src/kvirc/kernel/kvi_options.cpp b/src/kvirc/kernel/kvi_options.cpp index a82d7493a..427c5e60e 100644 --- a/src/kvirc/kernel/kvi_options.cpp +++ b/src/kvirc/kernel/kvi_options.cpp @@ -306,7 +306,8 @@ KviBoolOption g_boolOptionsTable[KVI_NUM_BOOL_OPTIONS]= BOOL_OPTION("ScaleAvatarsOnLoad",true,KviOption_sectFlagAvatar), BOOL_OPTION("DisableNotifierFadein",false,KviOption_sectFlagFrame), BOOL_OPTION("UseAntiAliasing",true,KviOption_sectFlagGui | KviOption_resetUpdateGui), - BOOL_OPTION("PickRandomIpAddressForRoundRobinServers",true,KviOption_sectFlagConnection) + BOOL_OPTION("PickRandomIpAddressForRoundRobinServers",true,KviOption_sectFlagConnection), + BOOL_OPTION("PrependAvatarInfoToRealname",true,KviOption_sectFlagConnection) }; #define STRING_OPTION(_txt,_val,_flags) KviStringOption(KVI_STRING_OPTIONS_PREFIX _txt,_val,_flags) diff --git a/src/kvirc/kernel/kvi_options.h b/src/kvirc/kernel/kvi_options.h index 467e5ce5f..59a8a7351 100644 --- a/src/kvirc/kernel/kvi_options.h +++ b/src/kvirc/kernel/kvi_options.h @@ -314,9 +314,9 @@ DECLARE_OPTION_STRUCT(KviStringListOption,QStringList) #define KviOption_boolDisableNotifierFadein 220 /* interface::notifier */ #define KviOption_boolUseAntiAliasing 221 /* qt4 only! */ #define KviOption_boolPickRandomIpAddressForRoundRobinServers 222 +#define KviOption_boolPrependAvatarInfoToRealname 223 - -#define KVI_NUM_BOOL_OPTIONS 223 +#define KVI_NUM_BOOL_OPTIONS 224 diff --git a/src/kvirc/sparser/kvi_sp_numeric.cpp b/src/kvirc/sparser/kvi_sp_numeric.cpp index 3c8eef40e..ff1a0d098 100644 --- a/src/kvirc/sparser/kvi_sp_numeric.cpp +++ b/src/kvirc/sparser/kvi_sp_numeric.cpp @@ -699,16 +699,30 @@ void KviServerParser::parseNumericWhoReply(KviIrcMessage *msg) e->setUser(szUser); e->setHost(szHost); e->setServer(szServ); - e->setRealName(szReal); e->setAway(bAway); KviQuery * q = msg->connection()->findQuery(szNick); if(q) q->updateLabelText(); + //no avatar? check for a cached one if(!e->avatar()) { // FIXME: #warning "THE AVATAR SHOULD BE RESIZED TO MATCH THE MAX WIDTH/HEIGHT" // maybe now we can match this user ? msg->console()->checkDefaultAvatar(e,szNick,szUser,szHost); } + //still no avatar? check if the user is exposing the fact that he's got one + if(!e->avatar()) + { + if( (szReal[0].unicode()==KVI_TEXT_COLOR) && (szReal[1].unicode() & 4) && (szReal[2].unicode()==KVI_TEXT_RESET) ) + { + if(KVI_OPTION_BOOL(KviOption_boolRequestMissingAvatars)) + { + KviQCString d = msg->connection()->encodeText(szNick); + msg->connection()->sendFmtData("%s %s :%c%s%c","PRIVMSG",d.data(),0x01,"AVATAR",0x01); + } + } + } + //this has to be done after the avatar part + e->setRealName(szReal); } KviChannel * chan = msg->connection()->findChannel(szChan); diff --git a/src/modules/options/optw_irc.cpp b/src/modules/options/optw_irc.cpp index f4cc01ad8..1029c9e84 100644 --- a/src/modules/options/optw_irc.cpp +++ b/src/modules/options/optw_irc.cpp @@ -74,7 +74,8 @@ KviIrcAdvancedOptionsWidget::KviIrcAdvancedOptionsWidget(QWidget * parent) "to close the connection.<br>" \ "Note that if you use this, your QUIT message may be not displayed.</center>","options")); addBoolSelector(0,1,0,1,__tr2qs_ctx("Prepend gender info to realname","options"),KviOption_boolPrependGenderInfoToRealname); - addRowSpacer(0,2,0,2); + addBoolSelector(0,2,0,2,__tr2qs_ctx("Prepend avatar info to realname","options"),KviOption_boolPrependAvatarInfoToRealname); + addRowSpacer(0,3,0,3); } KviIrcAdvancedOptionsWidget::~KviIrcAdvancedOptionsWidget() |
