aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2010-07-29 01:43:30 +0000
committerGravatar Szymon Tomasz Stefanek2010-07-29 01:43:30 +0000
commit73ecc0a016b0b9b56575ef680b0a5e8041494620 (patch)
treebe3f7c199457ca471bddcbc3096eb6bca9bb4de3
parentupdated nullsoft rules to reflect 4.1.0; updated translation files (diff)
downloadKVIrc-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.cpp65
-rw-r--r--src/kvirc/ui/kvi_console.cpp43
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);