DrawableUtils.kt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. /*
  2. * Nextcloud Talk application
  3. *
  4. * @author Mario Danic
  5. * Copyright (C) 2017/2018 Mario Danic <mario@lovelyhq.com>
  6. *
  7. * This program is free software: you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation, either version 3 of the License, or
  10. * at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  19. */
  20. package com.nextcloud.talk.utils
  21. import com.nextcloud.talk.R
  22. import java.util.HashMap
  23. object DrawableUtils {
  24. fun getDrawableResourceIdForMimeType(mimetype: String): Int {
  25. var localMimetype = mimetype
  26. val drawableMap = HashMap<String, Int>()
  27. // Initial list of mimetypes was acquired from https://github.com/nextcloud/server/blob/694ba5435b2963e201f6a6d2c775836bde07aaef/core/js/mimetypelist.js
  28. drawableMap["application/coreldraw"] = R.drawable.ic_mimetype_image
  29. drawableMap["application/epub+zip"] = R.drawable.ic_mimetype_text
  30. drawableMap["application/font-sfnt"] = R.drawable.ic_mimetype_image
  31. drawableMap["application/font-woff"] = R.drawable.ic_mimetype_image
  32. drawableMap["application/gpx+xml"] = R.drawable.ic_mimetype_location
  33. drawableMap["application/illustrator"] = R.drawable.ic_mimetype_image
  34. drawableMap["application/javascript"] = R.drawable.ic_mimetype_text_code
  35. drawableMap["application/json"] = R.drawable.ic_mimetype_text_code
  36. drawableMap["application/msaccess"] = R.drawable.ic_mimetype_file
  37. drawableMap["application/msexcel"] = R.drawable.ic_mimetype_x_office_spreadsheet
  38. drawableMap["application/msonenote"] = R.drawable.ic_mimetype_x_office_document
  39. drawableMap["application/mspowerpoint"] = R.drawable.ic_mimetype_x_office_presentation
  40. drawableMap["application/msword"] = R.drawable.ic_mimetype_x_office_document
  41. drawableMap["application/octet-stream"] = R.drawable.ic_mimetype_file
  42. drawableMap["application/postscript"] = R.drawable.ic_mimetype_image
  43. drawableMap["application/rss+xml"] = R.drawable.ic_mimetype_text_code
  44. drawableMap["application/vnd.android.package-archive"] = R.drawable.ic_mimetype_package_x_generic
  45. drawableMap["application/vnd.lotus-wordpro"] = R.drawable.ic_mimetype_x_office_document
  46. drawableMap["application/vnd.garmin.tcx+xml"] = R.drawable.ic_mimetype_location
  47. drawableMap["application/vnd.google-earth.kml+xml"] = R.drawable.ic_mimetype_location
  48. drawableMap["application/vnd.google-earth.kmz"] = R.drawable.ic_mimetype_location
  49. drawableMap["application/vnd.ms-excel"] = R.drawable.ic_mimetype_x_office_spreadsheet
  50. drawableMap["application/vnd.ms-excel.addin.macroEnabled.12"] = R.drawable.ic_mimetype_x_office_spreadsheet
  51. drawableMap["application/vnd.ms-excel.sheet.binary.macroEnabled.12"] = R.drawable.ic_mimetype_x_office_spreadsheet
  52. drawableMap["application/vnd.ms-excel.sheet.macroEnabled.12"] = R.drawable.ic_mimetype_x_office_spreadsheet
  53. drawableMap["application/vnd.ms-excel.template.macroEnabled.12"] = R.drawable.ic_mimetype_x_office_spreadsheet
  54. drawableMap["application/vnd.ms-fontobject"] = R.drawable.ic_mimetype_image
  55. drawableMap["application/vnd.ms-powerpoint"] = R.drawable.ic_mimetype_x_office_presentation
  56. drawableMap["application/vnd.ms-powerpoint.addin.macroEnabled.12"] = R.drawable.ic_mimetype_x_office_presentation
  57. drawableMap["application/vnd.ms-powerpoint.presentation.macroEnabled.12"] = R.drawable.ic_mimetype_x_office_presentation
  58. drawableMap["application/vnd.ms-powerpoint.slideshow.macroEnabled.12"] = R.drawable.ic_mimetype_x_office_presentation
  59. drawableMap["application/vnd.ms-powerpoint.template.macroEnabled.12"] = R.drawable.ic_mimetype_x_office_presentation
  60. drawableMap["application/vnd.ms-visio.drawing.macroEnabled.12"] = R.drawable.ic_mimetype_x_office_document
  61. drawableMap["application/vnd.ms-visio.drawing"] = R.drawable.ic_mimetype_x_office_document
  62. drawableMap["application/vnd.ms-visio.stencil.macroEnabled.12"] = R.drawable.ic_mimetype_x_office_document
  63. drawableMap["application/vnd.ms-visio.stencil"] = R.drawable.ic_mimetype_x_office_document
  64. drawableMap["application/vnd.ms-visio.template.macroEnabled.12"] = R.drawable.ic_mimetype_x_office_document
  65. drawableMap["application/vnd.ms-visio.template"] = R.drawable.ic_mimetype_x_office_document
  66. drawableMap["application/vnd.ms-word.template.macroEnabled.12"] = R.drawable.ic_mimetype_x_office_document
  67. drawableMap["application/vnd.oasis.opendocument.presentation"] = R.drawable.ic_mimetype_x_office_presentation
  68. drawableMap["application/vnd.oasis.opendocument.presentation-template"] = R.drawable.ic_mimetype_x_office_presentation
  69. drawableMap["application/vnd.oasis.opendocument.spreadsheet"] = R.drawable.ic_mimetype_x_office_spreadsheet
  70. drawableMap["application/vnd.oasis.opendocument.spreadsheet-template"] = R.drawable.ic_mimetype_x_office_spreadsheet
  71. drawableMap["application/vnd.oasis.opendocument.text"] = R.drawable.ic_mimetype_x_office_document
  72. drawableMap["application/vnd.oasis.opendocument.text-master"] = R.drawable.ic_mimetype_x_office_document
  73. drawableMap["application/vnd.oasis.opendocument.text-template"] = R.drawable.ic_mimetype_x_office_document
  74. drawableMap["application/vnd.oasis.opendocument.text-web"] = R.drawable.ic_mimetype_x_office_document
  75. drawableMap["application/vnd.openxmlformats-officedocument.presentationml.presentation"] = R.drawable.ic_mimetype_x_office_presentation
  76. drawableMap["application/vnd.openxmlformats-officedocument.presentationml.slideshow"] = R.drawable.ic_mimetype_x_office_presentation
  77. drawableMap["application/vnd.openxmlformats-officedocument.presentationml.template"] = R.drawable.ic_mimetype_x_office_presentation
  78. drawableMap["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"] = R.drawable.ic_mimetype_x_office_spreadsheet
  79. drawableMap["application/vnd.openxmlformats-officedocument.spreadsheetml.template"] = R.drawable.ic_mimetype_x_office_spreadsheet
  80. drawableMap["application/vnd.openxmlformats-officedocument.wordprocessingml.document"] = R.drawable.ic_mimetype_x_office_document
  81. drawableMap["application/vnd.openxmlformats-officedocument.wordprocessingml.template"] = R.drawable.ic_mimetype_x_office_document
  82. drawableMap["application/vnd.visio"] = R.drawable.ic_mimetype_x_office_document
  83. drawableMap["application/vnd.wordperfect"] = R.drawable.ic_mimetype_x_office_document
  84. drawableMap["application/x-7z-compressed"] = R.drawable.ic_mimetype_package_x_generic
  85. drawableMap["application/x-bzip2"] = R.drawable.ic_mimetype_package_x_generic
  86. drawableMap["application/x-cbr"] = R.drawable.ic_mimetype_text
  87. drawableMap["application/x-compressed"] = R.drawable.ic_mimetype_package_x_generic
  88. drawableMap["application/x-dcraw"] = R.drawable.ic_mimetype_image
  89. drawableMap["application/x-deb"] = R.drawable.ic_mimetype_package_x_generic
  90. drawableMap["application/x-fictionbook+xml"] = R.drawable.ic_mimetype_text
  91. drawableMap["application/x-font"] = R.drawable.ic_mimetype_image
  92. drawableMap["application/x-gimp"] = R.drawable.ic_mimetype_image
  93. drawableMap["application/x-gzip"] = R.drawable.ic_mimetype_package_x_generic
  94. drawableMap["application/x-iwork-keynote-sffkey"] = R.drawable.ic_mimetype_x_office_presentation
  95. drawableMap["application/x-iwork-numbers-sffnumbers"] = R.drawable.ic_mimetype_x_office_spreadsheet
  96. drawableMap["application/x-iwork-pages-sffpages"] = R.drawable.ic_mimetype_x_office_document
  97. drawableMap["application/x-mobipocket-ebook"] = R.drawable.ic_mimetype_text
  98. drawableMap["application/x-perl"] = R.drawable.ic_mimetype_text_code
  99. drawableMap["application/x-photoshop"] = R.drawable.ic_mimetype_image
  100. drawableMap["application/x-php"] = R.drawable.ic_mimetype_text_code
  101. drawableMap["application/x-rar-compressed"] = R.drawable.ic_mimetype_package_x_generic
  102. drawableMap["application/x-tar"] = R.drawable.ic_mimetype_package_x_generic
  103. drawableMap["application/x-tex"] = R.drawable.ic_mimetype_text
  104. drawableMap["application/xml"] = R.drawable.ic_mimetype_text_code
  105. drawableMap["application/yaml"] = R.drawable.ic_mimetype_text_code
  106. drawableMap["application/zip"] = R.drawable.ic_mimetype_package_x_generic
  107. drawableMap["database"] = R.drawable.ic_mimetype_file
  108. drawableMap["httpd/unix-directory"] = R.drawable.ic_mimetype_folder
  109. drawableMap["text/css"] = R.drawable.ic_mimetype_text_code
  110. drawableMap["text/csv"] = R.drawable.ic_mimetype_x_office_spreadsheet
  111. drawableMap["text/html"] = R.drawable.ic_mimetype_text_code
  112. drawableMap["text/x-c"] = R.drawable.ic_mimetype_text_code
  113. drawableMap["text/x-c++src"] = R.drawable.ic_mimetype_text_code
  114. drawableMap["text/x-h"] = R.drawable.ic_mimetype_text_code
  115. drawableMap["text/x-java-source"] = R.drawable.ic_mimetype_text_code
  116. drawableMap["text/x-ldif"] = R.drawable.ic_mimetype_text_code
  117. drawableMap["text/x-python"] = R.drawable.ic_mimetype_text_code
  118. drawableMap["text/x-shellscript"] = R.drawable.ic_mimetype_text_code
  119. drawableMap["web"] = R.drawable.ic_mimetype_text_code
  120. drawableMap["application/internet-shortcut"] = R.drawable.ic_mimetype_link
  121. drawableMap["inode/directory"] = R.drawable.ic_mimetype_folder
  122. drawableMap["unknown"] = R.drawable.ic_mimetype_file
  123. drawableMap["application/pdf"] = R.drawable.ic_mimetype_application_pdf
  124. if ("DIR" == localMimetype) {
  125. localMimetype = "inode/directory"
  126. return drawableMap[localMimetype]!!
  127. }
  128. if (drawableMap.containsKey(localMimetype)) {
  129. return drawableMap[localMimetype]!!
  130. }
  131. if (localMimetype.startsWith("image/")) {
  132. return R.drawable.ic_mimetype_image
  133. }
  134. if (localMimetype.startsWith("video/")) {
  135. return R.drawable.ic_mimetype_video
  136. }
  137. if (localMimetype.startsWith("text/")) {
  138. return R.drawable.ic_mimetype_text
  139. }
  140. return if (localMimetype.startsWith("audio")) {
  141. R.drawable.ic_mimetype_audio
  142. } else drawableMap["unknown"]!!
  143. }
  144. }