15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)'use strict'; 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Namespace object for file type utility functions. 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)var FileType = {}; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Description of known file types. 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Pair type-subtype defines order when sorted by file type. 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FileType.types = [ 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Images 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'JPEG', 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.jpe?g$/i}, 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'BMP', 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.bmp$/i}, 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'GIF', 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.gif$/i}, 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'ICO', 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.ico$/i}, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'PNG', 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.png$/i}, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'WebP', 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.webp$/i}, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'TIFF', 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.tiff?$/i}, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Video 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: '3GP', 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.3gp$/i}, 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'AVI', 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.avi$/i}, 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'QuickTime', 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.mov$/i}, 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'MKV', 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pattern: /\.mkv$/i}, 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'MPEG', 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.m(p4|4v|pg|peg|pg4|peg4)$/i}, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'OGG', 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.og(m|v|x)$/i}, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'WebM', 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.webm$/i}, 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Audio 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'AMR', 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pattern: /\.amr$/i}, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'FLAC', 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.flac$/i}, 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'MP3', 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.mp3$/i}, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'MPEG', 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.m4a$/i}, 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'OGG', 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.og(a|g)$/i}, 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'WAV', 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.wav$/i}, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Text 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'text', name: 'PLAIN_TEXT_FILE_TYPE', subtype: 'TXT', 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.txt$/i}, 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Archive 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'archive', name: 'ZIP_ARCHIVE_FILE_TYPE', subtype: 'ZIP', 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.zip$/i}, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'archive', name: 'RAR_ARCHIVE_FILE_TYPE', subtype: 'RAR', 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.rar$/i}, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'archive', name: 'TAR_ARCHIVE_FILE_TYPE', subtype: 'TAR', 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pattern: /\.tar$/i}, 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'archive', name: 'TAR_BZIP2_ARCHIVE_FILE_TYPE', subtype: 'TBZ2', 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pattern: /\.(tar\.bz2|tbz|tbz2)$/i}, 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'archive', name: 'TAR_GZIP_ARCHIVE_FILE_TYPE', subtype: 'TGZ', 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pattern: /\.(tar\.|t)gz$/i}, 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Hosted docs. 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'hosted', icon: 'gdoc', name: 'GDOC_DOCUMENT_FILE_TYPE', 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) subtype: 'doc', pattern: /\.gdoc$/i}, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'hosted', icon: 'gsheet', name: 'GSHEET_DOCUMENT_FILE_TYPE', 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) subtype: 'sheet', pattern: /\.gsheet$/i}, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'hosted', icon: 'gslides', name: 'GSLIDES_DOCUMENT_FILE_TYPE', 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) subtype: 'slides', pattern: /\.gslides$/i}, 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'hosted', icon: 'gdraw', name: 'GDRAW_DOCUMENT_FILE_TYPE', 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) subtype: 'draw', pattern: /\.gdraw$/i}, 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'hosted', icon: 'gtable', name: 'GTABLE_DOCUMENT_FILE_TYPE', 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) subtype: 'table', pattern: /\.gtable$/i}, 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'hosted', icon: 'glink', name: 'GLINK_DOCUMENT_FILE_TYPE', 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) subtype: 'glink', pattern: /\.glink$/i}, 928bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) {type: 'hosted', icon: 'gform', name: 'GFORM_DOCUMENT_FILE_TYPE', 938bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) subtype: 'form', pattern: /\.gform$/i}, 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Others 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'document', icon: 'pdf', name: 'PDF_DOCUMENT_FILE_TYPE', 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) subtype: 'PDF', pattern: /\.pdf$/i}, 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'document', name: 'HTML_DOCUMENT_FILE_TYPE', 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) subtype: 'HTML', pattern: /\.(html?|mht|mhtml)$/i}, 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'document', icon: 'word', name: 'WORD_DOCUMENT_FILE_TYPE', 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) subtype: 'Word', pattern: /\.(doc|docx)$/i}, 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'document', icon: 'ppt', name: 'POWERPOINT_PRESENTATION_FILE_TYPE', 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) subtype: 'PPT', pattern: /\.(ppt|pptx)$/i}, 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {type: 'document', icon: 'excel', name: 'EXCEL_FILE_TYPE', 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) subtype: 'Excel', pattern: /\.(xls|xlsx)$/i} 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)]; 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A special type for directory. 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FileType.DIRECTORY = {name: 'FOLDER', type: '.folder', icon: 'folder'}; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Returns the file path extension for a given file. 115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {Entry} entry Reference to the file. 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @return {string} The extension including a leading '.', or empty string if 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * not found. 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FileType.getExtension = function(entry) { 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // No extension for a directory. 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (entry.isDirectory) 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return ''; 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var extensionStartIndex = entry.name.lastIndexOf('.'); 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (extensionStartIndex === -1 || 1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extensionStartIndex === entry.name.length - 1) { 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return ''; 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return entry.name.substr(extensionStartIndex); 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/** 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Gets the file type object for a given file name (base name). Use getType() 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * if possible, since this method can't recognize directories. 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {string} name Name of the file. 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {Object} The matching file type object or an empty object. 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FileType.getTypeForName = function(name) { 1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var types = FileType.types; 1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (var i = 0; i < types.length; i++) { 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (types[i].pattern.test(name)) 1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return types[i]; 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Unknown file type. 149010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) var extension = util.splitExtension(name)[1]; 1505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (extension === '') { 1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return { name: 'NO_EXTENSION_FILE_TYPE', type: 'UNKNOWN', icon: '' }; 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // subtype is the extension excluding the first dot. 1545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return { name: 'GENERIC_FILE_TYPE', type: 'UNKNOWN', 1555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) subtype: extension.substr(1).toUpperCase(), icon: '' }; 1565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 1575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Gets the file type object for a given file. 1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {Entry} entry Reference to the file. 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return {Object} The matching file type object or an empty object. 1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FileType.getType = function(entry) { 1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (entry.isDirectory) 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return FileType.DIRECTORY; 1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var types = FileType.types; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < types.length; i++) { 1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (types[i].pattern.test(entry.name)) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return types[i]; 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Unknown file type. 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var extension = FileType.getExtension(entry); 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (extension === '') { 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return { name: 'NO_EXTENSION_FILE_TYPE', type: 'UNKNOWN', icon: '' }; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // subtype is the extension excluding the first dot. 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return { name: 'GENERIC_FILE_TYPE', type: 'UNKNOWN', 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) subtype: extension.substr(1).toUpperCase(), icon: '' }; 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {Object} fileType Type object returned by FileType.getType(). 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @return {string} Localized string representation of file type. 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 1875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FileType.typeToString = function(fileType) { 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (fileType.subtype) 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return strf(fileType.name, fileType.subtype); 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) else 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return str(fileType.name); 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 1955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Gets the media type for a given file. 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {Entry} entry Reference to the file. 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {string} The value of 'type' property from one of the elements in 1995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * FileType.types or undefined. 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FileType.getMediaType = function(entry) { 2025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return FileType.getType(entry).type; 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {Entry} entry Reference to the file. 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {boolean} True if audio file. 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FileType.isAudio = function(entry) { 2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return FileType.getMediaType(entry) === 'audio'; 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {Entry} entry Reference to the file. 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {boolean} True if image file. 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FileType.isImage = function(entry) { 2185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return FileType.getMediaType(entry) === 'image'; 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {Entry} entry Reference to the file. 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {boolean} True if video file. 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FileType.isVideo = function(entry) { 2265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return FileType.getMediaType(entry) === 'video'; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Files with more pixels won't have preview. 2325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {Entry} entry Reference to the file. 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {boolean} True if image or video. 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FileType.isImageOrVideo = function(entry) { 2365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var type = FileType.getMediaType(entry); 2375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return type === 'image' || type === 'video'; 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {Entry} entry Reference to the file. 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {boolean} Returns true if the file is hosted. 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FileType.isHosted = function(entry) { 2455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return FileType.getType(entry).type === 'hosted'; 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {Entry} entry Reference to the file. 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {string} Returns string that represents the file icon. 2515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * It refers to a file 'images/filetype_' + icon + '.png'. 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)FileType.getIcon = function(entry) { 2545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var fileType = FileType.getType(entry); 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return fileType.icon || fileType.type || 'unknown'; 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 258