diff options
| author | louis <louis.braun@gmx.de> | 2015-03-15 15:50:12 +0100 |
|---|---|---|
| committer | louis <louis.braun@gmx.de> | 2015-03-15 15:50:12 +0100 |
| commit | b6e6065b0f6951042e78e6babe757393596a8a42 (patch) | |
| tree | dbd09ffca5d46f13a091c849868b2b410236e646 | |
| parent | a7d01384fcae390e3e3534b92a288ba4f6f0bd44 (diff) | |
| download | vdr-plugin-skindesigner-b6e6065b0f6951042e78e6babe757393596a8a42.tar.gz vdr-plugin-skindesigner-b6e6065b0f6951042e78e6babe757393596a8a42.tar.bz2 | |
added <systemmemory> viewelement in main menu
| -rw-r--r-- | HISTORY | 1 | ||||
| -rw-r--r-- | dtd/displaymenu.dtd | 9 | ||||
| -rw-r--r-- | libtemplate/templateview.c | 6 | ||||
| -rw-r--r-- | libtemplate/templateviewelement.h | 1 | ||||
| -rw-r--r-- | skinskeleton/xmlfiles/displaymenumain.xml | 8 | ||||
| -rw-r--r-- | views/displaymenuview.c | 40 | ||||
| -rw-r--r-- | views/displaymenuview.h | 2 |
7 files changed, 65 insertions, 2 deletions
@@ -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); |
