Version: (using KDE Devel) Installed from: Compiled sources Compiler: gcc version 3.3.5-20050130 (Gentoo Linux 3.3.5.20050130-r1, ssp-3.3.5.20050130-1, pie-8.7.7.1) I was cleaning up my contact list when I noticed that a couple of my ICQ contacts had changed their nicknames. When I right click on the ICQ flower on the meta-contact and choose "User Info", I see the new nickname. After I click OK in the ICQ User Information dialog, right clicking on or hovering over the ICQ flower on the meta-contact still shows the old nickname. Similarly, checking "Use the name given by the server" in the meta-contact's Properties still uses the old nickname. Ideally, the nickname would be updated when the other user changes it, but I should at least be able to update it by manually retrieving their contact information from the server.
yup, this is a problem. hopefully we'll have a fix soon. However, I won't guarantee that it'll be fixed before KDE 3.4.1
SVN commit 435392 by mattr: when getting the user info for the dialog, make sure that we update the nickname for the contact. also make sure that we update the contact name on login as well. BUG: 105786 M +6 -7 icqcontact.cpp --- trunk/KDE/kdenetwork/kopete/protocols/oscar/icq/icqcontact.cpp #435391:435392 @@ -144,13 +144,10 @@ if ( m_ssiItem.waitingAuth() ) setOnlineStatus( mProtocol->statusManager()->waitingForAuth() ); - QString nickname = property( Kopete::Global::Properties::self()->nickName() ).value().toString(); - if ( nickname.isEmpty() || Oscar::normalize( nickname ) == Oscar::normalize( contactId() ) ) - { - int time = ( KApplication::random() % 25 ) * 1000; - kdDebug(OSCAR_ICQ_DEBUG) << k_funcinfo << "updating nickname in " << time/1000 << " seconds" << endl; - QTimer::singleShot( time, this, SLOT( requestShortInfo() ) ); - } + int time = ( KApplication::random() % 20 ) * 1000; + kdDebug(OSCAR_ICQ_DEBUG) << k_funcinfo << "updating nickname in " << time/1000 << " seconds" << endl; + QTimer::singleShot( time, this, SLOT( requestShortInfo() ) ); + } void ICQContact::requestShortInfo() @@ -227,6 +224,8 @@ kdDebug(OSCAR_ICQ_DEBUG) << k_funcinfo << "received long info from engine" << endl; ICQGeneralUserInfo genInfo = mAccount->engine()->getGeneralInfo( contact ); + if ( !genInfo.nickname.isEmpty() ) + setNickName( genInfo.nickname ); emit haveBasicInfo( genInfo ); ICQWorkUserInfo workInfo = mAccount->engine()->getWorkInfo( contact );
SVN commit 435395 by mattr: backport the fix for bug 105786. It should be in KDE 3.4.2 (Kopete 0.10.3) CCBUG: 105786 M +6 -7 icqcontact.cpp --- branches/KDE/3.4/kdenetwork/kopete/protocols/oscar/icq/icqcontact.cpp #435394:435395 @@ -133,13 +133,10 @@ if ( m_ssiItem.waitingAuth() ) setOnlineStatus( mProtocol->statusManager()->waitingForAuth() ); - QString nickname = property( Kopete::Global::Properties::self()->nickName() ).value().toString(); - if ( nickname.isEmpty() || Oscar::normalize( nickname ) == Oscar::normalize( contactId() ) ) - { - int time = ( KApplication::random() % 25 ) * 1000; - kdDebug(OSCAR_ICQ_DEBUG) << k_funcinfo << "updating nickname in " << time/1000 << " seconds" << endl; - QTimer::singleShot( time, this, SLOT( requestShortInfo() ) ); - } + int time = ( KApplication::random() % 20 ) * 1000; + kdDebug(OSCAR_ICQ_DEBUG) << k_funcinfo << "updating nickname in " << time/1000 << " seconds" << endl; + QTimer::singleShot( time, this, SLOT( requestShortInfo() ) ); + } void ICQContact::requestShortInfo() @@ -216,6 +213,8 @@ kdDebug(OSCAR_ICQ_DEBUG) << k_funcinfo << "received long info from engine" << endl; ICQGeneralUserInfo genInfo = mAccount->engine()->getGeneralInfo( contact ); + if ( !genInfo.nickname.isEmpty() ) + setNickName( genInfo.nickname ); emit haveBasicInfo( genInfo ); ICQWorkUserInfo workInfo = mAccount->engine()->getWorkInfo( contact );