here some example implementation of your proposal.
diff -r b227e49bcedf src/flexinfo.c
--- a/src/flexinfo.c Sat Sep 28 23:59:18 2013 +0200
+++ b/src/flexinfo.c Sun Sep 29 00:57:41 2013 +0200
@@ -93,7 +93,38 @@
info_elem_t info_config_liveview[] =
{
{ .config = { { INFO_TYPE_CONFIG } } },
- { .text = { { INFO_TYPE_TEXT, { 150, 20, 2, .name = "Note" }}, "<FlexInfo unconfigured>", COLOR_CYAN, INFO_COL_PEEK, INFO_FONT_SMALL } },
+ /* entry 1, top bar */
+ { .fill = { { INFO_TYPE_FILL, { 10, 60, 1, .w=700, .h=30, .name = "Top bar" }}, .color = COLOR_BG } },
+ /* entry 2, bottom bar */
+ { .fill = { { INFO_TYPE_FILL, { 10, 300, 1, .w=700, .h=30, .name = "Bottom bar" }}, .color = COLOR_BG } },
+
+
+ /* fill top bar */
+
+ /* entry 3, time (leftmost) */
+ { .string = { { INFO_TYPE_STRING, { 15, 5, 2, .name = "Hrs", .anchor = 1, .anchor_flags = INFO_ANCHOR_LEFT | INFO_ANCHOR_TOP, .anchor_flags_self = INFO_ANCHOR_LEFT | INFO_ANCHOR_TOP }}, INFO_STRING_TIME_HH24, COLOR_WHITE, INFO_COL_PEEK, INFO_FONT_MEDIUM } },
+ { .text = { { INFO_TYPE_TEXT, { 0, 0, 2, .name = ":", .anchor = 3, .anchor_flags = INFO_ANCHOR_RIGHT | INFO_ANCHOR_TOP, .anchor_flags_self = INFO_ANCHOR_LEFT | INFO_ANCHOR_TOP }}, ":", COLOR_WHITE, INFO_COL_PEEK, INFO_FONT_MEDIUM } },
+ { .string = { { INFO_TYPE_STRING, { 0, 0, 2, .name = "Min", .anchor = 4, .anchor_flags = INFO_ANCHOR_RIGHT | INFO_ANCHOR_TOP, .anchor_flags_self = INFO_ANCHOR_LEFT | INFO_ANCHOR_TOP }}, INFO_STRING_TIME_MM, COLOR_WHITE, INFO_COL_PEEK, INFO_FONT_MEDIUM } },
+
+ /* entry 6, free space (rightmost)*/
+ { .text = { { INFO_TYPE_TEXT, { -15, 5, 2, .name = "GB", .anchor = 1, .anchor_flags = INFO_ANCHOR_RIGHT | INFO_ANCHOR_TOP, .anchor_flags_self = INFO_ANCHOR_RIGHT | INFO_ANCHOR_TOP }}, "GB", COLOR_WHITE, INFO_COL_PEEK, INFO_FONT_MEDIUM } },
+ { .string = { { INFO_TYPE_STRING, { -2, 0, 2, .name = "Space GB", .anchor = 6, .anchor_flags = INFO_ANCHOR_LEFT | INFO_ANCHOR_TOP, .anchor_flags_self = INFO_ANCHOR_RIGHT | INFO_ANCHOR_TOP }}, INFO_STRING_FREE_GB_FLOAT, COLOR_WHITE, INFO_COL_PEEK, INFO_FONT_MEDIUM } },
+
+ /* entry 8, pictures */
+ { .string = { { INFO_TYPE_STRING, { -15, 0, 2, .name = "Pics", .anchor = 7, .anchor_flags = INFO_ANCHOR_LEFT | INFO_ANCHOR_TOP, .anchor_flags_self = INFO_ANCHOR_RIGHT | INFO_ANCHOR_TOP }}, INFO_STRING_PICTURES_AVAIL_AUTO, COLOR_WHITE, INFO_COL_PEEK, INFO_FONT_MEDIUM } },
+
+ /* entry 9, temperature */
+ { .text = { { INFO_TYPE_TEXT, { -15, 0, 2, .name = "°C", .anchor = 8, .anchor_flags = INFO_ANCHOR_LEFT | INFO_ANCHOR_TOP, .anchor_flags_self = INFO_ANCHOR_RIGHT | INFO_ANCHOR_TOP }}, SYM_DEGREE"C", COLOR_WHITE, INFO_COL_PEEK, INFO_FONT_MEDIUM } },
+ { .string = { { INFO_TYPE_STRING, { -2, 0, 2, .name = "Temp", .anchor = 9, .anchor_flags = INFO_ANCHOR_LEFT | INFO_ANCHOR_TOP, .anchor_flags_self = INFO_ANCHOR_RIGHT | INFO_ANCHOR_TOP }}, INFO_STRING_TEMPERATURE, COLOR_WHITE, INFO_COL_PEEK, INFO_FONT_MEDIUM } },
+
+
+ /* fill bottom bar */
+
+ /* entry 11, ISO */
+ { .string = { { INFO_TYPE_STRING, { -15, 5, 2, .name = "ISO", .anchor = 2, .anchor_flags = INFO_ANCHOR_RIGHT | INFO_ANCHOR_TOP, .anchor_flags_self = INFO_ANCHOR_RIGHT | INFO_ANCHOR_TOP }}, INFO_STRING_ISO, COLOR_WHITE, INFO_COL_PEEK, INFO_FONT_MEDIUM } },
+ { .text = { { INFO_TYPE_TEXT, { -2, 0, 2, .name = "ISO icon", .anchor = 11, .anchor_flags = INFO_ANCHOR_LEFT | INFO_ANCHOR_TOP, .anchor_flags_self = INFO_ANCHOR_RIGHT | INFO_ANCHOR_TOP }}, SYM_ISO, COLOR_WHITE, INFO_COL_PEEK, INFO_FONT_MEDIUM } },
+
+
{ .type = INFO_TYPE_END },
};
@@ -1190,7 +1221,14 @@
{
case INFO_STRING_ISO:
{
- snprintf(buffer, maxsize, "(ISO)");
+ if(lens_info.iso == 0)
+ {
+ snprintf(buffer, maxsize, "%d", lens_info.iso_auto);
+ }
+ else
+ {
+ snprintf(buffer, maxsize, "%d", lens_info.iso);
+ }
break;
}
case INFO_STRING_ISO_MIN:
@@ -1508,6 +1546,11 @@
snprintf(buffer, maxsize, "%d.%d", fsg, fsgf);
break;
}
+ case INFO_STRING_TEMPERATURE:
+ {
+ snprintf(buffer, maxsize, "%d", EFIC_CELSIUS);
+ break;
+ }
/* empty string */
case INFO_STRING_NONE:
@@ -2987,8 +3030,9 @@
{
if(info_config_dynamic[pos].hdr.status == INFO_STATUS_FREE)
{
- /* this empty entry will be the returned one */
+ /* this empty entry will be the returned one. set it to CONFIG type so it wont get handled */
item = &info_config_dynamic[pos];
+ item->type = INFO_TYPE_CONFIG;
item->hdr.status = INFO_STATUS_USED;
item->hdr.config = info_config_dynamic;
item->hdr.config_pos = pos;
diff -r b227e49bcedf src/flexinfo.h
--- a/src/flexinfo.h Sat Sep 28 23:59:18 2013 +0200
+++ b/src/flexinfo.h Sun Sep 29 00:57:41 2013 +0200
@@ -131,6 +131,7 @@
#define INFO_STRING_FREE_GB_INT 41
#define INFO_STRING_FREE_GB_FLOAT 42
#define INFO_STRING_KELVIN_ICO 43
+#define INFO_STRING_TEMPERATURE 44
#define INFO_FONT_SMALL 0
#define INFO_FONT_MEDIUM 1
@@ -228,5 +229,10 @@
info_elem_dynamic_t dynamic;
};
+/* register a new element that is unconfigured by default. set it to the type you need it to be and care for it yourself */
+info_elem_t *info_add_item();
+/* unregister a previously registered element */
+void info_free_item(info_elem_t *item);
+
#endif
#endif