blob: c2b7f5e6771d4bfaa2df9730bf64e800204053bc [file] [log] [blame]
Hisham Muhammadd6231ba2006-03-04 18:16:49 +00001
Hisham Muhammadc2cdcd02006-05-30 13:47:28 +00002#include "DisplayOptionsPanel.h"
Hisham Muhammadd6231ba2006-03-04 18:16:49 +00003
Hisham Muhammadc2cdcd02006-05-30 13:47:28 +00004#include "Panel.h"
Hisham Muhammadd6231ba2006-03-04 18:16:49 +00005#include "CheckItem.h"
6#include "Settings.h"
7#include "ScreenManager.h"
8
9#include "debug.h"
10#include <assert.h>
11
12/*{
13
Hisham Muhammadc2cdcd02006-05-30 13:47:28 +000014typedef struct DisplayOptionsPanel_ {
15 Panel super;
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000016
17 Settings* settings;
18 ScreenManager* scr;
Hisham Muhammadc2cdcd02006-05-30 13:47:28 +000019} DisplayOptionsPanel;
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000020
21}*/
22
Hisham Muhammadc2cdcd02006-05-30 13:47:28 +000023DisplayOptionsPanel* DisplayOptionsPanel_new(Settings* settings, ScreenManager* scr) {
24 DisplayOptionsPanel* this = (DisplayOptionsPanel*) malloc(sizeof(DisplayOptionsPanel));
25 Panel* super = (Panel*) this;
26 Panel_init(super, 1, 1, 1, 1, CHECKITEM_CLASS, true);
27 ((Object*)this)->delete = DisplayOptionsPanel_delete;
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000028
29 this->settings = settings;
30 this->scr = scr;
Hisham Muhammadc2cdcd02006-05-30 13:47:28 +000031 super->eventHandler = DisplayOptionsPanel_EventHandler;
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000032
Hisham Muhammadc2cdcd02006-05-30 13:47:28 +000033 Panel_setHeader(super, "Display options");
34 Panel_add(super, (Object*) CheckItem_new(String_copy("Tree view"), &(settings->pl->treeView)));
35 Panel_add(super, (Object*) CheckItem_new(String_copy("Shadow other users' processes"), &(settings->pl->shadowOtherUsers)));
36 Panel_add(super, (Object*) CheckItem_new(String_copy("Hide kernel threads"), &(settings->pl->hideKernelThreads)));
37 Panel_add(super, (Object*) CheckItem_new(String_copy("Hide userland threads"), &(settings->pl->hideUserlandThreads)));
38 Panel_add(super, (Object*) CheckItem_new(String_copy("Highlight program \"basename\""), &(settings->pl->highlightBaseName)));
39 Panel_add(super, (Object*) CheckItem_new(String_copy("Highlight megabytes in memory counters"), &(settings->pl->highlightMegabytes)));
40 Panel_add(super, (Object*) CheckItem_new(String_copy("Leave a margin around header"), &(settings->header->margin)));
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000041 return this;
42}
43
Hisham Muhammadc2cdcd02006-05-30 13:47:28 +000044void DisplayOptionsPanel_delete(Object* object) {
45 Panel* super = (Panel*) object;
46 DisplayOptionsPanel* this = (DisplayOptionsPanel*) object;
47 Panel_done(super);
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000048 free(this);
49}
50
Hisham Muhammadc2cdcd02006-05-30 13:47:28 +000051HandlerResult DisplayOptionsPanel_EventHandler(Panel* super, int ch) {
52 DisplayOptionsPanel* this = (DisplayOptionsPanel*) super;
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000053
54 HandlerResult result = IGNORED;
Hisham Muhammadc2cdcd02006-05-30 13:47:28 +000055 CheckItem* selected = (CheckItem*) Panel_getSelected(super);
Hisham Muhammadd6231ba2006-03-04 18:16:49 +000056
57 switch(ch) {
58 case 0x0a:
59 case 0x0d:
60 case KEY_ENTER:
61 case ' ':
62 *(selected->value) = ! *(selected->value);
63 result = HANDLED;
64 }
65
66 if (result == HANDLED) {
67 this->settings->changed = true;
68 Header* header = this->settings->header;
69 Header_calculateHeight(header);
70 Header_draw(header);
71 ScreenManager_resize(this->scr, this->scr->x1, header->height, this->scr->x2, this->scr->y2);
72 }
73 return result;
74}
75