Class: SubgroupTableModel

Inherits:
Qt::AbstractTableModel
  • Object
show all
Defined in:
lib/tmis/interface/models/subgroup_table_model.rb

Overview

~~~~~~~~~~~~~~~~~~~~~~~~~~

Instance Method Summary collapse

Constructor Details

#initialize(subgroups, parent) ⇒ SubgroupTableModel

Returns a new instance of SubgroupTableModel.



7
8
9
10
11
12
13
# File 'lib/tmis/interface/models/subgroup_table_model.rb', line 7

def initialize(subgroups, parent)
  super()
  @subgroups = subgroups
  @view = parent
  @GroupComboBoxDelegate = GroupComboBoxDelegate.new(self)
  @view.setItemDelegateForColumn(1, @GroupComboBoxDelegate)
end

Instance Method Details

#columnCount(parent) ⇒ Object



25
26
27
# File 'lib/tmis/interface/models/subgroup_table_model.rb', line 25

def columnCount(parent)
  2
end

#data(index, role = Qt::DisplayRole) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/tmis/interface/models/subgroup_table_model.rb', line 29

def data(index, role = Qt::DisplayRole)
  subgroup = @subgroups[index.row]
  default = Qt::Variant.new
  case role
  when Qt::DisplayRole
    case index.column
    when 0
      subgroup.number
    when 1
      subgroup.group.try(:title)
    else
      raise "invalid column #{index.column}"
    end.try(:to_v) || default
  when Qt::EditRole
    case index.column
    when 0
      subgroup.number
    when 1
      subgroup.group_id
    else
      raise "invalid column #{index.column}"
    end.try(:to_v) || default
  else
    default
  end
end

#flags(index) ⇒ Object



68
69
70
# File 'lib/tmis/interface/models/subgroup_table_model.rb', line 68

def flags(index)
  Qt::ItemIsEditable | super(index)
end

#headerData(section, orientation, role = Qt::DisplayRole) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
# File 'lib/tmis/interface/models/subgroup_table_model.rb', line 56

def headerData(section, orientation, role = Qt::DisplayRole)
  invalid = Qt::Variant.new
  return invalid unless role == Qt::DisplayRole
  v = case orientation
      when Qt::Horizontal
        %w(Номер Группа)[section]
      else
        ''
      end
  Qt::Variant.new(v)
end

#insert_newObject



91
92
93
94
# File 'lib/tmis/interface/models/subgroup_table_model.rb', line 91

def insert_new
  @subgroups.prepend(Subgroup.new)
  emit layoutChanged()
end

#refreshObject



15
16
17
18
19
# File 'lib/tmis/interface/models/subgroup_table_model.rb', line 15

def refresh
  @subgroups = Subgroup.all
  @GroupComboBoxDelegate.setup
  emit layoutChanged()
end

#remove_currentObject



96
97
98
99
100
101
102
103
# File 'lib/tmis/interface/models/subgroup_table_model.rb', line 96

def remove_current
  if @view.currentIndex.valid?
    @subgroups[@view.currentIndex.row].try(:destroy)
    @subgroups.delete_at(@view.currentIndex.row)
    emit layoutChanged()
    @view.currentIndex = createIndex(-1, -1)
  end
end

#rowCount(parent) ⇒ Object



21
22
23
# File 'lib/tmis/interface/models/subgroup_table_model.rb', line 21

def rowCount(parent)
  @subgroups.size
end

#setData(index, variant, role = Qt::EditRole) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/tmis/interface/models/subgroup_table_model.rb', line 72

def setData(index, variant, role = Qt::EditRole)
  if index.valid? and role == Qt::EditRole
    subgroup = @subgroups[index.row]
    case index.column
    when 0
      subgroup.number = variant.toInt
    when 1
      subgroup.group_id = variant.toInt
    else
      raise "invalid column #{index.column}"
    end
    subgroup.save
    emit dataChanged(index, index)
    true
  else
    false
  end
end