Added git menu

This commit is contained in:
CommanderRedYT
2022-05-25 03:02:06 +02:00
parent b6be6e6a83
commit 3c10185e5e
5 changed files with 114 additions and 2 deletions

View File

@ -105,6 +105,7 @@ set(headers
displays/menus/feedbackdebugmenu.h
displays/menus/gametrakmodesettingsmenu.h
displays/menus/garagemenu.h
displays/menus/gitmenu.h
displays/menus/graphsmenu.h
displays/menus/greenpassmenu.h
displays/menus/handbremssettingsmenu.h
@ -179,6 +180,7 @@ set(headers
icons/buzzer.h
icons/close.h
icons/demos.h
icons/git.h
icons/graph.h
icons/greenpass.h
icons/hardware.h
@ -344,6 +346,7 @@ set(sources
displays/menus/feedbackdebugmenu.cpp
displays/menus/gametrakmodesettingsmenu.cpp
displays/menus/garagemenu.cpp
displays/menus/gitmenu.cpp
displays/menus/graphsmenu.cpp
displays/menus/greenpassmenu.cpp
displays/menus/handbremssettingsmenu.cpp
@ -418,6 +421,7 @@ set(sources
icons/buzzer.cpp
icons/close.cpp
icons/demos.cpp
icons/git.cpp
icons/graph.cpp
icons/greenpass.cpp
icons/hardware.cpp
@ -504,6 +508,24 @@ idf_component_register(
${dependencies}
)
execute_process(COMMAND git rev-parse HEAD
OUTPUT_VARIABLE GIT_REV ERROR_QUIET
)
execute_process(
COMMAND git log -1 --pretty=%B
OUTPUT_VARIABLE GIT_MESSAGE ERROR_QUIET
)
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
OUTPUT_VARIABLE GIT_BRANCH
)
string(STRIP "${GIT_REV}" GIT_REV)
string(SUBSTRING "${GIT_REV}" 1 7 GIT_SHORT_REV)
string(STRIP "${GIT_MESSAGE}" GIT_MESSAGE)
string(SUBSTRING "${GIT_MESSAGE}" 0 100 GIT_MESSAGE)
string(STRIP "${GIT_BRANCH}" GIT_BRANCH)
target_compile_options(${COMPONENT_TARGET}
PRIVATE
-fstack-reuse=all
@ -513,5 +535,9 @@ target_compile_options(${COMPONENT_TARGET}
-Wno-deprecated-declarations
-Wno-missing-field-initializers
-Wno-parentheses
-DGIT_REV="${GIT_REV}"
-DGIT_SHORT_REV="${GIT_SHORT_REV}"
-DGIT_MESSAGE="${GIT_MESSAGE}"
-DGIT_BRANCH="${GIT_BRANCH}"
${BOBBYCAR_BUILDFLAGS}
)

View File

@ -6,9 +6,7 @@
#include "actions/popscreenaction.h"
#include "icons/back.h"
#include "esptexthelpers.h"
#include "displays/menus/settingsmenu.h"
#include <espasyncota.h>
#include <esp_ota_ops.h>
#include "fmt/core.h"

View File

@ -0,0 +1,70 @@
#include "gitmenu.h"
// 3rdparty lib includes
#include <actions/dummyaction.h>
#include <actions/popscreenaction.h>
#include <fmt/core.h>
#include <icons/back.h>
// local includes
#include "bobbyerrorhandler.h"
#include "displays/qrdisplay.h"
#include "icons/info.h"
#include "icons/modes.h"
namespace {
constexpr char TEXT_GIT[] = "Git";
constexpr char TEXT_GIT_BRANCH_TITLE[] = "Branch";
constexpr char TEXT_GIT_BRANCH[] = GIT_BRANCH;
constexpr char TEXT_GIT_COMMIT_TITLE[] = "Commit";
constexpr char TEXT_GIT_COMMIT[] = GIT_REV;
constexpr char TEXT_GIT_COMMIT_SHORT[] = GIT_SHORT_REV;
constexpr char TEXT_GIT_MESSAGE_TITLE[] = "Commit Message";
constexpr char TEXT_GIT_MESSAGE[] = GIT_MESSAGE;
constexpr char TEXT_GITHUB_URL[] = "Github URL";
constexpr char TEXT_BACK[] = "Back";
class OpenPopupAction : public virtual espgui::ActionInterface
{
public:
void triggered() override
{
BobbyErrorHandler{}.errorOccured(TEXT_GIT_MESSAGE);
}
};
class GitQrAction : public virtual espgui::ActionInterface
{
public:
void triggered() override
{
// ToDo: Fix qr library and remove spaces, also, why is "`" at the end of string in qr code but not when logging?
const std::string qr_text = fmt::format("https://github.com/bobbycar-graz/bobbycar-boardcomputer-firmware/commit/{} ", GIT_REV);
espgui::pushScreen<QrDisplay>(qr_text);
}
};
} // namespace
GitMenu::GitMenu()
{
using namespace espgui;
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_BRANCH_TITLE>, StaticColor<TFT_GREY>, StaticFont<2>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_BRANCH>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_COMMIT_TITLE>, StaticColor<TFT_GREY>, StaticFont<2>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_COMMIT>, DummyAction, StaticFont<2>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_COMMIT_SHORT>, DummyAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT_MESSAGE_TITLE>, OpenPopupAction, StaticMenuItemIcon<&bobbyicons::info>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GITHUB_URL>, GitQrAction, StaticMenuItemIcon<&bobbyicons::modes>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}
std::string GitMenu::text() const
{
return TEXT_GIT;
}
void GitMenu::back()
{
espgui::popScreen();
}

View File

@ -0,0 +1,14 @@
#pragma once
// local includes
#include "displays/menudisplaywithtime.h"
class GitMenu : public bobbygui::MenuDisplayWithTime
{
public:
GitMenu();
std::string text() const override;
void back() override;
};

View File

@ -22,6 +22,7 @@
#include "displays/menus/crashmenu.h"
#include "displays/menus/espnowmenu.h"
#include "displays/menus/featureflagsmenu.h"
#include "displays/menus/gitmenu.h"
#include "displays/menus/limitssettingsmenu.h"
#include "displays/menus/mainmenu.h"
#include "displays/menus/modessettingsmenu.h"
@ -33,6 +34,7 @@
#include "icons/bluetooth.h"
#include "icons/buzzer.h"
#include "icons/demos.h"
#include "icons/git.h"
#include "icons/hardware.h"
#include "icons/info.h"
#include "icons/time.h"
@ -64,6 +66,7 @@ constexpr char TEXT_FRONTLED[] = "Front LED";
constexpr char TEXT_BACKLED[] = "Back LED";
constexpr char TEXT_CRASHMENU[] = "Crash Menu";
constexpr char TEXT_ABOUT[] = "About";
constexpr char TEXT_GIT[] = "Git";
constexpr char TEXT_BACK[] = "Back";
#ifdef FEATURE_LEDBACKLIGHT
@ -126,6 +129,7 @@ SettingsMenu::SettingsMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACKLED>, BobbyCheckbox, BackLedAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CRASHMENU>, PushScreenAction<CrashMenu>, StaticMenuItemIcon<&bobbyicons::demos>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ABOUT>, PushScreenAction<AboutMenu>, StaticMenuItemIcon<&bobbyicons::info>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GIT>, PushScreenAction<GitMenu>, StaticMenuItemIcon<&bobbyicons::git>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
}