summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2015-03-15 15:50:12 +0100
committerlouis <louis.braun@gmx.de>2015-03-15 15:50:12 +0100
commitb6e6065b0f6951042e78e6babe757393596a8a42 (patch)
treedbd09ffca5d46f13a091c849868b2b410236e646
parenta7d01384fcae390e3e3534b92a288ba4f6f0bd44 (diff)
downloadvdr-plugin-skindesigner-b6e6065b0f6951042e78e6babe757393596a8a42.tar.gz
vdr-plugin-skindesigner-b6e6065b0f6951042e78e6babe757393596a8a42.tar.bz2
added <systemmemory> viewelement in main menu
-rw-r--r--HISTORY1
-rw-r--r--dtd/displaymenu.dtd9
-rw-r--r--libtemplate/templateview.c6
-rw-r--r--libtemplate/templateviewelement.h1
-rw-r--r--skinskeleton/xmlfiles/displaymenumain.xml8
-rw-r--r--views/displaymenuview.c40
-rw-r--r--views/displaymenuview.h2
7 files changed, 65 insertions, 2 deletions
diff --git a/HISTORY b/HISTORY
index a7b4b34..f63fabd 100644
--- a/HISTORY
+++ b/HISTORY
@@ -213,4 +213,5 @@ Version 0.3.0
- fixed crash when opening and closing main menu consecutively
- fixed bug detecting menu item numbers in main menu
- fixed recording progress bar in nopacity
+- added <systemmemory> viewelement in main menu
diff --git a/dtd/displaymenu.dtd b/dtd/displaymenu.dtd
index 1e2b6f5..63baaae 100644
--- a/dtd/displaymenu.dtd
+++ b/dtd/displaymenu.dtd
@@ -75,6 +75,12 @@
condition CDATA #IMPLIED
>
+<!ELEMENT systemmemory (area|areascroll)*>
+<!ATTLIST systemmemory
+ debug CDATA #IMPLIED
+ condition CDATA #IMPLIED
+>
+
<!ELEMENT temperatures (area|areascroll)*>
<!ATTLIST temperatures
debug CDATA #IMPLIED
@@ -131,7 +137,8 @@
>
<!ELEMENT menumain (background | header | datetime | time | colorbuttons | scrollbar | timers |
- discusage | devices | systemload | temperatures | currentschedule | currentweather | customtokens | menuitems)*>
+ discusage | devices | systemload | systemmemory | temperatures | currentschedule |
+ currentweather | customtokens | menuitems)*>
<!ATTLIST menumain
x CDATA #REQUIRED
y CDATA #REQUIRED
diff --git a/libtemplate/templateview.c b/libtemplate/templateview.c
index 60cd36a..989c693 100644
--- a/libtemplate/templateview.c
+++ b/libtemplate/templateview.c
@@ -1144,6 +1144,7 @@ void cTemplateViewMenu::SetViewElements(void) {
viewElementsAllowed.insert("message");
viewElementsAllowed.insert("discusage");
viewElementsAllowed.insert("systemload");
+ viewElementsAllowed.insert("systemmemory");
viewElementsAllowed.insert("temperatures");
viewElementsAllowed.insert("timers");
viewElementsAllowed.insert("devices");
@@ -1227,6 +1228,9 @@ string cTemplateViewMenu::GetViewElementName(eViewElement ve) {
case veSystemLoad:
name = "System Load";
break;
+ case veSystemMemory:
+ name = "System Memory";
+ break;
case veTemperatures:
name = "Temperatures";
break;
@@ -1348,6 +1352,8 @@ void cTemplateViewMenu::AddPixmap(string sViewElement, cTemplatePixmap *pix, vec
ve = veDiscUsage;
} else if (!sViewElement.compare("systemload")) {
ve = veSystemLoad;
+ } else if (!sViewElement.compare("systemmemory")) {
+ ve = veSystemMemory;
} else if (!sViewElement.compare("temperatures")) {
ve = veTemperatures;
} else if (!sViewElement.compare("timers")) {
diff --git a/libtemplate/templateviewelement.h b/libtemplate/templateviewelement.h
index 1456de6..5c7be48 100644
--- a/libtemplate/templateviewelement.h
+++ b/libtemplate/templateviewelement.h
@@ -45,6 +45,7 @@ enum eViewElement {
veButtons,
veDiscUsage,
veSystemLoad,
+ veSystemMemory,
veTemperatures,
veTimers,
veCurrentSchedule,
diff --git a/skinskeleton/xmlfiles/displaymenumain.xml b/skinskeleton/xmlfiles/displaymenumain.xml
index bc4c72d..e37bfcc 100644
--- a/skinskeleton/xmlfiles/displaymenumain.xml
+++ b/skinskeleton/xmlfiles/displaymenumain.xml
@@ -57,6 +57,14 @@
<systemload>
</systemload>
+ <!-- Available Variables systemmemory:
+ {totalmem} total system memory in MB
+ {usedmem} currently used system memory in MB
+ {usedmempercent} currently used system memory in Percent
+ -->
+ <systemmemory>
+ </systemmemory>
+
<!-- Available Variables tempreatures:
{cputemp} current cpu temperature in °C
{gputemp} current gpu temperature in °C
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 <fstream>
#include <iostream>
+#include <sys/sysinfo.h>
#include <vdr/menu.h>
#include <vdr/videodir.h>
#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<string,int>("totalmem", totalMemMB));
+ intTokens.insert(pair<string,int>("usedmem", usedMemMB));
+ if (totalMemMB > 0)
+ intTokens.insert(pair<string,int>("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);