From f0546a16346ab91ea114a3463f99a4c7dcd38be5 Mon Sep 17 00:00:00 2001 From: Matthew Grove Date: Thu, 16 May 2024 23:53:21 +0100 Subject: [PATCH] Display play/pause icon on media screens --- images/pause.bmp | Bin 0 -> 7050 bytes images/play.bmp | Bin 0 -> 5706 bytes screens.py | 23 +++++++++++++++++++++-- 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 images/pause.bmp create mode 100644 images/play.bmp diff --git a/images/pause.bmp b/images/pause.bmp new file mode 100644 index 0000000000000000000000000000000000000000..827af27f22e30c1015f8a623f1c4116fcaf66160 GIT binary patch literal 7050 zcmeH_K?=e^6hlY1UAhsxglFicD>q)nttaTE>o{K#8h#0k0l^ff*fc+c_d8zZQ)$;+ z@ArDnud^%1rkDEuFvJPrd0*bYCXLhe_Ibzs+pla(-?d7sk9~Q))9$lP(0t4X3GiQq z!s$Li6***zVhemGw&G_MPWK6_$RSe{Ti`RX6+f$Rx=&C=4w<6Z0-uSk_*sS1eS#`- z$P~pE_)KiY&nlem6I78yrYN?+XJRXUR^fD?po$zaMX?1w6I=1K3a9%7RpgK$qSwf%HS0q*qGt)o5;Y~3d5WA| zFLUIt4md3Dp9btqE~1dRFm43Yh4f7`yzi~cSfO~L#}s6V^~x2s6CJ;w3M(m-c(e2` zndVNo*sxC?Y*yn7F^eL`x_w1mNZ+RTTx$>V6Mb!-XUJO^;V&5_s9xsy-X~8*Rg0!t zwF4Q5j%gky2{ubL8fTi3T=W6O#bf+cH?RwH4^6%PotV!3z?OX;q8;961ML8_nYNeN s2`DkU3%+M9DgXcg literal 0 HcmV?d00001 diff --git a/screens.py b/screens.py index 5991415..48c1938 100644 --- a/screens.py +++ b/screens.py @@ -40,13 +40,32 @@ class MediaScreen(Screen): return if (self.d == {}): self.d = self._updateData() + y_offset = 62 + if (self.d["playing"]): + with open("images/play.bmp", "rb") as file_handle: + reader = BMPFileReader(file_handle) + x_offset = lcd.width//2 - reader.get_width()//2 + for row_i in range(0, reader.get_height()): + row = reader.get_row(row_i) + for col_i, color in enumerate(row): + if (color.red != 0 or color.green != 0 or color.blue != 0): + lcd.pixel(col_i + x_offset, row_i + y_offset, 0xffff) + else: + with open("images/pause.bmp", "rb") as file_handle: + reader = BMPFileReader(file_handle) + x_offset = lcd.width//2 - reader.get_width()//2 + for row_i in range(0, reader.get_height()): + row = reader.get_row(row_i) + for col_i, color in enumerate(row): + if (color.red != 0 or color.green != 0 or color.blue != 0): + lcd.pixel(col_i + x_offset, row_i + y_offset, 0xffff) self.__updateMediaPositionBar(lcd, self.d["media_position"], self.d["media_duration"]) if (self.d["media_duration"] != None): mins = self.d["media_duration"] // 60 secs = self.d["media_duration"] % 60 rght_st(lcd, f"{mins}:{secs}", lcd.width, lcd.height - 16, 1, 180, 180, 180) cntr_st(lcd, lcd.width, self.d["media_title"], lcd.height - 72, 3, 255, 255, 255) - cntr_st(lcd, lcd.width, self.d["media_artist"], lcd.height - 96, 2, 255, 255, 255) + cntr_st(lcd, lcd.width, self.d["media_artist"], lcd.height - 98, 2, 255, 255, 255) lcd.show() def __updateMediaPositionBar(self, lcd, p: int, d: int): @@ -66,7 +85,7 @@ class MediaScreen(Screen): return self._updateData() # if same media is playing (same title and duration), just update the position bar - if (self.d["media_title"] == self.prev["media_title"] and self.d["media_duration"] == self.prev["media_duration"]): + if (self.d["media_title"] == self.prev["media_title"] and self.d["media_duration"] == self.prev["media_duration"] and self.d["playing"] == self.prev["playing"]): self.__updateMediaPositionBar(lcd, self.d["media_position"], self.d["media_duration"]) lcd.show() # otherwise redraw the whole screen