From c7082455c10bc84490fcfa5128a77fd27539e04d Mon Sep 17 00:00:00 2001
From: Erwin Ried <1091420+eried@users.noreply.github.com>
Date: Sat, 8 Aug 2020 23:06:53 +0200
Subject: [PATCH] Super simple about

---
 firmware/application/CMakeLists.txt           |  2 +-
 firmware/application/apps/ui_about_simple.cpp | 75 +++++++++++++++++++
 firmware/application/apps/ui_about_simple.hpp | 40 ++++++++++
 firmware/application/ui_navigation.cpp        |  2 +-
 4 files changed, 117 insertions(+), 2 deletions(-)
 create mode 100644 firmware/application/apps/ui_about_simple.cpp
 create mode 100644 firmware/application/apps/ui_about_simple.hpp

diff --git a/firmware/application/CMakeLists.txt b/firmware/application/CMakeLists.txt
index dc9e41d5..f551f676 100644
--- a/firmware/application/CMakeLists.txt
+++ b/firmware/application/CMakeLists.txt
@@ -214,7 +214,7 @@ set(CPPSRC
 	ui/ui_tabview.cpp
 	ui/ui_textentry.cpp
 	ui/ui_transmitter.cpp
-	apps/ui_about.cpp
+	apps/ui_about_simple.cpp
 	apps/ui_adsb_rx.cpp
 	apps/ui_adsb_tx.cpp
 	apps/ui_afsk_rx.cpp
diff --git a/firmware/application/apps/ui_about_simple.cpp b/firmware/application/apps/ui_about_simple.cpp
new file mode 100644
index 00000000..2c6f796e
--- /dev/null
+++ b/firmware/application/apps/ui_about_simple.cpp
@@ -0,0 +1,75 @@
+#include "ui_about_simple.hpp"
+
+namespace ui
+{
+    AboutView::AboutView(NavigationView &nav)
+    {
+        add_children({&console, &button_ok});
+
+        button_ok.on_select = [&nav](Button &) {
+            nav.pop();
+        };
+
+        console.writeln("\x1B\x07List of contributors:\x1B\x10");
+        console.writeln("");
+    }
+
+    void AboutView::update()
+    {
+        if (++timer > 200)
+        {
+            timer = 0;
+
+            switch (++frame)
+            {
+            case 1:
+                // TODO: Generate this automatically from github
+                // https://github.com/eried/portapack-mayhem/graphs/contributors?to=2022-01-01&from=2020-04-12&type=c
+                console.writeln("\x1B\x06Mayhem:\x1B\x10");
+                console.writeln("eried,euquiq,gregoryfenton");
+                console.writeln("johnelder,jwetzell,nnemanjan00");
+                console.writeln("N0vaPixel,klockee,jamesshao8");
+                console.writeln("");
+                break;
+
+            case 2:
+                // https://github.com/eried/portapack-mayhem/graphs/contributors?to=2020-04-12&from=2015-07-31&type=c
+                console.writeln("\x1B\x06Havoc:\x1B\x10");
+                console.writeln("furrtek,mrmookie,notpike");
+                console.writeln("mjwaxios,ImDroided,Giorgiofox");
+                console.writeln("F4GEV,z4ziggy,xmycroftx");
+                console.writeln("troussos,silascutler");
+                console.writeln("nickbouwhuis,msoose,leres");
+                console.writeln("joakar,dhoetger,clem-42");
+                console.writeln("brianlechthaler,ZeroChaos-...");
+                console.writeln("");
+                break;
+
+            case 3:
+                // https://github.com/eried/portapack-mayhem/graphs/contributors?from=2014-07-05&to=2015-07-31&type=c
+                console.writeln("\x1B\x06PortaPack:\x1B\x10");
+                console.writeln("jboone,argilo");
+                console.writeln("");
+                break;
+
+            case 4:
+                // https://github.com/mossmann/hackrf/graphs/contributors
+                console.writeln("\x1B\x06HackRF:\x1B\x10");
+                console.writeln("mossmann,dominicgs,bvernoux");
+                console.writeln("bgamari,schneider42,miek");
+                console.writeln("willcode,hessu,Sec42");
+                console.writeln("yhetti,ckuethe,smunaut");
+                console.writeln("wishi,mrbubble62,scateu...");
+                console.writeln("");
+                frame = 0; // Loop
+                break;
+            }
+        }
+    }
+
+    void AboutView::focus()
+    {
+        button_ok.focus();
+    }
+
+} /* namespace ui */
\ No newline at end of file
diff --git a/firmware/application/apps/ui_about_simple.hpp b/firmware/application/apps/ui_about_simple.hpp
new file mode 100644
index 00000000..a0590119
--- /dev/null
+++ b/firmware/application/apps/ui_about_simple.hpp
@@ -0,0 +1,40 @@
+#ifndef __UI_ABOUT_SIMPLE_H__
+#define __UI_ABOUT_SIMPLE_H__
+
+#include "ui_widget.hpp"
+#include "ui_navigation.hpp"
+#include "ui_font_fixed_8x16.hpp"
+
+#include <cstdint>
+
+namespace ui
+{
+    class AboutView : public View
+    {
+    public:
+        AboutView(NavigationView &nav);
+        void focus() override;
+        std::string title() const override { return "About"; };
+        int32_t timer{180};
+        short frame{0};
+
+    private:
+        void update();
+
+        Console console{
+            {0, 10, 240, 240}};
+
+        Button button_ok{
+            {240/3, 270, 240/3, 24},
+            "OK",
+        };
+
+        MessageHandlerRegistration message_handler_update{
+            Message::ID::DisplayFrameSync,
+            [this](const Message *const) {
+                this->update();
+            }};
+    };
+} // namespace ui
+
+#endif /*__UI_ABOUT_SIMPLE_H__*/
diff --git a/firmware/application/ui_navigation.cpp b/firmware/application/ui_navigation.cpp
index 42b2fdb3..62092b81 100644
--- a/firmware/application/ui_navigation.cpp
+++ b/firmware/application/ui_navigation.cpp
@@ -30,7 +30,7 @@
 #include "bmp_modal_warning.hpp"
 #include "portapack_persistent_memory.hpp"
 
-#include "ui_about.hpp"
+#include "ui_about_simple.hpp"
 #include "ui_adsb_rx.hpp"
 #include "ui_adsb_tx.hpp"
 #include "ui_afsk_rx.hpp"
-- 
GitLab