k.add :search, "Search for messages from particular people", 'S'
end
- def initialize mode = :regular
+ def initialize mode=:regular
@mode = mode
@tags = Tagger.new self
@num = nil
def alias
p = @contacts[curpos] or return
alias_contact p
- regen_text
+ update
end
def lines; @text.length; end
def multi_toggle_tagged threads
@tags.drop_all_tags
- regen_text
+ update
end
def apply_to_tagged; @tags.apply_to_tagged; end
def load_more num=LOAD_MORE_CONTACTS_NUM
@num += num
load
- regen_text
+ update
BufferManager.flash "Added #{num} contacts."
end
def multi_search people
mode = PersonSearchResultsMode.new people
- BufferManager.spawn "personal search results", mode
+ BufferManager.spawn "search for #{people.map { |p| p.name }.join(', ')}", mode
mode.load_threads :num => mode.buffer.content_height
end
def load_in_background
Redwood::reporting_thread do
load
- regen_text
+ update
BufferManager.draw_screen
end
end
protected
+ def update
+ regen_text
+ buffer.mark_dirty if buffer
+ end
+
def update_text_for_line line
@text[line] = text_for_contact @contacts[line]
- buffer.mark_dirty
+ buffer.mark_dirty if buffer
end
def text_for_contact p
def regen_text
@awidth, @nwidth = 0, 0
@contacts.each do |p|
- aalias = ContactManager.alias_for_person(p)
+ aalias = ContactManager.alias_for(p)
@awidth = aalias.length if aalias && aalias.length > @awidth
@nwidth = p.name.length if p.name && p.name.length > @nwidth
end
@text = @contacts.map { |p| text_for_contact p }
- buffer.mark_dirty
end
end