forked from AndreiDegtiarev/AWind
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEnvironment.h
69 lines (61 loc) · 1.92 KB
/
Environment.h
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
#pragma once
/*
GUI library for Arduino TFT and OLED displays
Copyright (c) 2014-2018 Andrei Degtiarev
Licensed under the Apache License, Version 2.0 (the "License"); you
may not use this file except in compliance with the License. You may
obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied. See the License for the specific language governing
permissions and limitations under the License.
*/
#include "LinkedList.h"
#include "AHelper.h"
#include "Decorator.h"
typedef LinkedList<Decorator> DecoratorList;
class DecoratorGroupEntry
{
public:
const __FlashStringHelper *ID;
DecoratorList *Decorators;
};
///This singltone class contains shared application resources like decorators.
class Environment
{
static Environment *_singltone;
LinkedList<DecoratorGroupEntry> _shared_decorators;
///Constructor initializes one static instance of environment
Environment()
{
_singltone=this;
}
public:
///Returns singltone instance of environment
static Environment *Get()
{
if(_singltone == NULL)
_singltone = new Environment();
return _singltone;
}
///Registers decorators group. It is like application resources that can be shred between windows of the same type (e.g. buttons, text box and etc.)
void RegisterDecoratorsGroup(const __FlashStringHelper *id,DecoratorList * decorators)
{
DecoratorGroupEntry *entry=new DecoratorGroupEntry();
entry->ID=id;
entry->Decorators=decorators;
_shared_decorators.Add(entry);
}
///Finds registered decorators by the name
DecoratorList *FindDecorators(const __FlashStringHelper *id)
{
for(int i=0;i<_shared_decorators.Count();i++)
{
if(AHelper::compare_F(id, _shared_decorators[i]->ID))
return _shared_decorators[i]->Decorators;
}
return NULL;
}
};