@@ -24,7 +24,7 @@ def onCreate(self):
2424 self .image .center ()
2525 self .image .add_flag (lv .obj .FLAG .CLICKABLE )
2626 #self.image.add_event_cb(self.print_events, lv.EVENT.ALL, None)
27- self .image .add_event_cb (lambda e : self .play (),lv .EVENT .CLICKED ,None )
27+ # self.image.add_event_cb(lambda e: self.toggle_fullscreen (),lv.EVENT.CLICKED,None)
2828 self .label = lv .label (screen )
2929 self .label .set_text ('Loading images from\n {self.imagedir}' )
3030 self .label .align (lv .ALIGN .TOP_MID ,0 ,0 )
@@ -36,8 +36,8 @@ def onCreate(self):
3636 prev_label .set_text (lv .SYMBOL .LEFT )
3737 self .play_button = lv .button (screen )
3838 self .play_button .align (lv .ALIGN .BOTTOM_MID ,0 ,0 )
39- self .play_button .add_flag (lv .obj .FLAG .HIDDEN )
4039 self .play_button .set_style_opa (lv .OPA .TRANSP , 0 )
40+ #self.play_button.add_flag(lv.obj.FLAG.HIDDEN)
4141 #self.play_button.add_event_cb(lambda e: self.unfocus_if_not_fullscreen(),lv.EVENT.FOCUSED,None)
4242 #self.play_button.set_style_shadow_opa(lv.OPA.TRANSP, 0)
4343 #self.play_button.add_event_cb(lambda e: self.play(),lv.EVENT.CLICKED,None)
@@ -67,6 +67,7 @@ def onResume(self, screen):
6767 self .images .append (fullname )
6868 # Begin with one image:
6969 self .show_next_image ()
70+ self .stop_fullscreen ()
7071 #self.image_timer = lv.timer_create(self.show_next_image, 1000, None)
7172
7273 def onStop (self , screen ):
@@ -107,49 +108,60 @@ def show_prev_image(self, event=None):
107108 print (f"show_prev_image showing { name } " )
108109 self .show_image (name )
109110
110- def play (self , event = None ):
111+ def toggle_fullscreen (self , event = None ):
111112 print ("playing..." )
112113 if self .fullscreen :
113- print ("stopping fullscreen" )
114114 self .fullscreen = False
115- mpos .ui .anim .smooth_show (self .label )
116- mpos .ui .anim .smooth_show (self .prev_button )
117- #mpos.ui.anim.smooth_show(self.play_button)
118- self .play_button .add_flag (lv .obj .FLAG .HIDDEN )
119- mpos .ui .anim .smooth_show (self .next_button )
115+ self .stop_fullscreen ()
120116 else :
121- print ("starting fullscreen" )
122117 self .fullscreen = True
123- mpos .ui .anim .smooth_hide (self .label )
124- mpos .ui .anim .smooth_hide (self .prev_button , hide = False )
125- #mpos.ui.anim.smooth_hide(self.play_button, hide=False)
126- self .play_button .remove_flag (lv .obj .FLAG .HIDDEN )
127- mpos .ui .anim .smooth_hide (self .next_button , hide = False )
118+ self .start_fullscreen ()
128119 self .scale_image ()
129120
121+ def stop_fullscreen (self ):
122+ print ("stopping fullscreen" )
123+ mpos .ui .anim .smooth_show (self .label )
124+ mpos .ui .anim .smooth_show (self .prev_button )
125+ #mpos.ui.anim.smooth_show(self.play_button)
126+ self .play_button .add_flag (lv .obj .FLAG .HIDDEN ) # make it not accepting focus
127+ mpos .ui .anim .smooth_show (self .next_button )
128+
129+ def start_fullscreen (self ):
130+ print ("starting fullscreen" )
131+ mpos .ui .anim .smooth_hide (self .label )
132+ mpos .ui .anim .smooth_hide (self .prev_button , hide = False )
133+ #mpos.ui.anim.smooth_hide(self.play_button, hide=False)
134+ self .play_button .remove_flag (lv .obj .FLAG .HIDDEN ) # make it accepting focus
135+ mpos .ui .anim .smooth_hide (self .next_button , hide = False )
136+ self .unfocus () # focus on the invisible center button, not previous or next
137+
130138 def show_prev_image_if_fullscreen (self , event = None ):
131139 if self .fullscreen :
132- self .unfocus (True )
140+ self .unfocus ()
133141 self .show_prev_image ()
134142
135143 def show_next_image_if_fullscreen (self , event = None ):
136144 if self .fullscreen :
137- self .unfocus (False )
145+ self .unfocus ()
138146 self .show_next_image ()
139147
140- def unfocus_if_not_fullscreen (self , event = None ):
141- if not self .fullscreen :
142- self .unfocus (False )
143-
144- def unfocus (self , next ):
148+ def unfocus (self ):
145149 group = lv .group_get_default ()
146- # This doesn't work, and group.focus_obj() is missing, so need to do this hack:
147- #b = group.get_focused()
148- #b.remove_state(lv.STATE.FOCUSED)
149- if next :
150- group .focus_next ()
151- else :
152- group .focus_prev ()
150+ print ("got focus group" )
151+ # group.focus_obj(self.play_button) would be better but appears missing?!
152+ b = group .get_focused ()
153+ print ("got focus button" )
154+ #b.remove_state(lv.STATE.FOCUSED) # this doesn't seem to work to remove focus
155+ if b :
156+ print ("checking which button is focused" )
157+ if b == self .next_button :
158+ print ("next is focused" )
159+ group .focus_prev ()
160+ elif b == self .prev_button :
161+ print ("prev is focused" )
162+ group .focus_next ()
163+ else :
164+ print ("focus isn't on next or previous, leaving it..." )
153165
154166 def show_next_image (self , event = None ):
155167 print ("showing next image..." )
@@ -188,5 +200,6 @@ def scale_image(self):
188200 scale_factor_h = round (lvgl_h * 256 / image_h )
189201 print (f"scale_factors: { scale_factor_w } ,{ scale_factor_h } " )
190202 self .image .set_size (lvgl_w , lvgl_h )
191- self .image .set_scale (max (scale_factor_w ,scale_factor_h ))
203+ #self.image.set_scale(max(scale_factor_w,scale_factor_h)) # fills the entire screen but cuts off borders
204+ self .image .set_scale (min (scale_factor_w ,scale_factor_h ))
192205 print (f"after set_scale, the LVGL image has size: { self .image .get_width ()} x{ self .image .get_height ()} " )
0 commit comments