def initialize(evas, label)
super(evas)
+ self.name = label
+
@slot = nil
@alpha_anim = nil
@img.set_file(ICON_FILE)
@img.set_fill(0, 0, *@img.get_size)
- @label.text = label
+ @label.text = name
@label.set_font("VeraBd", 10)
resize(*@img.get_size)
end
- def label
- @label.text
- end
-
# smart callbacks
def on_show
@objects.each { |o| o.show }
class ContainerFullError < ContainerError; end
class ContainerLockedError < ContainerError; end
- include Enumerable
-
def initialize(evas)
super
@add_lock_count = 0
end
- def each
- @icons.compact.each { |i| yield i }
+ def can_add?
+ !slots_left.zero? && @add_lock_count.zero?
+ end
+
+ def can_delete?
+ @about_to_add.zero? && @add_lock_count.zero?
end
def <<(i)
end
private
- def add_icon(name)
- @container << MailboxIcon.new(evas, name)
- end
-
def on_timer
return unless @server.nil?
lbl = md.captures.first
end
- found = @container.find { |i| i.label == lbl }
-
- begin
- if ev.count.zero?
- unless found.nil?
- #puts "removing icon #{lbl}"
- @container.delete(found)
- else
- #puts "count == 0, but icon not found (#{lbl})"
- end
- elsif found.nil?
- #puts "adding icon #{lbl}"
- add_icon(lbl)
- else
- #puts "count > 0, but already there (#{lbl})"
- end
- rescue Exception => e
- puts e.message
+ found = evas.find_object(lbl)
+
+ if ev.count.zero? && !found.nil? && @container.can_delete?
+ @container.delete(found)
+ elsif !ev.count.zero? && found.nil? && @container.can_add?
+ @container << MailboxIcon.new(evas, lbl)
end
false