def initialize thread, hidden_labels=[], index_mode=nil
super()
@thread = thread
@hidden_labels = hidden_labels
@index_mode = index_mode
@dying = false
@layout = SavingHash.new { MessageLayout.new }
@chunk_layout = SavingHash.new { ChunkLayout.new }
earliest, latest = nil, nil
latest_date = nil
altcolor = false
@thread.each do |m, d, p|
next unless m
earliest ||= m
@layout[m].state = initial_state_for m
@layout[m].color = altcolor ? :alternate_patina_color : :message_patina_color
@layout[m].star_color = altcolor ? :alternate_starred_patina_color : :starred_patina_color
@layout[m].orig_new = m.has_label? :read
altcolor = !altcolor
if latest_date.nil? || m.date > latest_date
latest_date = m.date
latest = m
end
end
@wrap = true
@layout[latest].state = :open if @layout[latest].state == :closed
@layout[earliest].state = :detailed if earliest.has_label?(:unread) || @thread.size == 1
@thread.remove_label :unread
Index.save_thread @thread
end