summaryrefslogtreecommitdiffstats
path: root/Header.c
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2015-03-16 23:01:21 -0300
committerHisham Muhammad <hisham@gobolinux.org>2015-03-16 23:01:21 -0300
commit9ff5d2b243472ae73d10dafdd7c0e24dc5052f6d (patch)
tree87c7999202ec8bb4f57ad6e5a056738c731f73cd /Header.c
parent14a177800bfa41bc2b3bb07d45204cbe464cf1b3 (diff)
Fix saving of header states, motion in Setup screen.
Diffstat (limited to 'Header.c')
-rw-r--r--Header.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/Header.c b/Header.c
index 6e99a681..baeb267b 100644
--- a/Header.c
+++ b/Header.c
@@ -65,12 +65,41 @@ void Header_populateFromSettings(Header* this) {
MeterColumnSettings* colSettings = &this->settings->columns[col];
for (int i = 0; i < colSettings->len; i++) {
Header_addMeterByName(this, colSettings->names[i], col);
- Header_setMode(this, i, colSettings->modes[i], col);
+ if (colSettings->modes[i] != 0) {
+ Header_setMode(this, i, colSettings->modes[i], col);
+ }
}
}
Header_calculateHeight(this);
}
+void Header_writeBackToSettings(const Header* this) {
+ Header_forEachColumn(this, col) {
+ MeterColumnSettings* colSettings = &this->settings->columns[col];
+
+ String_freeArray(colSettings->names);
+ free(colSettings->modes);
+
+ Vector* vec = this->columns[col];
+ int len = Vector_size(vec);
+
+ colSettings->names = calloc(len+1, sizeof(char*));
+ colSettings->modes = calloc(len, sizeof(int));
+
+ for (int i = 0; i < len; i++) {
+ Meter* meter = (Meter*) Vector_get(vec, i);
+ char* name = calloc(64, sizeof(char*));
+ if (meter->param) {
+ snprintf(name, 63, "%s(%d)", As_Meter(meter)->name, meter->param);
+ } else {
+ snprintf(name, 63, "%s", As_Meter(meter)->name);
+ }
+ colSettings->names[i] = name;
+ colSettings->modes[i] = meter->mode;
+ }
+ }
+}
+
MeterModeId Header_addMeterByName(Header* this, char* name, int column) {
Vector* meters = this->columns[column];

© 2014-2024 Faster IT GmbH | imprint | privacy policy