Index: src/network/applications/inktransferp2p.cpp
===================================================================
--- src/network/applications/inktransferp2p.cpp	(revisione 4605)
+++ src/network/applications/inktransferp2p.cpp	(copia locale)
@@ -20,10 +20,10 @@
 #include "../../kmessdebug.h"
 #include "../mimemessage.h"
 
+#include <QFile>
 
-
 /**
- * The constructor
+ * The constructor to receive Ink messages
  */
 InkTransferP2P::InkTransferP2P( ApplicationList *applicationList )
 : P2PApplication( applicationList )
@@ -41,6 +41,47 @@
 
 
 /**
+ * The constructor to send Ink messages
+ */
+InkTransferP2P::InkTransferP2P( ApplicationList *applicationList, const QByteArray &inkData )
+: P2PApplication( applicationList )
+{
+  // Open the buffer directly.
+  // The session is only used to receive data.
+//   inkBuffer_.buffer().prepend( "base64:" );
+
+  // Set the role / session mode of this class.
+  // Is checked for by the ChatMaster, and P2PApplication base class.
+  setMode( Application::APP_MODE_DATACAST );
+  setDataCastSessionID( SESSION_ID );
+
+
+  QByteArray inkData2;
+
+  // This is the user drawn message
+  inkData2 = inkData;
+  // This is the base64 of a valid Ink
+//   inkData2 = "AJIHHAOAgAQdBI4G3AMCIARIEUVkCUgRRICAgARFZAdIEUSAAUVkCEgRRICBAkVkGRQyCACAEAIAAAhCMwgAgAwCAAAEQg8iFauq00GrqtNBAFjVPgCAqr4VAACAPwAAgD8AALnDAEwExh4JH4KD4vjAAAAAChQIh7ZbaFZJJCa7a4T1d6xw4ZxzZAoUC4L8oflFkLqAg/rr675dNcZ3ubAXAQoiCYfvcu8/3lyPnDmcRxwYWvOs/IfyxEeWIm0zPRMAxDatbBcAChUJgv4JA/gkE9XdAIbJWSY6Ulp+XhwKGRKC/gG7+Ab0MTb41dkAgv05+ndqrPF5JY0KGA6C/gIj+AiUGK0AhPgJvgJ5QpK2xO+2tQoZC4L+Auv4C7zclnZQhPgIvgI8Vrasc+HK4AkBChYQgvzl+c4JalSggv29+3/Hhvcu7ly0Cicpgvz5+fc5m7j3L5szJeR2NlWq74gggv21+21hCcux0ZrLLiqZqpQKGxeC/dH7rIThsut7jiiC/en718eJ77K3XeCYAAoXEIL+AHv4AdTSXM0tgv3N+5/Tjvml1IAKEgaD/AJfgE6xPECC/gAD+AAaQAodFoL+AYP4BhcnlLQjONdAgv2t+2Zsk56u93LbdyAKFAmC/gJT+Alec7qgg/rL6z7Vd7uAChEJgv4Cm/gKeS5ogv3Z+72pcAoRCIL+ArP4Cpi2wIL90fuOzQAKIBiD/BdfgtcZtLd8mF1jNzm9AIL9efr2xm54nnaZCL0ACiEdgv4Fk/gWWcy93C0sASkAgv1Z+rc9c897lm29OVk1lKAKGROC/gab+Bp0y2pZNybYgv09+nXrl96pZYAKGBCC/gcb+Bx8sVNlioP6Q+kdVFxcZk1uwAkCChMKgv4H0/gfWXKKgv0Z+i3ObU8gChYRgv4IK/gg2EWWxZsAgv3l+84oVLAACQMKFA6C/gIr+Ai7YRUUgvzt+d0y0SoAChMLgv4CQ/gJXLcWQIL8/fn1JaoAChEKgv4Ca/gJupYAgv0F+g0BQAoTCYL+Anv4CfqDAIL+AUP4BRxUaAoWD4L+Arv4CvLcqVCC/gFT+AVclxu4oAoWDYL+AtP4C1ssoACC/gHL+AcYzzlwzQoXEIL+AuP4C5qVcpFggv4Cc/gJtCSrLQAKGRKC/gL7+Av9zZLLFSwAgv4DA/gL0zVZsFUKGROC/gMT+AxdzZFJYsCC/gOz+A7czTcSqJo==";
+
+
+  MimeMessage message;
+  message.addField("MIME-Version",    "1.0");
+  message.addField("Content-Type",    "image/gif");// kDebug() <<message.getMessage();
+//   message.addField("Content-Type",    "application/x-ms-ink");
+  message.setBody( "base64:" + inkData2 );
+
+  QString body( message.getMessage() );
+  inkBuffer_.setData( QByteArray( (char*)body.utf16(), body.size()*2 ) );
+
+  sendP2PMessage( inkBuffer_.buffer(),
+                  0,
+                  P2PApplicationBase::P2P_TYPE_INK,
+                  P2PApplicationBase::P2P_MSG_DATA );
+}
+
+
+
+/**
  * The destructor
  */
 InkTransferP2P::~InkTransferP2P()
Index: src/network/applications/inktransferp2p.h
===================================================================
--- src/network/applications/inktransferp2p.h	(revisione 4605)
+++ src/network/applications/inktransferp2p.h	(copia locale)
@@ -29,7 +29,7 @@
  *
  * Windows Live Messenger 8.5 always sends winks as seperate P2P messages instead of directly
  * over the switchboard. It uses image/gif as a mime type. Live Messenger 2009 just uses the
- * switchboard and uses image/gif or application/x-ms-ink. Both clients allow receiving 
+ * switchboard and uses image/gif or application/x-ms-ink. Both clients allow receiving
  * switchboard transfers.
  *
  * @author Antonio Nastasi, Diederik van der Boor
@@ -43,8 +43,10 @@
     // The fixed session ID used by all ink transfer sessions.
     static const unsigned long SESSION_ID = 64;
 
-    // The constructor
+    // The constructor to receive Ink messages
                            InkTransferP2P( ApplicationList *applicationList );
+    // The constructor to send Ink messages
+                           InkTransferP2P( ApplicationList *applicationList, const QByteArray &inkData );
 
     // The destructor
     virtual               ~InkTransferP2P();
Index: src/network/msnswitchboardconnection.cpp
===================================================================
--- src/network/msnswitchboardconnection.cpp	(revisione 4605)
+++ src/network/msnswitchboardconnection.cpp	(copia locale)
@@ -20,10 +20,12 @@
 #include "../contact/contact.h"
 #include "../contact/invitedcontact.h"  // for cast
 #include "../contact/msnobject.h"
+#include "../utils/kmessshared.h"
 #include "../currentaccount.h"
 #include "../emoticonmanager.h"
 #include "../kmessapplication.h"
 #include "../kmessdebug.h"
+#include "applications/inktransferp2p.h"
 #include "applications/applicationlist.h"
 #include "soap/offlineimservice.h"
 #include "chatinformation.h"
@@ -1313,7 +1315,7 @@
   {
     if( contentType == "text/plain"
     ||  contentType == "text/x-msnmsgr-datacast"
-    ||  contentType == "image/gif" 
+    ||  contentType == "image/gif"
     ||  contentType == "application/x-ms-ink" )
     {
 #ifdef KMESSDEBUG_SWITCHBOARD_GENERAL
@@ -1719,6 +1721,12 @@
   bool capable = true;
   ContactBase *contact;
 
+  if( contactsInChat_.isEmpty() )
+  {
+    kWarning() << "Can't send Ink to an empty chat.";
+    return;
+  }
+
   foreach( const QString &handle, contactsInChat_ )
   {
     contact = currentAccount_->getContactByHandle( handle );
@@ -1731,11 +1739,19 @@
     }
   }
 
+  // Testing P2P ink
+  new InkTransferP2P( contact->getApplicationList(), ink.toBase64() );
+  return;
+
   if( ! capable )
   {
+#ifdef KMESSDEBUG_SWITCHBOARD_EMOTICONS
+    kDebug() << "Contact's client is not capable of receiving Ink messages.";
+#endif
     return;
   }
 
+
   // Create the message for ink
   // Source: http://msdn.microsoft.com/en-us/library/ms818340.aspx
   // To send the WLM 2009 content-type (maybe ISF):
@@ -1869,7 +1885,7 @@
     {
       if( contentType == "text/plain"
           ||  contentType == "text/x-msnmsgr-datacast"
-          ||  contentType == "image/gif" 
+          ||  contentType == "image/gif"
           ||  contentType == "application/x-ms-ink" )
       {
 #ifdef KMESSDEBUG_SWITCHBOARD_GENERAL
Index: src/network/mimemessage.cpp
===================================================================
--- src/network/mimemessage.cpp	(revisione 4606)
+++ src/network/mimemessage.cpp	(copia locale)
@@ -60,7 +60,7 @@
   int nullPos = message.indexOf('\0');
   int endMime = message.indexOf("\r\n\r\n");
   QString messageHeader( QString::fromUtf8(message.data(), (nullPos == -1) ? endMime : nullPos ) );
-kWarning() << messageHeader;
+
   // Regexps to parse the header
   QRegExp rx1("Content-Type: ([A-Za-z0-9$!*/\\-]*)");
   QRegExp rx2("Message-ID: ([^\r\n]+)");

