66
77import lvgl as lv
88import machine
9+ from channel_activity import ChannelActivity
10+ from message_input_activity import MessageInputActivity
911from micropython import const
10- from mpos import Activity , MposKeyboard , TaskManager
12+ from mpos import Activity , Intent , TaskManager
1113from mpos .time import localtime
1214
1315try :
@@ -32,29 +34,38 @@ def pformat_mac(mac):
3234
3335class EspNowChat (Activity ):
3436 def onCreate (self ):
35- main_content = lv .obj ()
36- main_content .set_flex_flow (lv .FLEX_FLOW .COLUMN )
37- main_content .set_style_pad_gap (10 , 0 )
38-
39- self .input_textarea = lv .textarea (main_content )
40- self .input_textarea .set_placeholder_text ("Message input..." )
41- self .input_textarea .set_one_line (True )
42- self .input_textarea .set_style_text_font (lv .font_montserrat_16 , lv .PART .MAIN )
43- self .input_textarea .set_width (lv .pct (100 ))
44- self .input_textarea .add_event_cb (self .show_keyboard , lv .EVENT .CLICKED , None )
45-
46- self .keyboard = MposKeyboard (main_content )
47- self .keyboard .set_textarea (self .input_textarea )
48- self .keyboard .add_event_cb (self .keyboard_cb , lv .EVENT .READY , None )
49- self .keyboard .add_flag (lv .obj .FLAG .HIDDEN )
50-
51- self .messages = lv .label (main_content )
52- self .messages .set_style_text_font (lv .font_montserrat_14 , 0 )
37+ screen = lv .obj ()
38+ screen .set_style_pad_all (0 , lv .PART .MAIN )
39+ screen .set_flex_flow (lv .FLEX_FLOW .COLUMN )
40+
41+ messages_row = lv .obj (screen )
42+ messages_row .set_width (lv .pct (100 ))
43+ messages_row .set_height (lv .SIZE_CONTENT )
44+ messages_row .set_style_pad_all (0 , 1 )
45+ messages_row .set_flex_flow (lv .FLEX_FLOW .ROW )
46+
47+ self .messages = lv .label (messages_row )
48+ self .messages .set_style_text_font (lv .font_montserrat_12 , 0 )
49+
50+ self .button_row = lv .obj (screen )
51+ self .button_row .set_width (lv .pct (100 ))
52+ self .button_row .set_height (lv .SIZE_CONTENT )
53+ self .button_row .set_flex_flow (lv .FLEX_FLOW .ROW )
54+
55+ self .write_btn = lv .button (self .button_row )
56+ write_label = lv .label (self .write_btn )
57+ write_label .set_text ("Send Message" )
58+ self .write_btn .add_event_cb (self .open_message_input , lv .EVENT .CLICKED , None )
59+
60+ self .channel_btn = lv .button (self .button_row )
61+ channel_btn_label = lv .label (self .channel_btn )
62+ channel_btn_label .set_text ("Channel" )
63+ self .channel_btn .add_event_cb (self .open_channel_activity , lv .EVENT .CLICKED , None )
5364
5465 # Buffer to store and display the latest 20 messages:
5566 self .messages_buffer = deque ((), 20 )
5667
57- self .setContentView (main_content )
68+ self .setContentView (screen )
5869
5970 if aioespnow and network :
6071 print ("Initialize WLAN interface..." )
@@ -80,21 +91,28 @@ def info(self, text):
8091 hour , minute , second = now [3 ], now [4 ], now [5 ]
8192 message = f"{ hour :02} :{ minute :02} :{ second :02} { text } "
8293 print (message )
83- self .messages_buffer .appendleft (message )
94+ self .messages_buffer .append (message )
8495 self .messages .set_text ("\n " .join (self .messages_buffer ))
85-
86- def keyboard_cb (self , event ):
87- message = self .input_textarea .get_text ()
88- if not message :
89- print ("Ignore empty input" )
90- else :
91- self .input_textarea .set_text ("" )
92- print (f"Create task to send { message = } ..." )
96+ self .button_row .scroll_to_view_recursive (True )
97+
98+ def open_message_input (self , event ):
99+ intent = Intent (activity_class = MessageInputActivity )
100+ self .startActivityForResult (intent , self .on_message_input_result )
101+
102+ def open_channel_activity (self , event ):
103+ intent = Intent (activity_class = ChannelActivity )
104+ self .startActivityForResult (intent , self .on_channel_activity_result )
105+
106+ def on_message_input_result (self , result : dict ):
107+ print (f"on_message_input_result: { result = } " )
108+ if not result :
109+ return
110+ if message := result .get ("data" ):
111+ print (f"Create task to send { message = } " )
93112 TaskManager .create_task (self .send_messages (message ))
94113
95- def show_keyboard (self , event ):
96- print ("Show keyboard" )
97- self .keyboard .remove_flag (lv .obj .FLAG .HIDDEN )
114+ def on_channel_activity_result (self , result : dict ):
115+ print (f"WIP - on_channel_activity_result: { result = } " )
98116
99117 async def send_messages (self , message ):
100118 self .info (f"Sending: { message } ({ self .own_id } )" )
0 commit comments