Skip to content

Combine terminal UI improvements and weather addition #2319

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

JustScott
Copy link
Contributor

Since the three correlating PRs: #2134, #2135, and #2204 have all been accepted into the 1.16.0 release, but won't cleanly merge together, I've created this PR with the conflicts solved while preserving a seperate commit for each.

values_grayed
values_populated_variation
values_populated
live

+ Reorder code to match the widgets order in the UI.

+ Moved all objects (rows) into a container

+ Use InfintimeTheme Colors instead of hardcoded hex values

+ Added a new InfinitimeTheme color: gray, using it to turn certain
  values gray when they contain no data

+ Implement @vkareh's [variable battery icon](InfiniTimeOrg#1964)
  color to the battery percentage text.

+ Replaced the 'You have mail.' notification message with the message
  '[1]+ Notify' to better fit the terminal lore.
Copy link

Build size and comparison to main:

Section Size Difference
text 379896B 768B
data 948B 0B
bss 22536B 0B

Run in InfiniEmu

@JustScott
Copy link
Contributor Author

Just a topic of discussion: do you think it would be worthwhile to add a weatherYellow color to InfinitimeTheme.h for a consistent weather color across the code base? I'm using #ffdd00 as my weather color, so the change would look like this:

InfiniTimeTheme.h

static constexpr lv_color_t weatherYellow = LV_COLOR_MAKE(0xff, 0xdd, 0x00);

WatchFaceTerminal.cpp

currentWeather = weatherService.Current();
  if (currentWeather.IsUpdated()) {
    auto optCurrentWeather = currentWeather.Get();
    if (optCurrentWeather) {
      int16_t temp = optCurrentWeather->temperature.Celsius();
      char tempUnit = 'C';
      if (settingsController.GetWeatherFormat() == Controllers::Settings::WeatherFormat::Imperial) {
        temp = optCurrentWeather->temperature.Fahrenheit();
        tempUnit = 'F';
      }
      lv_label_set_text_fmt(weather,
                            "#ffffff [WTHR]# %d°%c %s#",
                            temp,
                            tempUnit,
                            Symbols::GetSimpleCondition(optCurrentWeather->iconId));
      lv_obj_set_style_local_text_color(weather, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, Colors::weatherYellow);

    } else {
      lv_label_set_text_static(weather, "#ffffff [WTHR]# ---");
      lv_obj_set_style_local_text_color(weather, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, Colors::gray);
    }
  }

@mark9064
Copy link
Member

I think there's a deeper question: what are the InfiniTime temperature colours, is there a continuous scale, and when discrete steps are needed what temperature does it change at

The current thresholds of 0, 4 and 27 seem quite odd to me. 5 and 26°C aren't exactly the same, and I'm not sure about the current colours either

What do you think about it?

@mark9064 mark9064 added enhancement Enhancement to an existing app/feature maintenance Background work UI/UX User interface/User experience labels Jun 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Enhancement to an existing app/feature maintenance Background work UI/UX User interface/User experience
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants