Projekt

Allgemein

Profil

Eval » Historie » Revision 23

Revision 22 (Maximilian Seesslen, 24.08.2022 12:24) → Revision 23/46 (Maximilian Seesslen, 24.08.2022 13:14)

h1. Eval

h2. Widgets

There is a ODesktop that holds a list of OScreens (or only the curent).
There is a OScreen that holds a list of OWidgets.
When the touch is pressed, the corresponding button can be determined.
An signal can be emmited.
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.

* OButton::draw(): completely draws the widget
* OButton::update(): only draw status-relevant items, e.g. pressed, released, time changed...

All screens can be prepared at start.
A Screen can be active or inactive.

Only one screen is active plus an navigation-screen?

h2. Touch

There is an touch class that helps converting raw values to X-Y-coordinates. [[Biwak:touch]]
CTouch will emit signals "pressed, released, clicked" that can be connected to libocelli.

h2. Watch

* the OWatch class shows an clock with specific style, analog or digital

h2. Example: Minutnik

* Main screen; CWatch, Add-Button
* Add-Screen
** Espresso, Weisswurst, Weiches Ei, Hartes Ei, Nudeln, Pizza, Waschmaschine, Cancel; Height 32
* Alarm Screen
* Logo, Splash screen at boot time and stand-by-screen
* Release v2.0.0: Mode-Screen: Minutnik, Clock, StopWatch

h2. Example: CANDis

* Main screen
** Button for Light, Sensemux-Diagram, Activity (TV, Musik, Solder, Off), Miniminutnik
** Header with Clock
* Light-Screen
** Power-Widget
** Ok-Button
* Clock-Screen (Screen saver)
** Clock, Date, Temperature, Quick-Access-Buttons

h2. Pointers

Like in Qt an widget has an parent.

h2. Single App class vs. Screens

Having everything in an single class may be confusing. It may be split to per-Screen-classes.
<pre><code class="cpp">

class Ocelli
{
OScreen *currentScreen;
OScreen *previousScreen;
public:
setCurrentScreen(OScreen *screen);
setPreviousScreen();

}

class CApp: Ocelli
{
public:
// OScreen *screens[3];
int
CApp()
{
addScreen(new );
}
}

class CScreenMain: public OScreen
{
CApp &app;
OButton buttonAddTimer;
public:
CScreenMain()
buttonAddTimer(this)
{
}
addItemPressed()
{
app.switchScreen( eDesktopItems );
}
}
class CScreenMain: public OScreen
{
CApp &app;
}
</code></pre>