@add_lock_count = 0
end
+ 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)
Kernel.raise(ContainerFullError) if slots_left.zero?
Kernel.raise(ContainerLockedError) unless @add_lock_count.zero?
end
private
- def add_icon(name)
- @container << MailboxIcon.new(evas, name)
- end
-
def on_timer
return unless @server.nil?
found = evas.find_object(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
+ 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