diff --git a/taro-ctl.cr b/taro-ctl.cr index 8d9dbea..f863ff3 100644 --- a/taro-ctl.cr +++ b/taro-ctl.cr @@ -155,6 +155,11 @@ module Taro return run_cmd(mailCmd) end + def mark_all_read + mailCmd = "mflag -S :" + return run_cmd(mailCmd) + end + def set_mbox(box : String) @mailbox = box end @@ -209,6 +214,9 @@ loop do when 1 then taro.mblaze.set_mbox(String.new(m.data)) taro.mainWindow.write_msg(2_u8, taro.mblaze.list_mail.to_slice) + when 3 then + taro.mblaze.mark_all_read + taro.mainWindow.write_msg(2_u8, taro.mblaze.list_mail.to_slice) end end end \ No newline at end of file diff --git a/taro-ls.tal b/taro-ls.tal index 5523c80..7ce1104 100644 --- a/taro-ls.tal +++ b/taro-ls.tal @@ -43,7 +43,7 @@ |0000 -@refresh [ &mboxes $1 &list $1 &fg $1 ] +@refresh [ &mboxes $1 &list $1 &fg $1 &btns $1 ] @resizing [ $1 &x $2 &y $2 &dx $2 &dy $2 ] @decoding [ $1 &msg_type $1 &counting $1 &count $2 &processed $2 ] @mboxes [ &bytes $2 &data $2 &len $2 &offset $2 &elem_offset $1 @@ -52,6 +52,7 @@ @list [ &bytes $2 &data $2 &len $2 &offset $2 &elem_offset $1 &top $2 &height $1 &select_index $2 &select_len $2 &sb_len $1 &sb_pos $2 &sb_step $2 ] +@btn_colors [ &read_all $1 ] ( program ) @@ -72,7 +73,9 @@ .Screen/height DEI2 TOP_SECTION BOTTOM_SECTION ADD2 MID_SEPARATOR ADD2 SUB2 #03 SFT2 NIP .list/height STZ TOP_SECTION #03 SFT2 NIP .mboxes/height STZ + #01 .refresh/btns STZ #01 .refresh/fg STZ + #03 .btn_colors/read_all STZ ;on_screen .Screen/vector DEO2 ;on_mouse .Mouse/vector DEO2 @@ -179,6 +182,7 @@ BRK ;mbox_select_handler .mboxes .refresh/mboxes #0000 #00 mouse_event_list ;noop_list_click .list .refresh/list TOP_SECTION MID_SEPARATOR ADD2 #04 mouse_event_list + #01 mouse_event_buttons .resizing LDZ #00 EQU ,&resz_check JCN ( resizing ) @@ -204,6 +208,31 @@ BRK #01 .refresh/fg STZ BRK +@mouse_event_buttons ( numBtns -- ) + + STH + + ( TODO: check if any button is active and only refresh if it is ) + + STHkr #00 &while EQUk ,&end JCN + DUP .btn_colors ADD #03 SWP STZ + INC + ,&while JMP &end POP2 + + .Mouse/x DEI2 #0008 LTH2 ,&done JCN + .Mouse/x DEI2 #0008 SUB2 [ STHkr #00 SWP #40 SFT2 #0001 SUB2 ] GTH2 ,&done JCN + + .Mouse/y DEI2 .Screen/height DEI2 #0020 SUB2 LTH2 ,&done JCN + .Mouse/y DEI2 .Screen/height DEI2 #0010 SUB2 GTH2 ,&done JCN + + #01 [ .Mouse/x DEI2 #0008 SUB2 #04 SFT2 NIP ] .btn_colors ADD STZ + + &done + #01 .refresh/btns STZ + POPr + +JMP2r + @handle_rsz ( -- mousestate ) ( chk_x_rsz ) @@ -387,6 +416,11 @@ JMP2r #00 .refresh/list STZ &no_list + .refresh/btns LDZ #00 EQU ,&no_btns JCN + .btn_colors/read_all LDZ ;all_read_button #0008 .Screen/height DEI2 #0020 SUB2 draw_button_2x2_symmetrical + #00 .refresh/btns STZ + &no_btns + .refresh/fg LDZ #00 EQU ,&no_fg JCN clear_fg draw_resize_handle @@ -448,7 +482,7 @@ JMP2r JMP2r -@shouldnt_draw_word ( list -- flag ) +@shouldnt_draw_word ( list -- bit ) DUP LB_OFFSET LDZ2 DUP2 ( above top of view ) @@ -621,6 +655,26 @@ JMP2r JMP2r +@draw_button_2x2_symmetrical ( color sprite* x* y* -- ) + + .Screen/y DEO2 + .Screen/x DEO2 + + .Screen/addr DEO2 + + STHk .Screen/sprite DEO + .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 + + STHkr #10 ADD .Screen/sprite DEO + .Screen/x DEI2 #0008 SUB2 .Screen/x DEO2 + .Screen/y DEI2 #0008 ADD2 .Screen/y DEO2 + + STHkr #20 ADD .Screen/sprite DEO + .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 + STHr #30 ADD .Screen/sprite DEO + +JMP2r + ( -== util ==- ) @strlen ( addr* -- len* ) @@ -632,6 +686,10 @@ JMP2r JMP2r +@debug_u8 ( byte -- ) + #00 SWP debug_u16 +JMP2r + @debug_u16 ( short* -- ) SWP ,&byte JSR @@ -640,8 +698,6 @@ JMP2r JMP2r - - @debug ( str* -- ) &while @@ -658,6 +714,8 @@ JMP2r @scrollbar [ 0707 0707 0707 0707 ] @blank [ 0000 0000 0000 0000 ] +@all_read_button [ 0001 0111 0904 0278 ] + @font [ 00 00 00 00 00 00 00 00 00 18 18 18 08 00 08 00 00 14 14 00 00 00 00 00 00 24 7e 24 24 7e 24 00 00 10 3c 50 38 14 78 10 00 00 44 08 10 20 44 00 00 18 20 32 2c 24 1a 00 00 18 10 20 00 00 00 00