class GroupTableModel
~~~~~~~~~~~~~~~~~~~~~~~~~~
Public Class Methods
new(groups, parent)
click to toggle source
Calls superclass method
# File lib/tmis/interface/models/group_table_model.rb, line 7 def initialize(groups, parent) super() @groups = groups @groups.size @view = parent @SpecialityComboBoxDelegate = SpecialityComboBoxDelegate.new(self) @CourseComboBoxDelegate = CourseComboBoxDelegate.new(self) @view.setItemDelegateForColumn(1, @SpecialityComboBoxDelegate) @view.setItemDelegateForColumn(2, @CourseComboBoxDelegate) end
Public Instance Methods
columnCount(parent)
click to toggle source
# File lib/tmis/interface/models/group_table_model.rb, line 29 def columnCount(parent) 4 end
data(index, role = Qt::DisplayRole)
click to toggle source
# File lib/tmis/interface/models/group_table_model.rb, line 33 def data(index, role = Qt::DisplayRole) group = @groups[index.row] default = Qt::Variant.new case role when Qt::DisplayRole case index.column when 0 group.title when 1 group.speciality.try(:title) when 2 group.course.try(:number) when 3 group.emails.map(&:email).join(', ') else raise "invalid column #{index.column}" end.try(:to_v) || default when Qt::EditRole case index.column when 0 group.title when 1 group.speciality_id when 2 group.course_id when 3 group.emails.map(&:email).join(', ') else raise "invalid column #{index.column}" end.try(:to_v) || default else default end end
flags(index)
click to toggle source
Calls superclass method
# File lib/tmis/interface/models/group_table_model.rb, line 80 def flags(index) Qt::ItemIsEditable | super(index) end
headerData(section, orientation, role = Qt::DisplayRole)
click to toggle source
# File lib/tmis/interface/models/group_table_model.rb, line 68 def headerData(section, orientation, role = Qt::DisplayRole) invalid = Qt::Variant.new return invalid unless role == Qt::DisplayRole v = case orientation when Qt::Horizontal %w(Название Специальность Курс Email)[section] else '' end Qt::Variant.new(v) end
insert_new()
click to toggle source
# File lib/tmis/interface/models/group_table_model.rb, line 112 def insert_new new_group = Group.new @groups.prepend(new_group) (1..2).map{ |i| Subgroup.create(group: new_group, number: i) } emit layoutChanged() end
refresh()
click to toggle source
# File lib/tmis/interface/models/group_table_model.rb, line 18 def refresh @groups = Group.all @SpecialityComboBoxDelegate.setup @CourseComboBoxDelegate.setup emit layoutChanged() end
remove_current()
click to toggle source
# File lib/tmis/interface/models/group_table_model.rb, line 119 def remove_current if @view.currentIndex.valid? @groups[@view.currentIndex.row].try(:destroy) @groups.delete_at(@view.currentIndex.row) emit layoutChanged() @view.currentIndex = createIndex(-1, -1) end end
rowCount(parent)
click to toggle source
# File lib/tmis/interface/models/group_table_model.rb, line 25 def rowCount(parent) @groups.size end
setData(index, variant, role = Qt::EditRole)
click to toggle source
# File lib/tmis/interface/models/group_table_model.rb, line 84 def setData(index, variant, role = Qt::EditRole) if index.valid? and role == Qt::EditRole group = @groups[index.row] case index.column when 0 group.title = variant.toString.force_encoding('UTF-8') when 1 group.speciality_id = variant.toInt when 2 group.course_id = variant.toInt when 3 emails = variant.toString.force_encoding('UTF-8').split(/,\s*/) group.emails.destroy_all emails.each do |email| group.emails.create(email: email) end else raise "invalid column #{index.column}" end group.save p group emit dataChanged(index, index) true else false end end