diff --git a/selfdrive/frogpilot/assets/custom_themes/frog_theme/images/button_flag.png b/selfdrive/frogpilot/assets/custom_themes/frog_theme/images/button_flag.png new file mode 100644 index 0000000..627af8a Binary files /dev/null and b/selfdrive/frogpilot/assets/custom_themes/frog_theme/images/button_flag.png differ diff --git a/selfdrive/frogpilot/assets/custom_themes/frog_theme/images/button_home.png b/selfdrive/frogpilot/assets/custom_themes/frog_theme/images/button_home.png new file mode 100644 index 0000000..627af8a Binary files /dev/null and b/selfdrive/frogpilot/assets/custom_themes/frog_theme/images/button_home.png differ diff --git a/selfdrive/frogpilot/assets/custom_themes/frog_theme/images/button_settings.png b/selfdrive/frogpilot/assets/custom_themes/frog_theme/images/button_settings.png new file mode 100644 index 0000000..5592759 Binary files /dev/null and b/selfdrive/frogpilot/assets/custom_themes/frog_theme/images/button_settings.png differ diff --git a/selfdrive/frogpilot/assets/custom_themes/stalin_theme/images/button_flag.png b/selfdrive/frogpilot/assets/custom_themes/stalin_theme/images/button_flag.png new file mode 100644 index 0000000..1dca7ef Binary files /dev/null and b/selfdrive/frogpilot/assets/custom_themes/stalin_theme/images/button_flag.png differ diff --git a/selfdrive/frogpilot/assets/custom_themes/stalin_theme/images/button_home.png b/selfdrive/frogpilot/assets/custom_themes/stalin_theme/images/button_home.png new file mode 100644 index 0000000..1dca7ef Binary files /dev/null and b/selfdrive/frogpilot/assets/custom_themes/stalin_theme/images/button_home.png differ diff --git a/selfdrive/frogpilot/assets/custom_themes/stalin_theme/images/button_settings.png b/selfdrive/frogpilot/assets/custom_themes/stalin_theme/images/button_settings.png new file mode 100644 index 0000000..b58a726 Binary files /dev/null and b/selfdrive/frogpilot/assets/custom_themes/stalin_theme/images/button_settings.png differ diff --git a/selfdrive/frogpilot/assets/custom_themes/tesla_theme/images/button_flag.png b/selfdrive/frogpilot/assets/custom_themes/tesla_theme/images/button_flag.png new file mode 100644 index 0000000..2a140b9 Binary files /dev/null and b/selfdrive/frogpilot/assets/custom_themes/tesla_theme/images/button_flag.png differ diff --git a/selfdrive/frogpilot/assets/custom_themes/tesla_theme/images/button_home.png b/selfdrive/frogpilot/assets/custom_themes/tesla_theme/images/button_home.png new file mode 100644 index 0000000..2a140b9 Binary files /dev/null and b/selfdrive/frogpilot/assets/custom_themes/tesla_theme/images/button_home.png differ diff --git a/selfdrive/frogpilot/assets/custom_themes/tesla_theme/images/button_settings.png b/selfdrive/frogpilot/assets/custom_themes/tesla_theme/images/button_settings.png new file mode 100644 index 0000000..549e2be Binary files /dev/null and b/selfdrive/frogpilot/assets/custom_themes/tesla_theme/images/button_settings.png differ diff --git a/selfdrive/ui/qt/sidebar.cc b/selfdrive/ui/qt/sidebar.cc index c6e8517..22f2345 100644 --- a/selfdrive/ui/qt/sidebar.cc +++ b/selfdrive/ui/qt/sidebar.cc @@ -47,6 +47,19 @@ Sidebar::Sidebar(QWidget *parent) : QFrame(parent), onroad(false), flag_pressed( {3, {"stalin_theme", {QColor(255, 0, 0)}}} }; + for (auto &[key, themeData] : themeConfiguration) { + QString &themeName = themeData.first; + QString base = themeName == "stock" ? "../assets/images" : QString("../frogpilot/assets/custom_themes/%1/images").arg(themeName); + std::vector paths = {base + "/button_home.png", base + "/button_flag.png", base + "/button_settings.png"}; + + home_imgs[key] = loadPixmap(paths[0], home_btn.size()); + flag_imgs[key] = loadPixmap(paths[1], home_btn.size()); + settings_imgs[key] = loadPixmap(paths[2], settings_btn.size(), Qt::IgnoreAspectRatio); + } + + home_img = home_imgs[scene.custom_icons]; + flag_img = flag_imgs[scene.custom_icons]; + settings_img = settings_imgs[scene.custom_icons]; currentColors = themeConfiguration[scene.custom_colors].second; } @@ -90,6 +103,10 @@ void Sidebar::updateState(const UIState &s) { setProperty("netStrength", strength > 0 ? strength + 1 : 0); // FrogPilot properties + home_img = home_imgs[scene.custom_icons]; + flag_img = flag_imgs[scene.custom_icons]; + settings_img = settings_imgs[scene.custom_icons]; + currentColors = themeConfiguration[scene.custom_colors].second; auto frogpilotDeviceState = sm["frogpilotDeviceState"].getFrogpilotDeviceState(); diff --git a/selfdrive/ui/qt/sidebar.h b/selfdrive/ui/qt/sidebar.h index 4966ebd..407a7ad 100644 --- a/selfdrive/ui/qt/sidebar.h +++ b/selfdrive/ui/qt/sidebar.h @@ -65,6 +65,9 @@ private: UIScene &scene; std::unordered_map>> themeConfiguration; + std::unordered_map flag_imgs; + std::unordered_map home_imgs; + std::unordered_map settings_imgs; std::vector currentColors; }; diff --git a/selfdrive/ui/ui.cc b/selfdrive/ui/ui.cc index 69e0f9f..8bd8a25 100644 --- a/selfdrive/ui/ui.cc +++ b/selfdrive/ui/ui.cc @@ -316,6 +316,7 @@ void ui_update_frogpilot_params(UIState *s) { bool custom_theme = params.getBool("CustomTheme"); scene.custom_colors = custom_theme ? params.getInt("CustomColors") : 0; + scene.custom_icons = custom_theme ? params.getInt("CustomIcons") : 0; scene.disable_smoothing_mtsc = params.getBool("MTSCEnabled") && params.getBool("DisableMTSCSmoothing"); scene.disable_smoothing_vtsc = params.getBool("VisionTurnControl") && params.getBool("DisableVTSCSmoothing"); diff --git a/selfdrive/ui/ui.h b/selfdrive/ui/ui.h index 6f80f46..1992b74 100644 --- a/selfdrive/ui/ui.h +++ b/selfdrive/ui/ui.h @@ -244,6 +244,7 @@ typedef struct UIScene { int conditional_speed_lead; int conditional_status; int custom_colors; + int custom_icons; int steering_angle_deg; int wheel_icon;