Skip to content

Commit 262b241

Browse files
improve displaywallet
1 parent 5e27c20 commit 262b241

File tree

3 files changed

+119
-85
lines changed

3 files changed

+119
-85
lines changed

internal_filesystem/apps/com.example.draw/assets/draw.py

Lines changed: 3 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import mpos.ui
2+
13
appscreen = lv.screen_active()
24

35
import lvgl as lv
@@ -7,78 +9,6 @@
79

810
DARKPINK = lv.color_hex(0xEC048C)
911

10-
EVENT_MAP = {
11-
lv.EVENT.ALL: "ALL",
12-
lv.EVENT.CANCEL: "CANCEL",
13-
lv.EVENT.CHILD_CHANGED: "CHILD_CHANGED",
14-
lv.EVENT.CHILD_CREATED: "CHILD_CREATED",
15-
lv.EVENT.CHILD_DELETED: "CHILD_DELETED",
16-
lv.EVENT.CLICKED: "CLICKED",
17-
lv.EVENT.COLOR_FORMAT_CHANGED: "COLOR_FORMAT_CHANGED",
18-
lv.EVENT.COVER_CHECK: "COVER_CHECK",
19-
lv.EVENT.CREATE: "CREATE",
20-
lv.EVENT.DEFOCUSED: "DEFOCUSED",
21-
lv.EVENT.DELETE: "DELETE",
22-
lv.EVENT.DRAW_MAIN: "DRAW_MAIN",
23-
lv.EVENT.DRAW_MAIN_BEGIN: "DRAW_MAIN_BEGIN",
24-
lv.EVENT.DRAW_MAIN_END: "DRAW_MAIN_END",
25-
lv.EVENT.DRAW_POST: "DRAW_POST",
26-
lv.EVENT.DRAW_POST_BEGIN: "DRAW_POST_BEGIN",
27-
lv.EVENT.DRAW_POST_END: "DRAW_POST_END",
28-
lv.EVENT.DRAW_TASK_ADDED: "DRAW_TASK_ADDED",
29-
lv.EVENT.FLUSH_FINISH: "FLUSH_FINISH",
30-
lv.EVENT.FLUSH_START: "FLUSH_START",
31-
lv.EVENT.FLUSH_WAIT_FINISH: "FLUSH_WAIT_FINISH",
32-
lv.EVENT.FLUSH_WAIT_START: "FLUSH_WAIT_START",
33-
lv.EVENT.FOCUSED: "FOCUSED",
34-
lv.EVENT.GESTURE: "GESTURE",
35-
lv.EVENT.GET_SELF_SIZE: "GET_SELF_SIZE",
36-
lv.EVENT.HIT_TEST: "HIT_TEST",
37-
lv.EVENT.HOVER_LEAVE: "HOVER_LEAVE",
38-
lv.EVENT.HOVER_OVER: "HOVER_OVER",
39-
lv.EVENT.INDEV_RESET: "INDEV_RESET",
40-
lv.EVENT.INSERT: "INSERT",
41-
lv.EVENT.INVALIDATE_AREA: "INVALIDATE_AREA",
42-
lv.EVENT.KEY: "KEY",
43-
lv.EVENT.LAST: "LAST",
44-
lv.EVENT.LAYOUT_CHANGED: "LAYOUT_CHANGED",
45-
lv.EVENT.LEAVE: "LEAVE",
46-
lv.EVENT.LONG_PRESSED: "LONG_PRESSED",
47-
lv.EVENT.LONG_PRESSED_REPEAT: "LONG_PRESSED_REPEAT",
48-
lv.EVENT.PREPROCESS: "PREPROCESS",
49-
lv.EVENT.PRESSED: "PRESSED",
50-
lv.EVENT.PRESSING: "PRESSING",
51-
lv.EVENT.PRESS_LOST: "PRESS_LOST",
52-
lv.EVENT.READY: "READY",
53-
lv.EVENT.REFRESH: "REFRESH",
54-
lv.EVENT.REFR_EXT_DRAW_SIZE: "REFR_EXT_DRAW_SIZE",
55-
lv.EVENT.REFR_READY: "REFR_READY",
56-
lv.EVENT.REFR_REQUEST: "REFR_REQUEST",
57-
lv.EVENT.REFR_START: "REFR_START",
58-
lv.EVENT.RELEASED: "RELEASED",
59-
lv.EVENT.RENDER_READY: "RENDER_READY",
60-
lv.EVENT.RENDER_START: "RENDER_START",
61-
lv.EVENT.RESOLUTION_CHANGED: "RESOLUTION_CHANGED",
62-
lv.EVENT.ROTARY: "ROTARY",
63-
lv.EVENT.SCREEN_LOADED: "SCREEN_LOADED",
64-
lv.EVENT.SCREEN_LOAD_START: "SCREEN_LOAD_START",
65-
lv.EVENT.SCREEN_UNLOADED: "SCREEN_UNLOADED",
66-
lv.EVENT.SCREEN_UNLOAD_START: "SCREEN_UNLOAD_START",
67-
lv.EVENT.SCROLL: "SCROLL",
68-
lv.EVENT.SCROLL_BEGIN: "SCROLL_BEGIN",
69-
lv.EVENT.SCROLL_END: "SCROLL_END",
70-
lv.EVENT.SCROLL_THROW_BEGIN: "SCROLL_THROW_BEGIN",
71-
lv.EVENT.SHORT_CLICKED: "SHORT_CLICKED",
72-
lv.EVENT.SIZE_CHANGED: "SIZE_CHANGED",
73-
lv.EVENT.STYLE_CHANGED: "STYLE_CHANGED",
74-
lv.EVENT.VALUE_CHANGED: "VALUE_CHANGED",
75-
lv.EVENT.VSYNC: "VSYNC"
76-
}
77-
78-
# Function to translate event code to name
79-
def get_event_name(event_code):
80-
return EVENT_MAP.get(event_code, f"Unknown event {event_code}")
81-
8212
def get_xy():
8313
indev = lv.indev_active()
8414
if indev:
@@ -124,7 +54,7 @@ def touch_cb(event):
12454
# DRAW_POST_END
12555
# GET_SELF_SIZE
12656
if event_code not in [23,25,26,27,28,29,30,49]:
127-
name = get_event_name(event_code)
57+
name = mpos.ui.get_event_name(event_code)
12858
#x, y = get_xy()
12959
#print(f"lv_event_t: code={event_code}, name={name}, x={x}, y={y}") # target={event.get_target()}, user_data={event.get_user_data()}, param={event.get_param()}
13060
if event_code == lv.EVENT.PRESSING: # this is probably enough

internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/displaywallet.py

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import time
22

33
import mpos.config
4+
import mpos.ui
45

56
# screens:
67
appscreen = lv.screen_active()
78
settings_screen = None
89

910

1011

11-
1212
# Settings screen implementation
1313
class SettingsScreen(lv.obj):
1414
def __init__(self):
@@ -66,12 +66,41 @@ def create_ui(self):
6666
)
6767

6868
# Initialize keyboard (hidden initially)
69-
self.keyboard = lv.keyboard(lv.screen_active())
69+
self.keyboard = lv.keyboard(lv.layer_sys())
7070
self.keyboard.set_size(lv.pct(100), lv.pct(40))
7171
self.keyboard.align(lv.ALIGN.BOTTOM_MID, 0, 0)
7272
self.keyboard.add_flag(lv.obj.FLAG.HIDDEN)
73-
73+
self.keyboard.add_event_cb(self.keyboard_cb,lv.EVENT.READY,None)
74+
self.keyboard.add_event_cb(self.keyboard_cb,lv.EVENT.CANCEL,None)
75+
#self.keyboard.add_event_cb(self.keyboard_value_changed_cb,lv.EVENT.VALUE_CHANGED,None)
76+
77+
78+
def hide_keyboard(self):
79+
print("hide_keyboard: hiding keyboard")
80+
self.keyboard.add_flag(lv.obj.FLAG.HIDDEN)
7481

82+
def show_keyboard(self):
83+
# Show keyboard:
84+
print("showing keyboard")
85+
self.keyboard.remove_flag(lv.obj.FLAG.HIDDEN)
86+
self.keyboard.set_textarea(self.textarea)
87+
88+
def keyboard_cb(self, event):
89+
print("keyboard_cb: Keyboard event triggered")
90+
code=event.get_code()
91+
if code==lv.EVENT.READY or code==lv.EVENT.CANCEL:
92+
print("keyboard_cb: READY or CANCEL or RETURN clicked, hiding keyboard")
93+
self.hide_keyboard()
94+
95+
def keyboard_value_changed_cb_unused(self, event):
96+
print("keyboard value changed!")
97+
print(f"event: code={event.get_code()}, target={event.get_target()}, user_data={event.get_user_data()}, param={event.get_param()}") # event: code=32, target=<Blob>, user_data=<Blob>, param=<Blob>
98+
button = self.keyboard.get_selected_button()
99+
text = self.keyboard.get_button_text(button)
100+
#print(f"button {button} and text {text}")
101+
if text == lv.SYMBOL.NEW_LINE:
102+
print("Newline key pressed, hiding keyboard...")
103+
self.hide_keyboard()
75104

76105
def open_edit_popup(self, setting):
77106
# Close existing msgbox and keyboard if open
@@ -82,7 +111,7 @@ def open_edit_popup(self, setting):
82111
self.keyboard.add_flag(lv.obj.FLAG.HIDDEN)
83112

84113
# Create msgbox
85-
self.msgbox = lv.msgbox(self)
114+
self.msgbox = lv.msgbox()
86115
self.msgbox.add_title(setting["title"])
87116
self.msgbox.set_width(lv.pct(80))
88117
self.msgbox.center()
@@ -97,8 +126,10 @@ def open_edit_popup(self, setting):
97126
self.textarea.set_width(lv.pct(100))
98127
self.textarea.set_height(lv.SIZE_CONTENT)
99128
self.textarea.set_text(self.prefs.get_string(setting["key"], ""))
100-
self.textarea.add_event_cb(self.textarea_cb, lv.EVENT.FOCUSED, None)
101-
self.textarea.add_event_cb(self.textarea_cb, lv.EVENT.DEFOCUSED, None)
129+
#self.textarea.add_event_cb(self.show_keyboard, lv.EVENT.CLICKED, None)
130+
#self.textarea.add_event_cb(self.show_keyboard, lv.EVENT.FOCUSED, None)
131+
#self.textarea.add_event_cb(self.hide_keyboard, lv.EVENT.DEFOCUSED, None)
132+
self.textarea.add_event_cb(self.textarea_cb, lv.EVENT.ALL, None)
102133

103134
# Button container
104135
btn_cont = lv.obj(content)
@@ -128,11 +159,12 @@ def open_edit_popup(self, setting):
128159

129160
def textarea_cb(self, event):
130161
code = event.get_code()
131-
if code == lv.EVENT.FOCUSED:
132-
self.keyboard.remove_flag(lv.obj.FLAG.HIDDEN)
133-
self.keyboard.set_textarea(self.textarea)
162+
event_name = mpos.ui.get_event_name(code)
163+
print(f"textarea cb code {code} has event_name {event_name}")
164+
if code == lv.EVENT.CLICKED or code == lv.EVENT.FOCUSED:
165+
self.show_keyboard()
134166
elif code == lv.EVENT.DEFOCUSED:
135-
self.keyboard.add_flag(lv.obj.FLAG.HIDDEN)
167+
self.hide_keyboard()
136168

137169
def save_setting(self, setting):
138170
if self.textarea:
@@ -145,10 +177,10 @@ def save_setting(self, setting):
145177

146178
def close_popup(self, event):
147179
if self.msgbox:
148-
self.msgbox.delete()
180+
self.msgbox.close()
149181
self.msgbox = None
150182
if self.keyboard:
151-
self.keyboard.add_flag(lv.obj.FLAG.HIDDEN)
183+
self.hide_keyboard()
152184

153185

154186

internal_filesystem/lib/mpos/ui.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,3 +309,75 @@ def poweroff_cb(e):
309309

310310

311311

312+
EVENT_MAP = {
313+
lv.EVENT.ALL: "ALL",
314+
lv.EVENT.CANCEL: "CANCEL",
315+
lv.EVENT.CHILD_CHANGED: "CHILD_CHANGED",
316+
lv.EVENT.CHILD_CREATED: "CHILD_CREATED",
317+
lv.EVENT.CHILD_DELETED: "CHILD_DELETED",
318+
lv.EVENT.CLICKED: "CLICKED",
319+
lv.EVENT.COLOR_FORMAT_CHANGED: "COLOR_FORMAT_CHANGED",
320+
lv.EVENT.COVER_CHECK: "COVER_CHECK",
321+
lv.EVENT.CREATE: "CREATE",
322+
lv.EVENT.DEFOCUSED: "DEFOCUSED",
323+
lv.EVENT.DELETE: "DELETE",
324+
lv.EVENT.DRAW_MAIN: "DRAW_MAIN",
325+
lv.EVENT.DRAW_MAIN_BEGIN: "DRAW_MAIN_BEGIN",
326+
lv.EVENT.DRAW_MAIN_END: "DRAW_MAIN_END",
327+
lv.EVENT.DRAW_POST: "DRAW_POST",
328+
lv.EVENT.DRAW_POST_BEGIN: "DRAW_POST_BEGIN",
329+
lv.EVENT.DRAW_POST_END: "DRAW_POST_END",
330+
lv.EVENT.DRAW_TASK_ADDED: "DRAW_TASK_ADDED",
331+
lv.EVENT.FLUSH_FINISH: "FLUSH_FINISH",
332+
lv.EVENT.FLUSH_START: "FLUSH_START",
333+
lv.EVENT.FLUSH_WAIT_FINISH: "FLUSH_WAIT_FINISH",
334+
lv.EVENT.FLUSH_WAIT_START: "FLUSH_WAIT_START",
335+
lv.EVENT.FOCUSED: "FOCUSED",
336+
lv.EVENT.GESTURE: "GESTURE",
337+
lv.EVENT.GET_SELF_SIZE: "GET_SELF_SIZE",
338+
lv.EVENT.HIT_TEST: "HIT_TEST",
339+
lv.EVENT.HOVER_LEAVE: "HOVER_LEAVE",
340+
lv.EVENT.HOVER_OVER: "HOVER_OVER",
341+
lv.EVENT.INDEV_RESET: "INDEV_RESET",
342+
lv.EVENT.INSERT: "INSERT",
343+
lv.EVENT.INVALIDATE_AREA: "INVALIDATE_AREA",
344+
lv.EVENT.KEY: "KEY",
345+
lv.EVENT.LAST: "LAST",
346+
lv.EVENT.LAYOUT_CHANGED: "LAYOUT_CHANGED",
347+
lv.EVENT.LEAVE: "LEAVE",
348+
lv.EVENT.LONG_PRESSED: "LONG_PRESSED",
349+
lv.EVENT.LONG_PRESSED_REPEAT: "LONG_PRESSED_REPEAT",
350+
lv.EVENT.PREPROCESS: "PREPROCESS",
351+
lv.EVENT.PRESSED: "PRESSED",
352+
lv.EVENT.PRESSING: "PRESSING",
353+
lv.EVENT.PRESS_LOST: "PRESS_LOST",
354+
lv.EVENT.READY: "READY",
355+
lv.EVENT.REFRESH: "REFRESH",
356+
lv.EVENT.REFR_EXT_DRAW_SIZE: "REFR_EXT_DRAW_SIZE",
357+
lv.EVENT.REFR_READY: "REFR_READY",
358+
lv.EVENT.REFR_REQUEST: "REFR_REQUEST",
359+
lv.EVENT.REFR_START: "REFR_START",
360+
lv.EVENT.RELEASED: "RELEASED",
361+
lv.EVENT.RENDER_READY: "RENDER_READY",
362+
lv.EVENT.RENDER_START: "RENDER_START",
363+
lv.EVENT.RESOLUTION_CHANGED: "RESOLUTION_CHANGED",
364+
lv.EVENT.ROTARY: "ROTARY",
365+
lv.EVENT.SCREEN_LOADED: "SCREEN_LOADED",
366+
lv.EVENT.SCREEN_LOAD_START: "SCREEN_LOAD_START",
367+
lv.EVENT.SCREEN_UNLOADED: "SCREEN_UNLOADED",
368+
lv.EVENT.SCREEN_UNLOAD_START: "SCREEN_UNLOAD_START",
369+
lv.EVENT.SCROLL: "SCROLL",
370+
lv.EVENT.SCROLL_BEGIN: "SCROLL_BEGIN",
371+
lv.EVENT.SCROLL_END: "SCROLL_END",
372+
lv.EVENT.SCROLL_THROW_BEGIN: "SCROLL_THROW_BEGIN",
373+
lv.EVENT.SHORT_CLICKED: "SHORT_CLICKED",
374+
lv.EVENT.SIZE_CHANGED: "SIZE_CHANGED",
375+
lv.EVENT.STYLE_CHANGED: "STYLE_CHANGED",
376+
lv.EVENT.VALUE_CHANGED: "VALUE_CHANGED",
377+
lv.EVENT.VSYNC: "VSYNC"
378+
}
379+
380+
# Function to translate event code to name
381+
def get_event_name(event_code):
382+
return EVENT_MAP.get(event_code, f"Unknown event {event_code}")
383+

0 commit comments

Comments
 (0)