InfiniTime
InfiniTime copied to clipboard
Infineat Watchface
This PR implements the new watchface Infineat.
For anyone interested in trying it, it is already available here.
Note: the linked version differs slightly from the one in this PR, since it adds extended Latin support.
This PR also implements a handy CheckboxList
(check the watchface list in the above demo). I kept this class as general as possible, along the lines of Tile
or ApplicationList
, so that it can be used for other purposes as well.
This watchface could be considered "heavy" in terms of flash storage, since it adds two new fonts and an image. However, I've tried to keep things at their absolute minimum. One of the fonts only includes numbers (Bebas Neue, the main font used for the time) and the other (Teko) includes the characters [A-Za-z0-9]. The range of the letters in the Teko font could even be reduced, since they are only used for the days of the week ("Mon", "Tue", "Wed", etc).
The image is the PINE64 logo and has a size of 23x31px. I tried to make its background transparent so that it could be used in other places, but I didn't get it to render correctly. So in the end the background is white. If someone wants to try to make it transparent, I can provide the original SVG.
For a comparison, the latest build in develop
:
Memory region Used Size Region Size %age Used
FLASH: 403028 B 480 KB 82.00%
RAM: 54872 B 64 KB 83.73%
And the Infineat build:
Memory region Used Size Region Size %age Used
FLASH: 416464 B 480 KB 84.73%
RAM: 54984 B 64 KB 83.90%
Neat
Everytime a pick the Inifineat watchface my PineTime reboots.
@ytsejam1138 mmh interesting... How did you install it exactly? Also, just to check, you got it from here right? https://github.com/dmlls/InfiniTime/releases/tag/1.8.0-infineat
Anyone else having the same issue?
@ytsejam1138 mmh interesting... How did you install it exactly? Also, just to check, you got it from here right? https://github.com/dmlls/InfiniTime/releases/tag/1.8.0-infineat
Anyone else having the same issue?
I installed it with the latest Gadgetbridge. And yes I downloaded it from GitHub from the link above.
@ytsejam1138 I just tried upgrading from InfiniTime 1.8.0 with Gadgetbridge and everything works fine. Maybe you can try with nRF Connect? And maybe also try downloading the image again, just in case.
If that doesn't work, please open an issue on my repo, we'll continue the conversation there. Let's keep this space for the PR itself :)
open issue for the bootloop here: https://github.com/dmlls/InfiniTime/issues/1
I tried to install the image and it broke my watch First I couldn't change brightness, so I restored and brightness still didn't work, so I downgraded to 1.7.1 and now Bluetooth stopped connecting
I tried to install the image and it broke my watch First I couldn't change brightness, so I restored and brightness still didn't work, so I downgraded to 1.7.1 and now Bluetooth stopped connecting
OK I restarted my watch wich restored back to 1.8.0 and now everything works again
@dmlls I've got a quote from @kieranc
[M]
When is it required/recommended to increase the version number in the settings-class? Every time a new setting is added? Or only if a setting is changed/removed? [T] <KieranC> when a new setting is added afaik [T] <KieranC> when i added new settings without incrementing it, the initial values were initialised randomly [T] <KieranC> so if you increment it, on boot all settings will have their values initialised from... settings.h values? but if it's not incremented they won't
So I think incrementing the version number in Settings.h
may fix the freeze/reboot error
The image is the PINE64 logo and has a size of 23x31px. I tried to make its background transparent so that it could be used in other places, but I didn't get it to render correctly. So in the end the background is white. If someone wants to try to make it transparent, I can provide the original SVG.
Nice looking watchface! As far as the image transparency you might want to look at this option from lv_conf:
/*Images pixels with this color will not be drawn (with chroma keying)*/
#define LV_COLOR_TRANSP LV_COLOR_MAKE(0x6c, 0xFc, 0x6a) /*LV_COLOR_LIME: pure green*/
Just tried 11b81157 on InfiniSim and on my dev-device and it works :tada:
@dmlls This watchface looks really good, thanks for creating this PR! :1st_place_medal:
However, as you may know, we are a bit tight in memory, and I try to avoid adding new "big" resources like fonts for now (until we are able to move a few of them to the external memory). Have you already tested your Infineat with existing fonts? It probably don't look as neat as it is with new fonts, but would that be an acceptable compromise?
@dmlls This watchface looks really good, thanks for creating this PR! 🥇
However, as you may know, we are a bit tight in memory, and I try to avoid adding new "big" resources like fonts for now (until we are able to move a few of them to the external memory). Have you already tested your Infineat with existing fonts? It probably don't look as neat as it is with new fonts, but would that be an acceptable compromise?
@JF002 totally understand, I'll see what I can do with the existent fonts ;) I'd like to take as few space from other contributors as possible, great things won't stop coming to InfiniTime!
In any case, if anyone still prefers the original watchface, they can always refer to the fork.
@kieranc @NeroBurner thanks for the suggestions guys!
I added a couple of commits that respectively:
- Make the Pine64 logo background transparent. I simply used the option "True color with alpha" when converting the image with the LVGL Image Converter. This however adds an extra 4 KiB to the C file.
- Remove all new fonts included in the original Infineat watchface and use existing fonts. Well, I guess it's a little underwhelming but not terrible either. I personally always found the monospaced fonts in InfiniTime looking a bit old-fashioned (except for the Terminal watchface ;).
The new stats are:
Memory region Used Size Region Size %age Used
FLASH: 411524 B 480 KB 83.72%
RAM: 54520 B 64 KB 83.19%
That's 1% less of flash usage with respect to the original Infineat watchface.
It still looks neat indeed!
Could you add a battery-symbol to the watchface? I'd like to see the battery level on my watchface without needing to look at either gadgetbridge or the pinetime-settings. Otherwise this would be the first watchface without some sort of battery indicator
It still looks neat indeed!
Could you add a battery-symbol to the watchface? I'd like to see the battery level on my watchface without needing to look at either gadgetbridge or the pinetime-settings. Otherwise this would be the first watchface without some sort of battery indicator
Yeah I found it weird that there is no battery indicator, I just noticed this about a day ago when I was going to look down at my watch so I could check the battery, and there was no watch face indicator.
As a cleaner option than adding a battery icon you could make the bar on the left go red when battery is below a preset percentage. maybe 40% currently would be safe-ish
@kieranc that's also a good idea. Only thing that it may not that intuitive for users who know nothing about the watchface. I actually had thought of something similar (see https://github.com/dmlls/InfiniTime/pull/3#issuecomment-1072860833).
I will make a couple mockups with different approaches and post them here to gather feedback.
So, this is what I came up with:
Option 1: battery icon bottom-left.
Option 2: battery icon top-left.
Option 3: Pine64 logo as battery indicator.
The mockups have the original font, but it would obviously be the same with the system font. The 3rd option seems to me the less "intrusive" one, although I also like the 1st one.
I'd like to do a small voting with reactions:
- Option 1: 🚀
- Option 2: 🎉
- Option 3: ❤️
Option 3: ❤️
But use a darker color on the pinecone to give it more contrast so it will be easier to read at a glance.
I like options 1 and 3, 3 is clearly the coolest but risks not being obvious at first glance.
option 3 : but as well a little more darker and in order to see , in action , can you link for each of them (or at least 1 and 3 )a dfu ?
it lack as well a state for when charging @dmlls , maybe maybe the pinecone blinking would help for option 3
So... I implemented the battery indicator (option 3) with a nice little charging animation. Here's a demo:
I also rebased develop
.
If you guys could take it for a spin and test that everything works fine, that'd be great! 😀
I let the CI to run, so people can potentially use those builds to test.
Really excited for this one. When I got my Pinetime, I found the watch faces by zephyrlabs and was immediately bummed there was no way to load them without integrating them into the firmware. Terminal is cool and I have been enjoying it, but really want to see more fancy watchfaces. This really hits the spot!
hi tested around a week , no problem of usability no crash whatosever and the battery indicator is big enough to be readable and understandable (at very least 40% and 60% are very clear) if anything , it would be great to have the hr data visible (if it activated) at the right , maybe, of the step counter.
keep the good work @dmlls
@Zandengoff thank you!
@trman thanks too for the testing!
if anything , it would be great to have the hr data visible (if it activated) at the right , maybe, of the step counter.
This point was discussed briefly here https://github.com/dmlls/InfiniTime/pull/3#issuecomment-1072860833. I'm open to continue this discussion, but in my opinion adding the heart rate information takes more from the cleanliness of the design than functionality it provides. Unfortunately, the PineTime screen is rather small and things get crowded pretty easily ;)
hello
the watchface is quite neat , so i decided to give it a try @dmlls ! after toying around , i found the background change quite good. but then i clicked on the bottom " on" label of the setting ... i found that when the background is removed , so is the battery icon ! that is quite inconvenient :(
could you make remain when off , only the little white background and the battery icon ? maybe another way , would to make the battery icon remain without background but with it colour inverted ( so it could become a white pine battery on black background)