SortModel.swift 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /*****************************************************************************
  2. * SortModel.swift
  3. * VLC for iOS
  4. *****************************************************************************
  5. * Copyright (c) 2018 VideoLAN. All rights reserved.
  6. * $Id$
  7. *
  8. * Authors: Carola Nitz <nitz.carola # gmail.com>
  9. *
  10. * Refer to the COPYING file of the official project for license.
  11. *****************************************************************************/
  12. struct SortModel {
  13. var currentSort: VLCMLSortingCriteria
  14. var desc: Bool
  15. var sortingCriteria: [Bool]
  16. init(alpha: Bool = true,
  17. duration: Bool = false,
  18. insertionDate: Bool = false,
  19. lastModificationDate: Bool = false,
  20. releaseDate: Bool = false,
  21. fileSize: Bool = false,
  22. artist: Bool = false,
  23. playCount: Bool = false,
  24. album: Bool = false,
  25. filename: Bool = false,
  26. trackNumber: Bool = false) {
  27. currentSort = .default
  28. desc = false
  29. // The first element of this array should always be VLCMLSortingCriteriaDefault
  30. sortingCriteria = [false,
  31. alpha,
  32. duration,
  33. insertionDate,
  34. lastModificationDate,
  35. releaseDate,
  36. fileSize,
  37. artist,
  38. playCount,
  39. album,
  40. filename,
  41. trackNumber]
  42. }
  43. }
  44. // MARK: - VLCMLSortingCriteria extension
  45. extension VLCMLSortingCriteria: CustomStringConvertible {
  46. init(value: UInt) {
  47. guard let sortingCriteria = VLCMLSortingCriteria(rawValue: value) else {
  48. assertionFailure("VLCMLSortingCriteria: Unable to init with the given value: \(value)")
  49. self = .default
  50. return
  51. }
  52. self = sortingCriteria
  53. }
  54. public var description: String {
  55. switch self {
  56. case .alpha:
  57. return NSLocalizedString("ALPHA", comment: "")
  58. case .duration:
  59. return NSLocalizedString("DURATION", comment: "")
  60. case .insertionDate:
  61. return NSLocalizedString("INSERTION_DATE", comment: "")
  62. case .lastModificationDate:
  63. return NSLocalizedString("LAST_MODIFICATION_DATE", comment: "")
  64. case .releaseDate:
  65. return NSLocalizedString("RELEASE_DATE", comment: "")
  66. case .fileSize:
  67. return NSLocalizedString("FILE_SIZE", comment: "")
  68. case .artist:
  69. return NSLocalizedString("ARTIST", comment: "")
  70. case .playCount:
  71. return NSLocalizedString("PLAY_COUNT", comment: "")
  72. case .album:
  73. return NSLocalizedString("ALBUM", comment: "")
  74. case .filename:
  75. return NSLocalizedString("FILENAME", comment: "")
  76. case .trackNumber:
  77. return NSLocalizedString("TRACK_NUMBER", comment: "")
  78. default:
  79. return NSLocalizedString("DEFAULT", comment: "")
  80. }
  81. }
  82. }