diff options
| author | 2010-07-29 01:43:30 +0000 | |
|---|---|---|
| committer | 2010-07-29 01:43:30 +0000 | |
| commit | 73ecc0a016b0b9b56575ef680b0a5e8041494620 (patch) | |
| tree | be3f7c199457ca471bddcbc3096eb6bca9bb4de3 | |
| parent | updated nullsoft rules to reflect 4.1.0; updated translation files (diff) | |
| download | KVIrc-73ecc0a016b0b9b56575ef680b0a5e8041494620.tar.gz KVIrc-73ecc0a016b0b9b56575ef680b0a5e8041494620.tar.bz2 KVIrc-73ecc0a016b0b9b56575ef680b0a5e8041494620.zip | |
Don't fetch own avatar from cache. Needs some testing so maybe it's better to avoid backporting for a couple of days.
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4705 17fca916-40b9-46aa-a4ea-0a15b648b75c
| -rw-r--r-- | src/kvirc/sparser/kvi_sp_numeric.cpp | 65 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_console.cpp | 43 |
2 files changed, 71 insertions, 37 deletions
diff --git a/src/kvirc/sparser/kvi_sp_numeric.cpp b/src/kvirc/sparser/kvi_sp_numeric.cpp index 8e059d979..1bdbdb800 100644 --- a/src/kvirc/sparser/kvi_sp_numeric.cpp +++ b/src/kvirc/sparser/kvi_sp_numeric.cpp @@ -781,7 +781,8 @@ void KviServerParser::parseNumericWhoReply(KviIrcMessage *msg) KviIrcUserEntry * e = db->find(szNick); if(e) { - if(bHopsOk)e->setHops(iHops); + if(bHopsOk) + e->setHops(iHops); e->setUser(szUser); e->setHost(szHost); e->setServer(szServ); @@ -790,27 +791,35 @@ void KviServerParser::parseNumericWhoReply(KviIrcMessage *msg) e->setUserFlags(szFlag); 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(q) + q->updateLabelText(); + + // Check for the avatar unless the entry refers to the local user (in which case + // the avatar should never be cached nor requested). + if(!IS_ME(msg,szNick)) { - if( (szReal[0].unicode()==KVI_TEXT_COLOR) && (szReal[1].unicode() & 4) && (szReal[2].unicode()==KVI_TEXT_RESET) ) + //no avatar? check for a cached one + if(!e->avatar()) { - if(KVI_OPTION_BOOL(KviOption_boolRequestMissingAvatars) && !e->avatarRequested()) + // 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) ) { - QByteArray d = msg->connection()->encodeText(szNick); - msg->connection()->sendFmtData("%s %s :%c%s%c","PRIVMSG",d.data(),0x01,"AVATAR",0x01); - e->setAvatarRequested(); + if(KVI_OPTION_BOOL(KviOption_boolRequestMissingAvatars) && !e->avatarRequested()) + { + QByteArray d = msg->connection()->encodeText(szNick); + msg->connection()->sendFmtData("%s %s :%c%s%c","PRIVMSG",d.data(),0x01,"AVATAR",0x01); + e->setAvatarRequested(); + } } } } + //this has to be done after the avatar part e->setRealName(szReal); } @@ -1182,19 +1191,27 @@ void KviServerParser::parseNumericWhoisUser(KviIrcMessage *msg) e->setUser(szUser); e->setHost(szHost); e->setRealName(szReal); - if(e->gender()!=KviIrcUserEntry::Unknown) { + if(e->gender() != KviIrcUserEntry::Unknown) + { + // hum... this is ugly if(KviQString::equalCS(g_pActiveWindow->metaObject()->className(),QString("KviChannel"))) - { ((KviChannel*)g_pActiveWindow)->userListView()->updateArea(); - } } + KviQuery * q = msg->connection()->findQuery(szNick); - if(q) q->updateLabelText(); - if(!e->avatar()) + if(q) + q->updateLabelText(); + + // Check for the avatar unless the entry refers to the local user (in which case + // the avatar should never be cached nor requested). + if(!IS_ME(msg,szNick)) { - // 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); + 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); + } } } diff --git a/src/kvirc/ui/kvi_console.cpp b/src/kvirc/ui/kvi_console.cpp index c4db4f598..72416751d 100644 --- a/src/kvirc/ui/kvi_console.cpp +++ b/src/kvirc/ui/kvi_console.cpp @@ -932,7 +932,7 @@ void KviConsole::avatarChanged(KviAvatar * avatar,const QString &nick,const QStr void KviConsole::checkDefaultAvatar(KviIrcUserEntry *e,const QString &nick,const QString &user,const QString &host) { // look it up in the cache - QString szAvatar = KviAvatarCache::instance()->lookup(KviIrcMask(nick,user,host),currentNetworkName().toUtf8().data()); + QString szAvatar = KviAvatarCache::instance()->lookup(KviIrcMask(nick,user,host),currentNetworkName()); if(!szAvatar.isEmpty()) { // got a cache hit... is it on disk ? @@ -946,7 +946,7 @@ void KviConsole::checkDefaultAvatar(KviIrcUserEntry *e,const QString &nick,const } // no cached image on disk.. will need to requery it anyway // remove from cache - KviAvatarCache::instance()->remove(KviIrcMask(nick,user,host),currentNetworkName().toUtf8().data()); + KviAvatarCache::instance()->remove(KviIrcMask(nick,user,host),currentNetworkName()); } // registered ? @@ -1027,25 +1027,37 @@ KviAvatar * KviConsole::setAvatar(const QString &nick,const QString &user,const KviAvatar * KviConsole::defaultAvatarFromOptions() { QPixmap * avatar = KVI_OPTION_PIXMAP(KviOption_pixmapMyAvatar).pixmap(); - if(!avatar)return 0; - if(avatar->isNull())return 0; - if(KVI_OPTION_STRING(KviOption_stringMyAvatar).isEmpty())return 0; + + if(!avatar) + return 0; + + if(avatar->isNull()) + return 0; + + if(KVI_OPTION_STRING(KviOption_stringMyAvatar).isEmpty()) + return 0; + KviAvatar * loadedAvatar = new KviAvatar(KVI_OPTION_PIXMAP(KviOption_pixmapMyAvatar).path(),KVI_OPTION_STRING(KviOption_stringMyAvatar)); + if(loadedAvatar->isValid()) - { return loadedAvatar; - } else { - delete loadedAvatar; - return 0; - } + + delete loadedAvatar; + return 0; } KviAvatar * KviConsole::currentAvatar() { - if(!connection())return 0; + if(!connection()) + return 0; + KviIrcUserEntry * e = connection()->userDataBase()->find(connection()->userInfo()->nickName()); - if(!e)return 0; + + if(!e) + return 0; + KviAvatar * a = e->avatar(); + if(!a) { a = defaultAvatarFromOptions(); @@ -1055,15 +1067,20 @@ KviAvatar * KviConsole::currentAvatar() avatarChanged(a,connection()->userInfo()->nickName(),QString(),QString(),QString()); } } + return a; } void KviConsole::setAvatarFromOptions() { - if(!connection())return; + if(!connection()) + return; KviIrcUserEntry * e = connection()->userDataBase()->find(connection()->userInfo()->nickName()); + if(!e)return; + KviAvatar * a = defaultAvatarFromOptions(); + if(a) { e->setAvatar(a); |
