summaryrefslogtreecommitdiffstats
path: root/MetersPanel.c
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2015-01-21 23:27:31 -0200
committerHisham Muhammad <hisham@gobolinux.org>2015-01-21 23:27:31 -0200
commit3383d8e5561dfc6fb2b65e0a194df94ccb5e08af (patch)
treedafba704561386b31b6b8af6dafb5b9a2ba7453c /MetersPanel.c
parent36b78328843d0dae0d0fadbd0e814a8a1546327c (diff)
Sorry about the mega-patch.
This is a work-in-progress, code is currently broken. (Some actions, and notably, the header, are missing.)
Diffstat (limited to 'MetersPanel.c')
-rw-r--r--MetersPanel.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/MetersPanel.c b/MetersPanel.c
index 0e755f52..ee25b0d1 100644
--- a/MetersPanel.c
+++ b/MetersPanel.c
@@ -21,6 +21,7 @@ typedef struct MetersPanel_ {
Settings* settings;
Vector* meters;
ScreenManager* scr;
+ bool moving;
} MetersPanel;
}*/
@@ -42,6 +43,13 @@ static HandlerResult MetersPanel_eventHandler(Panel* super, int ch) {
case 0x0a:
case 0x0d:
case KEY_ENTER:
+ {
+ this->moving = !(this->moving);
+ ((ListItem*)Panel_getSelected(super))->moving = this->moving;
+ result = HANDLED;
+ break;
+ }
+ case ' ':
case KEY_F(4):
case 't':
{
@@ -53,6 +61,13 @@ static HandlerResult MetersPanel_eventHandler(Panel* super, int ch) {
result = HANDLED;
break;
}
+ case KEY_UP:
+ {
+ if (!this->moving) {
+ break;
+ }
+ /* else fallthrough */
+ }
case KEY_F(7):
case '[':
case '-':
@@ -62,6 +77,13 @@ static HandlerResult MetersPanel_eventHandler(Panel* super, int ch) {
result = HANDLED;
break;
}
+ case KEY_DOWN:
+ {
+ if (!this->moving) {
+ break;
+ }
+ /* else fallthrough */
+ }
case KEY_F(8):
case ']':
case '+':
@@ -83,7 +105,7 @@ static HandlerResult MetersPanel_eventHandler(Panel* super, int ch) {
}
}
if (result == HANDLED) {
- Header* header = this->settings->header;
+ Header* header = (Header*) this->scr->header;
this->settings->changed = true;
Header_calculateHeight(header);
Header_draw(header);
@@ -108,6 +130,7 @@ MetersPanel* MetersPanel_new(Settings* settings, const char* header, Vector* met
this->settings = settings;
this->meters = meters;
this->scr = scr;
+ this->moving = false;
Panel_setHeader(super, header);
for (int i = 0; i < Vector_size(meters); i++) {
Meter* meter = (Meter*) Vector_get(meters, i);

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