diff options
Diffstat (limited to 'js/io')
-rw-r--r-- | js/io/system/chromeapi.js | 408 | ||||
-rwxr-xr-x | js/io/system/coreioapi.js | 48 | ||||
-rw-r--r-- | js/io/system/ninjalibrary.js | 287 | ||||
-rw-r--r-- | js/io/system/ninjalibrary.json | 6 |
4 files changed, 496 insertions, 253 deletions
diff --git a/js/io/system/chromeapi.js b/js/io/system/chromeapi.js index 6bf6b9fe..eee7409d 100644 --- a/js/io/system/chromeapi.js +++ b/js/io/system/chromeapi.js | |||
@@ -7,8 +7,10 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot | |||
7 | /* ///////////////////////////////////////////////////////////////////// | 7 | /* ///////////////////////////////////////////////////////////////////// |
8 | //////////////////////////////////////////////////////////////////////// | 8 | //////////////////////////////////////////////////////////////////////// |
9 | NOTES: | 9 | NOTES: |
10 | |||
10 | The init function starts up the file system API, and a size must be | 11 | The init function starts up the file system API, and a size must be |
11 | set, no unlimited available as of now. | 12 | set, no unlimited available as of now. |
13 | |||
12 | //////////////////////////////////////////////////////////////////////// | 14 | //////////////////////////////////////////////////////////////////////// |
13 | ///////////////////////////////////////////////////////////////////// */ | 15 | ///////////////////////////////////////////////////////////////////// */ |
14 | // | 16 | // |
@@ -31,6 +33,8 @@ exports.ChromeApi = Montage.create(Object.prototype, { | |||
31 | var readyEvent = document.createEvent("CustomEvent"); | 33 | var readyEvent = document.createEvent("CustomEvent"); |
32 | readyEvent.initEvent('ready', true, true); | 34 | readyEvent.initEvent('ready', true, true); |
33 | this.dispatchEvent(readyEvent); | 35 | this.dispatchEvent(readyEvent); |
36 | //Building data of local Ninja Library | ||
37 | this._listNinjaChromeLibrary(); | ||
34 | }.bind(this), function (e) {return false}); //Returns false on error (not able to init) | 38 | }.bind(this), function (e) {return false}); //Returns false on error (not able to init) |
35 | // | 39 | // |
36 | return true; | 40 | return true; |
@@ -59,27 +63,160 @@ exports.ChromeApi = Montage.create(Object.prototype, { | |||
59 | }, | 63 | }, |
60 | //////////////////////////////////////////////////////////////////// | 64 | //////////////////////////////////////////////////////////////////// |
61 | // | 65 | // |
62 | directoryNew: { | 66 | fileNew: { |
67 | enumerable: true, | ||
68 | value: function(filePath, content, callback) { | ||
69 | // | ||
70 | this.fileSystem.root.getFile(filePath, {create: true}, function(f) { | ||
71 | // | ||
72 | f.createWriter(function(writer) { | ||
73 | // | ||
74 | var mime, blob = new window.WebKitBlobBuilder, type = filePath.split('.'); | ||
75 | type = type[type.length-1]; | ||
76 | switch (type) { | ||
77 | case 'bmp': | ||
78 | mime = 'image/bmp'; | ||
79 | break; | ||
80 | case 'gif': | ||
81 | mime = 'image/gif'; | ||
82 | break; | ||
83 | case 'jpeg': | ||
84 | mime = 'image/jpeg'; | ||
85 | break; | ||
86 | case 'jpg': | ||
87 | mime = 'image/jpeg'; | ||
88 | break; | ||
89 | case 'png': | ||
90 | mime = 'image/png'; | ||
91 | break; | ||
92 | case 'rtf': | ||
93 | mime = 'application/rtf'; | ||
94 | break; | ||
95 | case 'tif': | ||
96 | mime = 'image/tiff'; | ||
97 | break; | ||
98 | case 'tiff': | ||
99 | mime = 'image/tiff'; | ||
100 | break; | ||
101 | case 'pdf': | ||
102 | mime = 'application/pdf'; | ||
103 | break; | ||
104 | case 'zip': | ||
105 | mime = 'application/zip'; | ||
106 | break; | ||
107 | case 'svg': | ||
108 | mime = 'image/svg+xml'; | ||
109 | break; | ||
110 | default: | ||
111 | mime = 'text/'+type; | ||
112 | break; | ||
113 | } | ||
114 | // | ||
115 | blob.append(content); | ||
116 | writer.write(blob.getBlob(mime)); | ||
117 | // | ||
118 | if (callback) callback(true); | ||
119 | }, function (e) {if (callback) callback(false)}); | ||
120 | }, function (e) {if (callback) callback(false)}); | ||
121 | } | ||
122 | }, | ||
123 | //////////////////////////////////////////////////////////////////// | ||
124 | // | ||
125 | fileDelete: { | ||
126 | enumerable: true, | ||
127 | value: function(filePath, callback) { | ||
128 | this.fileSystem.root.getFile(filePath, {create: false}, function(file) { | ||
129 | file.remove(function() { | ||
130 | if (callback) callback(true); | ||
131 | }); | ||
132 | }, function (e) {if (callback) callback(false)}); | ||
133 | } | ||
134 | }, | ||
135 | //////////////////////////////////////////////////////////////////// | ||
136 | // | ||
137 | fileContent: { | ||
138 | enumerable: true, | ||
139 | value: function(filePath, callback) { | ||
140 | // | ||
141 | this.fileSystem.root.getFile(filePath, {}, function(f) { | ||
142 | f.file(function(file) { | ||
143 | var reader = new FileReader(); | ||
144 | reader.onloadend = function(e) { | ||
145 | if (callback) { | ||
146 | callback({content: this.result, data: file, file: f, url: f.toURL()}); | ||
147 | } | ||
148 | }; | ||
149 | reader.readAsArrayBuffer(file); | ||
150 | }, function (e) {if (callback) callback(false)}); | ||
151 | }, function (e) {if (callback) callback(false)}); | ||
152 | } | ||
153 | }, | ||
154 | //////////////////////////////////////////////////////////////////// | ||
155 | // | ||
156 | fileCopy: { | ||
63 | enumerable: true, | 157 | enumerable: true, |
64 | value: function() { | 158 | value: function() { |
65 | } | 159 | } |
66 | }, | 160 | }, |
67 | |||
68 | //////////////////////////////////////////////////////////////////// | 161 | //////////////////////////////////////////////////////////////////// |
69 | // | 162 | // |
70 | directoryDelete: {//TODO: Make sure it uses a force delete | 163 | fileRename: { |
71 | enumerable: true, | 164 | enumerable: true, |
72 | value: function() { | 165 | value: function() { |
73 | } | 166 | } |
74 | }, | 167 | }, |
75 | //////////////////////////////////////////////////////////////////// | 168 | //////////////////////////////////////////////////////////////////// |
76 | // | 169 | // |
77 | directoryContents: { | 170 | fileMove: { |
78 | enumerable: true, | 171 | enumerable: true, |
79 | value: function() { | 172 | value: function() { |
80 | } | 173 | } |
81 | }, | 174 | }, |
82 | //////////////////////////////////////////////////////////////////// | 175 | //////////////////////////////////////////////////////////////////// |
176 | //Creating directory from path, callback optional | ||
177 | directoryNew: { | ||
178 | enumerable: true, | ||
179 | value: function(directoryPath, callback) { | ||
180 | //Checking for directory not to already exist | ||
181 | this.fileSystem.root.getDirectory(directoryPath, {}, function(dir) { | ||
182 | if (callback) callback(false); | ||
183 | return; //Directory already exists | ||
184 | }); | ||
185 | //Creating new directory | ||
186 | this.fileSystem.root.getDirectory(directoryPath, {create: true}, function(dir) { | ||
187 | if (callback) callback(true); | ||
188 | }, function (e) {if (callback) callback(false)}); | ||
189 | } | ||
190 | }, | ||
191 | //////////////////////////////////////////////////////////////////// | ||
192 | // | ||
193 | directoryDelete: { | ||
194 | enumerable: true, | ||
195 | value: function(directoryPath, callback) { | ||
196 | // | ||
197 | this.fileSystem.root.getDirectory(directoryPath, {}, function(dir) { | ||
198 | // | ||
199 | dir.removeRecursively(function() { | ||
200 | if (callback) callback(true); | ||
201 | }); | ||
202 | }, function (e) {if (callback) callback(false)}); | ||
203 | } | ||
204 | }, | ||
205 | //////////////////////////////////////////////////////////////////// | ||
206 | //Returns the directory contents to a callback function | ||
207 | directoryContents: { | ||
208 | enumerable: true, | ||
209 | value: function(directory, callback) { | ||
210 | //Creating instance of directory reader | ||
211 | this.fileSystem.directoryReader = directory.createReader(); | ||
212 | //Getting directory contents and sending results to callback | ||
213 | this.fileSystem.directoryReader.readEntries(function(results) { | ||
214 | //Calling callback with results (null if invalid directory) | ||
215 | callback(results); | ||
216 | }, function (e) {callback(null)}); | ||
217 | } | ||
218 | }, | ||
219 | //////////////////////////////////////////////////////////////////// | ||
83 | // | 220 | // |
84 | directoryCopy: { | 221 | directoryCopy: { |
85 | enumerable: true, | 222 | enumerable: true, |
@@ -102,256 +239,31 @@ exports.ChromeApi = Montage.create(Object.prototype, { | |||
102 | }, | 239 | }, |
103 | //////////////////////////////////////////////////////////////////// | 240 | //////////////////////////////////////////////////////////////////// |
104 | // | 241 | // |
105 | getLocalLibrary: { | 242 | _listNinjaChromeLibrary: { |
106 | enumerable: false, | 243 | enumerable: false, |
107 | value: function () { | 244 | value: function () { |
245 | function parseLibrary (contents) { | ||
246 | // | ||
247 | var lib = []; | ||
248 | // | ||
249 | for(var i=0; contents[i]; i++) { | ||
250 | // | ||
251 | if (contents[i].isDirectory) { | ||
252 | lib.push(contents[i].name); | ||
253 | } | ||
254 | } | ||
255 | //Dispatching action ready event | ||
256 | var libraryEvent = document.createEvent("CustomEvent"); | ||
257 | libraryEvent.initEvent('library', true, true); | ||
258 | libraryEvent.ninjaChromeLibrary = lib; | ||
259 | this.dispatchEvent(libra |