Projekt

Allgemein

Profil

Eval » Historie » Version 24

Maximilian Seesslen, 24.08.2022 13:26

1 1 Maximilian Seesslen
h1. Eval
2
3
h2. Widgets
4
5 3 Maximilian Seesslen
There is a ODesktop that holds a list of OScreens (or only the curent).
6 1 Maximilian Seesslen
There is a OScreen that holds a list of OWidgets.
7
When the touch is pressed, the corresponding button can be determined.
8
An signal can be emmited.
9
An press-event can be queued, An release-event can be queued. An click-event can be queued if current button matches original pressed button.
10
11
* OButton::draw(): completely draws the widget
12
* OButton::update(): only draw status-relevant items, e.g. pressed, released, time changed...
13
14 2 Maximilian Seesslen
All screens can be prepared at start.
15 1 Maximilian Seesslen
A Screen can be active or inactive.
16 3 Maximilian Seesslen
17 12 Maximilian Seesslen
Only one screen is active plus an navigation-screen?
18
19 3 Maximilian Seesslen
h2. Touch
20
21 16 Maximilian Seesslen
There is an touch class that helps converting raw values to X-Y-coordinates. [[Biwak:touch]]
22 17 Maximilian Seesslen
CTouch will emit signals "pressed, released, clicked" that can be connected to libocelli.
23 2 Maximilian Seesslen
24 1 Maximilian Seesslen
h2. Watch
25
26 5 Maximilian Seesslen
* the OWatch class shows an clock with specific style, analog or digital
27 1 Maximilian Seesslen
28 6 Maximilian Seesslen
h2. Example: Minutnik
29 1 Maximilian Seesslen
30
* Main screen; CWatch, Add-Button
31
* Add-Screen
32
** Espresso, Weisswurst, Weiches Ei, Hartes Ei, Nudeln, Pizza, Waschmaschine, Cancel; Height 32
33
* Alarm Screen
34
* Logo, Splash screen at boot time and stand-by-screen
35 7 Maximilian Seesslen
* Release v2.0.0: Mode-Screen: Minutnik, Clock, StopWatch
36 6 Maximilian Seesslen
37 7 Maximilian Seesslen
h2. Example: CANDis
38 1 Maximilian Seesslen
39 7 Maximilian Seesslen
* Main screen
40 10 Maximilian Seesslen
** Button for Light, Sensemux-Diagram, Activity (TV, Musik, Solder, Off), Miniminutnik
41 7 Maximilian Seesslen
** Header with Clock
42 8 Maximilian Seesslen
* Light-Screen
43
** Power-Widget
44
** Ok-Button
45 7 Maximilian Seesslen
* Clock-Screen (Screen saver)
46 9 Maximilian Seesslen
** Clock, Date, Temperature, Quick-Access-Buttons
47 18 Maximilian Seesslen
48
h2. Pointers
49
50
Like in Qt an widget has an parent.
51
52
h2. Single App class vs. Screens
53
54
Having everything in an single class may be confusing. It may be split to per-Screen-classes.
55 19 Maximilian Seesslen
<pre><code class="cpp">
56 18 Maximilian Seesslen
57 24 Maximilian Seesslen
class OScreen
58
{
59
      CColor background;
60
   public:
61
      virtual clicked(int x,int y);
62
}
63
64 22 Maximilian Seesslen
class Ocelli
65
{
66
      OScreen *currentScreen;
67
      OScreen *previousScreen;
68
   public:
69
      setCurrentScreen(OScreen *screen);
70
      setPreviousScreen();
71 1 Maximilian Seesslen
}
72 18 Maximilian Seesslen
73
class CApp: Ocelli
74 21 Maximilian Seesslen
{
75 22 Maximilian Seesslen
   public:
76 24 Maximilian Seesslen
77 1 Maximilian Seesslen
      // OScreen *screens[3];
78 24 Maximilian Seesslen
      CScreenMain screenMain;
79 1 Maximilian Seesslen
      CApp()
80 21 Maximilian Seesslen
      {
81 24 Maximilian Seesslen
         addScreen( new );
82 21 Maximilian Seesslen
      }
83 1 Maximilian Seesslen
}
84
85 23 Maximilian Seesslen
class CScreenMain: public OScreen
86 18 Maximilian Seesslen
{
87 1 Maximilian Seesslen
      CApp &app;
88 20 Maximilian Seesslen
      OButton buttonAddTimer;
89 24 Maximilian Seesslen
90 20 Maximilian Seesslen
   public:
91 24 Maximilian Seesslen
92 20 Maximilian Seesslen
      CScreenMain()
93
         buttonAddTimer(this)
94
      {
95
      }
96 18 Maximilian Seesslen
      addItemPressed()
97
      {
98 1 Maximilian Seesslen
         app.switchScreen( eDesktopItems );
99
      }
100 18 Maximilian Seesslen
}
101 24 Maximilian Seesslen
102 23 Maximilian Seesslen
class CScreenMain: public OScreen
103 1 Maximilian Seesslen
{
104
      CApp &app;
105 24 Maximilian Seesslen
106
   public:
107
108
      virtual clicked(int x,int y);
109
}
110
111
class CScreenAlarm: public OScreen
112
{
113
      CApp &app;
114
      OLabel alarmText;
115
      lrtimer_t activationTimer;
116
117
   public:
118
      CScreenAlarm()
119
      :alarmText("-", centerX, centerY-200)
120
      {
121
      }
122
      virtual avctivate() override
123
      {
124
         app.m_buzzer.setBeepMode(alarm);
125
         activationTimer=lrNow();
126
      }
127
      virtual clicked(int x,int y) override
128
      {
129
         if(!lrElapsed())
130
         {
131
            return;
132
         }
133
         app.m_buzzer.setBeepMode(nullptr);
134
         app.setPreviousScreen();
135
      }
136 18 Maximilian Seesslen
}
137 19 Maximilian Seesslen
</code></pre>