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 <long...@apache.org> Authored: Tue May 15 11:05:32 2012 -0400 Committer: Longwei Su <long...@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