Skip to content

Commit d2457e5

Browse files
imageview fullscreen works sortof
1 parent 06cdf9a commit d2457e5

File tree

2 files changed

+47
-14
lines changed

2 files changed

+47
-14
lines changed

internal_filesystem/apps/com.micropythonos.imageview/assets/imageview.py

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,24 @@ def onCreate(self):
3030
self.label.align(lv.ALIGN.TOP_MID,0,0)
3131
self.prev_button = lv.button(screen)
3232
self.prev_button.align(lv.ALIGN.BOTTOM_LEFT,0,0)
33+
self.prev_button.add_event_cb(lambda e: self.show_prev_image_if_fullscreen(),lv.EVENT.FOCUSED,None)
3334
self.prev_button.add_event_cb(lambda e: self.show_prev_image(),lv.EVENT.CLICKED,None)
3435
prev_label = lv.label(self.prev_button)
3536
prev_label.set_text(lv.SYMBOL.LEFT)
36-
#self.play_button = lv.button(screen)
37-
#self.play_button.align(lv.ALIGN.BOTTOM_MID,0,0)
37+
self.play_button = lv.button(screen)
38+
self.play_button.align(lv.ALIGN.BOTTOM_MID,0,0)
39+
self.play_button.add_flag(lv.obj.FLAG.HIDDEN)
40+
self.play_button.set_style_opa(lv.OPA.TRANSP, 0)
41+
#self.play_button.add_event_cb(lambda e: self.unfocus_if_not_fullscreen(),lv.EVENT.FOCUSED,None)
42+
#self.play_button.set_style_shadow_opa(lv.OPA.TRANSP, 0)
3843
#self.play_button.add_event_cb(lambda e: self.play(),lv.EVENT.CLICKED,None)
3944
#play_label = lv.label(self.play_button)
4045
#play_label.set_text(lv.SYMBOL.PLAY)
4146
self.next_button = lv.button(screen)
4247
self.next_button.align(lv.ALIGN.BOTTOM_RIGHT,0,0)
48+
#self.next_button.add_event_cb(self.print_events, lv.EVENT.ALL, None)
49+
self.next_button.add_event_cb(lambda e: self.show_next_image_if_fullscreen(),lv.EVENT.FOCUSED,None)
4350
self.next_button.add_event_cb(lambda e: self.show_next_image(),lv.EVENT.CLICKED,None)
44-
self.next_button.add_event_cb(self.print_events, lv.EVENT.ALL, None)
4551
next_label = lv.label(self.next_button)
4652
next_label.set_text(lv.SYMBOL.RIGHT)
4753
#screen.add_event_cb(self.print_events, lv.EVENT.ALL, None)
@@ -109,16 +115,42 @@ def play(self, event=None):
109115
mpos.ui.anim.smooth_show(self.label)
110116
mpos.ui.anim.smooth_show(self.prev_button)
111117
#mpos.ui.anim.smooth_show(self.play_button)
118+
self.play_button.add_flag(lv.obj.FLAG.HIDDEN)
112119
mpos.ui.anim.smooth_show(self.next_button)
113120
else:
114121
print("starting fullscreen")
115122
self.fullscreen = True
116123
mpos.ui.anim.smooth_hide(self.label)
117-
mpos.ui.anim.smooth_hide(self.prev_button)
118-
#mpos.ui.anim.smooth_hide(self.play_button)
119-
mpos.ui.anim.smooth_hide(self.next_button)
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)
120128
self.scale_image()
121129

130+
def show_prev_image_if_fullscreen(self, event=None):
131+
if self.fullscreen:
132+
self.unfocus(True)
133+
self.show_prev_image()
134+
135+
def show_next_image_if_fullscreen(self, event=None):
136+
if self.fullscreen:
137+
self.unfocus(False)
138+
self.show_next_image()
139+
140+
def unfocus_if_not_fullscreen(self, event=None):
141+
if not self.fullscreen:
142+
self.unfocus(False)
143+
144+
def unfocus(self, next):
145+
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()
153+
122154
def show_next_image(self, event=None):
123155
print("showing next image...")
124156
if len(self.images) < 1:

internal_filesystem/lib/mpos/ui/anim.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def show_widget(widget, anim_type="fade", duration=500, delay=0):
6767
anim.start()
6868

6969
@staticmethod
70-
def hide_widget(widget, anim_type="fade", duration=500, delay=0):
70+
def hide_widget(widget, anim_type="fade", duration=500, delay=0, hide=True):
7171
"""Hide a widget with an animation (fade or slide)."""
7272
if anim_type == "fade":
7373
# Create fade-out animation (opacity from 255 to 0)
@@ -80,7 +80,7 @@ def hide_widget(widget, anim_type="fade", duration=500, delay=0):
8080
anim.set_custom_exec_cb(lambda anim, value: widget.set_style_opa(value, 0))
8181
anim.set_path_cb(lv.anim_t.path_ease_in_out)
8282
# Set HIDDEN flag after animation
83-
anim.set_completed_cb(lambda *args: WidgetAnimator.hide_complete_cb(widget))
83+
anim.set_completed_cb(lambda *args: WidgetAnimator.hide_complete_cb(widget, hide=hide))
8484
elif anim_type == "slide_down":
8585
# Create slide-down animation (y from original y to +height)
8686
# Seems to cause scroll bars to be added somehow if done to a keyboard at the bottom of the screen...
@@ -95,7 +95,7 @@ def hide_widget(widget, anim_type="fade", duration=500, delay=0):
9595
anim.set_custom_exec_cb(lambda anim, value: widget.set_y(value))
9696
anim.set_path_cb(lv.anim_t.path_ease_in_out)
9797
# Set HIDDEN flag after animation
98-
anim.set_completed_cb(lambda *args: WidgetAnimator.hide_complete_cb(widget, original_y))
98+
anim.set_completed_cb(lambda *args: WidgetAnimator.hide_complete_cb(widget, original_y, hide))
9999
elif anim_type == "slide_up":
100100
print("hide with slide_up")
101101
# Create slide-up animation (y from original y to -height)
@@ -110,22 +110,23 @@ def hide_widget(widget, anim_type="fade", duration=500, delay=0):
110110
anim.set_custom_exec_cb(lambda anim, value: widget.set_y(value))
111111
anim.set_path_cb(lv.anim_t.path_ease_in_out)
112112
# Set HIDDEN flag after animation
113-
anim.set_completed_cb(lambda *args: WidgetAnimator.hide_complete_cb(widget, original_y))
113+
anim.set_completed_cb(lambda *args: WidgetAnimator.hide_complete_cb(widget, original_y, hide))
114114

115115
# Store and start animation
116116
#self.animations[widget] = anim
117117
anim.start()
118118

119119
@staticmethod
120-
def hide_complete_cb(widget, original_y=None):
120+
def hide_complete_cb(widget, original_y=None, hide=True):
121121
#print("hide_complete_cb")
122-
widget.add_flag(lv.obj.FLAG.HIDDEN)
122+
if hide:
123+
widget.add_flag(lv.obj.FLAG.HIDDEN)
123124
if original_y:
124125
widget.set_y(original_y) # in case it shifted slightly due to rounding etc
125126

126127

127128
def smooth_show(widget):
128129
WidgetAnimator.show_widget(widget, anim_type="fade", duration=500, delay=0)
129130

130-
def smooth_hide(widget):
131-
WidgetAnimator.hide_widget(widget, anim_type="fade", duration=500, delay=0)
131+
def smooth_hide(widget, hide=True):
132+
WidgetAnimator.hide_widget(widget, anim_type="fade", duration=500, delay=0, hide=hide)

0 commit comments

Comments
 (0)