summaryrefslogtreecommitdiff
path: root/src/DisplayApp/Screens/Tile.cpp
blob: c3a9d3806810164bcb852b2d8c0b950e0f3e2f74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <libs/lvgl/src/lv_core/lv_obj.h>
#include <libs/lvgl/src/lv_font/lv_font.h>
#include <libs/lvgl/lvgl.h>
#include "Tile.h"
#include <DisplayApp/DisplayApp.h>
#include "Symbols.h"
#include "../../Version.h"

using namespace Pinetime::Applications::Screens;

extern lv_font_t jetbrains_mono_bold_20;

static void event_handler(lv_obj_t * obj, lv_event_t event) {
  Tile* screen = static_cast<Tile *>(obj->user_data);
  uint32_t* eventDataPtr = (uint32_t*) lv_event_get_data();
  uint32_t eventData = *eventDataPtr;
  screen->OnObjectEvent(obj, event, eventData);
}

static const char * btnm_map1[] = {Symbols::heartBeat, Symbols::shoe, Symbols::clock, "\n", Symbols::info, Symbols::list, Symbols::sun, ""};

Tile::Tile(DisplayApp* app) : Screen(app) {
  modal.reset(new Modal(app));

  btnm1 = lv_btnm_create(lv_scr_act(), NULL);
  lv_btnm_set_map(btnm1, btnm_map1);
  lv_obj_set_size(btnm1, LV_HOR_RES, LV_VER_RES);

  btnm1->user_data = this;
  lv_obj_set_event_cb(btnm1, event_handler);
}

Tile::~Tile() {
  lv_obj_clean(lv_scr_act());
}

bool Tile::Refresh() {
  return running;
}

void Tile::OnObjectEvent(lv_obj_t *obj, lv_event_t event, uint32_t buttonId) {
  auto* tile = static_cast<Tile*>(obj->user_data);
  if(event == LV_EVENT_VALUE_CHANGED) {
    switch(buttonId) {
      case 0:
        tile->StartMeterApp();
        break;
      case 1:
        tile->StartGaugeApp();
        break;
      case 2:
        tile->StartClockApp();
        break;
      case 3:
        char versionStr[20];
        sprintf(versionStr, "VERSION: %d.%d.%d", Version::Major(), Version::Minor(), Version::Patch());
        modal->Show(versionStr);
        break;
      case 4:
        tile->StartSysInfoApp();
        break;
      case 5:
        tile->StartBrightnessApp();

        break;
    }
    clickCount++;
  }
}

bool Tile::OnButtonPushed() {
  app->StartApp(DisplayApp::Apps::Clock);
  running = false;
  return true;
}

void Tile::StartClockApp() {
  app->StartApp(DisplayApp::Apps::Clock);
  running = false;
}

void Tile::StartSysInfoApp() {
  app->StartApp(DisplayApp::Apps::SysInfo);
  running = false;
}

void Tile::StartBrightnessApp() {
  app->StartApp(DisplayApp::Apps::Brightness);
  running = false;
}

void Tile::StartMeterApp() {
  app->StartApp(DisplayApp::Apps::Meter);
  running = false;
}

void Tile::StartGaugeApp() {
  app->StartApp(DisplayApp::Apps::Music);
  running = false;
}