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)