acid-drop- Hacking the planet from a LilyGo T-Deck using custom firmware |
git clone git://git.acid.vegas/acid-drop.git |
Log | Files | Refs | Archive | README | LICENSE |
lv_example_table_2.py (2825B)
1 from utime import ticks_ms 2 import gc 3 4 ITEM_CNT = 200 5 6 def draw_event_cb(e): 7 obj = e.get_target() 8 dsc = lv.obj_draw_part_dsc_t.__cast__(e.get_param()) 9 # If the cells are drawn... 10 if dsc.part == lv.PART.ITEMS: 11 chk = obj.has_cell_ctrl(dsc.id, 0, lv.table.CELL_CTRL.CUSTOM_1) 12 13 rect_dsc = lv.draw_rect_dsc_t() 14 rect_dsc.init() 15 16 if chk: 17 rect_dsc.bg_color = lv.theme_get_color_primary(obj) 18 else: 19 rect_dsc.bg_color = lv.palette_lighten(lv.PALETTE.GREY, 2) 20 21 rect_dsc.radius = lv.RADIUS.CIRCLE 22 23 sw_area = lv.area_t() 24 sw_area.x1 = dsc.draw_area.x2 - 50 25 sw_area.x2 = sw_area.x1 + 40 26 sw_area.y1 = dsc.draw_area.y1 + dsc.draw_area.get_height() // 2 - 10 27 sw_area.y2 = sw_area.y1 + 20 28 dsc.draw_ctx.rect(rect_dsc, sw_area) 29 30 rect_dsc.bg_color = lv.color_white() 31 32 if chk: 33 sw_area.x2 -= 2 34 sw_area.x1 = sw_area.x2 - 16 35 else: 36 sw_area.x1 += 2 37 sw_area.x2 = sw_area.x1 + 16 38 sw_area.y1 += 2 39 sw_area.y2 -= 2 40 dsc.draw_ctx.rect(rect_dsc, sw_area) 41 42 def change_event_cb(e): 43 obj = e.get_target() 44 row = lv.C_Pointer() 45 col = lv.C_Pointer() 46 table.get_selected_cell(row, col) 47 # print("row: ",row.uint_val) 48 49 chk = table.has_cell_ctrl(row.uint_val, 0, lv.table.CELL_CTRL.CUSTOM_1) 50 if chk: 51 table.clear_cell_ctrl(row.uint_val, 0, lv.table.CELL_CTRL.CUSTOM_1) 52 else: 53 table.add_cell_ctrl(row.uint_val, 0, lv.table.CELL_CTRL.CUSTOM_1) 54 55 # 56 # A very light-weighted list created from table 57 # 58 59 # Measure memory usage 60 gc.enable() 61 gc.collect() 62 mem_free = gc.mem_free() 63 print("mem_free: ", mem_free) 64 t = ticks_ms() 65 print("ticks: ", t) 66 table = lv.table(lv.scr_act()) 67 68 # Set a smaller height to the table. It'll make it scrollable 69 table.set_size(150, 200) 70 71 table.set_col_width(0, 150) 72 table.set_row_cnt(ITEM_CNT) # Not required but avoids a lot of memory reallocation lv_table_set_set_value 73 table.set_col_cnt(1) 74 75 # Don't make the cell pressed, we will draw something different in the event 76 table.remove_style(None, lv.PART.ITEMS | lv.STATE.PRESSED) 77 78 for i in range(ITEM_CNT): 79 table.set_cell_value(i, 0, "Item " + str(i+1)) 80 81 table.align(lv.ALIGN.CENTER, 0, -20) 82 83 # Add an event callback to apply some custom drawing 84 table.add_event_cb(draw_event_cb, lv.EVENT.DRAW_PART_END, None) 85 table.add_event_cb(change_event_cb, lv.EVENT.VALUE_CHANGED, None) 86 87 gc.collect() 88 mem_used = mem_free - gc.mem_free() 89 elaps = ticks_ms()-t 90 91 label = lv.label(lv.scr_act()) 92 label.set_text(str(ITEM_CNT) + " items were created in " + str(elaps) + " ms\n using " + str(mem_used) + " bytes of memory") 93 #label.set_text(str(ITEM_CNT) + " items were created in " + str(elaps) + " ms") 94 95 label.align(lv.ALIGN.BOTTOM_MID, 0, -10)