Skip to content

Commit af5f06a

Browse files
committed
new theming part 1
1 parent b0c0b94 commit af5f06a

File tree

3 files changed

+155
-121
lines changed

3 files changed

+155
-121
lines changed

common/droidboot_theme.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,19 @@ lv_style_t droidboot_list_button_selected_style;
1212
void droidboot_style_init(struct global_config *global_config){
1313
droidboot_log(DROIDBOOT_LOG_TRACE, "Current theme settings: radius: %d, bg_color: %llx, border_width: %d, border_color: %llx \n", global_config->radius, global_config->bg_color, global_config->border_width, global_config->border_color);
1414
lv_style_init(&droidboot_list_style);
15-
lv_style_set_radius(&droidboot_list_style, global_config->radius);
16-
lv_style_set_bg_color(&droidboot_list_style, lv_color_hex(global_config->bg_color));
17-
lv_style_set_border_width(&droidboot_list_style, global_config->border_width);
18-
lv_style_set_border_color(&droidboot_list_style, lv_color_hex(global_config->border_color));
15+
lv_style_set_radius(&droidboot_list_style, global_config->win_radius);
16+
lv_style_set_bg_color(&droidboot_list_style, lv_color_hex(global_config->win_bg_color));
17+
lv_style_set_border_width(&droidboot_list_style, global_config->win_border_size);
18+
lv_style_set_border_color(&droidboot_list_style, lv_color_hex(global_config->win_border_color));
1919

2020
lv_style_init(&droidboot_win_style);
21-
lv_style_set_radius(&droidboot_win_style, global_config->radius);
22-
lv_style_set_bg_color(&droidboot_win_style, lv_color_hex(global_config->bg_color));
23-
lv_style_set_border_width(&droidboot_win_style, global_config->border_width);
24-
lv_style_set_border_color(&droidboot_win_style, lv_color_hex(global_config->border_color));
21+
lv_style_set_radius(&droidboot_win_style, global_config->list_radius);
22+
lv_style_set_bg_color(&droidboot_win_style, lv_color_hex(global_config->list_bg_color));
23+
lv_style_set_border_width(&droidboot_win_style, global_config->list_border_size);
24+
lv_style_set_border_color(&droidboot_win_style, lv_color_hex(global_config->list_border_color));
2525

2626
lv_style_init(&droidboot_list_button_style);
27-
lv_style_set_radius(&droidboot_list_button_style, global_config->radius);
27+
lv_style_set_radius(&droidboot_list_button_style, global_config->button_unselected_radius);
2828
lv_style_set_text_color(&droidboot_list_button_style, lv_color_hex(global_config->button_text_color));
2929
lv_style_set_bg_color(&droidboot_list_button_style, lv_color_hex(global_config->button_color));
3030
lv_style_set_border_width(&droidboot_list_button_style, global_config->button_border_width);
@@ -33,7 +33,7 @@ void droidboot_style_init(struct global_config *global_config){
3333
lv_style_set_transform_width(&droidboot_list_button_style, 100);
3434

3535
lv_style_init(&droidboot_list_button_selected_style);
36-
lv_style_set_radius(&droidboot_list_button_selected_style, global_config->radius);
36+
lv_style_set_radius(&droidboot_list_button_selected_style, global_config->button_selected_radius);
3737
lv_style_set_border_color(&droidboot_list_button_selected_style, lv_color_hex(global_config->border_selected_color));
3838
lv_style_set_text_color(&droidboot_list_button_selected_style, lv_color_hex(global_config->button_selected_text_color));
3939
lv_style_set_bg_color(&droidboot_list_button_selected_style, lv_color_hex(global_config->button_selected_color));

config_parser/droidboot_config.c

Lines changed: 121 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -13,41 +13,13 @@
1313
#include <droidboot_stdfunc.h>
1414
#include <droidboot_fs_util.h>
1515
#include <droidboot_platform_common.h>
16+
#include <droidboot_config_parser.h>
1617

1718
#include <ext4.h>
1819

1920
#define ENTRIES_DIR "/boot/db/entries/"
2021
#define GLOBAL_CONFIG_FILE "/boot/db/db.conf"
2122

22-
struct boot_entry {
23-
char *title;
24-
char *kernel;
25-
char *initrd;
26-
char *dtb;
27-
char *dtbo;
28-
char *options;
29-
char *logo;
30-
int error;
31-
};
32-
33-
struct global_config {
34-
char *default_entry_title;
35-
struct boot_entry *default_entry;
36-
int timeout;
37-
uint32_t bg_color;
38-
uint32_t button_color;
39-
uint32_t button_text_color;
40-
uint32_t button_selected_color;
41-
uint32_t button_selected_text_color;
42-
uint8_t border_width;
43-
uint32_t border_color;
44-
uint32_t border_selected_color;
45-
uint8_t button_border_width;
46-
uint32_t button_border_color;
47-
uint32_t button_border_selected_color;
48-
uint8_t radius;
49-
bool button_grow_default;
50-
};
5123

5224
int config_parse_option(char **_dest, const char *option, const char *buffer) {
5325
char *option_whitespace = malloc(strlen(option)+strlen(" ")+1);
@@ -234,43 +206,64 @@ int parse_global_config(struct global_config *global_config) {
234206
global_config->timeout = 20;
235207
droidboot_log(DROIDBOOT_LOG_WARNING, "config_parser: no global config found\n");
236208
// Background color
237-
global_config->bg_color = 0x000000;
209+
global_config->win_bg_color = 0x000000;
210+
211+
// Radius
212+
global_config->win_radius = 0;
213+
214+
// Border width
215+
global_config->win_border_size = 0;
216+
217+
// Border color
218+
global_config->win_border_color = 0xffffff;
219+
220+
// List background color
221+
global_config->list_bg_color = 0x000000;
222+
223+
// List radius
224+
global_config->list_radius = 0;
225+
226+
// List border width
227+
global_config->list_border_size = 0;
228+
229+
// List border color
230+
global_config->list_border_color = 0xffffff;
238231

239232
// Button color
240-
global_config->button_color = 0x000000;
233+
global_config->button_unselected_color = 0x000000;
241234

242235
// Button text color
243-
global_config->button_text_color = 0xffffff;
236+
global_config->button_unselected_text_color = 0xffffff;
244237

245238
// Button selected color
246239
global_config->button_selected_color = 0xff9800;
247240

248241
// Button selected text color
249242
global_config->button_selected_text_color = 0x000000;
250243

251-
// Border width
252-
global_config->border_width = 0;
253-
254-
// Border color
255-
global_config->border_color = 0xffffff;
256-
257-
// Border selected color
258-
global_config->border_selected_color = 0xffffff;
259-
260244
// Button border width
261-
global_config->button_border_width = 1;
245+
global_config->button_border_unselected_size = 1;
262246

263247
// Button border color
264-
global_config->button_border_color = 0xffffff;
248+
global_config->button_border_unselected_color = 0xffffff;
249+
250+
// Button border selected width
251+
global_config->button_border_selected_size = 1;
265252

266253
// Button border selected color
267254
global_config->button_border_selected_color = 0xffffff;
268255

269-
// Radius
270-
global_config->radius = 0;
256+
// Button grow by default
257+
global_config->button_grow_default = true;
271258

272-
// Button grow by default
273-
global_config->button_grow_default = true;
259+
// Button radius
260+
global_config->button_radius = 0;
261+
262+
// Global font size
263+
global_config->global_font_size = 0;
264+
265+
// Global font name
266+
global_config->global_font_name = NULL;
274267

275268
return 0;
276269

@@ -302,76 +295,88 @@ int parse_global_config(struct global_config *global_config) {
302295
// Theme parsing
303296

304297
// Background color
305-
char *bg_color = NULL;
306-
ret = config_parse_option(&bg_color, "bg_color", (const char *)buf);
307-
if(ret<0) global_config->bg_color = 0x000000;
308-
else global_config->bg_color = droidboot_strtol(bg_color, NULL, 16);
309-
310-
// Button color
311-
char *button_color = NULL;
312-
ret = config_parse_option(&button_color, "button_color", (const char *)buf);
313-
if(ret<0) global_config->button_color = 0x000000;
314-
else global_config->button_color = droidboot_strtol(button_color, NULL, 16);
315-
316-
// Button text color
317-
char *button_text_color = NULL;
318-
ret = config_parse_option(&button_text_color, "button_text_color", (const char *)buf);
319-
if(ret<0) global_config->button_text_color = 0xffffff;
320-
else global_config->button_text_color = droidboot_strtol(button_text_color, NULL, 16);
298+
char *win_bg_color = NULL;
299+
ret = config_parse_option(&win_bg_color, "win_bg_color", (const char *)buf);
300+
if(ret<0) global_config->win_bg_color = 0x000000;
301+
else global_config->win_bg_color = droidboot_strtol(win_bg_color, NULL, 16);
302+
free(win_bg_color);
303+
304+
// Radius
305+
char *win_radius = NULL;
306+
ret = config_parse_option(&win_radius, "win_radius", (const char *)buf);
307+
if(ret<0) global_config->win_radius = 0;
308+
else global_config->win_radius = droidboot_atoi(win_radius);
309+
free(win_radius);
310+
311+
// Border width
312+
char *win_border_size = NULL;
313+
ret = config_parse_option(&win_border_size, "win_border_size", (const char *)buf);
314+
if(ret<0) global_config->win_border_size = 0;
315+
else global_config->win_border_size = droidboot_atoi(win_border_size);
316+
free(win_border_size);
317+
318+
// Border color
319+
char *win_border_color = NULL;
320+
ret = config_parse_option(&win_border_color, "win_border_color", (const char *)buf);
321+
if(ret<0) global_config->win_border_color = 0xffffff;
322+
else global_config->win_border_color = droidboot_strtol(win_border_color, NULL, 16);
323+
free(win_border_color);
324+
325+
// Button unselected color
326+
char *button_unselected_color = NULL;
327+
ret = config_parse_option(&button_unselected_color, "button_unselected_color", (const char *)buf);
328+
if(ret<0) global_config->button_unselected_color = 0x000000;
329+
else global_config->button_unselected_color = droidboot_strtol(button_unselected_color, NULL, 16);
330+
free(button_unselected_color);
331+
332+
// Button unselected text color
333+
char *button_unselected_text_color = NULL;
334+
ret = config_parse_option(&button_unselected_text_color, "button_unselected_text_color", (const char *)buf);
335+
if(ret<0) global_config->button_unselected_text_color = 0xffffff;
336+
else global_config->button_unselected_text_color = droidboot_strtol(button_unselected_text_color, NULL, 16);
337+
free(button_unselected_text_color);
321338

322339
// Button selected color
323340
char *button_selected_color = NULL;
324341
ret = config_parse_option(&button_selected_color, "button_selected_color", (const char *)buf);
325342
if(ret<0) global_config->button_selected_color = 0xff9800;
326343
else global_config->button_selected_color = droidboot_strtol(button_selected_color, NULL, 16);
344+
free(button_selected_color);
327345

328346
// Button selected text color
329347
char *button_selected_text_color = NULL;
330348
ret = config_parse_option(&button_selected_text_color, "button_selected_text_color", (const char *)buf);
331349
if(ret<0) global_config->button_selected_text_color = 0x000000;
332350
else global_config->button_selected_text_color = droidboot_strtol(button_selected_text_color, NULL, 16);
351+
free(button_selected_text_color);
333352

334-
// Border width
335-
char *border_width = NULL;
336-
ret = config_parse_option(&border_width, "border_width", (const char *)buf);
337-
if(ret<0) global_config->border_width = 0;
338-
else global_config->border_width = droidboot_atoi(border_width);
339-
340-
// Border color
341-
char *border_color = NULL;
342-
ret = config_parse_option(&border_color, "border_color", (const char *)buf);
343-
if(ret<0) global_config->border_color = 0xffffff;
344-
else global_config->border_color = droidboot_strtol(border_color, NULL, 16);
345-
346-
// Border selected color
347-
char *border_selected_color = NULL;
348-
ret = config_parse_option(&border_selected_color, "border_selected_color", (const char *)buf);
349-
if(ret<0) global_config->border_selected_color = 0xffffff;
350-
else global_config->border_selected_color = droidboot_strtol(border_selected_color, NULL, 16);
351-
352-
// Button border width
353-
char *button_border_width = NULL;
354-
ret = config_parse_option(&button_border_width, "button_border_width", (const char *)buf);
355-
if(ret<0) global_config->button_border_width = 1;
356-
else global_config->button_border_width = droidboot_atoi(button_border_width);
353+
// Button border size
354+
char *button_border_unselected_size = NULL;
355+
ret = config_parse_option(&button_border_unselected_size, "button_border_unselected_size", (const char *)buf);
356+
if(ret<0) global_config->button_border_unselected_size = 1;
357+
else global_config->button_border_unselected_size = droidboot_atoi(button_border_unselected_size);
358+
free(button_border_unselected_size);
357359

358360
// Button border color
359-
char *button_border_color = NULL;
360-
ret = config_parse_option(&button_border_color, "button_border_color", (const char *)buf);
361-
if(ret<0) global_config->button_border_color = 0xffffff;
362-
else global_config->button_border_color = droidboot_strtol(button_border_color, NULL, 16);
361+
char *button_border_unselected_color = NULL;
362+
ret = config_parse_option(&button_border_unselected_color, "button_border_unselected_color", (const char *)buf);
363+
if(ret<0) global_config->button_border_unselected_color = 0xffffff;
364+
else global_config->button_border_unselected_color = droidboot_strtol(button_border_unselected_color, NULL, 16);
365+
free(button_border_unselected_color);
363366

364367
// Button border selected color
365368
char *button_border_selected_color = NULL;
366369
ret = config_parse_option(&button_border_selected_color, "button_border_selected_color", (const char *)buf);
367370
if(ret<0) global_config->button_border_selected_color = 0xffffff;
368371
else global_config->button_border_selected_color = droidboot_strtol(button_border_selected_color, NULL, 16);
372+
free(button_border_selected_color);
369373

370-
// Radius
371-
char *radius = NULL;
372-
ret = config_parse_option(&radius, "radius", (const char *)buf);
373-
if(ret<0) global_config->radius = 0;
374-
else global_config->radius = droidboot_atoi(radius);
374+
// Button border selected size
375+
char *button_border_selected_size = NULL;
376+
ret = config_parse_option(&button_border_selected_size, "button_border_selected_size", (const char *)buf);
377+
if(ret<0) global_config->button_border_selected_size = 1;
378+
else global_config->button_border_selected_size = droidboot_atoi(button_border_selected_size);
379+
free(button_border_selected_size);
375380

376381
// Button grow by default
377382
char *button_grow_default = NULL;
@@ -380,6 +385,27 @@ int parse_global_config(struct global_config *global_config) {
380385
global_config->button_grow_default = true;
381386
else
382387
global_config->button_grow_default = false;
388+
free(button_grow_default);
389+
390+
// Button radius
391+
char *button_radius = NULL;
392+
ret = config_parse_option(&button_radius, "button_radius", (const char *)buf);
393+
if(ret<0) global_config->button_radius = 0;
394+
else global_config->button_radius = droidboot_atoi(button_radius);
395+
free(button_radius);
396+
397+
// Global font size
398+
char *global_font_size = NULL;
399+
ret = config_parse_option(&global_font_size, "global_font_size", (const char *)buf);
400+
if(ret<0) global_config->global_font_size = 0;
401+
else global_config->global_font_size = droidboot_atoi(global_font_size);
402+
free(global_font_size);
403+
404+
// Global font name
405+
char *global_font_name = NULL;
406+
ret = config_parse_option(&global_font_name, "global_font_name", (const char *)buf);
407+
if(ret<0) global_config->global_font_name = NULL;
408+
else global_config->global_font_name = global_font_name;
383409

384410
return 0;
385411
}

include/droidboot_config_parser.h

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,29 @@
11
#pragma once
2+
23
struct global_config {
3-
char *default_entry_title;
4-
struct boot_entry *default_entry;
5-
int timeout;
6-
uint32_t bg_color;
7-
uint32_t button_color;
8-
uint32_t button_text_color;
9-
uint32_t button_selected_color;
10-
uint32_t button_selected_text_color;
11-
uint8_t border_width;
12-
uint32_t border_color;
13-
uint32_t border_selected_color;
14-
uint8_t button_border_width;
15-
uint32_t button_border_color;
16-
uint32_t button_border_selected_color;
17-
uint8_t radius;
18-
bool button_grow_default;
4+
char *default_entry_title;
5+
struct boot_entry *default_entry;
6+
int timeout;
7+
uint32_t win_bg_color;
8+
uint8_t win_radius;
9+
uint8_t win_border_size;
10+
uint32_t win_border_color;
11+
uint32_t list_bg_color;
12+
uint8_t list_radius;
13+
uint8_t list_border_size;
14+
uint32_t list_border_color;
15+
uint32_t global_font_size;
16+
char* global_font_name;
17+
uint32_t button_unselected_color;
18+
uint32_t button_unselected_text_color;
19+
uint32_t button_selected_color;
20+
uint32_t button_selected_text_color;
21+
uint8_t button_radius;
22+
bool button_grow_default;
23+
uint8_t button_border_unselected_size;
24+
uint32_t button_border_unselected_color;
25+
uint8_t button_border_selected_size;
26+
uint32_t button_border_selected_color;
1927
};
2028

2129

0 commit comments

Comments
 (0)