Class: CSListView
- Inherits:
-
Qt::Object
- Object
- Qt::Object
- CSListView
- Defined in:
- lib/CSListView.rb
Instance Attribute Summary collapse
-
#selectedItems ⇒ Object
readonly
Returns the value of attribute selectedItems.
Instance Method Summary collapse
- #deleteItem(itemObj) ⇒ Object
- #finishUpdate ⇒ Object
-
#initialize(qlv) ⇒ CSListView
constructor
A new instance of CSListView.
- #insertItem(itemObj, *entries) ⇒ Object
- #item(qlvItem) ⇒ Object
- #items ⇒ Object
- #selectedItem ⇒ Object
- #selectedItemList ⇒ Object
- #selectionChanged ⇒ Object
- #setColumnWidth(col, val) ⇒ Object
- #startUpdate ⇒ Object
Constructor Details
#initialize(qlv) ⇒ CSListView
Returns a new instance of CSListView.
20 21 22 23 24 25 26 27 28 |
# File 'lib/CSListView.rb', line 20 def initialize(qlv) super @qlv = qlv @state = nil @selectedItems = {} @itemDict = {} connect(@qlv, SIGNAL('selectionChanged()'), SLOT('selectionChanged()')) end |
Instance Attribute Details
#selectedItems ⇒ Object (readonly)
Returns the value of attribute selectedItems.
18 19 20 |
# File 'lib/CSListView.rb', line 18 def selectedItems @selectedItems end |
Instance Method Details
#deleteItem(itemObj) ⇒ Object
47 48 49 50 51 52 53 54 55 |
# File 'lib/CSListView.rb', line 47 def deleteItem(itemObj) @itemDict.delete_if do |key, value| if value == itemObj key.dispose true end false end end |
#finishUpdate ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/CSListView.rb', line 75 def finishUpdate raise "State has not been saved" unless @state #puts "Duration: #{Time.now() - @start}" GC.enable @selectedItems.delete_if { |key, value| !value } @qlv.verticalScrollBar().setValue(@state[0]) @qlv.horizontalScrollBar().setValue(@state[1]) @qlv.().setUpdatesEnabled(true) @qlv.setUpdatesEnabled(true) @qlv.triggerUpdate() @state = nil end |
#insertItem(itemObj, *entries) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/CSListView.rb', line 35 def insertItem(itemObj, *entries) item = CSListViewItem.new(@qlv) item.insert(entries) # Add item to translation dictonary @itemDict[item] = itemObj if @selectedItems[itemObj] != nil item.setSelected(true) @selectedItems[itemObj] = true end end |
#item(qlvItem) ⇒ Object
88 89 90 |
# File 'lib/CSListView.rb', line 88 def item(qlvItem) @itemDict[qlvItem] end |
#items ⇒ Object
92 93 94 |
# File 'lib/CSListView.rb', line 92 def items @itemDict.values end |
#selectedItem ⇒ Object
100 101 102 103 |
# File 'lib/CSListView.rb', line 100 def selectedItem return nil if @selectedItems.empty? @selectedItems.keys[0] end |
#selectedItemList ⇒ Object
96 97 98 |
# File 'lib/CSListView.rb', line 96 def selectedItemList @selectedItems.keys end |
#selectionChanged ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/CSListView.rb', line 105 def selectionChanged @selectedItems = {} if @qlv.selectionMode == Qt::ListView.Single @selectedItems = { @itemDict[@qlv.selectedItem] => true } else it = Qt::ListViewItemIterator.new(@qlv) while it.current @selectedItems[@itemDict[it.current]] = true if it.current.selected? it += 1 end end end |
#setColumnWidth(col, val) ⇒ Object
30 31 32 33 |
# File 'lib/CSListView.rb', line 30 def setColumnWidth(col, val) @qlv.setColumnWidth(col, val) @qlv.setColumnWidthMode(col, 0) end |
#startUpdate ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/CSListView.rb', line 57 def startUpdate raise "State has not yet been restored" if @state @qlv.setUpdatesEnabled(false) @qlv.().setUpdatesEnabled(false) vPos = @qlv.verticalScrollBar().value() hPos = @qlv.horizontalScrollBar().value() # Mark all selected items as 'false'. Then we clear the list view and add # all items again. The items in the selection lists are then set to # 'true'. In finishUpdate() the items that are still false will be removed # from the selection list as they are no longer in the list. @selectedItems.each { |key, value| @selectedItems[key] = false } @itemDict.clear() @qlv.clear() GC.disable @state = [ vPos, hPos ] #@start = Time.now() end |