From b6e6065b0f6951042e78e6babe757393596a8a42 Mon Sep 17 00:00:00 2001 From: louis Date: Sun, 15 Mar 2015 15:50:12 +0100 Subject: added viewelement in main menu --- views/displaymenuview.c | 40 +++++++++++++++++++++++++++++++++++++++- views/displaymenuview.h | 2 ++ 2 files changed, 41 insertions(+), 1 deletion(-) (limited to 'views') diff --git a/views/displaymenuview.c b/views/displaymenuview.c index 1921c95..22b6084 100644 --- a/views/displaymenuview.c +++ b/views/displaymenuview.c @@ -1,6 +1,7 @@ #define __STL_CONFIG_H #include #include +#include #include #include #include "displaymenuview.h" @@ -224,6 +225,7 @@ void cDisplayMenuView::Action(void) { cDisplayMenuMainView::cDisplayMenuMainView(cTemplateView *tmplView, bool menuInit) : cDisplayMenuView(tmplView, menuInit) { initial = true; lastSystemLoad = 0.0; + lastMemUsage = -1; InitDevices(); } @@ -243,9 +245,10 @@ void cDisplayMenuMainView::DrawStaticViewElements(void) { bool cDisplayMenuMainView::DrawDynamicViewElements(void) { bool loadChanged = DrawLoad(); + bool memChanged = DrawMemory(); bool devicesChanged = DrawDevices(); initial = false; - return loadChanged || devicesChanged; + return loadChanged || memChanged || devicesChanged; } @@ -415,6 +418,41 @@ bool cDisplayMenuMainView::DrawLoad(void) { return true; } +bool cDisplayMenuMainView::DrawMemory(void) { + if (!ExecuteViewElement(veSystemMemory)) { + return false; + } + struct sysinfo memInfo; + sysinfo (&memInfo); + + long long totalMem = memInfo.totalram; + totalMem += memInfo.totalswap; + totalMem *= memInfo.mem_unit; + int totalMemMB = totalMem / 1024 / 1024; + + long long usedMem = memInfo.totalram - memInfo.freeram; + usedMem += memInfo.totalswap - memInfo.freeswap; + usedMem *= memInfo.mem_unit; + int usedMemMB = usedMem / 1024 / 1024; + + if (lastMemUsage == usedMemMB) { + return false; + } + lastMemUsage = usedMemMB; + + map < string, string > stringTokens; + map < string, int > intTokens; + intTokens.insert(pair("totalmem", totalMemMB)); + intTokens.insert(pair("usedmem", usedMemMB)); + if (totalMemMB > 0) + intTokens.insert(pair("usedmempercent", usedMemMB * 100 / totalMemMB)); + + ClearViewElement(veSystemMemory); + DrawViewElement(veSystemMemory, &stringTokens, &intTokens); + + return true; +} + void cDisplayMenuMainView::DrawTemperatures(void) { if (!ExecuteViewElement(veTemperatures)) { return; diff --git a/views/displaymenuview.h b/views/displaymenuview.h index c7aa7eb..3bc64b8 100644 --- a/views/displaymenuview.h +++ b/views/displaymenuview.h @@ -38,9 +38,11 @@ class cDisplayMenuMainView : public cDisplayMenuView { private: bool initial; double lastSystemLoad; + int lastMemUsage; void DrawTimers(void); void DrawDiscUsage(void); bool DrawLoad(void); + bool DrawMemory(void); void DrawTemperatures(void); bool DrawDevices(void); void DrawCurrentSchedule(void); -- cgit v1.2.3