summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkamel5 <vdr.kamel5 (at) gmx (dot) net>2021-05-04 13:58:03 +0200
committerkamel5 <vdr.kamel5 (at) gmx (dot) net>2021-05-04 13:58:03 +0200
commit4b2861e030d7207a3182f02072adda098fa993fe (patch)
tree0458c754f5f440a1532a8aaaf24af9215449b1a0
parent0aeb15d03a617c1249ebada42f9caeffee88afc9 (diff)
parent0ca96e8b3ad3021a3e5bc1701e7a91f96e79f980 (diff)
downloadvdr-plugin-skindesigner-4b2861e030d7207a3182f02072adda098fa993fe.tar.gz
vdr-plugin-skindesigner-4b2861e030d7207a3182f02072adda098fa993fe.tar.bz2
Merge branch 'pbiering/recIsInUse-vdrIsRecording'
-rw-r--r--HISTORY4
-rw-r--r--coreengine/definitions.h12
-rw-r--r--coreengine/listelements.c2
-rw-r--r--coreengine/viewdetail.c2
-rw-r--r--coreengine/viewdisplaymenu.c17
-rw-r--r--coreengine/viewdisplaymenu.h3
-rw-r--r--coreengine/viewelement.c2
-rw-r--r--coreengine/viewelementsdisplaymenu.c32
-rw-r--r--coreengine/viewelementsdisplaymenu.h14
-rw-r--r--coreengine/viewelementsdisplayreplay.c2
-rw-r--r--dtd/displaymenu.dtd18
-rw-r--r--skinskeleton/xmlfiles/displaymenumain.xml7
12 files changed, 111 insertions, 4 deletions
diff --git a/HISTORY b/HISTORY
index 8b5dbc3..8fa701b 100644
--- a/HISTORY
+++ b/HISTORY
@@ -503,3 +503,7 @@ Version 1.2.15
- [kamel5] Update Update italian tanslation in metrixhd and estuary4vdr
- [pbiering] fix tuner device mapping in case tuners are not starting as first device
- [kamel5] Fix cutting marks wasn't updated
+
+Upcoming for Version 1.2.16+
+- [pbiering] add additional recording flag "isInUse" - can be used in skins for e.g. records in cutting/copy(queue)
+- [pbiering] add additional vdrstatus exposing "vdrIsRecordingsHandlersActive" and "vdrIsRecording" - can be used in skins for e.g. IDLE/BUSY REC/FREE
diff --git a/coreengine/definitions.h b/coreengine/definitions.h
index 678c54f..3a0353a 100644
--- a/coreengine/definitions.h
+++ b/coreengine/definitions.h
@@ -79,6 +79,7 @@ enum class eVeDisplayMenuMain {
systemmemory,
temperatures,
vdrstatistics,
+ vdrstatus,
lastrecordings,
customtokens,
count
@@ -735,6 +736,12 @@ enum class eDMVdrstatisticsIT {
count = 0
};
+enum class eDMVdrstatusIT {
+ vdrIsRecordingsHandlersActive,
+ vdrIsRecording,
+ count
+};
+
enum class eDMTemperaturesST {
count = 0
};
@@ -1176,6 +1183,7 @@ enum class eLeMenuRecordingsIT {
isUHD,
isRadio,
isRecording,
+ isInUse,
count
};
@@ -1226,6 +1234,7 @@ enum class eCeMenuRecordingsIT {
isUHD,
isRadio,
isRecording,
+ isInUse,
count
};
@@ -1341,6 +1350,7 @@ enum class eDmDetailedHeaderRecIT {
isUHD,
isRadio,
isRecording,
+ isInUse,
count
};
@@ -1453,6 +1463,7 @@ enum class eDmDetailedRecIT {
isUHD,
isRadio,
isRecording,
+ isInUse,
count
};
@@ -1514,6 +1525,7 @@ enum class eDRRecInfoIT {
isHD,
isUHD,
isRecording,
+ isInUse,
isWideScreen,
count
};
diff --git a/coreengine/listelements.c b/coreengine/listelements.c
index 0bc6816..d74a734 100644
--- a/coreengine/listelements.c
+++ b/coreengine/listelements.c
@@ -151,6 +151,7 @@
tokenContainer->DefineIntToken("{isUHD}", (int)token_it::isUHD); \
tokenContainer->DefineIntToken("{isRadio}", (int)token_it::isRadio); \
tokenContainer->DefineIntToken("{isRecording}", (int)token_it::isRecording); \
+ tokenContainer->DefineIntToken("{isInUse}", (int)token_it::isInUse); \
tokenContainer->DefineStringToken("{recchannelname}", (int)token_st::recchannelname); \
tokenContainer->DefineStringToken("{recchannelid}", (int)token_st::recchannelid); \
}
@@ -209,6 +210,7 @@
tokenContainer->AddIntToken((int)token_it::isUHD, RecordingIsUHD(event)); /* detect UHD from 'info' */ \
tokenContainer->AddIntToken((int)token_it::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); /* detect Radio from 'info' and FPS */ \
tokenContainer->AddIntToken((int)token_it::isRecording, usedRecording->IsInUse() & ruTimer); \
+ tokenContainer->AddIntToken((int)token_it::isInUse, usedRecording->IsInUse()); \
SetScraperRecordingPoster(tokenContainer, usedRecording, true); \
}
diff --git a/coreengine/viewdetail.c b/coreengine/viewdetail.c
index 31a4f4b..d52219d 100644
--- a/coreengine/viewdetail.c
+++ b/coreengine/viewdetail.c
@@ -608,6 +608,7 @@ void cViewDetailRec::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{isUHD}", (int)eDmDetailedRecIT::isUHD);
tokenContainer->DefineIntToken("{isRadio}", (int)eDmDetailedRecIT::isRadio);
tokenContainer->DefineIntToken("{isRecording}", (int)eDmDetailedRecIT::isRecording);
+ tokenContainer->DefineIntToken("{isInUse}", (int)eDmDetailedRecIT::isInUse);
tokenContainer->DefineIntToken("{ismovie}", (int)eScraperIT::ismovie);
tokenContainer->DefineIntToken("{moviebudget}", (int)eScraperIT::moviebudget);
tokenContainer->DefineIntToken("{movierevenue}", (int)eScraperIT::movierevenue);
@@ -701,6 +702,7 @@ bool cViewDetailRec::Parse(bool forced) {
tokenContainer->AddIntToken((int)eDmDetailedRecIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info'
tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS
tokenContainer->AddIntToken((int)eDmDetailedRecIT::isRecording, recording->IsInUse() & ruTimer);
+ tokenContainer->AddIntToken((int)eDmDetailedRecIT::isInUse, recording->IsInUse());
}
}
SetRecInfos();
diff --git a/coreengine/viewdisplaymenu.c b/coreengine/viewdisplaymenu.c
index c1373ef..44f2ce4 100644
--- a/coreengine/viewdisplaymenu.c
+++ b/coreengine/viewdisplaymenu.c
@@ -1059,6 +1059,7 @@ cViewMenuMain::cViewMenuMain(const char *name) : cSubView(name) {
load = NULL;
memory = NULL;
vdrstats = NULL;
+ vdrstatus = NULL;
temperatures = NULL;
currentSchedule = NULL;
lastRecordings = NULL;
@@ -1084,6 +1085,7 @@ void cViewMenuMain::SetViewElements(void) {
viewElementNames.insert(pair<string, int>("systemload", (int)eVeDisplayMenuMain::systemload));
viewElementNames.insert(pair<string, int>("systemmemory", (int)eVeDisplayMenuMain::systemmemory));
viewElementNames.insert(pair<string, int>("vdrstatistics", (int)eVeDisplayMenuMain::vdrstatistics));
+ viewElementNames.insert(pair<string, int>("vdrstatus", (int)eVeDisplayMenuMain::vdrstatus));
viewElementNames.insert(pair<string, int>("temperatures", (int)eVeDisplayMenuMain::temperatures));
viewElementNames.insert(pair<string, int>("lastrecordings", (int)eVeDisplayMenuMain::lastrecordings));
viewElementNames.insert(pair<string, int>("customtokens", (int)eVeDisplayMenuMain::customtokens));
@@ -1133,6 +1135,11 @@ void cViewMenuMain::SetViewElementObjects(void) {
else if (viewElements[(int)eVeDisplayMenuMain::vdrstatistics])
vdrstats = dynamic_cast<cVeDmVdrstatistics*>(viewElements[(int)eVeDisplayMenuMain::vdrstatistics]);
+ if (orientation == eOrientation::horizontal && viewElementsHorizontal[(int)eVeDisplayMenuMain::vdrstatus])
+ vdrstatus = dynamic_cast<cVeDmVdrstatus*>(viewElementsHorizontal[(int)eVeDisplayMenuMain::vdrstatus]);
+ else if (viewElements[(int)eVeDisplayMenuMain::vdrstatus])
+ vdrstatus = dynamic_cast<cVeDmVdrstatus*>(viewElements[(int)eVeDisplayMenuMain::vdrstatus]);
+
if (orientation == eOrientation::horizontal && viewElementsHorizontal[(int)eVeDisplayMenuMain::temperatures])
temperatures = dynamic_cast<cVeDmTemperatures*>(viewElementsHorizontal[(int)eVeDisplayMenuMain::temperatures]);
else if (viewElements[(int)eVeDisplayMenuMain::temperatures])
@@ -1154,6 +1161,7 @@ void cViewMenuMain::SetViewElementObjects(void) {
if (load) load->SetDetached();
if (memory) memory->SetDetached();
if (vdrstats) vdrstats->SetDetached();
+ if (vdrstatus) vdrstatus->SetDetached();
if (temperatures) temperatures->SetDetached();
if (timers) timers->SetDetached();
if (currentSchedule) currentSchedule->SetDetached();
@@ -1190,6 +1198,10 @@ void cViewMenuMain::Clear(void) {
vdrstats->Reset();
vdrstats->Hide();
}
+
+ if (vdrstatus) {
+ vdrstatus->Hide();
+ }
if (temperatures) {
temperatures->Reset();
@@ -1283,6 +1295,11 @@ void cViewMenuMain::DrawDynamicVEs(void) {
if (vdrstats->Parse())
vdrstats->Render();
}
+ if (vdrstatus) {
+ vdrstatus->Show();
+ if (vdrstatus->Parse())
+ vdrstatus->Render();
+ }
if (temperatures) {
temperatures->Show();
if (temperatures->Parse())
diff --git a/coreengine/viewdisplaymenu.h b/coreengine/viewdisplaymenu.h
index b50bdb0..c20f3c0 100644
--- a/coreengine/viewdisplaymenu.h
+++ b/coreengine/viewdisplaymenu.h
@@ -188,6 +188,7 @@ private:
cVeDmSystemload *load;
cVeDmSystemmemory *memory;
cVeDmVdrstatistics *vdrstats;
+ cVeDmVdrstatus *vdrstatus;
cVeDmTemperatures *temperatures;
cVeDmCurrentschedule *currentSchedule;
cVeDmLastrecordings *lastRecordings;
@@ -322,4 +323,4 @@ public:
void SetTransparency(int transparency, bool forceDetached = false);
};
-#endif //__VIEWDISPLAYMENU_H \ No newline at end of file
+#endif //__VIEWDISPLAYMENU_H
diff --git a/coreengine/viewelement.c b/coreengine/viewelement.c
index abd5562..a9405cd 100644
--- a/coreengine/viewelement.c
+++ b/coreengine/viewelement.c
@@ -147,6 +147,8 @@ cViewElement *cViewElement::CreateViewElement(const char *name, const char *view
e = new cVeDmTemperatures();
else if (!strcmp(name, "vdrstatistics"))
e = new cVeDmVdrstatistics();
+ else if (!strcmp(name, "vdrstatus"))
+ e = new cVeDmVdrstatus();
else if (!strcmp(name, "lastrecordings"))
e = new cVeDmLastrecordings();
else if (!strcmp(name, "detailheaderepg"))
diff --git a/coreengine/viewelementsdisplaymenu.c b/coreengine/viewelementsdisplaymenu.c
index 972e4f3..d1312d8 100644
--- a/coreengine/viewelementsdisplaymenu.c
+++ b/coreengine/viewelementsdisplaymenu.c
@@ -867,6 +867,36 @@ bool cVeDmVdrstatistics::Parse(bool forced) {
return true;
}
/******************************************************************
+* cVeDmVdrstatus
+******************************************************************/
+cVeDmVdrstatus::cVeDmVdrstatus(void) {
+}
+
+cVeDmVdrstatus::~cVeDmVdrstatus(void) {
+}
+
+void cVeDmVdrstatus::Close(void) {
+ cViewElement::Close();
+}
+
+void cVeDmVdrstatus::SetTokenContainer(void) {
+ tokenContainer = new skindesignerapi::cTokenContainer();
+ tokenContainer->DefineIntToken("{vdrIsRecordingsHandlersActive}", (int)eDMVdrstatusIT::vdrIsRecordingsHandlersActive);
+ tokenContainer->DefineIntToken("{vdrIsRecording}", (int)eDMVdrstatusIT::vdrIsRecording);
+ InheritTokenContainer();
+}
+
+bool cVeDmVdrstatus::Parse(bool forced) {
+ if (!cViewElement::Parse(forced))
+ return false;
+
+ tokenContainer->Clear();
+ tokenContainer->AddIntToken((int)eDMVdrstatusIT::vdrIsRecordingsHandlersActive, RecordingsHandler.Active());
+ tokenContainer->AddIntToken((int)eDMVdrstatusIT::vdrIsRecording, cRecordControls::Active());
+ SetDirty();
+ return true;
+}
+/******************************************************************
* cVeDmLastrecordings
******************************************************************/
cVeDmLastrecordings::cVeDmLastrecordings(void) {
@@ -1171,6 +1201,7 @@ void cVeDmDetailheaderRec::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{isUHD}", (int)eDmDetailedHeaderRecIT::isUHD);
tokenContainer->DefineIntToken("{isRadio}", (int)eDmDetailedHeaderRecIT::isRadio);
tokenContainer->DefineIntToken("{isRecording}", (int)eDmDetailedHeaderRecIT::isRecording);
+ tokenContainer->DefineIntToken("{isInUse}", (int)eDmDetailedHeaderRecIT::isInUse);
InheritTokenContainer();
}
@@ -1220,6 +1251,7 @@ bool cVeDmDetailheaderRec::Parse(bool forced) {
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isUHD, RecordingIsUHD(event)); // detect UHD from 'info'
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRadio, RecordingIsRadio(event, info->FramesPerSecond())); // detect Radio from 'info' and FPS
tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isRecording, recording->IsInUse() & ruTimer);
+ tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::isInUse, recording->IsInUse());
}
if (info->ChannelName() && (strlen(info->ChannelName()) > 0)) {
diff --git a/coreengine/viewelementsdisplaymenu.h b/coreengine/viewelementsdisplaymenu.h
index 59ce03d..011b72f 100644
--- a/coreengine/viewelementsdisplaymenu.h
+++ b/coreengine/viewelementsdisplaymenu.h
@@ -179,6 +179,18 @@ public:
};
/******************************************************************
+* cVeDmVdrstatus
+******************************************************************/
+class cVeDmVdrstatus : public cViewElement {
+public:
+ cVeDmVdrstatus(void);
+ virtual ~cVeDmVdrstatus(void);
+ void Close(void);
+ void SetTokenContainer(void);
+ bool Parse(bool forced = false);
+};
+
+/******************************************************************
* cVeDmLastrecordings
******************************************************************/
class cVeDmLastrecordings : public cViewElement, public cScrapManager {
@@ -253,4 +265,4 @@ public:
void SetActiveTab(int activeTab) { SetDirty(); this->activeTab = activeTab; };
bool Parse(bool forced = false);
};
-#endif //__VIEWELEMENTSDM_H \ No newline at end of file
+#endif //__VIEWELEMENTSDM_H
diff --git a/coreengine/viewelementsdisplayreplay.c b/coreengine/viewelementsdisplayreplay.c
index 09ac47a..cf36506 100644
--- a/coreengine/viewelementsdisplayreplay.c
+++ b/coreengine/viewelementsdisplayreplay.c
@@ -120,6 +120,7 @@ void cVeDrRecInfo::SetTokenContainer(void) {
tokenContainer->DefineIntToken("{isHD}", (int)eDRRecInfoIT::isHD);
tokenContainer->DefineIntToken("{isUHD}", (int)eDRRecInfoIT::isUHD);
tokenContainer->DefineIntToken("{isRecording}", (int)eDRRecInfoIT::isRecording);
+ tokenContainer->DefineIntToken("{isInUse}", (int)eDRRecInfoIT::isInUse);
tokenContainer->DefineIntToken("{isWideScreen}", (int)eDRRecInfoIT::isWideScreen);
InheritTokenContainer();
}
@@ -150,6 +151,7 @@ bool cVeDrRecInfo::Parse(bool force) {
tokenContainer->AddIntToken((int)eDRRecInfoIT::isHD, isHD);
tokenContainer->AddIntToken((int)eDRRecInfoIT::isUHD, isUHD);
tokenContainer->AddIntToken((int)eDRRecInfoIT::isRecording, recording->IsInUse() & ruTimer);
+ tokenContainer->AddIntToken((int)eDRRecInfoIT::isInUse, recording->IsInUse());
tokenContainer->AddIntToken((int)eDRRecInfoIT::isWideScreen, isWideScreen);
tokenContainer->AddStringToken((int)eDRRecInfoST::resolution, resName.c_str());
tokenContainer->AddStringToken((int)eDRRecInfoST::aspect, aspectName.c_str());
diff --git a/dtd/displaymenu.dtd b/dtd/displaymenu.dtd
index 0333b9b..0c36848 100644
--- a/dtd/displaymenu.dtd
+++ b/dtd/displaymenu.dtd
@@ -218,6 +218,20 @@
condition CDATA #IMPLIED
>
+<!ELEMENT vdrstatus (areacontainer|area|areascroll)*>
+<!ATTLIST vdrstatus
+ delay CDATA #IMPLIED
+ orientation CDATA #IMPLIED
+ fadetime CDATA #IMPLIED
+ shifttime CDATA #IMPLIED
+ shifttype CDATA #IMPLIED
+ shiftmode CDATA #IMPLIED
+ startx CDATA #IMPLIED
+ starty CDATA #IMPLIED
+ debug CDATA #IMPLIED
+ condition CDATA #IMPLIED
+>
+
<!ELEMENT currentschedule (areacontainer|area|areascroll)*>
<!ATTLIST currentschedule
delay CDATA #IMPLIED
@@ -316,7 +330,7 @@
>
<!ELEMENT menumain (background | header | datetime | time | colorbuttons | scrollbar | sortmode | timers |
- discusage | devices | systemload | systemmemory | vdrstatistics | temperatures | currentschedule |
+ discusage | devices | systemload | systemmemory | vdrstatistics | vdrstatus | temperatures | currentschedule |
currentweather | lastrecordings | customtokens | menuitems)*>
<!ATTLIST menumain
x CDATA #REQUIRED
@@ -501,4 +515,4 @@
debug (true|false) #IMPLIED
>
-%functions; \ No newline at end of file
+%functions;
diff --git a/skinskeleton/xmlfiles/displaymenumain.xml b/skinskeleton/xmlfiles/displaymenumain.xml
index a0a3284..a12e3be 100644
--- a/skinskeleton/xmlfiles/displaymenumain.xml
+++ b/skinskeleton/xmlfiles/displaymenumain.xml
@@ -91,6 +91,13 @@
<vdrstatistics>
</vdrstatistics>
+ <!-- Available Variables vdrstatus
+ {vdrIsRecordingsHandlersActive} true if active RecordingsHandlers (cut,copy,move) aka "busy"
+ {vdrIsRecording} true if active recording
+ -->
+ <vdrstatus>
+ </vdrstatus>
+
<!-- Available Variables tempreatures:
{cputemp} current cpu temperature in °C
{gputemp} current gpu temperature in °C