DataModel.qml 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /**
  2. * Copyright (c) 2012 Nokia Corporation.
  3. */
  4. import QtQuick 1.1
  5. ListModel {
  6. id: dataModel
  7. property ListModel itemsCopy: ListModel{}
  8. function deleteCheckedElements() {
  9. if ( isAnyItemChecked() ) {
  10. updateItemsCopy()
  11. // for avoiding a bug that causes that flickable contentY is set to wrong value
  12. // when removing non visible items, the model is cleared and filled from the begining
  13. clear()
  14. // scan through itemsCopy model and append exact model items only when item is not
  15. // marked for removing
  16. for (var i = 0; i< itemsCopy.count ;i++) {
  17. if (!itemsCopy.get(i).isChecked) {
  18. append({itemId: itemsCopy.get(i).itemId, isChecked: itemsCopy.get(i).isChecked})
  19. }
  20. }
  21. itemsCopy.clear()
  22. }
  23. }
  24. function uncheckAllItems() {
  25. for (var i = 0; i< count ;i++) {
  26. setProperty(i, "isChecked", false);
  27. }
  28. }
  29. function isAnyItemChecked() {
  30. for (var i = 0; i< count ;i++) {
  31. if (get(i).isChecked) {
  32. return true
  33. }
  34. }
  35. return false
  36. }
  37. function replaceItems(from, to) {
  38. move(from, to, 1)
  39. }
  40. function updateItemsCopy() {
  41. for (var i = 0; i< count ;i++) {
  42. itemsCopy.append({itemId: get(i).itemId, isChecked: get(i).isChecked})
  43. }
  44. }
  45. ListElement {itemId: 1; isChecked: false}
  46. ListElement {itemId: 2; isChecked: false}
  47. ListElement {itemId: 3; isChecked: false}
  48. ListElement {itemId: 4; isChecked: false}
  49. ListElement {itemId: 5; isChecked: false}
  50. ListElement {itemId: 6; isChecked: false}
  51. ListElement {itemId: 7; isChecked: false}
  52. ListElement {itemId: 8; isChecked: false}
  53. ListElement {itemId: 9; isChecked: false}
  54. ListElement {itemId: 10; isChecked: false}
  55. ListElement {itemId: 11; isChecked: false}
  56. ListElement {itemId: 12; isChecked: false}
  57. ListElement {itemId: 13; isChecked: false}
  58. ListElement {itemId: 14; isChecked: false}
  59. ListElement {itemId: 15; isChecked: false}
  60. }