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

List:       kde-commits
Subject:    kdenox/konq-embed
From:       Stefan Eilers <stefan.eilers () basyskom ! de>
Date:       2008-06-04 11:41:40
Message-ID: 1212579700.813897.1639.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 816630 by eilers:

Add support for mailto protocol. It uses the Qtopia mail service


 M  +2 -0      ChangeLog  
 M  +63 -0     src/view.cc  


--- trunk/kdenox/konq-embed/ChangeLog #816629:816630
@@ -1,3 +1,5 @@
+2008-06-04 Stefan Eilers <stefan.eilers@basyskom.de>
+    * Add support for "mailto" that uses Qtopia mail service.
 2008-06-02 Stefan Eilers <stefan.eilers@basyskom.de>
     * Fix incorrect tab counting: When a tab was closed by javascript, the tabcount was not updated.
 2008-05-27 Stefan Eilers <stefan.eilers@basyskom.de>
--- trunk/kdenox/konq-embed/src/view.cc #816629:816630
@@ -47,6 +47,62 @@
 
 #include <kdebug.h>
 
+#if defined (_QT_QPE_)
+#include <qtopia/services.h>
+#endif
+
+namespace {
+    class MailToHandler
+    {
+	public:
+	    static void send( const KURL& url )
+	    {
+		QMap<QString,QString> parameters = parseURL( url );
+#if defined (_QT_QPE_)
+		ServiceRequest req( "Email", "writeMail(QMap(QString,QString))" );
+		req << parameters;
+		req.send();
+#else
+		qWarning( "Support of protocol \"mailto:\" not implemented!" );
+#endif
+	    }
+	    
+	private:
+	    static QMap<QString, QString> parseURL( const KURL& url )
+	    {
+		QMap<QString,QString> parameters;
+		parameters["to"] =  KURL::decode_string(url.path());
+		
+		QStringList queries = QStringList::split('&', url.query().mid(1));
+		QStringList::Iterator it = queries.begin();
+		const QStringList::Iterator itEnd = queries.end();
+		for (; it != itEnd; ++it)
+		{
+		    if ((*it).startsWith(QString::fromLatin1("subject="))){
+			parameters["subject"] = KURL::decode_string((*it).mid(8));
+		    }
+		    else if ((*it).startsWith(QString::fromLatin1("cc=")))
+		    {
+			parameters["cc"] = KURL::decode_string((*it).mid(3));
+		    }
+		    else if ((*it).startsWith(QString::fromLatin1("bcc=")))
+		    {
+			parameters["bcc"] = KURL::decode_string((*it).mid(4));
+		    }
+		    else if ((*it).startsWith(QString::fromLatin1("body=")))
+		    {
+			parameters["body"] = KURL::decode_string((*it).mid(5));
+		    }
+		}
+		
+		return parameters;
+	    }
+	    
+    };
+    
+}
+
+
 View::View( QObject *parent, const char *name, KParts::ReadOnlyPart *part )
     : QObject( parent, name ), m_part( part)
 {
@@ -393,6 +449,13 @@
     
     stop();
     
+    if ( url.protocol() == "mailto" )
+    {
+	MailToHandler::send( url );
+	emit locationBarURLChanged( m_locationBarURL );
+	return;
+    }
+    
     m_run = new Run( this, url, args );
     connect( m_run, SIGNAL( error() ),
 	     this, SLOT( runError() ) );
[prev in list] [next in list] [prev in thread] [next in thread] 

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