Updated application sources
[apps/web/sample/FileManager.git] / project / js / app.helpers.js
index 12cd314..86c8f5e 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ *      Copyright 2013  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.1 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://floralicense.org/license/
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
 /*jslint devel: true*/
 /*global $, jQuery */
 
  * @class Helpers
  */
 function Helpers() {
-       'use strict';
+    'use strict';
 }
 
 (function () { // strict mode wrapper
-       'use strict';
-       Helpers.prototype = {
-
-               extensions: {
-                       '.bmp':       {mime:'image/*',            icon:'img.png'},
-                       '.gif':       {mime:'image/*',            icon:'img.png'},
-                       '.jpeg':      {mime:'image/*',            icon:'img.png'},
-                       '.jpg':       {mime:'image/*',            icon:'img.png'},
-                       '.png':       {mime:'image/*',            icon:'img.png'},
-                       '.tiff':      {mime:'image/*',            icon:'img.png'},
-                       '.3ga':       {mime:'audio/*',            icon:'music.png'},
-                       '.aac':       {mime:'audio/*',            icon:'music.png'},
-                       '.ac3':       {mime:'audio/*',            icon:'music.png'},
-                       '.amr':       {mime:'audio/*',            icon:'music.png'},
-                       '.awb':       {mime:'audio/*',            icon:'music.png'},
-                       '.m4a':       {mime:'audio/*',            icon:'music.png'},
-                       '.m4p':       {mime:'audio/*',            icon:'music.png'},
-                       '.m4r':       {mime:'audio/*',            icon:'music.png'},
-                       '.mp3':       {mime:'audio/*',            icon:'music.png'},
-                       '.ogg':       {mime:'audio/*',            icon:'music.png'},
-                       '.wav':       {mime:'audio/*',            icon:'music.png'},
-                       '.wma':       {mime:'audio/*',            icon:'music.png'},
-                       '.3gp':       {mime:'video/*',            icon:'video.png'},
-                       '.avc':       {mime:'video/*',            icon:'video.png'},
-                       '.avi':       {mime:'video/*',            icon:'video.png'},
-                       '.m4v':       {mime:'video/*',            icon:'video.png'},
-                       '.mkv':       {mime:'video/*',            icon:'video.png'},
-                       '.mov':       {mime:'video/*',            icon:'video.png'},
-                       '.mp4':       {mime:'video/*',            icon:'video.png'},
-                       '.mpeg':      {mime:'video/*',            icon:'video.png'},
-                       '.mpg':       {mime:'video/*',            icon:'video.png'},
-                       '.ogv':       {mime:'video/*',            icon:'video.png'},
-                       '.vc1':       {mime:'video/*',            icon:'video.png'},
-                       '.wmv':       {mime:'video/*',            icon:'video.png'},
-                       '.doc':       {mime:'',                   icon:'text.png'},
-                       '.docx':      {mime:'',                   icon:'text.png'},
-                       '.odt':       {mime:'',                   icon:'text.png'},
-                       '.ods':       {mime:'',                   icon:'text.png'},
-                       '.txt':       {mime:'',                   icon:'text.png'},
-                       '.xls':       {mime:'',                   icon:'text.png'},
-                       '.xlsx':      {mime:'',                   icon:'text.png'},
-                       '.vcard':     {mime:'text/vcard',         icon:'text.png'},
-                       '.vcf':       {mime:'text/vcard',         icon:'text.png'},
-                       '.icalendar': {mime:'text/calendar',      icon:'text.png'},
-                       '.ical':      {mime:'text/calendar',      icon:'text.png'},
-                       '.ics':       {mime:'text/calendar',      icon:'text.png'},
-                       '.ifb':       {mime:'text/calendar',      icon:'text.png'},
-                       '.pdf':       {mime:'',                   icon:'pdf.png'},
-                       '.odp':       {mime:'',                   icon:'ppt.png'},
-                       '.ppt':       {mime:'',                   icon:'ppt.png'},
-                       '.wgt':       {mime:'application/widget', icon:'etc.png'}
-               },
-
-               /**
-                * Capitalise the first letter
-                *
-                * @param {string} text
-                * @returns {string}
-                */
-               UCFirst: function Helpers_UCFirst(text) {
-                       return text.charAt(0).toUpperCase() + text.slice(1);
-               },
-
-               /**
-                * @param {string} fileName
-                * @returns {string} file name without extension
-                */
-               getFileName: function Helpers_getFileName(fileName) {
-                       var fileNameLen = fileName.indexOf('.');
-                       if (fileNameLen !== -1) {
-                               fileName = fileName.slice(0, fileNameLen);
-                       }
-                       return fileName;
-               },
-
-               /**
-                * @param {string} fileName
-                * @returns {string} extension for specified file name
-                */
-               getFileExtension: function Helpers_getFileExtension(fileName) {
-                       var splittedFileName = fileName.split('.'),
-                               ext = '';
-
-                       if (splittedFileName.length > 1) {
-                               ext = '.' + splittedFileName.pop();
-                       }
-                       return ext;
-               },
-
-               /**
-                * Return icon filename for the given extension.
-                * For example, for '.mp3' returns 'music.png'
-                *
-                * @param {string} ext
-                * @return {string}
-                */
-               resolveFileIcon: function Helpers_resolveFileIcon(ext) {
-                       ext = ext.toLowerCase();
-                       var info = this.extensions[ext];
-                       return info ? info.icon : 'etc.png';
-               },
-
-               /**
-                * Resolve file extension to MIME type
-                *
-                * @param {string} ext File extension
-                * @returns {string}
-                */
-               resolveMimeType: function Helpers_resolveMimeType(ext) {
-                       ext = ext.toLowerCase();
-                       var info = this.extensions[ext];
-                       return info ? info.mime : '';
-               },
-
-               /**
-                * Returns thumbnail URI for specified file
-                * @param {string} fileName
-                * @param {File} node
-                * @returns {string}
-                */
-               getThumbnailURI: function Helpers_getThumbnailURI(fileName, node) {
-                       var ext = this.getFileExtension(fileName);
-
-                       if (!node.thumbnailURIs) {
-                               return  'images/' + this.resolveFileIcon(ext);
-                       }
-
-                       if (node.thumbnailURIs[0] && $.inArray(ext, ['.mp4', '.jpg', '.png', '.gif'])) {
-                               return node.thumbnailURIs[0];
-                       }
-
-                       return 'images/etc.png';
-               },
-
-               /**
-                * File name automatic number increase for copy files
-                */
-               getCopyFileName: function (sourceName, filesList) {
-                       var ext = this.getFileExtension(sourceName),
-                               fileName = this.getFileName(sourceName),
-                               copyFileName = sourceName,
-                               i = 1;
-
-                       while ($.inArray(copyFileName, filesList) !== -1) {
-                               i += 1;
-                               copyFileName = fileName + '(' + i + ')' + ext;
-                       }
-                       return copyFileName;
-               }
-       };
+    'use strict';
+    Helpers.prototype = {
+
+        extensions: {
+            '.bmp':       'img.png',
+            '.gif':       'img.png',
+            '.jpeg':      'img.png',
+            '.jpg':       'img.png',
+            '.png':       'img.png',
+            '.tiff':      'img.png',
+            '.3ga':       'music.png',
+            '.aac':       'music.png',
+            '.ac3':       'music.png',
+            '.amr':       'music.png',
+            '.awb':       'music.png',
+            '.m4a':       'music.png',
+            '.m4p':       'music.png',
+            '.m4r':       'music.png',
+            '.mp3':       'music.png',
+            '.ogg':       'music.png',
+            '.wav':       'music.png',
+            '.wma':       'music.png',
+            '.3gp':       'video.png',
+            '.avc':       'video.png',
+            '.avi':       'video.png',
+            '.m4v':       'video.png',
+            '.mkv':       'video.png',
+            '.mov':       'video.png',
+            '.mp4':       'video.png',
+            '.mpeg':      'video.png',
+            '.mpg':       'video.png',
+            '.ogv':       'video.png',
+            '.vc1':       'video.png',
+            '.wmv':       'video.png',
+            '.doc':       'text.png',
+            '.docx':      'text.png',
+            '.odt':       'text.png',
+            '.ods':       'text.png',
+            '.txt':       'text.png',
+            '.xls':       'text.png',
+            '.xlsx':      'text.png',
+            '.vcard':     'text.png',
+            '.vcf':       'text.png',
+            '.icalendar': 'text.png',
+            '.ical':      'text.png',
+            '.ics':       'text.png',
+            '.ifb':       'text.png',
+            '.pdf':       'pdf.png',
+            '.odp':       'ppt.png',
+            '.ppt':       'ppt.png',
+            '.wgt':       'etc.png'
+        },
+
+        /**
+         * Capitalise the first letter
+         *
+         * @param {string} text
+         * @returns {string}
+         */
+        UCFirst: function Helpers_UCFirst(text) {
+            return text.charAt(0).toUpperCase() + text.slice(1);
+        },
+
+        /**
+         * @param {string} fileName
+         * @returns {string} file name without extension
+         */
+        getFileName: function Helpers_getFileName(fileName) {
+            var fileNameLen = fileName.lastIndexOf('.');
+            if (fileNameLen !== -1) {
+                fileName = fileName.slice(0, fileNameLen);
+            }
+            return fileName;
+        },
+
+        /**
+         * @param {string} fileName
+         * @returns {string} extension for specified file name
+         */
+        getFileExtension: function Helpers_getFileExtension(fileName) {
+            var splittedFileName = fileName.split('.'),
+                ext = '';
+
+            if (splittedFileName.length > 1) {
+                ext = '.' + splittedFileName.pop();
+            }
+            return ext;
+        },
+
+        /**
+         * Return icon filename for the given extension.
+         * For example, for '.mp3' returns 'music.png'
+         *
+         * @param {string} ext
+         * @return {string}
+         */
+        resolveFileIcon: function Helpers_resolveFileIcon(ext) {
+            ext = ext.toLowerCase();
+            return this.extensions[ext] || 'etc.png';
+        },
+
+        /**
+         * Returns thumbnail URI for specified file
+         * @param {string} fileName
+         * @param {File} node
+         * @returns {string}
+         */
+        getThumbnailURI: function Helpers_getThumbnailURI(fileName, node) {
+            var ext = this.getFileExtension(fileName);
+
+            if (!node.thumbnailURIs) {
+                return 'images/' + this.resolveFileIcon(ext);
+            }
+
+            if (
+                node.thumbnailURIs[0] &&
+                    $.inArray(ext, ['.mp4', '.jpg', '.png', '.gif'])
+            ) {
+                return node.thumbnailURIs[0];
+            }
+
+            return 'images/etc.png';
+        },
+
+        /**
+         * File name automatic number increase for copy files
+         */
+        getCopyFileName: function Helpers_getCopyFileName(
+            sourceName,
+            filesList
+        ) {
+            var i = 1, copyFileName = sourceName,
+                filesNames = filesList.map(function (element) {
+                    return element.name;
+                }),
+                index = filesNames.indexOf(copyFileName),
+                ext = this.getFileExtension(sourceName);
+
+            while (index !== -1) {
+                if (filesList[index].isDirectory) {
+                    copyFileName = sourceName + '(' + i + ')';
+                } else {
+                    copyFileName = this.getFileName(
+                        sourceName
+                    ) + '(' + i + ')' + ext;
+                }
+                i += 1;
+                index = filesNames.indexOf(copyFileName);
+            }
+
+            return copyFileName;
+        },
+
+        /**
+         * Fixes invalid URI returned by API's File::toURI() method.
+         * See issue https://bugs.tizendev.org/jira/browse/N_SE-54639
+         */
+        fixURI: function Helpers_fixURI(invaliduri) {
+            var scheme, address, k;
+            invaliduri = invaliduri.split('://');
+            scheme = invaliduri[0];
+            invaliduri.shift();
+            address = invaliduri.join('://').split('/');
+            for (k = address.length - 1; k >= 0; k -= 1) {
+                address[k] = encodeURIComponent(address[k]);
+            }
+            return scheme + '://' + address.join('/');
+        }
+
+    };
 }());