/* This file contains proprietary software owned by Motorola Mobility, Inc.
No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
*/ /* ///////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// NOTES: The init function starts up the file system API, and a size must be set, no unlimited available as of now. //////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// */ // var Montage = require("montage/core/core").Montage; //////////////////////////////////////////////////////////////////////// // exports.ChromeApi = Montage.create(Object.prototype, { //////////////////////////////////////////////////////////////////// //Needs size in MBs for fileSystem init init: { enumerable: true, value: function(size) { // if (window.webkitRequestFileSystem) { //Current way to init Chrome's fileSystem API window.webkitRequestFileSystem(window.PERSISTENT, size*1024*1024, function (fs) { //Storing reference to instance this.fileSystem = fs; //Dispatching action ready event var readyEvent = document.createEvent("CustomEvent"); readyEvent.initEvent('ready', true, true); this.dispatchEvent(readyEvent); //Building data of local Ninja Library this._listNinjaChromeLibrary(); }.bind(this), function (e) {return false}); //Returns false on error (not able to init) // return true; } else { //No fileSystem API return false; } } }, //////////////////////////////////////////////////////////////////// // _fileSystem: { enumerable: false, value: null }, //////////////////////////////////////////////////////////////////// // fileSystem: { enumerable: false, get: function() { return this._fileSystem; }, set: function(value) { this._fileSystem = value; } }, //////////////////////////////////////////////////////////////////// // fileNew: { enumerable: true, value: function(filePath, content, callback) { // this.fileSystem.root.getFile(filePath, {create: true}, function(f) { // f.createWriter(function(writer) { // var mime, blob = new window.WebKitBlobBuilder, type = filePath.split('.'); type = type[type.length-1]; switch (type) { case 'bmp': mime = 'image/bmp'; break; case 'gif': mime = 'image/gif'; break; case 'jpeg': mime = 'image/jpeg'; break; case 'jpg': mime = 'image/jpeg'; break; case 'png': mime = 'image/png'; break; case 'rtf': mime = 'application/rtf'; break; case 'tif': mime = 'image/tiff'; break; case 'tiff': mime = 'image/tiff'; break; case 'pdf': mime = 'application/pdf'; break; case 'zip': mime = 'application/zip'; break; case 'svg': mime = 'image/svg+xml'; break; default: mime = 'text/'+type; break; } // blob.append(content); writer.write(blob.getBlob(mime)); // if (callback) callback(true); }, function (e) {if (callback) callback(false)}); }, function (e) {if (callback) callback(false)}); } }, //////////////////////////////////////////////////////////////////// // fileDelete: { enumerable: true, value: function(filePath, callback) { this.fileSystem.root.getFile(filePath, {create: false}, function(file) { file.remove(function() { if (callback) callback(true); }); }, function (e) {if (callback) callback(false)}); } }, //////////////////////////////////////////////////////////////////// // fileContent: { enumerable: true, value: function(filePath, callback) { // this.fileSystem.root.getFile(filePath, {}, function(f) { f.file(function(file) { var reader = new FileReader(); reader.onloadend = function(e) { if (callback) { callback({content: this.result, data: file, file: f, url: f.toURL()}); } }; reader.readAsArrayBuffer(file); }, function (e) {if (callback) callback(false)}); }, function (e) {if (callback) callback(false)}); } }, //////////////////////////////////////////////////////////////////// // fileCopy: { enumerable: true, value: function() { } }, //////////////////////////////////////////////////////////////////// // fileRename: { enumerable: true, value: function() { } }, //////////////////////////////////////////////////////////////////// // fileMove: { enumerable: true, value: function() { } }, //////////////////////////////////////////////////////////////////// //Creating directory from path, callback optional directoryNew: { enumerable: true, value: function(directoryPath, callback) { //Checking for directory not to already exist this.fileSystem.root.getDirectory(directoryPath, {}, function(dir) { if (callback) callback(false); return false; //Directory already exists }); //Creating new directory this.fileSystem.root.getDirectory(directoryPath, {create: true}, function(dir) { if (callback) callback(true); }, function (e) {if (callback) callback(false)}); } }, //////////////////////////////////////////////////////////////////// // directoryDelete: { enumerable: true, value: function(directoryPath, callback) { // this.fileSystem.root.getDirectory(directoryPath, {}, function(dir) { // dir.removeRecursively(function() { if (callback) callback(true); }); }, function (e) {if (callback) callback(false)}); } }, //////////////////////////////////////////////////////////////////// //Returns the directory contents to a callback function directoryContents: { enumerable: true, value: function(directory, callback) { //Creating instance of directory reader this.fileSystem.directoryReader = directory.createReader(); //Getting directory contents and sending results to callback this.fileSystem.directoryReader.readEntries(function(results) { //Calling callback with results (null if invalid directory) callback(results); }, function (e) {callback(null)}); } }, //////////////////////////////////////////////////////////////////// // directoryCopy: { enumerable: true, value: function() { } }, //////////////////////////////////////////////////////////////////// // directoryRename: { enumerable: true, value: function() { } }, //////////////////////////////////////////////////////////////////// // directoryMove: { enumerable: true, value: function() { } }, //////////////////////////////////////////////////////////////////// // _listNinjaChromeLibrary: { enumerable: false, value: function () { function parseLibrary (contents) { // var lib = []; // for(var i=0; contents[i]; i++) { // if (contents[i].isDirectory) { lib.push(contents[i].name); } } //Dispatching action ready event var libraryEvent = document.createEvent("CustomEvent"); libraryEvent.initEvent('library', true, true); libraryEvent.ninjaChromeLibrary = lib; this.dispatchEvent(libraryEvent); }; // this.directoryContents(this.fileSystem.root, parseLibrary.bind(this)); } } //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// }); //////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////