[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/3.4/kdenetwork/kopete/protocols/oscar
From: Matt Rogers <mattr () kde ! org>
Date: 2005-07-09 4:25:12
Message-ID: 1120883112.960530.10475.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 432926 by mattr:
Backport the fixes for bugs 103300 and 103249
Should be in KDE 3.4.2 (Kopete 0.10.3)
CCBUGS: 103300, 103249
M +4 -0 icq/icqcontact.cpp
M +31 -5 liboscar/messagereceivertask.cpp
M +2 -0 liboscar/oscartypeclasses.h
M +11 -4 oscaraccount.cpp
--- branches/KDE/3.4/kdenetwork/kopete/protocols/oscar/icq/icqcontact.cpp #432925:432926
@@ -32,6 +32,7 @@
#include "kopetemessagemanagerfactory.h"
#include "kopeteuiglobal.h"
+#include "kopetemetacontact.h"
#include "icquserinfo.h"
#include "icqreadaway.h"
@@ -126,6 +127,9 @@
void ICQContact::loggedIn()
{
+ if ( metaContact()->isTemporary() )
+ return;
+
if ( m_ssiItem.waitingAuth() )
setOnlineStatus( mProtocol->statusManager()->waitingForAuth() );
--- branches/KDE/3.4/kdenetwork/kopete/protocols/oscar/liboscar/messagereceivertask.cpp #432925:432926
@@ -188,10 +188,36 @@
kdDebug(14151) << k_funcinfo << "Received server message. type = " << msgType
<< ", flags = " << msgFlags << endl;
- QCString msgText = tlv5buffer.getLNTS();
+ //handle the special user types
+ Oscar::Message msg;
+ QString msgSender;
+ switch ( msgType )
+ {
+ case 0x0D:
+ msgSender = "ICQ Web Express";
+ msg.addProperty( Oscar::Message::WWP );
+ break;
+ case 0x0E:
+ msgSender = "ICQ Email Express";
+ msg.addProperty( Oscar::Message::EMail );
+ break;
+ default:
+ msgSender = m_fromUser;
+ break;
+ };
- Oscar::Message msg;
- msg.addProperty( Oscar::Message::UTF8 );
+ QByteArray msgText = tlv5buffer.getLNTS();
+ int msgLength = msgText.size();
+ if ( msgType == 0x0D || msgType == 0x0E )
+ {
+ for ( int i = 0; i < msgLength; i++ )
+ {
+ if ( msgText[i] == (char)0xFE )
+ msgText[i] = 0x20;
+ }
+ }
+
+ msg.addProperty( Oscar::Message::Latin );
switch ( msgFlags )
{
case 0x03:
@@ -207,9 +233,9 @@
msg.setType( 0x04 );
msg.setTimestamp( QDateTime::currentDateTime() );
- msg.setSender( m_fromUser );
+ msg.setSender( msgSender );
msg.setReceiver( client()->userId() );
- msg.setText( QString::fromUtf8( msgText, msgText.length() ) );
+ msg.setText( QString(msgText) );
emit receivedMessage( msg );
}
--- branches/KDE/3.4/kdenetwork/kopete/protocols/oscar/liboscar/oscartypeclasses.h #432925:432926
@@ -61,6 +61,8 @@
enum {
Normal = 0x0000,
AutoResponse = 0x0001,
+ WWP = 0x0002,
+ EMail = 0x0004,
UCS2 = 0x0010,
Latin = 0x0020,
UTF8 = 0x0040
--- branches/KDE/3.4/kdenetwork/kopete/protocols/oscar/oscaraccount.cpp #432925:432926
@@ -289,10 +289,10 @@
* Append to the chat window
*/
QString sender = Oscar::normalize( message.sender() );
- if ( !contacts()[ sender ] )
+ if ( !contacts()[sender] )
{
- kdDebug(OSCAR_RAW_DEBUG) << "Adding '" << message.sender() << "' as temporary contact" << endl;
- addContact( message.sender(), QString::null, 0, Kopete::Account::Temporary );
+ kdDebug(OSCAR_RAW_DEBUG) << "Adding '" << sender << "' as temporary contact" << endl;
+ addContact( sender, QString::null, 0, Kopete::Account::Temporary );
}
OscarContact* ocSender = static_cast<OscarContact *> ( contacts()[sender] ); //should exist now
@@ -300,9 +300,16 @@
if ( !ocSender )
{
kdWarning(OSCAR_RAW_DEBUG) << "Temporary contact creation failed for '"
- << message.sender() << "'! Discarding message: " << message.text() << endl;
+ << sender << "'! Discarding message: " << message.text() << endl;
return;
}
+ else
+ {
+ if ( message.properties() & Oscar::Message::WWP == Oscar::Message::WWP )
+ ocSender->setNickName( i18n("ICQ Web Express") );
+ if ( message.properties() & Oscar::Message::EMail == Oscar::Message::EMail )
+ ocSender->setNickName( i18n("ICQ Email Express") );
+ }
Kopete::ChatSession* chatSession = ocSender->manager( Kopete::Contact::CanCreate );
chatSession->receivedTypingMsg( ocSender, false ); //person is done typing
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic