FileChooser.qml 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import QtQuick 1.0
  2. import Qt.labs.folderlistmodel 1.0
  3. Dialog {
  4. id: fileChooser
  5. property string currentImage: defaultImageFile
  6. property string baseDir
  7. property variant sets: ["","resourceid_524981", "resourceid_524982", "resourceid_524983"]
  8. property int set: 0
  9. property bool firstFile: true
  10. function getFolder() {
  11. var folder = ""
  12. if (fileChooser.set == 0) {
  13. folder = thumbnailDataRoot;
  14. } else {
  15. folder = thumbnailDataRoot+"drm/data/"+fileChooser.sets[fileChooser.set];
  16. }
  17. return folder;
  18. }
  19. Column {
  20. id: setColumn
  21. anchors {
  22. top: parent.top
  23. bottom: parent.bottom
  24. left: parent.left
  25. }
  26. width: 120
  27. SetSelector {
  28. set: 0
  29. width: parent.width
  30. onClicked: fileChooser.set = 0
  31. }
  32. SetSelector {
  33. set: 1
  34. width: parent.width
  35. onClicked: fileChooser.set = 1
  36. }
  37. SetSelector {
  38. set: 2
  39. width: parent.width
  40. onClicked: fileChooser.set = 2
  41. }
  42. SetSelector {
  43. set: 3
  44. width: parent.width
  45. onClicked: fileChooser.set = 3
  46. }
  47. }
  48. GridView {
  49. id: previewGrid
  50. FolderListModel {
  51. id: folderModel
  52. folder: getFolder()
  53. nameFilters: ["*.png"]
  54. showDirs: false
  55. showDotAndDotDot: false
  56. }
  57. interactive: false
  58. model: folderModel
  59. anchors.top: parent.top
  60. anchors.left: setColumn.right
  61. anchors.leftMargin: 10
  62. anchors.bottom: parent.bottom
  63. anchors.right: parent.right
  64. cellWidth: 160
  65. cellHeight: 110
  66. delegate: Thumbnail {
  67. // Sometimes FolderListModel gets confused and includes also folders in the
  68. // model even if we have set showDirs to false. If that happens, set the
  69. // delegate's size to 0,0
  70. width: folderModel.isFolder(index) ? 0 : previewGrid.cellWidth
  71. height: folderModel.isFolder(index) ? 0 : previewGrid.cellHeight
  72. source: folderModel.isFolder(index) ? "" : "image://thumbnail/"+sets[set]+"/"+fileName
  73. onClicked: {
  74. fileChooser.currentImage = sets[set]+"/"+fileName
  75. fileChooser.hide()
  76. }
  77. }
  78. }
  79. Button {
  80. sourceImage: "back"
  81. anchors.right: parent.right
  82. anchors.bottom: parent.bottom
  83. onClicked: fileChooser.hide()
  84. }
  85. }