Bug 105786

Summary: [icq] Can't update nicknames of ICQ contacts
Product: [Unmaintained] kopete Reporter: Simon Koch <koch0121>
Component: ICQ and AIM PluginsAssignee: Kopete Developers <kopete-bugs-null>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Simon Koch 2005-05-17 03:07:53 UTC
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.
Comment 1 Matt Rogers 2005-05-19 05:03:23 UTC
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
Comment 2 Matt Rogers 2005-07-16 22:12:38 UTC
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 );
Comment 3 Matt Rogers 2005-07-16 22:16:55 UTC
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 );