avr: add touch handler routine to button module.

This commit is contained in:
Martin Preuss
2025-11-22 14:10:06 +01:00
parent d8058dc711
commit dbba5617c7
2 changed files with 128 additions and 40 deletions

View File

@@ -95,53 +95,47 @@ dlgNetStatsOnHide:
dlgNetStatsOnTouch:
mov r16, r18
mov r17, r18
mov yl, xl
mov yh, xh
; check for press change event
andi r17, (1<<DISPLAY_IFLAGS_CHGPRESS_BIT)
breq dlgNetStatsTouch_ret
; press changed
mov r17, r16
andi r17, (1<<DISPLAY_IFLAGS_PRESSED_BIT)
breq dlgNetStatsTouch_up
; touch came down
ldi zl, LOW(dlgNetstats_CloseBtn*2)
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
bigcall Window_IsPointInRect
brcc dlgNetStatsTouch_ret
lds r16, dlgNetstatsFlags
mov r17, r16
andi r17, (1<<DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT)
brne dlgNetStatsTouch_ret ; already down, jmp
ori r16, (1<<DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT)
sts dlgNetstatsFlags, r16
ldi zl, LOW(dlgNetstats_CloseBtn*2)
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
bigcall Button_Draw_Down
; check close button
push r18
rcall dlgNetStatsCheckCloseButton
pop r18
brcs dlgNetStatsOnTouch_closeActivated
rjmp dlgNetStatsTouch_ret
dlgNetStatsTouch_up:
; touch came up
lds r16, dlgNetstatsFlags
mov r17, r16
andi r17, (1<<DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT)
breq dlgNetStatsTouch_ret ; already up, jmp
cbr r16, (1<<DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT)
sts dlgNetstatsFlags, r16
ldi zl, LOW(dlgNetstats_CloseBtn*2)
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
bigcall Button_Draw_Up
ldi zl, LOW(dlgNetstats_CloseBtn*2)
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
bigcall Window_IsPointInRect
brcc dlgNetStatsTouch_ret
; touch ended over button, TODO
dlgNetStatsOnTouch_closeActivated:
; close activated, TODO
dlgNetStatsTouch_ret:
ret
dlgNetStatsCheckCloseButton:
ldi zl, LOW(dlgNetstats_CloseBtn*2)
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
clr r19
lds r16, dlgNetstatsFlags
sbrc r16, DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT
sbr r19, (1<<BUTTON_STATE_DOWN_BIT)
bigcall Button_HandleTouch
lds r16, dlgNetstatsFlags
cbr r16, (1<<DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT)
sbrc r19, 0
sbr r16, (1<<DLG_NETSTATS_FLAGS_BUTTON_DOWN_BIT)
sts dlgNetstatsFlags, r16
clc
sbrs r19, BUTTON_STATE_ACTIVATED_BIT
rjmp dlgNetStatsCheckCloseButton_ret
; button activated
sec
dlgNetStatsCheckCloseButton_ret:
ret
dlgNetStatsOnTimer:
ldd r16, Y+DIALOG_OFFS_OPTIONS
andi r16, (1<<DIALOG_OPT_ACTIVE_BIT)
@@ -226,10 +220,30 @@ DlgNetStats_Show:
; update num
DLGNETSTATS_PRINTLABEL 5*(2+STYLE_WIN_FONT_HEIGHT), dlgNetstats_lUpdate
; draw horizontal line
ldi r16, 4 ; x
mov r4, r16
clr r5
ldi r16, LOW((DISPLAY_HEIGHT-8)-(STYLE_WIN_FONT_HEIGHT+4))
mov r6, r16 ; y
ldi r16, HIGH((DISPLAY_HEIGHT-8)-(STYLE_WIN_FONT_HEIGHT+4))
mov r7, r16
ldi r16, LOW(DISPLAY_WIDTH-8)
mov r8, r16 ; w
ldi r16, HIGH(DISPLAY_WIDTH-8)
mov r9, r16
ldi r16, LOW(STYLE_WIN_FOREGROUND)
mov r2, r16 ; color
ldi r16, HIGH(STYLE_WIN_FOREGROUND)
mov r3, r16
bigcall Display_DrawHLine
; draw "close" button
ldi zl, LOW(dlgNetstats_CloseBtn*2)
ldi zh, HIGH(dlgNetstats_CloseBtn*2)
bigcall Button_Draw_Up
; show values
rcall DlgNetStats_Update
ret
@@ -272,7 +286,8 @@ dlgNetstats_lClose: .db "Close", 0
dlgNetstats_CloseBtn:
.dw ((DISPLAY_WIDTH-((5*STYLE_WIN_FONT_WIDTH)+4))/2) ; 5 = string length ("close")
; .dw ((DISPLAY_WIDTH-((5*STYLE_WIN_FONT_WIDTH)+4))/2) ; 5 = string length ("close")
.dw ((DISPLAY_WIDTH-4-((5*STYLE_WIN_FONT_WIDTH)+4))) ; 5 = string length ("close"), align right
.dw ((DISPLAY_HEIGHT-4)-(STYLE_WIN_FONT_HEIGHT+4))
.dw (5*STYLE_WIN_FONT_WIDTH)+4 ; 5 = string length ("close")
.dw (STYLE_WIN_FONT_HEIGHT+4)