end
# smart callbacks
- def on_show
+ def smart_show
@objects.each { |o| o.show }
@alpha_anim ||= AlphaAnimator.new(2, @img, @label)
@alpha_anim.on_finished { @alpha_anim = nil }
end
- def on_hide
+ def smart_hide
@objects.each { |o| o.hide }
@alpha_anim && @alpha_anim.delete
@alpha_anim = nil
end
- def on_delete
+ def smart_delete
@objects.each { |o| o.delete }
@objects.clear
@img = @label = @alpha_anim = nil
end
- def on_move(x, y)
+ def smart_move(x, y)
@objects.each { |o| o.move(x, y) }
@label.center(self)
end
- def on_resize(w, h)
+ def smart_resize(w, h)
@img.resize(w, h)
end
end
super
@bg = Evas::Rectangle.new(evas)
- @bg.set_color(0, 0, 0, 255)
+ @bg.set_color(0, 0, 0, 8)
add_member(@bg)
@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
# smart callbacks
- def on_show
+ def smart_show
@bg.show
end
- def on_hide
+ def smart_hide
@bg.hide
end
- def on_delete
+ def smart_delete
@bg.delete
@bg = nil
end
- def on_move(x, y)
+ def smart_move(x, y)
@bg.move(x, y)
end
- def on_resize(w, h)
+ def smart_resize(w, h)
@bg.resize(w, h)
end
def initialize
super
+ self.has_alpha = true
self.title = "Embrace"
self.borderless = true
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