diff options
Diffstat (limited to 'src/blocks')
| -rw-r--r-- | src/blocks/date.c | 15 | ||||
| -rw-r--r-- | src/blocks/fs.c | 16 | ||||
| -rw-r--r-- | src/blocks/ram.c | 12 | ||||
| -rw-r--r-- | src/blocks/script.c | 16 | ||||
| -rw-r--r-- | src/blocks/slider.c | 1 |
5 files changed, 56 insertions, 4 deletions
diff --git a/src/blocks/date.c b/src/blocks/date.c index cd1adce..cbc6cce 100644 --- a/src/blocks/date.c +++ b/src/blocks/date.c @@ -60,6 +60,20 @@ static int block_date_validate(block_t *block, config_t *config) return errors; } +static config_status_t block_date_change(block_t *block, config_t *config, const char *key, const char *value) +{ + block_date_t *date = (block_date_t *)block; + + if (!strcmp(key, "text")) { + free(date->format); + date->format = strcopy(value); + return CONFIG_SUCCESS; + } + + extern const config_entry_t block_text_entries[]; + return config_read_entry(block_text_entries, block, NULL, "block", block->label, key, value); +} + const block_scheme_t block_date_scheme = { .name = "date", .entries = NULL, @@ -67,4 +81,5 @@ const block_scheme_t block_date_scheme = { .init_fn = block_date_init, .clean_fn = block_date_clean, .validate_fn = block_date_validate, + .change_fn = block_date_change, }; diff --git a/src/blocks/fs.c b/src/blocks/fs.c index a52e491..ea51a93 100644 --- a/src/blocks/fs.c +++ b/src/blocks/fs.c @@ -179,6 +179,21 @@ static const config_entry_t block_fs_entries[] = { { 0 }, }; +static config_status_t block_fs_change(block_t *block, config_t *config, const char *key, const char *value) +{ + if (!strcmp(key, "text")) { + log_panic("TODO"); + return CONFIG_SUCCESS; + } + + extern const config_entry_t block_text_entries[]; + config_status_t success = config_read_entry(block_text_entries, block, NULL, "block", block->label, key, value); + + return success == CONFIG_UNKNOWN + ? config_read_entry(block_fs_entries, block, NULL, "block", block->label, key, value) + : success; +} + const block_scheme_t block_fs_scheme = { .name = "fs", .entries = block_fs_entries, @@ -186,4 +201,5 @@ const block_scheme_t block_fs_scheme = { .init_fn = block_fs_init, .clean_fn = block_fs_clean, .validate_fn = block_fs_validate, + .change_fn = block_fs_change, }; diff --git a/src/blocks/ram.c b/src/blocks/ram.c index 89cd196..7fd821f 100644 --- a/src/blocks/ram.c +++ b/src/blocks/ram.c @@ -175,6 +175,17 @@ static int block_ram_validate(block_t *block, config_t *config) return errors; } +static config_status_t block_ram_change(block_t *block, config_t *config, const char *key, const char *value) +{ + if (!strcmp(key, "text")) { + log_panic("TODO"); + return CONFIG_SUCCESS; + } + + extern const config_entry_t block_text_entries[]; + return config_read_entry(block_text_entries, block, NULL, "block", block->label, key, value); +} + const block_scheme_t block_ram_scheme = { .name = "ram", .entries = NULL, @@ -182,4 +193,5 @@ const block_scheme_t block_ram_scheme = { .init_fn = block_ram_init, .clean_fn = block_ram_clean, .validate_fn = block_ram_validate, + .change_fn = block_ram_change, }; diff --git a/src/blocks/script.c b/src/blocks/script.c index 6fa5f6d..098dc4e 100644 --- a/src/blocks/script.c +++ b/src/blocks/script.c @@ -73,15 +73,23 @@ static int block_script_validate(block_t *block, config_t *config) return errors; } -static const config_entry_t block_script_entries[] = { - { 0 }, -}; +static config_status_t block_script_change(block_t *block, config_t *config, const char *key, const char *value) +{ + if (!strcmp(key, "text")) { + log_panic("TODO"); + return CONFIG_SUCCESS; + } + + extern const config_entry_t block_text_entries[]; + return config_read_entry(block_text_entries, block, NULL, "block", block->label, key, value); +} const block_scheme_t block_script_scheme = { .name = "script", - .entries = block_script_entries, + .entries = NULL, .size = sizeof(block_script_t), .init_fn = block_script_init, .clean_fn = block_script_clean, .validate_fn = block_script_validate, + .change_fn = block_script_change, }; diff --git a/src/blocks/slider.c b/src/blocks/slider.c index 6ad5211..34d6c35 100644 --- a/src/blocks/slider.c +++ b/src/blocks/slider.c @@ -281,6 +281,7 @@ const block_scheme_t block_slider_scheme = { .name = "slider", .entries = block_slider_entries, .size = sizeof(block_slider_t), + .validate_change = true, .init_fn = block_slider_init, .clean_fn = block_slider_clean, .validate_fn = block_slider_validate, |
