From ba96b547c5dc9d2832dda9a77e6530fe550631a5 Mon Sep 17 00:00:00 2001 From: ngarnsworthy Date: Sun, 10 May 2026 14:01:53 -0500 Subject: [PATCH 1/4] Add non-binary flag --- src/components/settings/Settings.h | 2 +- src/displayapp/screens/WatchFacePrideFlag.cpp | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/components/settings/Settings.h b/src/components/settings/Settings.h index 9133d3fea1..5ca3ac952e 100644 --- a/src/components/settings/Settings.h +++ b/src/components/settings/Settings.h @@ -39,7 +39,7 @@ namespace Pinetime { }; enum class PTSGaugeStyle : uint8_t { Full, Half, Numeric }; enum class PTSWeather : uint8_t { On, Off }; - enum class PrideFlag : uint8_t { Gay, Trans, Bi, Lesbian }; + enum class PrideFlag : uint8_t { Gay, Trans, Bi, Lesbian, Nonbinary }; enum class DfuAndFsMode : uint8_t { Disabled, Enabled, EnabledTillReboot }; struct PineTimeStyle { diff --git a/src/displayapp/screens/WatchFacePrideFlag.cpp b/src/displayapp/screens/WatchFacePrideFlag.cpp index e029c076f4..e1a43c7919 100644 --- a/src/displayapp/screens/WatchFacePrideFlag.cpp +++ b/src/displayapp/screens/WatchFacePrideFlag.cpp @@ -3,6 +3,8 @@ #include "components/battery/BatteryController.h" #include "components/ble/BleController.h" #include "displayapp/screens/Symbols.h" +#include "drivers/Bma421_C/bma4_defs.h" +#include "lvgl/src/lv_misc/lv_color.h" using namespace Pinetime::Applications::Screens; @@ -15,7 +17,7 @@ namespace { Pinetime::Controllers::Settings::PrideFlag GetNext(Pinetime::Controllers::Settings::PrideFlag prideFlag) { const auto prideFlagAsInt = static_cast(prideFlag); Pinetime::Controllers::Settings::PrideFlag nextFlag; - if (prideFlagAsInt < 3) { + if (prideFlagAsInt < 4) { nextFlag = static_cast(prideFlagAsInt + 1); } else { nextFlag = static_cast(0); @@ -29,7 +31,7 @@ namespace { if (prideFlagAsInt > 0) { prevFlag = static_cast(prideFlagAsInt - 1); } else { - prevFlag = static_cast(3); + prevFlag = static_cast(4); } return prevFlag; } @@ -71,14 +73,17 @@ namespace { constexpr lv_color_t lightGreen = LV_COLOR_MAKE(0x98, 0xe8, 0xc1); constexpr lv_color_t indigo = LV_COLOR_MAKE(0x50, 0x49, 0xcc); constexpr lv_color_t steelBlue = LV_COLOR_MAKE(0x3d, 0x1a, 0x78); + constexpr lv_color_t skyBlue = LV_COLOR_MAKE(0x4a, 0x91, 0xe8); constexpr std::array gayColours {darkGreen, cyan, lightGreen, LV_COLOR_WHITE, lightBlue, indigo, steelBlue}; constexpr std::array transColours {lightBlue, lightPink, LV_COLOR_WHITE, lightPink, lightBlue}; constexpr std::array biColours {hotPink, hotPink, grayPurple, darkBlue, darkBlue}; constexpr std::array lesbianColours {LV_COLOR_RED, orange, lightOrange, LV_COLOR_WHITE, lightPurple, darkPurple, magenta}; + constexpr std::array nonbinaryColours {LV_COLOR_YELLOW, LV_COLOR_WHITE, LV_COLOR_PURPLE, LV_COLOR_BLACK}; constexpr PrideFlagData gayFlagData(gayColours, LV_COLOR_BLACK, LV_COLOR_BLACK, LV_COLOR_WHITE); constexpr PrideFlagData transFlagData(transColours, LV_COLOR_WHITE, LV_COLOR_BLACK, LV_COLOR_WHITE); constexpr PrideFlagData biFlagData(biColours, LV_COLOR_BLACK, LV_COLOR_WHITE, LV_COLOR_BLACK); constexpr PrideFlagData lesbianFlagData(lesbianColours, LV_COLOR_WHITE, LV_COLOR_BLACK, LV_COLOR_WHITE); + constexpr PrideFlagData nonbinaryFlagData(nonbinaryColours, skyBlue, LV_COLOR_BLACK, skyBlue); } WatchFacePrideFlag::WatchFacePrideFlag(Controllers::DateTime& dateTimeController, @@ -333,5 +338,8 @@ void WatchFacePrideFlag::UpdateScreen(const Pinetime::Controllers::Settings::Pri case Pinetime::Controllers::Settings::PrideFlag::Lesbian: UseFlagData(lesbianFlagData); break; + case Pinetime::Controllers::Settings::PrideFlag::Nonbinary: + UseFlagData(nonbinaryFlagData); + break; } } From f20c2c8e8e32f8b374c19724803512587b503594 Mon Sep 17 00:00:00 2001 From: Nicholas Garnsworthy Date: Sun, 10 May 2026 14:47:17 -0500 Subject: [PATCH 2/4] Add pride flag watchface documentation --- doc/gettingStarted/Watchfaces.md | 4 ++++ doc/gettingStarted/Watchfaces/Pride.png | Bin 0 -> 2413 bytes 2 files changed, 4 insertions(+) create mode 100644 doc/gettingStarted/Watchfaces/Pride.png diff --git a/doc/gettingStarted/Watchfaces.md b/doc/gettingStarted/Watchfaces.md index 9edff0bb51..2d888eae0f 100644 --- a/doc/gettingStarted/Watchfaces.md +++ b/doc/gettingStarted/Watchfaces.md @@ -29,3 +29,7 @@ InfiniTime has 6 apps on the `main` branch at the time of writing. ### Casio G7710 ![Casio G7710 face](/doc/gettingStarted/Watchfaces/CasioG7710.png) + +### Pride Flag +![Pride flag face](/doc/gettingStarted/Watchfaces/Pride.png) + - You can long-press on the display to change flags. (Gay, Lesbian, Bi, Trans, Non-binary) \ No newline at end of file diff --git a/doc/gettingStarted/Watchfaces/Pride.png b/doc/gettingStarted/Watchfaces/Pride.png new file mode 100644 index 0000000000000000000000000000000000000000..7e97295cea6c28e2eea095b92bb1d2b1b79069dc GIT binary patch literal 2413 zcmcImc~lbk76!KwCQCET9F-c=%F-;;v{6c}7`4Po9CDcqY*7Rk$}K=G*EDgQ!d90V z(cDmS0Ys74B9)mw8(h&;GIK%DR1`!Wo%jBD=bh>O*B`(8opbNG_uO;tz2EoC^znx2 zfQ`Wb06@p%=cA`pDEacVwNw_0n9KtJKnFaIy86aF6b4Q6uL>V2d0uNBMu zaakjNkZA^^Kjv0^d^(-*wxPPyVW%0;??XlDyVsN85)6B;(f6E_26D*pibkzdpgJQY zbl1sci&Mz~Bj5?X#b`CafT;y_eaJp;+1#xiIZc56>PFX&)Nym?!H)AsjG6W{>SqDZ zOH~vH>TTg~<4(1;pQp5Sj2a{VxoloUd!VeYq*JH7Bo|I4BVH`O%%IjgbNWnmk85hB z=mj4!0{#v3jZUuA35bANJp&`%<4M5t8s7$DUJfO1Bsg7L{PZ3kpLA-)qEdZ}Vj5)9-m}V{R@L%)|93n`R zcv-#;%P5+}jNG?$eKYMg9o0Vo+H%}FVPl!7&8U#NR3?vn zREsjJ%qz|B>S_BudQV#jz9EX3Xvgk!QJf94OKVsv>tuT)YYJBfLNY)StsZ@9Nv7lG z0*h^m4cNrh)d5hYrbeHShwDs}WGx&N;UQuq0kZtr7qk00FQD2HCLP16!(j$}fO8?yjb~YZxJSfD0ndbnUPlfgeodH_ ztzBHQce2FO=FS?Y8y*NqPB!*Q{x*|W*sfc>pmk)EYPl#PvAUEfCJ3TkZHLOH#>|(Z z-n4AqH}JM&%%yW*>_iAi(w$NsT4;zeONR&Wu$yj#&lTi5kn_G{-Uj+S%(V%~LAPHk zGWlTMe#g`1mDbC1{gy-JwXxVJjkeZOyJwc04 za<@EjQ<1-4Qe2gTt~Px!chlaFH9;ePfS8Z3tEoWp=vPs2#_sq)Yq_6)9NT8@WR*ZY zn65OrG${}=@603b9Qx>C6`6xc+vGLDs%sgCxlp}J>?_cS?nPQwd=lP-@XD)Mx4{Gk zHbf($Bgyxd5uT|BpTewpzq##3BZ87J<^Ery)?~z0V8Ih-{d58;tfA(vjH6uB55S@k zH^Y^7H&SyS7}0TYB}^yEm}9AEfe2Cbg>9+K^F5P{IeVNRZL-VO&puQE!EJz1O;*`Lti-{DSD^!l-cQxpK05yx_K+lTOg2jkg_Db)tq|JObq& zX;)EMRTE~!ABX!(RkGgM&-dTV@M>={niS;e{iV@tzWNGaqEyo20efcaJXIqW|HN1@ zJrjm>6X%WvSXNap@~7lX6yv>>n&573%}pwb(n$cBCZtubh!<{WdoG)&vfAwMgw-1N;MSS0MA?1z27m(!q@!)lO|n&6_f0_9 znPqJJ7XFZ&KQDdUrr1q|YrAVY?B6`xFp;FI(Z{WSVw(7|5!i?VJ@QdbR@yP~Uj0;y z*#)P+c69WgBh5=pY9^e|Y)`Amx|+l3?0!^9t4n6xDV+>oY! z^70@JTgGG6`)=s}ZuM01_tKTwA(XAOU?;&{Tz6~QzDE&ZYJhynL{%dW6ux$3bj;0l z#)=IqLq1`8WaLN<$3KK6C+G)!&ygymt(!EE8RMWIj~zP^e;uO<%z24IHQ_RL5!)(< zmEC&5K(E+ay|gooS@Y6OiU@<)V$E`R+~Qh(3fSZoGw*qG!5g|Dn+2z|H_9#@Zru_c z>(=j&L~Csgfq2z?Rygjc59-AP&S{{=oSR}%mL literal 0 HcmV?d00001 From e95f8a31238e5a23a0475d8a6a74204f508c2835 Mon Sep 17 00:00:00 2001 From: Nicholas Garnsworthy Date: Mon, 11 May 2026 03:34:03 +0000 Subject: [PATCH 3/4] Added aro, ace, aroace, and pan flags and updated the text color for nonbinary --- src/components/settings/Settings.h | 2 +- src/displayapp/screens/WatchFacePrideFlag.cpp | 28 +++++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/components/settings/Settings.h b/src/components/settings/Settings.h index 5ca3ac952e..93b484336d 100644 --- a/src/components/settings/Settings.h +++ b/src/components/settings/Settings.h @@ -39,7 +39,7 @@ namespace Pinetime { }; enum class PTSGaugeStyle : uint8_t { Full, Half, Numeric }; enum class PTSWeather : uint8_t { On, Off }; - enum class PrideFlag : uint8_t { Gay, Trans, Bi, Lesbian, Nonbinary }; + enum class PrideFlag : uint8_t { Gay, Trans, Bi, Lesbian, Nonbinary, Ace, Aro, AroAce, Pan }; enum class DfuAndFsMode : uint8_t { Disabled, Enabled, EnabledTillReboot }; struct PineTimeStyle { diff --git a/src/displayapp/screens/WatchFacePrideFlag.cpp b/src/displayapp/screens/WatchFacePrideFlag.cpp index e1a43c7919..510c78057c 100644 --- a/src/displayapp/screens/WatchFacePrideFlag.cpp +++ b/src/displayapp/screens/WatchFacePrideFlag.cpp @@ -17,7 +17,7 @@ namespace { Pinetime::Controllers::Settings::PrideFlag GetNext(Pinetime::Controllers::Settings::PrideFlag prideFlag) { const auto prideFlagAsInt = static_cast(prideFlag); Pinetime::Controllers::Settings::PrideFlag nextFlag; - if (prideFlagAsInt < 4) { + if (prideFlagAsInt < 8) { nextFlag = static_cast(prideFlagAsInt + 1); } else { nextFlag = static_cast(0); @@ -31,7 +31,7 @@ namespace { if (prideFlagAsInt > 0) { prevFlag = static_cast(prideFlagAsInt - 1); } else { - prevFlag = static_cast(4); + prevFlag = static_cast(8); } return prevFlag; } @@ -64,6 +64,8 @@ namespace { constexpr lv_color_t grayPurple = LV_COLOR_MAKE(0x9b, 0x4f, 0x96); constexpr lv_color_t darkBlue = LV_COLOR_MAKE(0x00, 0x38, 0xa8); constexpr lv_color_t orange = LV_COLOR_MAKE(0xef, 0x76, 0x27); + constexpr lv_color_t sunOrange = LV_COLOR_MAKE(0xe2, 0x8c, 0x00); + constexpr lv_color_t brightYellow = LV_COLOR_MAKE(0xec, 0xcd, 0x00); constexpr lv_color_t lightOrange = LV_COLOR_MAKE(0xff, 0x9b, 0x55); constexpr lv_color_t lightPurple = LV_COLOR_MAKE(0xd4, 0x61, 0xa6); constexpr lv_color_t darkPurple = LV_COLOR_MAKE(0xb5, 0x56, 0x90); @@ -79,11 +81,19 @@ namespace { constexpr std::array biColours {hotPink, hotPink, grayPurple, darkBlue, darkBlue}; constexpr std::array lesbianColours {LV_COLOR_RED, orange, lightOrange, LV_COLOR_WHITE, lightPurple, darkPurple, magenta}; constexpr std::array nonbinaryColours {LV_COLOR_YELLOW, LV_COLOR_WHITE, LV_COLOR_PURPLE, LV_COLOR_BLACK}; + constexpr std::array aceColours {LV_COLOR_BLACK, LV_COLOR_GRAY, LV_COLOR_WHITE, LV_COLOR_PURPLE}; + constexpr std::array aroColours {LV_COLOR_GREEN, lightGreen, LV_COLOR_WHITE, LV_COLOR_GRAY, LV_COLOR_BLACK}; + constexpr std::array aroaceColours {sunOrange, brightYellow, LV_COLOR_WHITE, LV_COLOR_MAKE(0x62, 0xae, 0xdc), LV_COLOR_MAKE(0x20, 0x38, 0x56)}; + constexpr std::array panColours {hotPink, LV_COLOR_YELLOW, skyBlue}; constexpr PrideFlagData gayFlagData(gayColours, LV_COLOR_BLACK, LV_COLOR_BLACK, LV_COLOR_WHITE); constexpr PrideFlagData transFlagData(transColours, LV_COLOR_WHITE, LV_COLOR_BLACK, LV_COLOR_WHITE); constexpr PrideFlagData biFlagData(biColours, LV_COLOR_BLACK, LV_COLOR_WHITE, LV_COLOR_BLACK); constexpr PrideFlagData lesbianFlagData(lesbianColours, LV_COLOR_WHITE, LV_COLOR_BLACK, LV_COLOR_WHITE); - constexpr PrideFlagData nonbinaryFlagData(nonbinaryColours, skyBlue, LV_COLOR_BLACK, skyBlue); + constexpr PrideFlagData nonbinaryFlagData(nonbinaryColours, skyBlue, lightPink, skyBlue); + constexpr PrideFlagData aceFlagData(aceColours, LV_COLOR_WHITE, LV_COLOR_BLACK, LV_COLOR_BLACK); + constexpr PrideFlagData aroFlagData(aroColours, LV_COLOR_WHITE, LV_COLOR_BLACK, LV_COLOR_WHITE); + constexpr PrideFlagData aroaceFlagData(aroaceColours, LV_COLOR_WHITE, LV_COLOR_BLACK, LV_COLOR_WHITE); + constexpr PrideFlagData panFlagData(panColours, LV_COLOR_BLACK, LV_COLOR_BLACK, LV_COLOR_BLACK); } WatchFacePrideFlag::WatchFacePrideFlag(Controllers::DateTime& dateTimeController, @@ -341,5 +351,17 @@ void WatchFacePrideFlag::UpdateScreen(const Pinetime::Controllers::Settings::Pri case Pinetime::Controllers::Settings::PrideFlag::Nonbinary: UseFlagData(nonbinaryFlagData); break; + case Pinetime::Controllers::Settings::PrideFlag::Ace: + UseFlagData(aceFlagData); + break; + case Pinetime::Controllers::Settings::PrideFlag::Aro: + UseFlagData(aroFlagData); + break; + case Pinetime::Controllers::Settings::PrideFlag::AroAce: + UseFlagData(aroaceFlagData); + break; + case Pinetime::Controllers::Settings::PrideFlag::Pan: + UseFlagData(panFlagData); + break; } } From f981f1ba712905e5c954a8bb58a82f44faf7ab76 Mon Sep 17 00:00:00 2001 From: Nicholas Garnsworthy Date: Mon, 11 May 2026 03:40:51 +0000 Subject: [PATCH 4/4] Fix formatting --- src/displayapp/screens/WatchFacePrideFlag.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/displayapp/screens/WatchFacePrideFlag.cpp b/src/displayapp/screens/WatchFacePrideFlag.cpp index 510c78057c..9231e4a99a 100644 --- a/src/displayapp/screens/WatchFacePrideFlag.cpp +++ b/src/displayapp/screens/WatchFacePrideFlag.cpp @@ -83,7 +83,11 @@ namespace { constexpr std::array nonbinaryColours {LV_COLOR_YELLOW, LV_COLOR_WHITE, LV_COLOR_PURPLE, LV_COLOR_BLACK}; constexpr std::array aceColours {LV_COLOR_BLACK, LV_COLOR_GRAY, LV_COLOR_WHITE, LV_COLOR_PURPLE}; constexpr std::array aroColours {LV_COLOR_GREEN, lightGreen, LV_COLOR_WHITE, LV_COLOR_GRAY, LV_COLOR_BLACK}; - constexpr std::array aroaceColours {sunOrange, brightYellow, LV_COLOR_WHITE, LV_COLOR_MAKE(0x62, 0xae, 0xdc), LV_COLOR_MAKE(0x20, 0x38, 0x56)}; + constexpr std::array aroaceColours {sunOrange, + brightYellow, + LV_COLOR_WHITE, + LV_COLOR_MAKE(0x62, 0xae, 0xdc), + LV_COLOR_MAKE(0x20, 0x38, 0x56)}; constexpr std::array panColours {hotPink, LV_COLOR_YELLOW, skyBlue}; constexpr PrideFlagData gayFlagData(gayColours, LV_COLOR_BLACK, LV_COLOR_BLACK, LV_COLOR_WHITE); constexpr PrideFlagData transFlagData(transColours, LV_COLOR_WHITE, LV_COLOR_BLACK, LV_COLOR_WHITE);