+/*
+ * 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('/');
+ }
+
+ };
}());