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