You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by lo...@apache.org on 2012/05/15 17:40:29 UTC

[2/2] qt commit: addes build-in map for mimetype lookup

addes build-in map for mimetype lookup


Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-qt/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-qt/commit/53a69651
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-qt/tree/53a69651
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-qt/diff/53a69651

Branch: refs/heads/master
Commit: 53a69651b0ccc63c77df3815c71777a8e29174f8
Parents: 8570701
Author: Longwei Su <lo...@apache.org>
Authored: Tue May 15 11:05:32 2012 -0400
Committer: Longwei Su <lo...@apache.org>
Committed: Tue May 15 11:05:32 2012 -0400

----------------------------------------------------------------------
 src/plugins/fileapi.cpp |   23 +++++++++++++++++++++--
 src/plugins/fileapi.h   |    4 ++++
 2 files changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-qt/blob/53a69651/src/plugins/fileapi.cpp
----------------------------------------------------------------------
diff --git a/src/plugins/fileapi.cpp b/src/plugins/fileapi.cpp
index 274c5a9..b3d7f82 100644
--- a/src/plugins/fileapi.cpp
+++ b/src/plugins/fileapi.cpp
@@ -19,6 +19,7 @@
 #include "../pluginregistry.h"
 
 #include <QFile>
+#include <QFileInfo>
 #include <QDebug>
 #include <QDateTime>
 #include <QUrl>
@@ -26,6 +27,8 @@
 
 // Create static instance of ourself
 FileAPI* FileAPI::m_fileAPI = new FileAPI();
+//use static method create initialized map for hardcoded mimetype
+FileAPI::MimeTypeMap FileAPI::mimeMap_(FileAPI::createMimeTypeMap());
 
 /**
  * Constructor - NOTE: Never do anything except registering the plugin
@@ -34,6 +37,16 @@ FileAPI::FileAPI() : CPlugin() {
     PluginRegistry::getRegistry()->registerPlugin( "com.cordova.File", this );
 }
 
+FileAPI::MimeTypeMap FileAPI::createMimeTypeMap(){
+    MimeTypeMap map;
+    map.insert(QString("txt"),QString("text/plain"));
+    map.insert(QString("css"),QString("text/css"));
+    map.insert(QString("js"),QString("text/javascript"));
+    map.insert(QString("xml"),QString("text/xml"));
+    map.insert(QString("html"),QString("text/html"));
+    return map;
+}
+
 /**
  * LocalFileSystem.requestFileSystem - http://www.w3.org/TR/file-system-api/#widl-LocalFileSystem-requestFileSystem
  */
@@ -460,9 +473,14 @@ void FileAPI::readEntries( int scId, int ecId, QString p_path ) {
  */
 void FileAPI::readAsDataURL( int scId, int ecId, QString p_path ) {
     QFile file( p_path );
-
+    QFileInfo fileInfo( p_path );
     qDebug() << Q_FUNC_INFO << p_path;
 
+    if(p_path.startsWith("content:")){
+        this->callback( ecId, "FileException.cast( FileException.NOT_READABLE_ERR )" );
+        return;
+    }
+
     // Check if file exists at all
     if( !file.exists() ) {
         this->callback( ecId, "FileException.cast( FileException.NOT_FOUND_ERR )" );
@@ -477,9 +495,10 @@ void FileAPI::readAsDataURL( int scId, int ecId, QString p_path ) {
 
     // Read the file content
     QByteArray byteArray = file.readAll();
+    QString contentType( mimeMap_[fileInfo.completeSuffix()] );
 
     // Escape string & send back
-    this->callback( scId, "'" + byteArray.toBase64() + "'" );
+    this->callback( scId, "'data:" + contentType + ";base64," + byteArray.toBase64() + "'" );
     return;
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-cordova-qt/blob/53a69651/src/plugins/fileapi.h
----------------------------------------------------------------------
diff --git a/src/plugins/fileapi.h b/src/plugins/fileapi.h
index c4a5af4..0803fa7 100644
--- a/src/plugins/fileapi.h
+++ b/src/plugins/fileapi.h
@@ -21,6 +21,7 @@
 
 #include <QDir>
 #include <QVariantMap>
+#include <QMap>
 
 class FileAPI : public CPlugin
 {
@@ -58,6 +59,9 @@ protected:
 
 private:
     static FileAPI* m_fileAPI;
+    typedef QMap<QString, QString> MimeTypeMap;
+    static MimeTypeMap createMimeTypeMap();
+    static MimeTypeMap mimeMap_;
 };
 
 #endif // FILEAPI_H