[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdenetwork/kopete/protocols/oscar
From:       Roman Jarosz <kedgedev () centrum ! cz>
Date:       2008-08-29 22:07:56
Message-ID: 1220047676.389019.9100.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 854615 by rjarosz:

Use the message state interface in ICQ and AIM.



 M  +2 -0      aimcontactbase.cpp  
 M  +2 -0      icqcontactbase.cpp  
 M  +24 -0     oscarcontact.cpp  
 M  +2 -0      oscarcontact.h  


--- trunk/KDE/kdenetwork/kopete/protocols/oscar/aimcontactbase.cpp #854614:854615
@@ -230,12 +230,14 @@
 	bool allowUCS2 = !isOnline() || !(m_details.userClass() & Oscar::CLASS_ICQ) || \
m_details.hasCap( CAP_UTF8 );  msg.setText( Oscar::Message::encodingForText( s, \
allowUCS2 ), s, contactCodec() );  
+	msg.setId( message.id() );
 	msg.setReceiver(mName);
 	msg.setTimestamp(message.timestamp());
 	msg.setChannel(0x01);
 	
 	mAccount->engine()->sendMessage(msg);
 	
+	message.setState( Kopete::Message::StateSending );
 	// Show the message we just sent in the chat window
 	manager(Kopete::Contact::CanCreate)->appendMessage(message);
 	manager(Kopete::Contact::CanCreate)->messageSucceeded();
--- trunk/KDE/kdenetwork/kopete/protocols/oscar/icqcontactbase.cpp #854614:854615
@@ -93,6 +93,7 @@
 		msgPosition += msgChunk.length();
 
 		Oscar::Message message;
+		message.setId( msg.id() );
 		message.setText( Oscar::Message::encodingForText( msgChunk, allowUCS2 ), msgChunk, \
codec );  message.setChannel( messageChannel );
 		message.setTimestamp( msg.timestamp() );
@@ -101,6 +102,7 @@
 		mAccount->engine()->sendMessage( message );
 	} while ( msgPosition < msgText.length() );
 
+	msg.setState( Kopete::Message::StateSending );
 	manager(Kopete::Contact::CanCreate)->appendMessage(msg);
 	manager(Kopete::Contact::CanCreate)->messageSucceeded();
 }
--- trunk/KDE/kdenetwork/kopete/protocols/oscar/oscarcontact.cpp #854614:854615
@@ -72,6 +72,10 @@
 	                  this, SLOT(requestBuddyIcon()) );
 	QObject::connect( mAccount->engine(), SIGNAL(receivedAwayMessage(const QString&, \
                const QString& )),
 	                  this, SLOT(receivedStatusMessage(const QString&, const QString&)) \
); +	QObject::connect( mAccount->engine(), SIGNAL(messageAck(const QString&, uint)),
+	                  this, SLOT(messageAck(const QString&, uint)) );
+	QObject::connect( mAccount->engine(), SIGNAL(messageError(const QString&, uint)),
+	                  this, SLOT(messageError(const QString&, uint)) );
 }
 
 OscarContact::~OscarContact()
@@ -271,6 +275,26 @@
 		account()->engine()->sendTyping( contactId(), typing );
 }
 
+void OscarContact::messageAck( const QString& contact, uint messageId )
+{
+	if ( Oscar::normalize( contact ) != Oscar::normalize( contactId() ) )
+		return;
+	
+	Kopete::ChatSession* chatSession = manager();
+	if ( chatSession )
+		chatSession->receivedMessageState( messageId, Kopete::Message::StateSent );
+}
+
+void OscarContact::messageError( const QString& contact, uint messageId )
+{
+	if ( Oscar::normalize( contact ) != Oscar::normalize( contactId() ) )
+		return;
+	
+	Kopete::ChatSession* chatSession = manager();
+	if ( chatSession )
+		chatSession->receivedMessageState( messageId, Kopete::Message::StateError );
+}
+
 QTextCodec* OscarContact::contactCodec() const
 {
 	if ( hasProperty( "contactEncoding" ) )
--- trunk/KDE/kdenetwork/kopete/protocols/oscar/oscarcontact.h #854614:854615
@@ -146,6 +146,8 @@
 
 protected slots:
 	void slotTyping( bool typing );
+	void messageAck( const QString& contact, uint messageId );
+	void messageError( const QString& contact, uint messageId );
 
 protected:
 	OscarAccount *mAccount;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic