mirror of
				https://projects.vdr-developer.org/git/vdr-plugin-skindesigner.git
				synced 2023-10-19 15:58:31 +00:00 
			
		
		
		
	fixed line breaks
This commit is contained in:
		| @@ -1,347 +1,347 @@ | |||||||
| #include "animation.h" | #include "animation.h" | ||||||
| #include <math.h> | #include <math.h> | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cAnimation | * cAnimation | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| cAnimation::cAnimation(cScrollable *scrollable) : cThread("scroller") { | cAnimation::cAnimation(cScrollable *scrollable) : cThread("scroller") { | ||||||
|     this->scrollable = scrollable; |     this->scrollable = scrollable; | ||||||
|     this->detachable = NULL; |     this->detachable = NULL; | ||||||
|     this->fadable = NULL; |     this->fadable = NULL; | ||||||
|     this->shiftable = NULL; |     this->shiftable = NULL; | ||||||
|     this->blinkable = NULL; |     this->blinkable = NULL; | ||||||
|     waitOnWakeup = false; |     waitOnWakeup = false; | ||||||
|     doAnimation = true; |     doAnimation = true; | ||||||
|     modeIn = false; |     modeIn = false; | ||||||
|     blinkFunc = -1; |     blinkFunc = -1; | ||||||
| } | } | ||||||
|  |  | ||||||
| cAnimation::cAnimation(cDetachable *detachable, bool wait, bool animation) : cThread("detached") { | cAnimation::cAnimation(cDetachable *detachable, bool wait, bool animation) : cThread("detached") { | ||||||
|     this->scrollable = NULL; |     this->scrollable = NULL; | ||||||
|     this->detachable = detachable; |     this->detachable = detachable; | ||||||
|     this->fadable = NULL; |     this->fadable = NULL; | ||||||
|     this->shiftable = NULL; |     this->shiftable = NULL; | ||||||
|     this->blinkable = NULL; |     this->blinkable = NULL; | ||||||
|     waitOnWakeup = wait; |     waitOnWakeup = wait; | ||||||
|     doAnimation = animation; |     doAnimation = animation; | ||||||
|     modeIn = false; |     modeIn = false; | ||||||
|     blinkFunc = -1; |     blinkFunc = -1; | ||||||
| } | } | ||||||
|  |  | ||||||
| cAnimation::cAnimation(cFadable *fadable, bool fadein) : cThread("fadable") { | cAnimation::cAnimation(cFadable *fadable, bool fadein) : cThread("fadable") { | ||||||
|     this->scrollable = NULL; |     this->scrollable = NULL; | ||||||
|     this->detachable = NULL; |     this->detachable = NULL; | ||||||
|     this->fadable = fadable; |     this->fadable = fadable; | ||||||
|     this->shiftable = NULL; |     this->shiftable = NULL; | ||||||
|     this->blinkable = NULL; |     this->blinkable = NULL; | ||||||
|     waitOnWakeup = false; |     waitOnWakeup = false; | ||||||
|     doAnimation = true; |     doAnimation = true; | ||||||
|     modeIn = fadein; |     modeIn = fadein; | ||||||
|     blinkFunc = -1; |     blinkFunc = -1; | ||||||
| } | } | ||||||
|  |  | ||||||
| cAnimation::cAnimation(cShiftable *shiftable, cPoint &start, cPoint &end, bool shiftin) : cThread("shiftable") { | cAnimation::cAnimation(cShiftable *shiftable, cPoint &start, cPoint &end, bool shiftin) : cThread("shiftable") { | ||||||
|     this->scrollable = NULL; |     this->scrollable = NULL; | ||||||
|     this->detachable = NULL; |     this->detachable = NULL; | ||||||
|     this->fadable = NULL; |     this->fadable = NULL; | ||||||
|     this->shiftable = shiftable; |     this->shiftable = shiftable; | ||||||
|     this->blinkable = NULL; |     this->blinkable = NULL; | ||||||
|     waitOnWakeup = false; |     waitOnWakeup = false; | ||||||
|     doAnimation = true; |     doAnimation = true; | ||||||
|     modeIn = shiftin; |     modeIn = shiftin; | ||||||
|     shiftstart = start; |     shiftstart = start; | ||||||
|     shiftend = end; |     shiftend = end; | ||||||
|     blinkFunc = -1; |     blinkFunc = -1; | ||||||
| } | } | ||||||
|  |  | ||||||
| cAnimation::cAnimation(cBlinkable *blinkable, int func) : cThread("blinking") { | cAnimation::cAnimation(cBlinkable *blinkable, int func) : cThread("blinking") { | ||||||
|     this->scrollable = NULL; |     this->scrollable = NULL; | ||||||
|     this->detachable = NULL; |     this->detachable = NULL; | ||||||
|     this->fadable = NULL; |     this->fadable = NULL; | ||||||
|     this->shiftable = NULL; |     this->shiftable = NULL; | ||||||
|     this->blinkable = blinkable; |     this->blinkable = blinkable; | ||||||
|     waitOnWakeup = false; |     waitOnWakeup = false; | ||||||
|     doAnimation = true; |     doAnimation = true; | ||||||
|     modeIn = false; |     modeIn = false; | ||||||
|     blinkFunc = func; |     blinkFunc = func; | ||||||
| } | } | ||||||
|  |  | ||||||
| cAnimation::~cAnimation(void) { | cAnimation::~cAnimation(void) { | ||||||
|     sleepWait.Signal(); |     sleepWait.Signal(); | ||||||
|     Cancel(2); |     Cancel(2); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAnimation::WakeUp(void) { | void cAnimation::WakeUp(void) { | ||||||
|     sleepWait.Signal(); |     sleepWait.Signal(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAnimation::Stop(bool deletePixmaps) {  | void cAnimation::Stop(bool deletePixmaps) {  | ||||||
|     sleepWait.Signal(); |     sleepWait.Signal(); | ||||||
|     Cancel(2); |     Cancel(2); | ||||||
|     if (scrollable && deletePixmaps) |     if (scrollable && deletePixmaps) | ||||||
|         scrollable->StopScrolling(); |         scrollable->StopScrolling(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAnimation::Action(void) { | void cAnimation::Action(void) { | ||||||
|     if (scrollable) { |     if (scrollable) { | ||||||
|         Scroll(); |         Scroll(); | ||||||
|     } else if (detachable) { |     } else if (detachable) { | ||||||
|         Detach(); |         Detach(); | ||||||
|     } else if (fadable) { |     } else if (fadable) { | ||||||
|         Fade(); |         Fade(); | ||||||
|     } else if (shiftable) { |     } else if (shiftable) { | ||||||
|         Shift(); |         Shift(); | ||||||
|     } else if (blinkable) { |     } else if (blinkable) { | ||||||
|         Blink(); |         Blink(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAnimation::Sleep(int duration) { | void cAnimation::Sleep(int duration) { | ||||||
|     //sleep should wake up itself, so no infinit wait allowed |     //sleep should wake up itself, so no infinit wait allowed | ||||||
|     if (duration <= 0) |     if (duration <= 0) | ||||||
|         return; |         return; | ||||||
|     sleepWait.Wait(duration); |     sleepWait.Wait(duration); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAnimation::Wait(void) { | void cAnimation::Wait(void) { | ||||||
|     //wait has to be waked up from outside |     //wait has to be waked up from outside | ||||||
|     sleepWait.Wait(0); |     sleepWait.Wait(0); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAnimation::Scroll(void) { | void cAnimation::Scroll(void) { | ||||||
|     int delay = scrollable->ScrollDelay(); |     int delay = scrollable->ScrollDelay(); | ||||||
|     Sleep(delay); |     Sleep(delay); | ||||||
|     if (!Running()) return;     |     if (!Running()) return;     | ||||||
|      |      | ||||||
|     eOrientation orientation = scrollable->ScrollOrientation(); |     eOrientation orientation = scrollable->ScrollOrientation(); | ||||||
|     int scrollTotal = 0; |     int scrollTotal = 0; | ||||||
|     if (orientation == eOrientation::horizontal) { |     if (orientation == eOrientation::horizontal) { | ||||||
|         scrollTotal = scrollable->ScrollWidth(); |         scrollTotal = scrollable->ScrollWidth(); | ||||||
|     } else if (orientation == eOrientation::vertical) { |     } else if (orientation == eOrientation::vertical) { | ||||||
|         scrollTotal = scrollable->ScrollHeight(); |         scrollTotal = scrollable->ScrollHeight(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     eScrollMode mode = scrollable->ScrollMode(); |     eScrollMode mode = scrollable->ScrollMode(); | ||||||
|     bool carriageReturn = (mode == eScrollMode::carriagereturn) ? true : false; |     bool carriageReturn = (mode == eScrollMode::carriagereturn) ? true : false; | ||||||
|      |      | ||||||
|     eScrollSpeed speed = scrollable->ScrollSpeed(); |     eScrollSpeed speed = scrollable->ScrollSpeed(); | ||||||
|     int frameTime = 30; |     int frameTime = 30; | ||||||
|     if (speed == eScrollSpeed::slow) |     if (speed == eScrollSpeed::slow) | ||||||
|         frameTime = 50; |         frameTime = 50; | ||||||
|     else if (speed == eScrollSpeed::medium) |     else if (speed == eScrollSpeed::medium) | ||||||
|         frameTime = 30; |         frameTime = 30; | ||||||
|     else if (speed == eScrollSpeed::fast) |     else if (speed == eScrollSpeed::fast) | ||||||
|         frameTime = 15; |         frameTime = 15; | ||||||
|  |  | ||||||
|     if (!Running()) return;     |     if (!Running()) return;     | ||||||
|      |      | ||||||
|     scrollable->StartScrolling(); |     scrollable->StartScrolling(); | ||||||
|      |      | ||||||
|     int drawPortX = 0; |     int drawPortX = 0; | ||||||
|     int drawPortY = 0; |     int drawPortY = 0; | ||||||
|     int scrollDelta = 1; |     int scrollDelta = 1; | ||||||
|  |  | ||||||
|     bool doSleep = false; |     bool doSleep = false; | ||||||
|     while (Running()) { |     while (Running()) { | ||||||
|         if (doSleep) { |         if (doSleep) { | ||||||
|             Sleep(delay); |             Sleep(delay); | ||||||
|             doSleep = false; |             doSleep = false; | ||||||
|         } |         } | ||||||
|         if (!Running()) return; |         if (!Running()) return; | ||||||
|         uint64_t now = cTimeMs::Now(); |         uint64_t now = cTimeMs::Now(); | ||||||
|          |          | ||||||
|         cPoint drawPortPoint(0,0); |         cPoint drawPortPoint(0,0); | ||||||
|         if (orientation == eOrientation::horizontal) { |         if (orientation == eOrientation::horizontal) { | ||||||
|  |  | ||||||
|             drawPortX -= scrollDelta; |             drawPortX -= scrollDelta; | ||||||
|             if (abs(drawPortX) > scrollTotal) { |             if (abs(drawPortX) > scrollTotal) { | ||||||
|                 Sleep(delay); |                 Sleep(delay); | ||||||
|                 if (carriageReturn) { |                 if (carriageReturn) { | ||||||
|                     drawPortX = 0; |                     drawPortX = 0; | ||||||
|                     doSleep = true; |                     doSleep = true; | ||||||
|                 } else { |                 } else { | ||||||
|                     scrollDelta *= -1; |                     scrollDelta *= -1; | ||||||
|                     drawPortX -= scrollDelta; |                     drawPortX -= scrollDelta; | ||||||
|                 } |                 } | ||||||
|             }             |             }             | ||||||
|             drawPortPoint.SetX(drawPortX); |             drawPortPoint.SetX(drawPortX); | ||||||
|  |  | ||||||
|         } else if (orientation == eOrientation::vertical) { |         } else if (orientation == eOrientation::vertical) { | ||||||
|  |  | ||||||
|             drawPortY -= scrollDelta; |             drawPortY -= scrollDelta; | ||||||
|             if (abs(drawPortY) > scrollTotal) { |             if (abs(drawPortY) > scrollTotal) { | ||||||
|                 Sleep(delay); |                 Sleep(delay); | ||||||
|                 drawPortY = 0; |                 drawPortY = 0; | ||||||
|                 doSleep = true; |                 doSleep = true; | ||||||
|             }  |             }  | ||||||
|             drawPortPoint.SetY(drawPortY); |             drawPortPoint.SetY(drawPortY); | ||||||
|  |  | ||||||
|         } |         } | ||||||
|          |          | ||||||
|         if (!Running()) return; |         if (!Running()) return; | ||||||
|         scrollable->SetDrawPort(drawPortPoint); |         scrollable->SetDrawPort(drawPortPoint); | ||||||
|  |  | ||||||
|         if (!Running()) return; |         if (!Running()) return; | ||||||
|         scrollable->Flush(); |         scrollable->Flush(); | ||||||
|  |  | ||||||
|         if (orientation == eOrientation::horizontal && !carriageReturn && (drawPortX == 0)) { |         if (orientation == eOrientation::horizontal && !carriageReturn && (drawPortX == 0)) { | ||||||
|             scrollDelta *= -1; |             scrollDelta *= -1; | ||||||
|             doSleep = true; |             doSleep = true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         int delta = cTimeMs::Now() - now; |         int delta = cTimeMs::Now() - now; | ||||||
|         if (delta < frameTime) |         if (delta < frameTime) | ||||||
|             Sleep(frameTime - delta); |             Sleep(frameTime - delta); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAnimation::Detach(void) { | void cAnimation::Detach(void) { | ||||||
|     if (waitOnWakeup) { |     if (waitOnWakeup) { | ||||||
|         Wait(); |         Wait(); | ||||||
|         int delay = 100 + detachable->Delay(); |         int delay = 100 + detachable->Delay(); | ||||||
|         Sleep(delay);         |         Sleep(delay);         | ||||||
|     } else { |     } else { | ||||||
|         int delay = detachable->Delay(); |         int delay = detachable->Delay(); | ||||||
|         Sleep(delay); |         Sleep(delay); | ||||||
|     } |     } | ||||||
|     if (!Running()) return; |     if (!Running()) return; | ||||||
|     detachable->ParseDetached(); |     detachable->ParseDetached(); | ||||||
|     if (!Running()) return; |     if (!Running()) return; | ||||||
|     detachable->RenderDetached(); |     detachable->RenderDetached(); | ||||||
|     if (!Running()) return; |     if (!Running()) return; | ||||||
|     detachable->Flush(); |     detachable->Flush(); | ||||||
|     if (!Running()) return; |     if (!Running()) return; | ||||||
|     if (doAnimation) { |     if (doAnimation) { | ||||||
|         detachable->StartAnimation();         |         detachable->StartAnimation();         | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAnimation::Fade(void) { | void cAnimation::Fade(void) { | ||||||
|     int fadetime = fadable->FadeTime(); |     int fadetime = fadable->FadeTime(); | ||||||
|     int frametime = 1000 / FPS; |     int frametime = 1000 / FPS; | ||||||
|     int step = 100.0f / ((double)fadetime / (double)frametime); |     int step = 100.0f / ((double)fadetime / (double)frametime); | ||||||
|     uint64_t start = cTimeMs::Now(); |     uint64_t start = cTimeMs::Now(); | ||||||
|     int transparency = 0; |     int transparency = 0; | ||||||
|     if (modeIn) { |     if (modeIn) { | ||||||
|         transparency = 100 - step; |         transparency = 100 - step; | ||||||
|     } else { |     } else { | ||||||
|         transparency = step; |         transparency = step; | ||||||
|     } |     } | ||||||
|     //wait configured delay if not already done by detacher |     //wait configured delay if not already done by detacher | ||||||
|     if (!fadable->Detached()) { |     if (!fadable->Detached()) { | ||||||
|         int delay = fadable->Delay(); |         int delay = fadable->Delay(); | ||||||
|         if (delay > 0) |         if (delay > 0) | ||||||
|             Sleep(delay); |             Sleep(delay); | ||||||
|     } |     } | ||||||
|     while (Running() || !modeIn) { |     while (Running() || !modeIn) { | ||||||
|         uint64_t now = cTimeMs::Now(); |         uint64_t now = cTimeMs::Now(); | ||||||
|         if (Running() || !modeIn) |         if (Running() || !modeIn) | ||||||
|             fadable->SetTransparency(transparency, !modeIn); |             fadable->SetTransparency(transparency, !modeIn); | ||||||
|         if (Running() || !modeIn) |         if (Running() || !modeIn) | ||||||
|             fadable->Flush(); |             fadable->Flush(); | ||||||
|         int delta = cTimeMs::Now() - now; |         int delta = cTimeMs::Now() - now; | ||||||
|         if ((Running()  || !modeIn) && (delta < frametime)) { |         if ((Running()  || !modeIn) && (delta < frametime)) { | ||||||
|             Sleep(frametime - delta); |             Sleep(frametime - delta); | ||||||
|         } |         } | ||||||
|         if ((int)(now - start) > fadetime) { |         if ((int)(now - start) > fadetime) { | ||||||
|             if ((Running() && modeIn) && transparency > 0) { |             if ((Running() && modeIn) && transparency > 0) { | ||||||
|                 fadable->SetTransparency(0); |                 fadable->SetTransparency(0); | ||||||
|                 fadable->Flush(); |                 fadable->Flush(); | ||||||
|             } else if (!modeIn && transparency < 100) { |             } else if (!modeIn && transparency < 100) { | ||||||
|                 fadable->SetTransparency(100, true); |                 fadable->SetTransparency(100, true); | ||||||
|                 fadable->Flush();                 |                 fadable->Flush();                 | ||||||
|             }  |             }  | ||||||
|             break; |             break; | ||||||
|         } |         } | ||||||
|         if (modeIn) { |         if (modeIn) { | ||||||
|             transparency -= step; |             transparency -= step; | ||||||
|             if (transparency < 0) |             if (transparency < 0) | ||||||
|                 transparency = 0; |                 transparency = 0; | ||||||
|         } else { |         } else { | ||||||
|             transparency += step; |             transparency += step; | ||||||
|             if (transparency > 100) |             if (transparency > 100) | ||||||
|                 transparency = 100;             |                 transparency = 100;             | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAnimation::Shift(void) { | void cAnimation::Shift(void) { | ||||||
|     int shifttime = shiftable->ShiftTime(); |     int shifttime = shiftable->ShiftTime(); | ||||||
|     eShiftMode mode = (eShiftMode)shiftable->ShiftMode(); |     eShiftMode mode = (eShiftMode)shiftable->ShiftMode(); | ||||||
|     //in shiftmode slowedDown shifting is done starting with slowratio % faster |     //in shiftmode slowedDown shifting is done starting with slowratio % faster | ||||||
|     //at start. Then speed reduces linear to (100 - slowratio)% at end |     //at start. Then speed reduces linear to (100 - slowratio)% at end | ||||||
|     //for me 60 is a nice value :-)  |     //for me 60 is a nice value :-)  | ||||||
|     int slowRatio = 60; |     int slowRatio = 60; | ||||||
|  |  | ||||||
|     int frametime = 1000 / FPS; |     int frametime = 1000 / FPS; | ||||||
|     int steps = (double)shifttime / (double)frametime; |     int steps = (double)shifttime / (double)frametime; | ||||||
|     int stepXLinear = 0; |     int stepXLinear = 0; | ||||||
|     int stepYLinear = 0; |     int stepYLinear = 0; | ||||||
|     if (shiftstart.X() == shiftend.X()) { |     if (shiftstart.X() == shiftend.X()) { | ||||||
|         stepYLinear = (shiftend.Y() - shiftstart.Y()) / steps; |         stepYLinear = (shiftend.Y() - shiftstart.Y()) / steps; | ||||||
|     } else if (shiftstart.Y() == shiftend.Y()) { |     } else if (shiftstart.Y() == shiftend.Y()) { | ||||||
|         stepXLinear = (shiftend.X() - shiftstart.X()) / steps; |         stepXLinear = (shiftend.X() - shiftstart.X()) / steps; | ||||||
|     } else { |     } else { | ||||||
|         stepXLinear = (shiftend.X() - shiftstart.X()) / steps; |         stepXLinear = (shiftend.X() - shiftstart.X()) / steps; | ||||||
|         stepYLinear = (shiftend.Y() - shiftstart.Y()) / steps;         |         stepYLinear = (shiftend.Y() - shiftstart.Y()) / steps;         | ||||||
|     } |     } | ||||||
|     int stepX = stepXLinear; |     int stepX = stepXLinear; | ||||||
|     int stepY = stepYLinear; |     int stepY = stepYLinear; | ||||||
|  |  | ||||||
|     cPoint pos; |     cPoint pos; | ||||||
|     if (modeIn) |     if (modeIn) | ||||||
|         pos = shiftstart; |         pos = shiftstart; | ||||||
|     else |     else | ||||||
|         pos = shiftend; |         pos = shiftend; | ||||||
|  |  | ||||||
|     //wait configured delay if not already done by detacher |     //wait configured delay if not already done by detacher | ||||||
|     if (!shiftable->Detached()) { |     if (!shiftable->Detached()) { | ||||||
|         int delay = shiftable->Delay(); |         int delay = shiftable->Delay(); | ||||||
|         if (delay > 0) |         if (delay > 0) | ||||||
|             Sleep(delay); |             Sleep(delay); | ||||||
|     } |     } | ||||||
|     uint64_t start = cTimeMs::Now(); |     uint64_t start = cTimeMs::Now(); | ||||||
|     while (Running() || !modeIn) { |     while (Running() || !modeIn) { | ||||||
|         uint64_t now = cTimeMs::Now(); |         uint64_t now = cTimeMs::Now(); | ||||||
|         if (Running() || !modeIn) |         if (Running() || !modeIn) | ||||||
|             shiftable->SetPosition(pos, shiftend); |             shiftable->SetPosition(pos, shiftend); | ||||||
|         if (Running() || !modeIn) |         if (Running() || !modeIn) | ||||||
|             shiftable->Flush(); |             shiftable->Flush(); | ||||||
|         int delta = cTimeMs::Now() - now; |         int delta = cTimeMs::Now() - now; | ||||||
|         if ((Running()  || !modeIn) && (delta < frametime)) { |         if ((Running()  || !modeIn) && (delta < frametime)) { | ||||||
|             cCondWait::SleepMs(frametime - delta); |             cCondWait::SleepMs(frametime - delta); | ||||||
|         } |         } | ||||||
|         if ((int)(now - start) > shifttime) { |         if ((int)(now - start) > shifttime) { | ||||||
|             if ((Running() && modeIn) && pos != shiftend) { |             if ((Running() && modeIn) && pos != shiftend) { | ||||||
|                 shiftable->SetPosition(shiftend, shiftend); |                 shiftable->SetPosition(shiftend, shiftend); | ||||||
|                 shiftable->Flush(); |                 shiftable->Flush(); | ||||||
|             } |             } | ||||||
|             break; |             break; | ||||||
|         } |         } | ||||||
|         if (mode == eShiftMode::slowedDown) { |         if (mode == eShiftMode::slowedDown) { | ||||||
|             double t = (double)(now - start) / (double)shifttime; |             double t = (double)(now - start) / (double)shifttime; | ||||||
|             double factor = 1.0f + (double)slowRatio / 100.0f - 2.0f * ((double)slowRatio / 100.0f) * t; |             double factor = 1.0f + (double)slowRatio / 100.0f - 2.0f * ((double)slowRatio / 100.0f) * t; | ||||||
|             stepX = stepXLinear * factor; |             stepX = stepXLinear * factor; | ||||||
|             stepY = stepYLinear * factor; |             stepY = stepYLinear * factor; | ||||||
|         } |         } | ||||||
|         if (modeIn) { |         if (modeIn) { | ||||||
|             pos.Set(pos.X() + stepX, pos.Y() + stepY); |             pos.Set(pos.X() + stepX, pos.Y() + stepY); | ||||||
|         } else { |         } else { | ||||||
|             pos.Set(pos.X() - stepX, pos.Y() - stepY); |             pos.Set(pos.X() - stepX, pos.Y() - stepY); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAnimation::Blink(void) { | void cAnimation::Blink(void) { | ||||||
|     int freq = blinkable->BlinkFreq(blinkFunc); |     int freq = blinkable->BlinkFreq(blinkFunc); | ||||||
|     bool blinkOn = false; |     bool blinkOn = false; | ||||||
|     while (Running()) { |     while (Running()) { | ||||||
|         Sleep(freq); |         Sleep(freq); | ||||||
|         if (Running()) { |         if (Running()) { | ||||||
|             blinkable->DoBlink(blinkFunc, blinkOn); |             blinkable->DoBlink(blinkFunc, blinkOn); | ||||||
|             blinkable->Flush();   |             blinkable->Flush();   | ||||||
|         } |         } | ||||||
|         blinkOn = !blinkOn; |         blinkOn = !blinkOn; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,126 +1,126 @@ | |||||||
| #ifndef __ANIMATION_H | #ifndef __ANIMATION_H | ||||||
| #define __ANIMATION_H | #define __ANIMATION_H | ||||||
|  |  | ||||||
| #include <vdr/skins.h> | #include <vdr/skins.h> | ||||||
| #include <vdr/thread.h> | #include <vdr/thread.h> | ||||||
| #include "definitions.h" | #include "definitions.h" | ||||||
|  |  | ||||||
| #define FPS 50 | #define FPS 50 | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cScrollable | * cScrollable | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cScrollable { | class cScrollable { | ||||||
| protected: | protected: | ||||||
|     cScrollable(void) {}; |     cScrollable(void) {}; | ||||||
|     ~cScrollable(void) {}; |     ~cScrollable(void) {}; | ||||||
| public: | public: | ||||||
|     virtual int ScrollDelay(void) = 0; |     virtual int ScrollDelay(void) = 0; | ||||||
|     virtual int ScrollWidth(void) = 0; |     virtual int ScrollWidth(void) = 0; | ||||||
|     virtual int ScrollHeight(void) = 0; |     virtual int ScrollHeight(void) = 0; | ||||||
|     virtual eScrollMode ScrollMode(void) = 0; |     virtual eScrollMode ScrollMode(void) = 0; | ||||||
|     virtual eScrollSpeed ScrollSpeed(void) = 0; |     virtual eScrollSpeed ScrollSpeed(void) = 0; | ||||||
|     virtual eOrientation ScrollOrientation(void) = 0; |     virtual eOrientation ScrollOrientation(void) = 0; | ||||||
|     virtual void StartScrolling(void) = 0; |     virtual void StartScrolling(void) = 0; | ||||||
|     virtual void StopScrolling(void) = 0; |     virtual void StopScrolling(void) = 0; | ||||||
|     virtual void SetDrawPort(cPoint &point) = 0; |     virtual void SetDrawPort(cPoint &point) = 0; | ||||||
|     virtual void Flush(void) = 0; |     virtual void Flush(void) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cDetachable | * cDetachable | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cDetachable { | class cDetachable { | ||||||
| protected: | protected: | ||||||
|     cDetachable(void) {}; |     cDetachable(void) {}; | ||||||
|     ~cDetachable(void) {}; |     ~cDetachable(void) {}; | ||||||
| public: | public: | ||||||
|     virtual int Delay(void) = 0; |     virtual int Delay(void) = 0; | ||||||
|     virtual void ParseDetached(void) = 0; |     virtual void ParseDetached(void) = 0; | ||||||
|     virtual void RenderDetached(void) = 0; |     virtual void RenderDetached(void) = 0; | ||||||
|     virtual void StartAnimation(void) = 0; |     virtual void StartAnimation(void) = 0; | ||||||
|     virtual void Flush(void) = 0; |     virtual void Flush(void) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cFadable | * cFadable | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cFadable { | class cFadable { | ||||||
| protected: | protected: | ||||||
|     cFadable(void) {}; |     cFadable(void) {}; | ||||||
|     ~cFadable(void) {}; |     ~cFadable(void) {}; | ||||||
| public: | public: | ||||||
|     virtual bool Detached(void) = 0; |     virtual bool Detached(void) = 0; | ||||||
|     virtual int Delay(void) = 0; |     virtual int Delay(void) = 0; | ||||||
|     virtual int FadeTime(void) = 0; |     virtual int FadeTime(void) = 0; | ||||||
|     virtual void SetTransparency(int transparency, bool force = false) = 0; |     virtual void SetTransparency(int transparency, bool force = false) = 0; | ||||||
|     virtual void Flush(void) = 0; |     virtual void Flush(void) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cShiftable | * cShiftable | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cShiftable { | class cShiftable { | ||||||
| protected: | protected: | ||||||
|     cShiftable(void) {}; |     cShiftable(void) {}; | ||||||
|     ~cShiftable(void) {}; |     ~cShiftable(void) {}; | ||||||
| public: | public: | ||||||
|     virtual bool Detached(void) = 0; |     virtual bool Detached(void) = 0; | ||||||
|     virtual int Delay(void) = 0; |     virtual int Delay(void) = 0; | ||||||
|     virtual int ShiftTime(void) = 0; |     virtual int ShiftTime(void) = 0; | ||||||
|     virtual int ShiftMode(void) = 0; |     virtual int ShiftMode(void) = 0; | ||||||
|     virtual void SetPosition(cPoint &position, cPoint &reference, bool force = false) = 0; |     virtual void SetPosition(cPoint &position, cPoint &reference, bool force = false) = 0; | ||||||
|     virtual void Flush(void) = 0; |     virtual void Flush(void) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cBlinkable | * cBlinkable | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cBlinkable { | class cBlinkable { | ||||||
| protected: | protected: | ||||||
|     cBlinkable(void) {}; |     cBlinkable(void) {}; | ||||||
|     ~cBlinkable(void) {}; |     ~cBlinkable(void) {}; | ||||||
| public: | public: | ||||||
|     virtual int BlinkFreq(int func) = 0; |     virtual int BlinkFreq(int func) = 0; | ||||||
|     virtual void DoBlink(int func, bool on) = 0; |     virtual void DoBlink(int func, bool on) = 0; | ||||||
|     virtual void Flush(void) = 0; |     virtual void Flush(void) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cAnimation | * cAnimation | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cAnimation : public cThread, public cListObject { | class cAnimation : public cThread, public cListObject { | ||||||
| private: | private: | ||||||
|     cCondWait sleepWait; |     cCondWait sleepWait; | ||||||
|     cScrollable *scrollable; |     cScrollable *scrollable; | ||||||
|     cDetachable *detachable; |     cDetachable *detachable; | ||||||
|     cFadable    *fadable; |     cFadable    *fadable; | ||||||
|     cShiftable  *shiftable; |     cShiftable  *shiftable; | ||||||
|     cBlinkable  *blinkable; |     cBlinkable  *blinkable; | ||||||
|     bool waitOnWakeup; |     bool waitOnWakeup; | ||||||
|     bool doAnimation; |     bool doAnimation; | ||||||
|     bool modeIn; |     bool modeIn; | ||||||
|     int blinkFunc; |     int blinkFunc; | ||||||
|     cPoint shiftstart; |     cPoint shiftstart; | ||||||
|     cPoint shiftend; |     cPoint shiftend; | ||||||
|     void Sleep(int duration); |     void Sleep(int duration); | ||||||
|     void Wait(void); |     void Wait(void); | ||||||
|     void Scroll(void); |     void Scroll(void); | ||||||
|     void Detach(void);     |     void Detach(void);     | ||||||
|     void Blink(void); |     void Blink(void); | ||||||
| protected: | protected: | ||||||
|     virtual void Action(void); |     virtual void Action(void); | ||||||
| public: | public: | ||||||
|     cAnimation(cScrollable *scrollable); |     cAnimation(cScrollable *scrollable); | ||||||
|     cAnimation(cDetachable *detachable, bool wait, bool animation); |     cAnimation(cDetachable *detachable, bool wait, bool animation); | ||||||
|     cAnimation(cFadable    *fadable, bool fadein); |     cAnimation(cFadable    *fadable, bool fadein); | ||||||
|     cAnimation(cShiftable  *shiftable, cPoint &start, cPoint &end, bool shiftin); |     cAnimation(cShiftable  *shiftable, cPoint &start, cPoint &end, bool shiftin); | ||||||
|     cAnimation(cBlinkable  *blinkable, int func); |     cAnimation(cBlinkable  *blinkable, int func); | ||||||
|     ~cAnimation(void); |     ~cAnimation(void); | ||||||
|     void WakeUp(void); |     void WakeUp(void); | ||||||
|     void Fade(void); |     void Fade(void); | ||||||
|     void Shift(void); |     void Shift(void); | ||||||
|     void Stop(bool deletePixmaps); |     void Stop(bool deletePixmaps); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__ANIMATION_H | #endif //__ANIMATION_H | ||||||
							
								
								
									
										1534
									
								
								coreengine/area.c
									
									
									
									
									
								
							
							
						
						
									
										1534
									
								
								coreengine/area.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,178 +1,178 @@ | |||||||
| #ifndef __TEMPLATEAREA_H | #ifndef __TEMPLATEAREA_H | ||||||
| #define __TEMPLATEAREA_H | #define __TEMPLATEAREA_H | ||||||
|  |  | ||||||
| #include <iostream> | #include <iostream> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include <stdint.h> | #include <stdint.h> | ||||||
|  |  | ||||||
| #include "osdwrapper.h" | #include "osdwrapper.h" | ||||||
| #include "definitions.h" | #include "definitions.h" | ||||||
| #include "globals.h" | #include "globals.h" | ||||||
| #include "../libskindesignerapi/tokencontainer.h" | #include "../libskindesignerapi/tokencontainer.h" | ||||||
| #include "attributes.h" | #include "attributes.h" | ||||||
| #include "functions.h" | #include "functions.h" | ||||||
| #include "animation.h" | #include "animation.h" | ||||||
|  |  | ||||||
| class cArea; | class cArea; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cAreaNode | * cAreaNode | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cAreaNode : public cListObject { | class cAreaNode : public cListObject { | ||||||
| protected: | protected: | ||||||
|     cGlobals *globals; |     cGlobals *globals; | ||||||
|     cRect container; |     cRect container; | ||||||
|     bool isTab; |     bool isTab; | ||||||
|     bool activeTab; |     bool activeTab; | ||||||
| public: | public: | ||||||
|     cAreaNode(void); |     cAreaNode(void); | ||||||
|     virtual ~cAreaNode(void); |     virtual ~cAreaNode(void); | ||||||
|     virtual void SetGlobals(cGlobals *globals) {}; |     virtual void SetGlobals(cGlobals *globals) {}; | ||||||
|     virtual void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer) {}; |     virtual void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer) {}; | ||||||
|     virtual void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer) {}; |     virtual void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer) {}; | ||||||
|     void SetContainer(int x, int y, int width, int height); |     void SetContainer(int x, int y, int width, int height); | ||||||
|     virtual void SetAttributes(vector<stringpair> &attributes) {}; |     virtual void SetAttributes(vector<stringpair> &attributes) {}; | ||||||
|     virtual void SetX(int x) {}; |     virtual void SetX(int x) {}; | ||||||
|     virtual void SetY(int y) {}; |     virtual void SetY(int y) {}; | ||||||
|     virtual void SetWidth(int width) {}; |     virtual void SetWidth(int width) {}; | ||||||
|     virtual void SetHeight(int height) {}; |     virtual void SetHeight(int height) {}; | ||||||
|     void SetTab(void) { isTab = true; }; |     void SetTab(void) { isTab = true; }; | ||||||
|     bool IsTab(void) { return isTab; }; |     bool IsTab(void) { return isTab; }; | ||||||
|     void SetActiveTab(bool active) { activeTab = active; }; |     void SetActiveTab(bool active) { activeTab = active; }; | ||||||
|     bool ActiveTab(void) { return activeTab; }; |     bool ActiveTab(void) { return activeTab; }; | ||||||
|     virtual int GetWidth(void) { return 0; }; |     virtual int GetWidth(void) { return 0; }; | ||||||
|     virtual void Cache(void) {}; |     virtual void Cache(void) {}; | ||||||
|     virtual void Close(void) {}; |     virtual void Close(void) {}; | ||||||
|     virtual void Clear(void) {}; |     virtual void Clear(void) {}; | ||||||
|     virtual void Hide(void) {}; |     virtual void Hide(void) {}; | ||||||
|     virtual void Show(void) {}; |     virtual void Show(void) {}; | ||||||
|     virtual void Render(void) {}; |     virtual void Render(void) {}; | ||||||
|     virtual bool Execute(void) { return true; }; |     virtual bool Execute(void) { return true; }; | ||||||
|     virtual void SetTransparency(int transparency, bool absolute = false) {}; |     virtual void SetTransparency(int transparency, bool absolute = false) {}; | ||||||
|     virtual void SetViewPort(cRect &vp) {}; |     virtual void SetViewPort(cRect &vp) {}; | ||||||
|     virtual void SetPosition(cPoint &pos, cPoint &ref) {}; |     virtual void SetPosition(cPoint &pos, cPoint &ref) {}; | ||||||
|     virtual cRect CoveringArea(void) { return cRect::Null; }; |     virtual cRect CoveringArea(void) { return cRect::Null; }; | ||||||
|     virtual bool Scrolling(void) { return false; }; |     virtual bool Scrolling(void) { return false; }; | ||||||
|     virtual cArea *ScrollingArea(void) { return NULL; }; |     virtual cArea *ScrollingArea(void) { return NULL; }; | ||||||
|     virtual cFunction *GetFunction(const char *name) { return NULL; }; |     virtual cFunction *GetFunction(const char *name) { return NULL; }; | ||||||
|     virtual const char *Name(void) { return NULL; }; |     virtual const char *Name(void) { return NULL; }; | ||||||
|     virtual bool BackgroundArea(void) { return false; }; |     virtual bool BackgroundArea(void) { return false; }; | ||||||
|     virtual void Debug(bool full = false) {}; |     virtual void Debug(bool full = false) {}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cAreaContainer; | class cAreaContainer; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cArea | * cArea | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cArea : public cAreaNode, public cScrollable, public cBlinkable { | class cArea : public cAreaNode, public cScrollable, public cBlinkable { | ||||||
| private: | private: | ||||||
|     cSdOsd *sdOsd; |     cSdOsd *sdOsd; | ||||||
|     bool init; |     bool init; | ||||||
|     bool isBackgroundArea; |     bool isBackgroundArea; | ||||||
|     cPixmap *pix; |     cPixmap *pix; | ||||||
|     cAreaAttribs *attribs; |     cAreaAttribs *attribs; | ||||||
|     cAreaContainer *areaContainer; |     cAreaContainer *areaContainer; | ||||||
|     cList<cFunction> functions; |     cList<cFunction> functions; | ||||||
|     bool scrolling; |     bool scrolling; | ||||||
|     bool isScrolling; |     bool isScrolling; | ||||||
|     cFunction *scrollFunc; |     cFunction *scrollFunc; | ||||||
|     cList<cAnimation> blinkers; |     cList<cAnimation> blinkers; | ||||||
|     bool blinking; |     bool blinking; | ||||||
|     void InitFunctions(void); |     void InitFunctions(void); | ||||||
|     void CreatePixmap(cRect drawPort = cRect::Null); |     void CreatePixmap(cRect drawPort = cRect::Null); | ||||||
|     void SetScrollFunc(void); |     void SetScrollFunc(void); | ||||||
|     void StartBlinkers(void); |     void StartBlinkers(void); | ||||||
|     void StopBlinkers(void); |     void StopBlinkers(void); | ||||||
| public: | public: | ||||||
|     cArea(void); |     cArea(void); | ||||||
|     cArea(const cArea &other); |     cArea(const cArea &other); | ||||||
|     virtual ~cArea(void); |     virtual ~cArea(void); | ||||||
|     void SetOsd(cSdOsd *osd) { sdOsd = osd; }; |     void SetOsd(cSdOsd *osd) { sdOsd = osd; }; | ||||||
|     void SetGlobals(cGlobals *globals); |     void SetGlobals(cGlobals *globals); | ||||||
|     void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer); |     void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer); | ||||||
|     void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); |     void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); | ||||||
|     void SetAttributes(vector<stringpair> &attributes); |     void SetAttributes(vector<stringpair> &attributes); | ||||||
|     void SetScrolling(void) { scrolling = true; }; |     void SetScrolling(void) { scrolling = true; }; | ||||||
|     void SetAreaContainer(cAreaContainer *ac) { areaContainer = ac; }; |     void SetAreaContainer(cAreaContainer *ac) { areaContainer = ac; }; | ||||||
|     bool ValidFunction(const char *func); |     bool ValidFunction(const char *func); | ||||||
|     cFunction *AddFunction(const char *name, vector<stringpair> attribs, cFuncLoop *loopFunc = NULL); |     cFunction *AddFunction(const char *name, vector<stringpair> attribs, cFuncLoop *loopFunc = NULL); | ||||||
|     cFunction *GetFunction(const char *name); |     cFunction *GetFunction(const char *name); | ||||||
|     void SetX(int x); |     void SetX(int x); | ||||||
|     void SetY(int y); |     void SetY(int y); | ||||||
|     void SetWidth(int width); |     void SetWidth(int width); | ||||||
|     void SetHeight(int height); |     void SetHeight(int height); | ||||||
|     void Cache(void); |     void Cache(void); | ||||||
|     int GetWidth(void) { return attribs->Width(); }; |     int GetWidth(void) { return attribs->Width(); }; | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void Clear(void); |     void Clear(void); | ||||||
|     void Hide(void); |     void Hide(void); | ||||||
|     void Show(void); |     void Show(void); | ||||||
|     void Render(void); |     void Render(void); | ||||||
|     bool Execute(void); |     bool Execute(void); | ||||||
|     void SetTransparency(int transparency, bool absolute = false); |     void SetTransparency(int transparency, bool absolute = false); | ||||||
|     cRect CoveringArea(void); |     cRect CoveringArea(void); | ||||||
|     //Scrollable |     //Scrollable | ||||||
|     bool Scrolling(void); |     bool Scrolling(void); | ||||||
|     int ScrollWidth(void); |     int ScrollWidth(void); | ||||||
|     int ScrollHeight(void); |     int ScrollHeight(void); | ||||||
|     int ScrollDelay(void); |     int ScrollDelay(void); | ||||||
|     eScrollMode ScrollMode(void); |     eScrollMode ScrollMode(void); | ||||||
|     eScrollSpeed ScrollSpeed(void); |     eScrollSpeed ScrollSpeed(void); | ||||||
|     eOrientation ScrollOrientation(void); |     eOrientation ScrollOrientation(void); | ||||||
|     cArea *ScrollingArea(void) { return this; }; |     cArea *ScrollingArea(void) { return this; }; | ||||||
|     void StartScrolling(void); |     void StartScrolling(void); | ||||||
|     void StopScrolling(void); |     void StopScrolling(void); | ||||||
|     cRect ViewPort(void); |     cRect ViewPort(void); | ||||||
|     void SetDrawPort(cPoint &point); |     void SetDrawPort(cPoint &point); | ||||||
|     void SetViewPort(cRect &vp); |     void SetViewPort(cRect &vp); | ||||||
|     void SetPosition(cPoint &pos, cPoint &ref); |     void SetPosition(cPoint &pos, cPoint &ref); | ||||||
|     cRect DrawPort(void); |     cRect DrawPort(void); | ||||||
|     int ScrollStep(void) { return attribs->ScrollStep(); }; |     int ScrollStep(void) { return attribs->ScrollStep(); }; | ||||||
|     //Blinkable |     //Blinkable | ||||||
|     int BlinkFreq(int func); |     int BlinkFreq(int func); | ||||||
|     void DoBlink(int func, bool on); |     void DoBlink(int func, bool on); | ||||||
|     //Common |     //Common | ||||||
|     const char *Name(void) { return attribs->Name(); }; |     const char *Name(void) { return attribs->Name(); }; | ||||||
|     bool BackgroundArea(void) { return attribs->BackgroundArea(); }; |     bool BackgroundArea(void) { return attribs->BackgroundArea(); }; | ||||||
|     void Flush(void); |     void Flush(void); | ||||||
|     void Debug(bool full = false); |     void Debug(bool full = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cAreaContainer | * cAreaContainer | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cAreaContainer : public cAreaNode { | class cAreaContainer : public cAreaNode { | ||||||
| private: | private: | ||||||
|     cAreaContainerAttribs *attribs; |     cAreaContainerAttribs *attribs; | ||||||
|     cList<cArea> areas; |     cList<cArea> areas; | ||||||
| public: | public: | ||||||
|     cAreaContainer(void); |     cAreaContainer(void); | ||||||
|     cAreaContainer(const cAreaContainer &other); |     cAreaContainer(const cAreaContainer &other); | ||||||
|     virtual ~cAreaContainer(void); |     virtual ~cAreaContainer(void); | ||||||
|     void SetGlobals(cGlobals *globals); |     void SetGlobals(cGlobals *globals); | ||||||
|     void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer); |     void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer); | ||||||
|     void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); |     void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); | ||||||
|     void SetAttributes(vector<stringpair> &attributes); |     void SetAttributes(vector<stringpair> &attributes); | ||||||
|     void AddArea(cArea *area); |     void AddArea(cArea *area); | ||||||
|     cFunction *GetFunction(const char *name); |     cFunction *GetFunction(const char *name); | ||||||
|     void SetX(int x); |     void SetX(int x); | ||||||
|     void SetY(int y); |     void SetY(int y); | ||||||
|     void SetWidth(int width); |     void SetWidth(int width); | ||||||
|     void SetHeight(int height); |     void SetHeight(int height); | ||||||
|     void Cache(void); |     void Cache(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void Clear(void); |     void Clear(void); | ||||||
|     void Hide(void); |     void Hide(void); | ||||||
|     void Show(void); |     void Show(void); | ||||||
|     void Render(void); |     void Render(void); | ||||||
|     bool Execute(void); |     bool Execute(void); | ||||||
|     void SetTransparency(int transparency, bool absolute = false); |     void SetTransparency(int transparency, bool absolute = false); | ||||||
|     void SetViewPort(cRect &vp); |     void SetViewPort(cRect &vp); | ||||||
|     void SetPosition(cPoint &pos, cPoint &ref); |     void SetPosition(cPoint &pos, cPoint &ref); | ||||||
|     cRect CoveringArea(void); |     cRect CoveringArea(void); | ||||||
|     bool Scrolling(void); |     bool Scrolling(void); | ||||||
|     cArea *ScrollingArea(void); |     cArea *ScrollingArea(void); | ||||||
|     void Debug(bool full = false); |     void Debug(bool full = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__TEMPLATEAREA_H | #endif //__TEMPLATEAREA_H | ||||||
| @@ -1,478 +1,478 @@ | |||||||
| #include "attribute.h" | #include "attribute.h" | ||||||
| #include "../config.h" | #include "../config.h" | ||||||
|  |  | ||||||
| /*************************************************************************** | /*************************************************************************** | ||||||
| * cAttributes | * cAttributes | ||||||
| ***************************************************************************/ | ***************************************************************************/ | ||||||
| cAttributes::cAttributes(int numAttributes) { | cAttributes::cAttributes(int numAttributes) { | ||||||
|     globals = NULL; |     globals = NULL; | ||||||
|     tokenContainer = NULL; |     tokenContainer = NULL; | ||||||
|     numAttribs = (int)eCommonAttribs::count + numAttributes; |     numAttribs = (int)eCommonAttribs::count + numAttributes; | ||||||
|     attribs = new int[numAttribs]; |     attribs = new int[numAttribs]; | ||||||
|     for (int i=0; i < numAttribs; i++) |     for (int i=0; i < numAttribs; i++) | ||||||
|         attribs[i] = ATTR_UNKNOWN; |         attribs[i] = ATTR_UNKNOWN; | ||||||
|     attribCtors = new cNumericExpr*[numAttribs]; |     attribCtors = new cNumericExpr*[numAttribs]; | ||||||
|     for (int i=0; i < numAttribs; i++) |     for (int i=0; i < numAttribs; i++) | ||||||
|         attribCtors[i] = NULL; |         attribCtors[i] = NULL; | ||||||
|     cond = NULL; |     cond = NULL; | ||||||
|     SetCommonAttributesDefs(); |     SetCommonAttributesDefs(); | ||||||
| } | } | ||||||
|  |  | ||||||
| cAttributes::cAttributes(const cAttributes &other) : cAttributes(other.numAttribs - (int)eCommonAttribs::count){ | cAttributes::cAttributes(const cAttributes &other) : cAttributes(other.numAttribs - (int)eCommonAttribs::count){ | ||||||
|     globals = other.globals; |     globals = other.globals; | ||||||
|     for (int i=0; i < numAttribs; i++) { |     for (int i=0; i < numAttribs; i++) { | ||||||
|         attribs[i] = other.attribs[i]; |         attribs[i] = other.attribs[i]; | ||||||
|         if (other.attribCtors[i]) { |         if (other.attribCtors[i]) { | ||||||
|             attribCtors[i] = new cNumericExpr(*other.attribCtors[i]); |             attribCtors[i] = new cNumericExpr(*other.attribCtors[i]); | ||||||
|             attribCtors[i]->SetContainer(&container);     |             attribCtors[i]->SetContainer(&container);     | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     cond = NULL; |     cond = NULL; | ||||||
|     if (other.cond) { |     if (other.cond) { | ||||||
|         cond = new cCondition(*other.cond); |         cond = new cCondition(*other.cond); | ||||||
|     } |     } | ||||||
|     attribIDs = other.attribIDs; |     attribIDs = other.attribIDs; | ||||||
|     attribNames = other.attribNames; |     attribNames = other.attribNames; | ||||||
| } | } | ||||||
|  |  | ||||||
| cAttributes::~cAttributes(void) { | cAttributes::~cAttributes(void) { | ||||||
|     delete[] attribs; |     delete[] attribs; | ||||||
|     for (int i=0; i < numAttribs; i++) { |     for (int i=0; i < numAttribs; i++) { | ||||||
|         delete attribCtors[i]; |         delete attribCtors[i]; | ||||||
|     } |     } | ||||||
|     delete[] attribCtors; |     delete[] attribCtors; | ||||||
|     delete cond; |     delete cond; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer) { | void cAttributes::SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer) { | ||||||
|     this->tokenContainer = tokenContainer; |     this->tokenContainer = tokenContainer; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer) { | void cAttributes::SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer) { | ||||||
|     this->tokenContainer = tokenContainer; |     this->tokenContainer = tokenContainer; | ||||||
|     if (cond) { |     if (cond) { | ||||||
|         cond->SetTokenContainer(tokenContainer); |         cond->SetTokenContainer(tokenContainer); | ||||||
|     } |     } | ||||||
|     for (int i=0; i < numAttribs; i++) { |     for (int i=0; i < numAttribs; i++) { | ||||||
|         if (!attribCtors[i]) |         if (!attribCtors[i]) | ||||||
|             continue; |             continue; | ||||||
|         attribCtors[i]->SetTokenContainer(tokenContainer); |         attribCtors[i]->SetTokenContainer(tokenContainer); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetContainer(int x, int y, int width, int height) { | void cAttributes::SetContainer(int x, int y, int width, int height) { | ||||||
|     container.SetX(x); |     container.SetX(x); | ||||||
|     container.SetY(y); |     container.SetY(y); | ||||||
|     container.SetWidth(width); |     container.SetWidth(width); | ||||||
|     container.SetHeight(height); |     container.SetHeight(height); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetX(int x) { | void cAttributes::SetX(int x) { | ||||||
|     attribs[(int)eCommonAttribs::x] = x; |     attribs[(int)eCommonAttribs::x] = x; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetY(int y) { | void cAttributes::SetY(int y) { | ||||||
|     attribs[(int)eCommonAttribs::y] = y; |     attribs[(int)eCommonAttribs::y] = y; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetWidth(int width) { | void cAttributes::SetWidth(int width) { | ||||||
|     attribs[(int)eCommonAttribs::width] = width; |     attribs[(int)eCommonAttribs::width] = width; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetHeight(int height) { | void cAttributes::SetHeight(int height) { | ||||||
|     attribs[(int)eCommonAttribs::height] = height; |     attribs[(int)eCommonAttribs::height] = height; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::Cache(void) { | void cAttributes::Cache(void) { | ||||||
|     if (cond) { |     if (cond) { | ||||||
|         cond->SetGlobals(globals); |         cond->SetGlobals(globals); | ||||||
|         cond->SetTokenContainer(tokenContainer); |         cond->SetTokenContainer(tokenContainer); | ||||||
|         cond->Prepare(); |         cond->Prepare(); | ||||||
|     } |     } | ||||||
|     for (int i=0; i < numAttribs; i++) { |     for (int i=0; i < numAttribs; i++) { | ||||||
|         if (!attribCtors[i]) |         if (!attribCtors[i]) | ||||||
|             continue; |             continue; | ||||||
|         attribCtors[i]->SetContainer(&container); |         attribCtors[i]->SetContainer(&container); | ||||||
|         attribCtors[i]->SetGlobals(globals); |         attribCtors[i]->SetGlobals(globals); | ||||||
|         attribCtors[i]->SetTokenContainer(tokenContainer); |         attribCtors[i]->SetTokenContainer(tokenContainer); | ||||||
|         if (attribCtors[i]->CacheStatic()) { |         if (attribCtors[i]->CacheStatic()) { | ||||||
|             int val = attribCtors[i]->GetValue(); |             int val = attribCtors[i]->GetValue(); | ||||||
|             attribs[i] = val; |             attribs[i] = val; | ||||||
|             delete attribCtors[i]; |             delete attribCtors[i]; | ||||||
|             attribCtors[i] = NULL; |             attribCtors[i] = NULL; | ||||||
|         } else { |         } else { | ||||||
|             attribCtors[i]->PrepareTokens(); |             attribCtors[i]->PrepareTokens(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| int cAttributes::GetValue(int id) { | int cAttributes::GetValue(int id) { | ||||||
|     if (!attribCtors[id + (int)eCommonAttribs::count]) |     if (!attribCtors[id + (int)eCommonAttribs::count]) | ||||||
|         return attribs[(int)id + (int)eCommonAttribs::count]; |         return attribs[(int)id + (int)eCommonAttribs::count]; | ||||||
|     return attribCtors[id + (int)eCommonAttribs::count]->Calculate(); |     return attribCtors[id + (int)eCommonAttribs::count]->Calculate(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int cAttributes::X(void) {  | int cAttributes::X(void) {  | ||||||
|     int x = 0; |     int x = 0; | ||||||
|     if (!attribCtors[(int)eCommonAttribs::x]) |     if (!attribCtors[(int)eCommonAttribs::x]) | ||||||
|         x = attribs[(int)eCommonAttribs::x]; |         x = attribs[(int)eCommonAttribs::x]; | ||||||
|     else |     else | ||||||
|         x = attribCtors[(int)eCommonAttribs::x]->Calculate(); |         x = attribCtors[(int)eCommonAttribs::x]->Calculate(); | ||||||
|     x += container.X(); |     x += container.X(); | ||||||
|     return x; |     return x; | ||||||
| } | } | ||||||
|  |  | ||||||
| int cAttributes::Y(void) {  | int cAttributes::Y(void) {  | ||||||
|     int y = 0; |     int y = 0; | ||||||
|     if (!attribCtors[(int)eCommonAttribs::y]) |     if (!attribCtors[(int)eCommonAttribs::y]) | ||||||
|         y = attribs[(int)eCommonAttribs::y]; |         y = attribs[(int)eCommonAttribs::y]; | ||||||
|     else |     else | ||||||
|         y = attribCtors[(int)eCommonAttribs::y]->Calculate(); |         y = attribCtors[(int)eCommonAttribs::y]->Calculate(); | ||||||
|     y += container.Y(); |     y += container.Y(); | ||||||
|     return y; |     return y; | ||||||
| } | } | ||||||
|  |  | ||||||
| int cAttributes::Width(void) { | int cAttributes::Width(void) { | ||||||
|     if (!attribCtors[(int)eCommonAttribs::width]) |     if (!attribCtors[(int)eCommonAttribs::width]) | ||||||
|         return attribs[(int)eCommonAttribs::width]; |         return attribs[(int)eCommonAttribs::width]; | ||||||
|     return attribCtors[(int)eCommonAttribs::width]->Calculate(); |     return attribCtors[(int)eCommonAttribs::width]->Calculate(); | ||||||
| } | } | ||||||
|  |  | ||||||
| int cAttributes::Height(void) {  | int cAttributes::Height(void) {  | ||||||
|     if (!attribCtors[(int)eCommonAttribs::height]) |     if (!attribCtors[(int)eCommonAttribs::height]) | ||||||
|         return attribs[(int)eCommonAttribs::height]; |         return attribs[(int)eCommonAttribs::height]; | ||||||
|     return attribCtors[(int)eCommonAttribs::height]->Calculate(); |     return attribCtors[(int)eCommonAttribs::height]->Calculate(); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cAttributes::DoExecute(void) { | bool cAttributes::DoExecute(void) { | ||||||
|     if (!cond) |     if (!cond) | ||||||
|         return true; |         return true; | ||||||
|     return cond->True(); |     return cond->True(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void cAttributes::Debug(void) { | void cAttributes::Debug(void) { | ||||||
|     esyslog("skindesigner:            container %d %d %dx%d", container.X(), container.Y(), container.Width(), container.Height()); |     esyslog("skindesigner:            container %d %d %dx%d", container.X(), container.Y(), container.Width(), container.Height()); | ||||||
|     for (int i=0; i < numAttribs; i++) { |     for (int i=0; i < numAttribs; i++) { | ||||||
|         if (attribs[i] != ATTR_UNKNOWN) { |         if (attribs[i] != ATTR_UNKNOWN) { | ||||||
|             if (i == (int)eCommonAttribs::debug) |             if (i == (int)eCommonAttribs::debug) | ||||||
|                 continue; |                 continue; | ||||||
|             const char *attName = "attribute"; |             const char *attName = "attribute"; | ||||||
|             if (i < (int)eCommonAttribs::count) |             if (i < (int)eCommonAttribs::count) | ||||||
|                 attName = CommonAttributeName(i); |                 attName = CommonAttributeName(i); | ||||||
|             else |             else | ||||||
|                 attName = AttributeName(i - (int)eCommonAttribs::count); |                 attName = AttributeName(i - (int)eCommonAttribs::count); | ||||||
|             dsyslog("skindesigner:            fixed Value %s = %d", attName, attribs[i]); |             dsyslog("skindesigner:            fixed Value %s = %d", attName, attribs[i]); | ||||||
|         } |         } | ||||||
|         if (attribCtors[i]) { |         if (attribCtors[i]) { | ||||||
|             const char *attName = "attribute"; |             const char *attName = "attribute"; | ||||||
|             if (i < (int)eCommonAttribs::count) |             if (i < (int)eCommonAttribs::count) | ||||||
|                 attName = CommonAttributeName(i); |                 attName = CommonAttributeName(i); | ||||||
|             else |             else | ||||||
|                 attName = AttributeName(i - (int)eCommonAttribs::count); |                 attName = AttributeName(i - (int)eCommonAttribs::count); | ||||||
|             dsyslog("skindesigner:            %s constructor:", attName); |             dsyslog("skindesigner:            %s constructor:", attName); | ||||||
|             attribCtors[i]->Debug(); |             attribCtors[i]->Debug(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     if (cond) { |     if (cond) { | ||||||
|         cond->Debug(); |         cond->Debug(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| /*************************************************************************** | /*************************************************************************** | ||||||
| * Protected Functions | * Protected Functions | ||||||
| ***************************************************************************/ | ***************************************************************************/ | ||||||
| int cAttributes::CommonAttributeId(const char *att) { | int cAttributes::CommonAttributeId(const char *att) { | ||||||
|     if (!strcmp(att, "condition")) |     if (!strcmp(att, "condition")) | ||||||
|         return ATTR_COND; |         return ATTR_COND; | ||||||
|     map<string, int>::iterator hit = commonAttribIDs.find(att); |     map<string, int>::iterator hit = commonAttribIDs.find(att); | ||||||
|     if (hit != commonAttribIDs.end()) |     if (hit != commonAttribIDs.end()) | ||||||
|         return hit->second; |         return hit->second; | ||||||
|     return ATTR_UNKNOWN; |     return ATTR_UNKNOWN; | ||||||
| } | } | ||||||
|  |  | ||||||
| const char *cAttributes::CommonAttributeName(int id) { | const char *cAttributes::CommonAttributeName(int id) { | ||||||
|     if (id < 0 || id >= (int)eCommonAttribs::count) |     if (id < 0 || id >= (int)eCommonAttribs::count) | ||||||
|         return ""; |         return ""; | ||||||
|     map<int, string>::iterator hit = commonAttribNames.find(id); |     map<int, string>::iterator hit = commonAttribNames.find(id); | ||||||
|     if (hit != commonAttribNames.end()) |     if (hit != commonAttribNames.end()) | ||||||
|         return hit->second.c_str(); |         return hit->second.c_str(); | ||||||
|     return ""; |     return ""; | ||||||
| } | } | ||||||
|  |  | ||||||
| int cAttributes::AttributeId(const char *att) { | int cAttributes::AttributeId(const char *att) { | ||||||
|     int id = CommonAttributeId(att); |     int id = CommonAttributeId(att); | ||||||
|     if (id != ATTR_UNKNOWN) |     if (id != ATTR_UNKNOWN) | ||||||
|         return id; |         return id; | ||||||
|     map<string, int>::iterator hit = attribIDs.find(att); |     map<string, int>::iterator hit = attribIDs.find(att); | ||||||
|     if (hit != attribIDs.end()) |     if (hit != attribIDs.end()) | ||||||
|         id = (int)hit->second + (int)eCommonAttribs::count; |         id = (int)hit->second + (int)eCommonAttribs::count; | ||||||
|     return id; |     return id; | ||||||
| } | } | ||||||
|  |  | ||||||
| const char *cAttributes::AttributeName(int id) { | const char *cAttributes::AttributeName(int id) { | ||||||
|     map<int, string>::iterator hit = attribNames.find(id); |     map<int, string>::iterator hit = attribNames.find(id); | ||||||
|     if (hit != attribNames.end()) |     if (hit != attribNames.end()) | ||||||
|         return hit->second.c_str(); |         return hit->second.c_str(); | ||||||
|     return "";     |     return "";     | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cAttributes::SetCommon(int id, const char *val) { | bool cAttributes::SetCommon(int id, const char *val) { | ||||||
|     if (id == ATTR_COND) { |     if (id == ATTR_COND) { | ||||||
|         cond = new cCondition(val); |         cond = new cCondition(val); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|     if (id == (int)eCommonAttribs::debug) { |     if (id == (int)eCommonAttribs::debug) { | ||||||
|         SetBool(id, val); |         SetBool(id, val); | ||||||
|         return true;     |         return true;     | ||||||
|     } else if (id == (int)eCommonAttribs::x || id == (int)eCommonAttribs::width) { |     } else if (id == (int)eCommonAttribs::x || id == (int)eCommonAttribs::width) { | ||||||
|         attribCtors[id] = new cNumericExpr(val); |         attribCtors[id] = new cNumericExpr(val); | ||||||
|         return true; |         return true; | ||||||
|     } else if (id == (int)eCommonAttribs::y || id == (int)eCommonAttribs::height) { |     } else if (id == (int)eCommonAttribs::y || id == (int)eCommonAttribs::height) { | ||||||
|         attribCtors[id] = new cNumericExpr(val); |         attribCtors[id] = new cNumericExpr(val); | ||||||
|         attribCtors[id]->SetVertical(); |         attribCtors[id]->SetVertical(); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|     return false; |     return false; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cAttributes::IdEqual(int id, int compId) { | bool cAttributes::IdEqual(int id, int compId) { | ||||||
|     if (compId + (int)eCommonAttribs::count == id) |     if (compId + (int)eCommonAttribs::count == id) | ||||||
|         return true; |         return true; | ||||||
|     return false; |     return false; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void cAttributes::SetBool(int id, const char *val) { | void cAttributes::SetBool(int id, const char *val) { | ||||||
|     if (!strcmp(val, "true")) { |     if (!strcmp(val, "true")) { | ||||||
|         attribs[id] = 1; |         attribs[id] = 1; | ||||||
|     } else { |     } else { | ||||||
|         attribs[id] = 0; |         attribs[id] = 0; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetViewElementMode(int id, const char *val) { | void cAttributes::SetViewElementMode(int id, const char *val) { | ||||||
|     eViewElementMode mode = eViewElementMode::regular; |     eViewElementMode mode = eViewElementMode::regular; | ||||||
|     if (!strcmp(val, "light")) |     if (!strcmp(val, "light")) | ||||||
|         mode = eViewElementMode::light; |         mode = eViewElementMode::light; | ||||||
|     attribs[id] = (int)mode; |     attribs[id] = (int)mode; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetShiftType(int id, const char *val) { | void cAttributes::SetShiftType(int id, const char *val) { | ||||||
|     eShiftType shiftType = eShiftType::none; |     eShiftType shiftType = eShiftType::none; | ||||||
|     if (!strcmp(val, "left")) |     if (!strcmp(val, "left")) | ||||||
|         shiftType = eShiftType::left; |         shiftType = eShiftType::left; | ||||||
|     else if (!strcmp(val, "right")) |     else if (!strcmp(val, "right")) | ||||||
|         shiftType = eShiftType::right; |         shiftType = eShiftType::right; | ||||||
|     else if (!strcmp(val, "top")) |     else if (!strcmp(val, "top")) | ||||||
|         shiftType = eShiftType::top; |         shiftType = eShiftType::top; | ||||||
|     else if (!strcmp(val, "bottom")) |     else if (!strcmp(val, "bottom")) | ||||||
|         shiftType = eShiftType::bottom; |         shiftType = eShiftType::bottom; | ||||||
|     else { |     else { | ||||||
|         esyslog("skindesigner: unknown shift type \"%s\"", val); |         esyslog("skindesigner: unknown shift type \"%s\"", val); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     attribs[id] = (int)shiftType; |     attribs[id] = (int)shiftType; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetShiftMode(int id, const char *val) { | void cAttributes::SetShiftMode(int id, const char *val) { | ||||||
|     eShiftMode shiftMode = eShiftMode::linear; |     eShiftMode shiftMode = eShiftMode::linear; | ||||||
|     if (!strcmp(val, "slowed")) |     if (!strcmp(val, "slowed")) | ||||||
|         shiftMode = eShiftMode::slowedDown; |         shiftMode = eShiftMode::slowedDown; | ||||||
|     attribs[id] = (int)shiftMode; |     attribs[id] = (int)shiftMode; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetScrollMode(int id, const char *val) { | void cAttributes::SetScrollMode(int id, const char *val) { | ||||||
|     eScrollMode mode = eScrollMode::none; |     eScrollMode mode = eScrollMode::none; | ||||||
|     if (!strcmp(val, "forthandback")) |     if (!strcmp(val, "forthandback")) | ||||||
|         mode = eScrollMode::forthandback; |         mode = eScrollMode::forthandback; | ||||||
|     else if (!strcmp(val, "carriagereturn")) |     else if (!strcmp(val, "carriagereturn")) | ||||||
|         mode = eScrollMode::carriagereturn; |         mode = eScrollMode::carriagereturn; | ||||||
|     attribs[id] = (int)mode; |     attribs[id] = (int)mode; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetScrollSpeed(int id, const char *val) { | void cAttributes::SetScrollSpeed(int id, const char *val) { | ||||||
|     eScrollSpeed speed = eScrollSpeed::medium; |     eScrollSpeed speed = eScrollSpeed::medium; | ||||||
|     if (!strcmp(val, "slow")) |     if (!strcmp(val, "slow")) | ||||||
|         speed = eScrollSpeed::slow; |         speed = eScrollSpeed::slow; | ||||||
|     else if (!strcmp(val, "fast")) |     else if (!strcmp(val, "fast")) | ||||||
|         speed = eScrollSpeed::fast; |         speed = eScrollSpeed::fast; | ||||||
|     else if (!strcmp(val, "medium")) |     else if (!strcmp(val, "medium")) | ||||||
|         speed = eScrollSpeed::medium; |         speed = eScrollSpeed::medium; | ||||||
|     attribs[id] = (int)speed; |     attribs[id] = (int)speed; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetOrientation(int id, const char *val) { | void cAttributes::SetOrientation(int id, const char *val) { | ||||||
|     eOrientation orientation = eOrientation::none; |     eOrientation orientation = eOrientation::none; | ||||||
|     if (!strcmp(val, "horizontal")) |     if (!strcmp(val, "horizontal")) | ||||||
|         orientation = eOrientation::horizontal; |         orientation = eOrientation::horizontal; | ||||||
|     else if (!strcmp(val, "vertical")) |     else if (!strcmp(val, "vertical")) | ||||||
|         orientation = eOrientation::vertical; |         orientation = eOrientation::vertical; | ||||||
|     else if (!strcmp(val, "absolute")) |     else if (!strcmp(val, "absolute")) | ||||||
|         orientation = eOrientation::absolute; |         orientation = eOrientation::absolute; | ||||||
|     attribs[id] = (int)orientation; |     attribs[id] = (int)orientation; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetAlign(int id, const char *val) { | void cAttributes::SetAlign(int id, const char *val) { | ||||||
|     eAlign align = eAlign::left; |     eAlign align = eAlign::left; | ||||||
|     if (!strcmp(val, "center")) { |     if (!strcmp(val, "center")) { | ||||||
|         align = eAlign::center; |         align = eAlign::center; | ||||||
|     } else if (!strcmp(val, "right")) { |     } else if (!strcmp(val, "right")) { | ||||||
|         align = eAlign::right; |         align = eAlign::right; | ||||||
|     } else if (!strcmp(val, "top")) { |     } else if (!strcmp(val, "top")) { | ||||||
|         align = eAlign::top; |         align = eAlign::top; | ||||||
|     } else if (!strcmp(val, "bottom")) { |     } else if (!strcmp(val, "bottom")) { | ||||||
|         align = eAlign::bottom; |         align = eAlign::bottom; | ||||||
|     } else if (!strcmp(val, "left")) { |     } else if (!strcmp(val, "left")) { | ||||||
|         align = eAlign::left; |         align = eAlign::left; | ||||||
|     } |     } | ||||||
|     attribs[id] = (int)align; |     attribs[id] = (int)align; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAttributes::SetDirection(int id, const char *val) { | void cAttributes::SetDirection(int id, const char *val) { | ||||||
|     eDirection direction = eDirection::none; |     eDirection direction = eDirection::none; | ||||||
|     if (!strcmp(val, "bottomup")) |     if (!strcmp(val, "bottomup")) | ||||||
|         direction = eDirection::bottomup; |         direction = eDirection::bottomup; | ||||||
|     else if (!strcmp(val, "topdown")) |     else if (!strcmp(val, "topdown")) | ||||||
|         direction = eDirection::topdown; |         direction = eDirection::topdown; | ||||||
|     attribs[id] = (int)direction; |     attribs[id] = (int)direction; | ||||||
| } | } | ||||||
|  |  | ||||||
| /*************************************************************************** | /*************************************************************************** | ||||||
| * Private Functions | * Private Functions | ||||||
| ***************************************************************************/ | ***************************************************************************/ | ||||||
| void cAttributes::SetCommonAttributesDefs(void) { | void cAttributes::SetCommonAttributesDefs(void) { | ||||||
|     commonAttribIDs.insert(pair<string, int>("x", (int)eCommonAttribs::x)); |     commonAttribIDs.insert(pair<string, int>("x", (int)eCommonAttribs::x)); | ||||||
|     commonAttribIDs.insert(pair<string, int>("y", (int)eCommonAttribs::y)); |     commonAttribIDs.insert(pair<string, int>("y", (int)eCommonAttribs::y)); | ||||||
|     commonAttribIDs.insert(pair<string, int>("width", (int)eCommonAttribs::width)); |     commonAttribIDs.insert(pair<string, int>("width", (int)eCommonAttribs::width)); | ||||||
|     commonAttribIDs.insert(pair<string, int>("height", (int)eCommonAttribs::height)); |     commonAttribIDs.insert(pair<string, int>("height", (int)eCommonAttribs::height)); | ||||||
|     commonAttribIDs.insert(pair<string, int>("debug", (int)eCommonAttribs::debug)); |     commonAttribIDs.insert(pair<string, int>("debug", (int)eCommonAttribs::debug)); | ||||||
|     commonAttribNames.insert(pair<int, string>((int)eCommonAttribs::x, "x")); |     commonAttribNames.insert(pair<int, string>((int)eCommonAttribs::x, "x")); | ||||||
|     commonAttribNames.insert(pair<int, string>((int)eCommonAttribs::y, "y")); |     commonAttribNames.insert(pair<int, string>((int)eCommonAttribs::y, "y")); | ||||||
|     commonAttribNames.insert(pair<int, string>((int)eCommonAttribs::width, "width")); |     commonAttribNames.insert(pair<int, string>((int)eCommonAttribs::width, "width")); | ||||||
|     commonAttribNames.insert(pair<int, string>((int)eCommonAttribs::height, "height")); |     commonAttribNames.insert(pair<int, string>((int)eCommonAttribs::height, "height")); | ||||||
|     commonAttribNames.insert(pair<int, string>((int)eCommonAttribs::debug, "debug")); |     commonAttribNames.insert(pair<int, string>((int)eCommonAttribs::debug, "debug")); | ||||||
| } | } | ||||||
|  |  | ||||||
| /*************************************************************************** | /*************************************************************************** | ||||||
| * cFunction | * cFunction | ||||||
| ***************************************************************************/ | ***************************************************************************/ | ||||||
| cFunction::cFunction(cArea *owner, int numAttributes) : cAttributes(numAttributes) { | cFunction::cFunction(cArea *owner, int numAttributes) : cAttributes(numAttributes) { | ||||||
|     funcType = "Unknown"; |     funcType = "Unknown"; | ||||||
|     owningArea = owner; |     owningArea = owner; | ||||||
|     color = NULL; |     color = NULL; | ||||||
|     name = NULL; |     name = NULL; | ||||||
|     scrolling = false; |     scrolling = false; | ||||||
| } | } | ||||||
|  |  | ||||||
| cFunction::cFunction(const cFunction &other) : cAttributes(other) { | cFunction::cFunction(const cFunction &other) : cAttributes(other) { | ||||||
|     funcType = other.funcType; |     funcType = other.funcType; | ||||||
|     owningArea = NULL; |     owningArea = NULL; | ||||||
|     color = NULL; |     color = NULL; | ||||||
|     if (other.color) |     if (other.color) | ||||||
|         color = new cColor(*other.color); |         color = new cColor(*other.color); | ||||||
|     name = NULL; |     name = NULL; | ||||||
|     if (other.name) |     if (other.name) | ||||||
|         name = strdup(other.name); |         name = strdup(other.name); | ||||||
|     scrolling = other.scrolling; |     scrolling = other.scrolling; | ||||||
| } | } | ||||||
|  |  | ||||||
| cFunction::~cFunction(void) { | cFunction::~cFunction(void) { | ||||||
|     delete color; |     delete color; | ||||||
|     free(name); |     free(name); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cFunction::SetLoopInfo(cLoopInfo *loopInfo) { | void cFunction::SetLoopInfo(cLoopInfo *loopInfo) { | ||||||
|     for (int i=0; i < numAttribs; i++) { |     for (int i=0; i < numAttribs; i++) { | ||||||
|         if (!attribCtors[i]) |         if (!attribCtors[i]) | ||||||
|             continue; |             continue; | ||||||
|         attribCtors[i]->SetLoopInfo(loopInfo); |         attribCtors[i]->SetLoopInfo(loopInfo); | ||||||
|     } |     } | ||||||
|     if (cond) |     if (cond) | ||||||
|         cond->SetLoopInfo(loopInfo); |         cond->SetLoopInfo(loopInfo); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cFunction::Cache(void) { | void cFunction::Cache(void) { | ||||||
|     if (color) { |     if (color) { | ||||||
|         color->SetGlobals(globals); |         color->SetGlobals(globals); | ||||||
|         color->Cache(); |         color->Cache(); | ||||||
|     } |     } | ||||||
|     cAttributes::Cache(); |     cAttributes::Cache(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cFunction::CacheFuncReferences(void) { | void cFunction::CacheFuncReferences(void) { | ||||||
|     for (int i=0; i < numAttribs; i++) { |     for (int i=0; i < numAttribs; i++) { | ||||||
|         if (!attribCtors[i]) |         if (!attribCtors[i]) | ||||||
|             continue; |             continue; | ||||||
|         vector<cFactor*> refFactors = attribCtors[i]->GetRefFactors(); |         vector<cFactor*> refFactors = attribCtors[i]->GetRefFactors(); | ||||||
|         for (vector<cFactor*>::iterator it = refFactors.begin(); it != refFactors.end(); it++) { |         for (vector<cFactor*>::iterator it = refFactors.begin(); it != refFactors.end(); it++) { | ||||||
|             cFactor *f = *it; |             cFactor *f = *it; | ||||||
|             if (!f->funcRefName) |             if (!f->funcRefName) | ||||||
|                 continue; |                 continue; | ||||||
|             cFunction *fRef = owningArea->GetFunction(f->funcRefName); |             cFunction *fRef = owningArea->GetFunction(f->funcRefName); | ||||||
|             if (fRef) { |             if (fRef) { | ||||||
|                 f->funcRef = fRef; |                 f->funcRef = fRef; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| int cFunction::GetX(eAlign align, int x0, int colWidth) { | int cFunction::GetX(eAlign align, int x0, int colWidth) { | ||||||
|     int containerWidth = colWidth > 0 ? colWidth : container.Width(); |     int containerWidth = colWidth > 0 ? colWidth : container.Width(); | ||||||
|     int x = x0 + X(); |     int x = x0 + X(); | ||||||
|     if (align == eAlign::right) { |     if (align == eAlign::right) { | ||||||
|         x = x0 + containerWidth - FuncWidth(); |         x = x0 + containerWidth - FuncWidth(); | ||||||
|     } else if (align == eAlign::center) { |     } else if (align == eAlign::center) { | ||||||
|         x = x0 + (containerWidth - FuncWidth()) / 2; |         x = x0 + (containerWidth - FuncWidth()) / 2; | ||||||
|     } |     } | ||||||
|     return x; |     return x; | ||||||
| } | } | ||||||
|  |  | ||||||
| int cFunction::GetY(eAlign valign, int y0, int rowHeight) { | int cFunction::GetY(eAlign valign, int y0, int rowHeight) { | ||||||
|     int containerHeight = rowHeight > 0 ? rowHeight : container.Height(); |     int containerHeight = rowHeight > 0 ? rowHeight : container.Height(); | ||||||
|     int y = y0 + Y(); |     int y = y0 + Y(); | ||||||
|     if (valign == eAlign::bottom) { |     if (valign == eAlign::bottom) { | ||||||
|         y = y0 + containerHeight - FuncHeight(); |         y = y0 + containerHeight - FuncHeight(); | ||||||
|     } else if (valign == eAlign::center) { |     } else if (valign == eAlign::center) { | ||||||
|         y = y0 + (containerHeight - FuncHeight()) / 2; |         y = y0 + (containerHeight - FuncHeight()) / 2; | ||||||
|     } |     } | ||||||
|     return y; |     return y; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cFunction::Debug(void) { | void cFunction::Debug(void) { | ||||||
|     esyslog("skindesigner:        ---> Function %s", funcType); |     esyslog("skindesigner:        ---> Function %s", funcType); | ||||||
|     cAttributes::Debug(); |     cAttributes::Debug(); | ||||||
|     if (name) { |     if (name) { | ||||||
|         esyslog("skindesigner:            name %s", name); |         esyslog("skindesigner:            name %s", name); | ||||||
|     } |     } | ||||||
|     if (color) { |     if (color) { | ||||||
|         color->Debug(); |         color->Debug(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| /*************************************************************************** | /*************************************************************************** | ||||||
| * Protected Functions | * Protected Functions | ||||||
| ***************************************************************************/ | ***************************************************************************/ | ||||||
|  |  | ||||||
| void cFunction::SetColor(const char *val) { | void cFunction::SetColor(const char *val) { | ||||||
|     color = new cColor(val); |     color = new cColor(val); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cFunction::SetAnimType(int id, const char *val) { | void cFunction::SetAnimType(int id, const char *val) { | ||||||
|     eAnimType animType = eAnimType::none; |     eAnimType animType = eAnimType::none; | ||||||
|     if (!strcmp(val, "blink")) |     if (!strcmp(val, "blink")) | ||||||
|         animType = eAnimType::blink; |         animType = eAnimType::blink; | ||||||
|     else if (!strcmp(val, "animated")) |     else if (!strcmp(val, "animated")) | ||||||
|         animType = eAnimType::animated; |         animType = eAnimType::animated; | ||||||
|     attribs[id] = (int)animType;  |     attribs[id] = (int)animType;  | ||||||
| } | } | ||||||
|  |  | ||||||
| void cFunction::SetOverflow(int id, const char *val) { | void cFunction::SetOverflow(int id, const char *val) { | ||||||
|     eOverflowType overflowType = eOverflowType::none; |     eOverflowType overflowType = eOverflowType::none; | ||||||
|     if (!strcmp(val, "linewrap")) |     if (!strcmp(val, "linewrap")) | ||||||
|         overflowType = eOverflowType::wrap; |         overflowType = eOverflowType::wrap; | ||||||
|     else if (!strcmp(val, "cut")) |     else if (!strcmp(val, "cut")) | ||||||
|         overflowType = eOverflowType::cut; |         overflowType = eOverflowType::cut; | ||||||
|     attribs[id] = (int)overflowType; |     attribs[id] = (int)overflowType; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,126 +1,126 @@ | |||||||
| #ifndef __ATTRIBUTE_H | #ifndef __ATTRIBUTE_H | ||||||
| #define __ATTRIBUTE_H | #define __ATTRIBUTE_H | ||||||
|  |  | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include <string> | #include <string> | ||||||
| #include <map> | #include <map> | ||||||
| #include <vector> | #include <vector> | ||||||
| #include <vdr/skins.h> | #include <vdr/skins.h> | ||||||
| #include "globals.h" | #include "globals.h" | ||||||
| #include "../libskindesignerapi/tokencontainer.h" | #include "../libskindesignerapi/tokencontainer.h" | ||||||
| #include "definitions.h" | #include "definitions.h" | ||||||
| #include "complextypes.h" | #include "complextypes.h" | ||||||
|  |  | ||||||
| class cArea; | class cArea; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cAttributes | * cAttributes | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cAttributes { | class cAttributes { | ||||||
| private: | private: | ||||||
|     map<string, int> commonAttribIDs; |     map<string, int> commonAttribIDs; | ||||||
|     map<int, string> commonAttribNames; |     map<int, string> commonAttribNames; | ||||||
|     void SetCommonAttributesDefs(void); |     void SetCommonAttributesDefs(void); | ||||||
| protected: | protected: | ||||||
|     cGlobals *globals; |     cGlobals *globals; | ||||||
|     skindesignerapi::cTokenContainer *tokenContainer; |     skindesignerapi::cTokenContainer *tokenContainer; | ||||||
|     cRect container; |     cRect container; | ||||||
|     int numAttribs; |     int numAttribs; | ||||||
|     int *attribs; |     int *attribs; | ||||||
|     cNumericExpr **attribCtors; |     cNumericExpr **attribCtors; | ||||||
|     cCondition *cond; |     cCondition *cond; | ||||||
|     map<string, int> attribIDs; |     map<string, int> attribIDs; | ||||||
|     map<int, string> attribNames; |     map<int, string> attribNames; | ||||||
|     int CommonAttributeId(const char *att); |     int CommonAttributeId(const char *att); | ||||||
|     const char *CommonAttributeName(int id); |     const char *CommonAttributeName(int id); | ||||||
|     int AttributeId(const char *att); |     int AttributeId(const char *att); | ||||||
|     const char *AttributeName(int id); |     const char *AttributeName(int id); | ||||||
|     bool SetCommon(int id, const char *val); |     bool SetCommon(int id, const char *val); | ||||||
|     virtual bool IdEqual(int id, int compId); |     virtual bool IdEqual(int id, int compId); | ||||||
|     void SetBool(int id, const char *val); |     void SetBool(int id, const char *val); | ||||||
|     void SetViewElementMode(int id, const char *val); |     void SetViewElementMode(int id, const char *val); | ||||||
|     void SetShiftType(int id, const char *val); |     void SetShiftType(int id, const char *val); | ||||||
|     void SetShiftMode(int id, const char *val); |     void SetShiftMode(int id, const char *val); | ||||||
|     void SetScrollMode(int id, const char *val); |     void SetScrollMode(int id, const char *val); | ||||||
|     void SetScrollSpeed(int id, const char *val); |     void SetScrollSpeed(int id, const char *val); | ||||||
|     void SetOrientation(int id, const char *val); |     void SetOrientation(int id, const char *val); | ||||||
|     void SetDirection(int id, const char *val); |     void SetDirection(int id, const char *val); | ||||||
|     void SetAlign(int id, const char *val); |     void SetAlign(int id, const char *val); | ||||||
| public: | public: | ||||||
|     cAttributes(int numAttributes); |     cAttributes(int numAttributes); | ||||||
|     cAttributes(const cAttributes &other); |     cAttributes(const cAttributes &other); | ||||||
|     virtual ~cAttributes(void); |     virtual ~cAttributes(void); | ||||||
|     void SetGlobals(cGlobals *globals) { this->globals = globals; }; |     void SetGlobals(cGlobals *globals) { this->globals = globals; }; | ||||||
|     void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer); |     void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer); | ||||||
|     virtual void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); |     virtual void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); | ||||||
|     virtual void SetContainer(int x, int y, int width, int height); |     virtual void SetContainer(int x, int y, int width, int height); | ||||||
|     virtual void Set(vector<stringpair> &attributes) {}; |     virtual void Set(vector<stringpair> &attributes) {}; | ||||||
|     void SetX(int width); |     void SetX(int width); | ||||||
|     void SetY(int height); |     void SetY(int height); | ||||||
|     void SetWidth(int width); |     void SetWidth(int width); | ||||||
|     void SetHeight(int height); |     void SetHeight(int height); | ||||||
|     virtual void Cache(void); |     virtual void Cache(void); | ||||||
|     int GetValue(int id); |     int GetValue(int id); | ||||||
|     int X(void); |     int X(void); | ||||||
|     int Y(void); |     int Y(void); | ||||||
|     int Width(void); |     int Width(void); | ||||||
|     int Height(void); |     int Height(void); | ||||||
|     int DoDebug(void) { return attribs[(int)eCommonAttribs::debug] == 1 ? true : false; }; |     int DoDebug(void) { return attribs[(int)eCommonAttribs::debug] == 1 ? true : false; }; | ||||||
|     bool DoExecute(void); |     bool DoExecute(void); | ||||||
|     virtual void Debug(void); |     virtual void Debug(void); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cLoopInfo | * cLoopInfo | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cLoopInfo { | class cLoopInfo { | ||||||
| public: | public: | ||||||
|     int colWidth; |     int colWidth; | ||||||
|     int rowHeight; |     int rowHeight; | ||||||
|     int index; |     int index; | ||||||
|     int row; |     int row; | ||||||
|     cLoopInfo(void) { |     cLoopInfo(void) { | ||||||
|         colWidth = 0; |         colWidth = 0; | ||||||
|         rowHeight = 0; |         rowHeight = 0; | ||||||
|         index = 0; |         index = 0; | ||||||
|         row = 0; |         row = 0; | ||||||
|     }; |     }; | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cFunction | * cFunction | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cFunction : public cAttributes, public cListObject { | class cFunction : public cAttributes, public cListObject { | ||||||
| private: | private: | ||||||
|     cArea *owningArea; |     cArea *owningArea; | ||||||
| protected: | protected: | ||||||
|     const char *funcType; |     const char *funcType; | ||||||
|     cColor *color; |     cColor *color; | ||||||
|     char *name; |     char *name; | ||||||
|     bool scrolling; |     bool scrolling; | ||||||
|     void SetColor(const char *val); |     void SetColor(const char *val); | ||||||
|     void SetAnimType(int id, const char *val); |     void SetAnimType(int id, const char *val); | ||||||
|     void SetOverflow(int id, const char *val); |     void SetOverflow(int id, const char *val); | ||||||
| public: | public: | ||||||
|     cFunction(cArea *owner, int numAttributes); |     cFunction(cArea *owner, int numAttributes); | ||||||
|     cFunction(const cFunction &other); |     cFunction(const cFunction &other); | ||||||
|     virtual ~cFunction(void); |     virtual ~cFunction(void); | ||||||
|     virtual void SetLoopInfo(cLoopInfo *loopInfo); |     virtual void SetLoopInfo(cLoopInfo *loopInfo); | ||||||
|     void SetOwner(cArea *owner) { owningArea = owner; }; |     void SetOwner(cArea *owner) { owningArea = owner; }; | ||||||
|     const char *Name(void) { return name; }; |     const char *Name(void) { return name; }; | ||||||
|     virtual void Cache(void); |     virtual void Cache(void); | ||||||
|     void CacheFuncReferences(void); |     void CacheFuncReferences(void); | ||||||
|     void Scrolling(bool scrolling) { this->scrolling = scrolling; }; |     void Scrolling(bool scrolling) { this->scrolling = scrolling; }; | ||||||
|     virtual void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0) {}; |     virtual void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0) {}; | ||||||
|     virtual int FuncX(void) { return X(); }; |     virtual int FuncX(void) { return X(); }; | ||||||
|     virtual int FuncY(void) { return Y(); }; |     virtual int FuncY(void) { return Y(); }; | ||||||
|     virtual int FuncWidth(void) { return Width(); }; |     virtual int FuncWidth(void) { return Width(); }; | ||||||
|     virtual int FuncHeight(void) { return Height(); }; |     virtual int FuncHeight(void) { return Height(); }; | ||||||
|     virtual int Align(void) { return (int)eAlign::left; }; |     virtual int Align(void) { return (int)eAlign::left; }; | ||||||
|     virtual int Valign(void) { return (int)eAlign::top; }; |     virtual int Valign(void) { return (int)eAlign::top; }; | ||||||
|     int GetX(eAlign align, int x0, int colWidth); |     int GetX(eAlign align, int x0, int colWidth); | ||||||
|     int GetY(eAlign valign, int y0, int rowHeight); |     int GetY(eAlign valign, int y0, int rowHeight); | ||||||
|     virtual bool Blinking(void) { return false; }; |     virtual bool Blinking(void) { return false; }; | ||||||
|     virtual int BlinkFreq(void) { return -1; }; |     virtual int BlinkFreq(void) { return -1; }; | ||||||
|     virtual void Debug(void); |     virtual void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__ATTRIBUTE_H | #endif //__ATTRIBUTE_H | ||||||
| @@ -1,447 +1,447 @@ | |||||||
| #include "attributes.h" | #include "attributes.h" | ||||||
| #include "../config.h" | #include "../config.h" | ||||||
|  |  | ||||||
| /*************************************************************************** | /*************************************************************************** | ||||||
| * cViewAttribs | * cViewAttribs | ||||||
| ***************************************************************************/ | ***************************************************************************/ | ||||||
| cViewAttribs::cViewAttribs(int numAttributes) : cAttributes(numAttributes) { | cViewAttribs::cViewAttribs(int numAttributes) : cAttributes(numAttributes) { | ||||||
|     orientation = NULL; |     orientation = NULL; | ||||||
|     SetAttributesDefs(); |     SetAttributesDefs(); | ||||||
| } | } | ||||||
|  |  | ||||||
| cViewAttribs::~cViewAttribs(void) { | cViewAttribs::~cViewAttribs(void) { | ||||||
|     delete orientation; |     delete orientation; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewAttribs::Set(vector<stringpair> &attributes) { | void cViewAttribs::Set(vector<stringpair> &attributes) { | ||||||
|     for (vector<stringpair>::iterator att = attributes.begin(); att != attributes.end(); att++) { |     for (vector<stringpair>::iterator att = attributes.begin(); att != attributes.end(); att++) { | ||||||
|         const char *attName = (*att).first.c_str(); |         const char *attName = (*att).first.c_str(); | ||||||
|         const char *attVal = (*att).second.c_str(); |         const char *attVal = (*att).second.c_str(); | ||||||
|         int id = AttributeId(attName); |         int id = AttributeId(attName); | ||||||
|         if (id == ATTR_UNKNOWN) { |         if (id == ATTR_UNKNOWN) { | ||||||
|             esyslog("skindesigner: unknown view attribute \"%s\" = \"%s\"", attName, attVal); |             esyslog("skindesigner: unknown view attribute \"%s\" = \"%s\"", attName, attVal); | ||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
|         if (SetCommon(id, attVal)) |         if (SetCommon(id, attVal)) | ||||||
|             continue; |             continue; | ||||||
|         if (IdEqual(id, (int)eViewAttribs::shifttype)) { |         if (IdEqual(id, (int)eViewAttribs::shifttype)) { | ||||||
|             SetShiftType(id, attVal); |             SetShiftType(id, attVal); | ||||||
|         } else if (IdEqual(id, (int)eViewAttribs::shiftmode)) { |         } else if (IdEqual(id, (int)eViewAttribs::shiftmode)) { | ||||||
|             SetShiftMode(id, attVal); |             SetShiftMode(id, attVal); | ||||||
|         } else if (IdEqual(id, (int)eViewAttribs::orientation)) { |         } else if (IdEqual(id, (int)eViewAttribs::orientation)) { | ||||||
|             SetOrientationDynamic(id, attVal); |             SetOrientationDynamic(id, attVal); | ||||||
|         } else if (IdEqual(id, (int)eViewAttribs::hideroot)) { |         } else if (IdEqual(id, (int)eViewAttribs::hideroot)) { | ||||||
|             SetBool(id, attVal); |             SetBool(id, attVal); | ||||||
|         } else { |         } else { | ||||||
|             attribCtors[id] = new cNumericExpr(attVal); |             attribCtors[id] = new cNumericExpr(attVal); | ||||||
|             if ( (id == (int)eViewAttribs::starty + (int)eCommonAttribs::count) || |             if ( (id == (int)eViewAttribs::starty + (int)eCommonAttribs::count) || | ||||||
|                  (id == (int)eViewAttribs::scaletvy + (int)eCommonAttribs::count) || |                  (id == (int)eViewAttribs::scaletvy + (int)eCommonAttribs::count) || | ||||||
|                  (id == (int)eViewAttribs::scaletvheight + (int)eCommonAttribs::count) ) { |                  (id == (int)eViewAttribs::scaletvheight + (int)eCommonAttribs::count) ) { | ||||||
|                 attribCtors[id]->SetVertical();                 |                 attribCtors[id]->SetVertical();                 | ||||||
|             } |             } | ||||||
|         }    |         }    | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewAttribs::SetAttributesDefs(void) { | void cViewAttribs::SetAttributesDefs(void) { | ||||||
|     attribIDs.insert(pair<string, int>("fadetime", (int)eViewAttribs::fadetime)); |     attribIDs.insert(pair<string, int>("fadetime", (int)eViewAttribs::fadetime)); | ||||||
|     attribIDs.insert(pair<string, int>("shifttime", (int)eViewAttribs::shifttime)); |     attribIDs.insert(pair<string, int>("shifttime", (int)eViewAttribs::shifttime)); | ||||||
|     attribIDs.insert(pair<string, int>("shifttype", (int)eViewAttribs::shifttype)); |     attribIDs.insert(pair<string, int>("shifttype", (int)eViewAttribs::shifttype)); | ||||||
|     attribIDs.insert(pair<string, int>("shiftmode", (int)eViewAttribs::shiftmode)); |     attribIDs.insert(pair<string, int>("shiftmode", (int)eViewAttribs::shiftmode)); | ||||||
|     attribIDs.insert(pair<string, int>("startx", (int)eViewAttribs::startx)); |     attribIDs.insert(pair<string, int>("startx", (int)eViewAttribs::startx)); | ||||||
|     attribIDs.insert(pair<string, int>("starty", (int)eViewAttribs::starty)); |     attribIDs.insert(pair<string, int>("starty", (int)eViewAttribs::starty)); | ||||||
|     attribIDs.insert(pair<string, int>("scaletvx", (int)eViewAttribs::scaletvx)); |     attribIDs.insert(pair<string, int>("scaletvx", (int)eViewAttribs::scaletvx)); | ||||||
|     attribIDs.insert(pair<string, int>("scaletvy", (int)eViewAttribs::scaletvy)); |     attribIDs.insert(pair<string, int>("scaletvy", (int)eViewAttribs::scaletvy)); | ||||||
|     attribIDs.insert(pair<string, int>("scaletvwidth", (int)eViewAttribs::scaletvwidth)); |     attribIDs.insert(pair<string, int>("scaletvwidth", (int)eViewAttribs::scaletvwidth)); | ||||||
|     attribIDs.insert(pair<string, int>("scaletvheight", (int)eViewAttribs::scaletvheight)); |     attribIDs.insert(pair<string, int>("scaletvheight", (int)eViewAttribs::scaletvheight)); | ||||||
|     attribIDs.insert(pair<string, int>("orientation", (int)eViewAttribs::orientation)); |     attribIDs.insert(pair<string, int>("orientation", (int)eViewAttribs::orientation)); | ||||||
|     attribIDs.insert(pair<string, int>("debuggrid", (int)eViewAttribs::debuggrid)); |     attribIDs.insert(pair<string, int>("debuggrid", (int)eViewAttribs::debuggrid)); | ||||||
|     attribIDs.insert(pair<string, int>("hideroot", (int)eViewAttribs::hideroot)); |     attribIDs.insert(pair<string, int>("hideroot", (int)eViewAttribs::hideroot)); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::fadetime, "fadetime")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::fadetime, "fadetime")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::shifttime, "shifttime")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::shifttime, "shifttime")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::shifttype, "shifttype")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::shifttype, "shifttype")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::shiftmode, "shiftmode")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::shiftmode, "shiftmode")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::startx, "startx")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::startx, "startx")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::starty, "starty")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::starty, "starty")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::scaletvx, "scaletvx")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::scaletvx, "scaletvx")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::scaletvy, "scaletvy")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::scaletvy, "scaletvy")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::scaletvwidth, "scaletvwidth")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::scaletvwidth, "scaletvwidth")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::scaletvheight, "scaletvheight")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::scaletvheight, "scaletvheight")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::orientation, "orientation")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::orientation, "orientation")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::debuggrid, "debuggrid")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::debuggrid, "debuggrid")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewAttribs::hideroot, "hideroot")); |     attribNames.insert(pair<int, string>((int)eViewAttribs::hideroot, "hideroot")); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewAttribs::Cache(void) { | void cViewAttribs::Cache(void) { | ||||||
|     tokenContainer = new skindesignerapi::cTokenContainer(); |     tokenContainer = new skindesignerapi::cTokenContainer(); | ||||||
|     cAttributes::Cache(); |     cAttributes::Cache(); | ||||||
|     if (orientation) { |     if (orientation) { | ||||||
|         orientation->SetGlobals(globals); |         orientation->SetGlobals(globals); | ||||||
|         orientation->SetTokenContainer(tokenContainer); |         orientation->SetTokenContainer(tokenContainer); | ||||||
|         orientation->Cache(); |         orientation->Cache(); | ||||||
|         char *res = orientation->DeterminateText(); |         char *res = orientation->DeterminateText(); | ||||||
|         if (res) { |         if (res) { | ||||||
|             SetOrientation((int)eViewAttribs::orientation + (int)eCommonAttribs::count, res); |             SetOrientation((int)eViewAttribs::orientation + (int)eCommonAttribs::count, res); | ||||||
|         } |         } | ||||||
|         free(res); |         free(res); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewAttribs::Debug(void) { | void cViewAttribs::Debug(void) { | ||||||
|     esyslog("skindesigner:        --> View Attribs"); |     esyslog("skindesigner:        --> View Attribs"); | ||||||
|     cAttributes::Debug(); |     cAttributes::Debug(); | ||||||
| } | } | ||||||
|  |  | ||||||
| eOrientation cViewAttribs::Orientation(void) { | eOrientation cViewAttribs::Orientation(void) { | ||||||
|     int orientation = GetValue((int)eViewAttribs::orientation); |     int orientation = GetValue((int)eViewAttribs::orientation); | ||||||
|     if (orientation == -1) |     if (orientation == -1) | ||||||
|         return eOrientation::vertical; |         return eOrientation::vertical; | ||||||
|     if (orientation == (int)eOrientation::none) |     if (orientation == (int)eOrientation::none) | ||||||
|         return eOrientation::vertical; |         return eOrientation::vertical; | ||||||
|     return (eOrientation)orientation; |     return (eOrientation)orientation; | ||||||
| } | } | ||||||
|  |  | ||||||
| cRect cViewAttribs::TvFrame(void) { | cRect cViewAttribs::TvFrame(void) { | ||||||
|     int frameX = GetValue((int)eViewAttribs::scaletvx); |     int frameX = GetValue((int)eViewAttribs::scaletvx); | ||||||
|     int frameY = GetValue((int)eViewAttribs::scaletvy); |     int frameY = GetValue((int)eViewAttribs::scaletvy); | ||||||
|     int frameWidth = GetValue((int)eViewAttribs::scaletvwidth); |     int frameWidth = GetValue((int)eViewAttribs::scaletvwidth); | ||||||
|     int frameHeight = GetValue((int)eViewAttribs::scaletvheight); |     int frameHeight = GetValue((int)eViewAttribs::scaletvheight); | ||||||
|     if (frameX < 0 || frameY < 0 || frameWidth <= 0 || frameHeight <= 0) |     if (frameX < 0 || frameY < 0 || frameWidth <= 0 || frameHeight <= 0) | ||||||
|         return cRect::Null; |         return cRect::Null; | ||||||
|     frameX += cOsd::OsdLeft(); |     frameX += cOsd::OsdLeft(); | ||||||
|     frameY += cOsd::OsdTop(); |     frameY += cOsd::OsdTop(); | ||||||
|     return cRect(frameX, frameY, frameWidth, frameHeight); |     return cRect(frameX, frameY, frameWidth, frameHeight); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewAttribs::SetOrientationDynamic(int id, const char *val) { | void cViewAttribs::SetOrientationDynamic(int id, const char *val) { | ||||||
|     if (strchr(val, '{') && strchr(val, '}')) { |     if (strchr(val, '{') && strchr(val, '}')) { | ||||||
|         orientation = new cTextExpr(val); |         orientation = new cTextExpr(val); | ||||||
|     } else { |     } else { | ||||||
|         SetOrientation(id, val); |         SetOrientation(id, val); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| /*************************************************************************** | /*************************************************************************** | ||||||
| * cViewElementAttribs | * cViewElementAttribs | ||||||
| ***************************************************************************/ | ***************************************************************************/ | ||||||
| cViewElementAttribs::cViewElementAttribs(int numAttributes) : cAttributes(numAttributes) { | cViewElementAttribs::cViewElementAttribs(int numAttributes) : cAttributes(numAttributes) { | ||||||
|     name = NULL; |     name = NULL; | ||||||
|     SetAttributesDefs(); |     SetAttributesDefs(); | ||||||
| } | } | ||||||
|  |  | ||||||
| cViewElementAttribs::cViewElementAttribs(const cViewElementAttribs &other) : cAttributes(other) { | cViewElementAttribs::cViewElementAttribs(const cViewElementAttribs &other) : cAttributes(other) { | ||||||
|     name = NULL; |     name = NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| cViewElementAttribs::~cViewElementAttribs(void) { | cViewElementAttribs::~cViewElementAttribs(void) { | ||||||
|     free(name); |     free(name); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewElementAttribs::Set(vector<stringpair> &attributes) { | void cViewElementAttribs::Set(vector<stringpair> &attributes) { | ||||||
|     for (vector<stringpair>::iterator att = attributes.begin(); att != attributes.end(); att++) { |     for (vector<stringpair>::iterator att = attributes.begin(); att != attributes.end(); att++) { | ||||||
|         const char *attName = (*att).first.c_str(); |         const char *attName = (*att).first.c_str(); | ||||||
|         const char *attVal = (*att).second.c_str(); |         const char *attVal = (*att).second.c_str(); | ||||||
|         int id = AttributeId(attName); |         int id = AttributeId(attName); | ||||||
|         if (id == ATTR_UNKNOWN) { |         if (id == ATTR_UNKNOWN) { | ||||||
|             esyslog("skindesigner: unknown view element attribute \"%s\" = \"%s\"", attName, attVal); |             esyslog("skindesigner: unknown view element attribute \"%s\" = \"%s\"", attName, attVal); | ||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
|         if (SetCommon(id, attVal)) |         if (SetCommon(id, attVal)) | ||||||
|             continue; |             continue; | ||||||
|         if (IdEqual(id, (int)eViewElementAttribs::mode)) { |         if (IdEqual(id, (int)eViewElementAttribs::mode)) { | ||||||
|             SetViewElementMode(id, attVal); |             SetViewElementMode(id, attVal); | ||||||
|         } else if (IdEqual(id, (int)eViewElementAttribs::shifttype)) { |         } else if (IdEqual(id, (int)eViewElementAttribs::shifttype)) { | ||||||
|             SetShiftType(id, attVal); |             SetShiftType(id, attVal); | ||||||
|         } else if (IdEqual(id, (int)eViewElementAttribs::shiftmode)) { |         } else if (IdEqual(id, (int)eViewElementAttribs::shiftmode)) { | ||||||
|             SetShiftMode(id, attVal); |             SetShiftMode(id, attVal); | ||||||
|         } else if (IdEqual(id, (int)eViewElementAttribs::orientation)) { |         } else if (IdEqual(id, (int)eViewElementAttribs::orientation)) { | ||||||
|             SetOrientation(id, attVal); |             SetOrientation(id, attVal); | ||||||
|         } else if (IdEqual(id, (int)eViewElementAttribs::name)) { |         } else if (IdEqual(id, (int)eViewElementAttribs::name)) { | ||||||
|             name = strdup(attVal); |             name = strdup(attVal); | ||||||
|         } else { |         } else { | ||||||
|             attribCtors[id] = new cNumericExpr(attVal); |             attribCtors[id] = new cNumericExpr(attVal); | ||||||
|             if (id == (int)eViewElementAttribs::starty + (int)eCommonAttribs::count) { |             if (id == (int)eViewElementAttribs::starty + (int)eCommonAttribs::count) { | ||||||
|                 attribCtors[id]->SetVertical();                 |                 attribCtors[id]->SetVertical();                 | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewElementAttribs::SetAttributesDefs(void) { | void cViewElementAttribs::SetAttributesDefs(void) { | ||||||
|     attribIDs.insert(pair<string, int>("delay", (int)eViewElementAttribs::delay)); |     attribIDs.insert(pair<string, int>("delay", (int)eViewElementAttribs::delay)); | ||||||
|     attribIDs.insert(pair<string, int>("fadetime", (int)eViewElementAttribs::fadetime)); |     attribIDs.insert(pair<string, int>("fadetime", (int)eViewElementAttribs::fadetime)); | ||||||
|     attribIDs.insert(pair<string, int>("shifttime", (int)eViewElementAttribs::shifttime)); |     attribIDs.insert(pair<string, int>("shifttime", (int)eViewElementAttribs::shifttime)); | ||||||
|     attribIDs.insert(pair<string, int>("shifttype", (int)eViewElementAttribs::shifttype)); |     attribIDs.insert(pair<string, int>("shifttype", (int)eViewElementAttribs::shifttype)); | ||||||
|     attribIDs.insert(pair<string, int>("shiftmode", (int)eViewElementAttribs::shiftmode)); |     attribIDs.insert(pair<string, int>("shiftmode", (int)eViewElementAttribs::shiftmode)); | ||||||
|     attribIDs.insert(pair<string, int>("startx", (int)eViewElementAttribs::startx)); |     attribIDs.insert(pair<string, int>("startx", (int)eViewElementAttribs::startx)); | ||||||
|     attribIDs.insert(pair<string, int>("starty", (int)eViewElementAttribs::starty)); |     attribIDs.insert(pair<string, int>("starty", (int)eViewElementAttribs::starty)); | ||||||
|     attribIDs.insert(pair<string, int>("orientation", (int)eViewElementAttribs::orientation)); |     attribIDs.insert(pair<string, int>("orientation", (int)eViewElementAttribs::orientation)); | ||||||
|     attribIDs.insert(pair<string, int>("mode", (int)eViewElementAttribs::mode)); |     attribIDs.insert(pair<string, int>("mode", (int)eViewElementAttribs::mode)); | ||||||
|     attribIDs.insert(pair<string, int>("name", (int)eViewElementAttribs::name)); |     attribIDs.insert(pair<string, int>("name", (int)eViewElementAttribs::name)); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewElementAttribs::delay, "delay")); |     attribNames.insert(pair<int, string>((int)eViewElementAttribs::delay, "delay")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewElementAttribs::fadetime, "fadetime")); |     attribNames.insert(pair<int, string>((int)eViewElementAttribs::fadetime, "fadetime")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewElementAttribs::shifttime, "shifttime")); |     attribNames.insert(pair<int, string>((int)eViewElementAttribs::shifttime, "shifttime")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewElementAttribs::shifttype, "shifttype")); |     attribNames.insert(pair<int, string>((int)eViewElementAttribs::shifttype, "shifttype")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewElementAttribs::shiftmode, "shiftmode")); |     attribNames.insert(pair<int, string>((int)eViewElementAttribs::shiftmode, "shiftmode")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewElementAttribs::startx, "startx")); |     attribNames.insert(pair<int, string>((int)eViewElementAttribs::startx, "startx")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewElementAttribs::starty, "starty")); |     attribNames.insert(pair<int, string>((int)eViewElementAttribs::starty, "starty")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewElementAttribs::orientation, "orientation")); |     attribNames.insert(pair<int, string>((int)eViewElementAttribs::orientation, "orientation")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewElementAttribs::mode, "mode")); |     attribNames.insert(pair<int, string>((int)eViewElementAttribs::mode, "mode")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewElementAttribs::name, "name")); |     attribNames.insert(pair<int, string>((int)eViewElementAttribs::name, "name")); | ||||||
| } | } | ||||||
|  |  | ||||||
| eOrientation cViewElementAttribs::Orientation(void) { | eOrientation cViewElementAttribs::Orientation(void) { | ||||||
|     int orientation = GetValue((int)eViewElementAttribs::orientation); |     int orientation = GetValue((int)eViewElementAttribs::orientation); | ||||||
|     if (orientation == -1) |     if (orientation == -1) | ||||||
|         return eOrientation::vertical; |         return eOrientation::vertical; | ||||||
|     if (orientation == (int)eOrientation::none) |     if (orientation == (int)eOrientation::none) | ||||||
|         return eOrientation::vertical; |         return eOrientation::vertical; | ||||||
|     return (eOrientation)orientation; |     return (eOrientation)orientation; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewElementAttribs::Debug(void) { | void cViewElementAttribs::Debug(void) { | ||||||
|     esyslog("skindesigner:   ---> View Element Attribs"); |     esyslog("skindesigner:   ---> View Element Attribs"); | ||||||
|     cAttributes::Debug(); |     cAttributes::Debug(); | ||||||
| } | } | ||||||
|  |  | ||||||
| /*************************************************************************** | /*************************************************************************** | ||||||
| * cViewListAttribs | * cViewListAttribs | ||||||
| ***************************************************************************/ | ***************************************************************************/ | ||||||
| cViewListAttribs::cViewListAttribs(int numAttributes) : cAttributes(numAttributes) { | cViewListAttribs::cViewListAttribs(int numAttributes) : cAttributes(numAttributes) { | ||||||
|     determinateFont = NULL; |     determinateFont = NULL; | ||||||
|     SetAttributesDefs(); |     SetAttributesDefs(); | ||||||
| } | } | ||||||
|  |  | ||||||
| cViewListAttribs::~cViewListAttribs(void) { | cViewListAttribs::~cViewListAttribs(void) { | ||||||
|     free(determinateFont); |     free(determinateFont); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewListAttribs::Set(vector<stringpair> &attributes) { | void cViewListAttribs::Set(vector<stringpair> &attributes) { | ||||||
|     for (vector<stringpair>::iterator att = attributes.begin(); att != attributes.end(); att++) { |     for (vector<stringpair>::iterator att = attributes.begin(); att != attributes.end(); att++) { | ||||||
|         const char *attName = (*att).first.c_str(); |         const char *attName = (*att).first.c_str(); | ||||||
|         const char *attVal = (*att).second.c_str(); |         const char *attVal = (*att).second.c_str(); | ||||||
|         int id = AttributeId(attName); |         int id = AttributeId(attName); | ||||||
|         if (id == ATTR_UNKNOWN) { |         if (id == ATTR_UNKNOWN) { | ||||||
|             esyslog("skindesigner: unknown view list attribute \"%s\" = \"%s\"", attName, attVal); |             esyslog("skindesigner: unknown view list attribute \"%s\" = \"%s\"", attName, attVal); | ||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
|         if (SetCommon(id, attVal)) |         if (SetCommon(id, attVal)) | ||||||
|             continue; |             continue; | ||||||
|         if (IdEqual(id, (int)eViewListAttribs::align)) { |         if (IdEqual(id, (int)eViewListAttribs::align)) { | ||||||
|             SetAlign(id, attVal); |             SetAlign(id, attVal); | ||||||
|         } else if (IdEqual(id, (int)eViewListAttribs::determinatefont)) { |         } else if (IdEqual(id, (int)eViewListAttribs::determinatefont)) { | ||||||
|             determinateFont = strdup(attVal); |             determinateFont = strdup(attVal); | ||||||
|         } else if (IdEqual(id, (int)eViewListAttribs::orientation)) { |         } else if (IdEqual(id, (int)eViewListAttribs::orientation)) { | ||||||
|             SetOrientation(id, attVal); |             SetOrientation(id, attVal); | ||||||
|         } else { |         } else { | ||||||
|             attribCtors[id] = new cNumericExpr(attVal); |             attribCtors[id] = new cNumericExpr(attVal); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| int cViewListAttribs::NumListElements(void) {  | int cViewListAttribs::NumListElements(void) {  | ||||||
|     return GetValue((int)eViewListAttribs::numlistelements);  |     return GetValue((int)eViewListAttribs::numlistelements);  | ||||||
| } | } | ||||||
|  |  | ||||||
| int cViewListAttribs::MenuItemWidth(void) { | int cViewListAttribs::MenuItemWidth(void) { | ||||||
|     return GetValue((int)eViewListAttribs::menuitemwidth);  |     return GetValue((int)eViewListAttribs::menuitemwidth);  | ||||||
| } | } | ||||||
|  |  | ||||||
| const char *cViewListAttribs::DeterminateFont(void) { | const char *cViewListAttribs::DeterminateFont(void) { | ||||||
|     return determinateFont;  |     return determinateFont;  | ||||||
| } | } | ||||||
|  |  | ||||||
| eAlign cViewListAttribs::Align(void) {  | eAlign cViewListAttribs::Align(void) {  | ||||||
|     int align = GetValue((int)eViewListAttribs::align); |     int align = GetValue((int)eViewListAttribs::align); | ||||||
|     if (align < 0) |     if (align < 0) | ||||||
|         return eAlign::top; |         return eAlign::top; | ||||||
|     return (eAlign)align;  |     return (eAlign)align;  | ||||||
| } | } | ||||||
|  |  | ||||||
| eOrientation cViewListAttribs::Orientation(void) { | eOrientation cViewListAttribs::Orientation(void) { | ||||||
|     int orientation = GetValue((int)eViewListAttribs::orientation); |     int orientation = GetValue((int)eViewListAttribs::orientation); | ||||||
|     if (orientation < 0) |     if (orientation < 0) | ||||||
|         return eOrientation::vertical; |         return eOrientation::vertical; | ||||||
|     return (eOrientation)orientation;  |     return (eOrientation)orientation;  | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewListAttribs::SetAttributesDefs(void) { | void cViewListAttribs::SetAttributesDefs(void) { | ||||||
|     attribIDs.insert(pair<string, int>("align", (int)eViewListAttribs::align)); |     attribIDs.insert(pair<string, int>("align", (int)eViewListAttribs::align)); | ||||||
|     attribIDs.insert(pair<string, int>("menuitemwidth", (int)eViewListAttribs::menuitemwidth)); |     attribIDs.insert(pair<string, int>("menuitemwidth", (int)eViewListAttribs::menuitemwidth)); | ||||||
|     attribIDs.insert(pair<string, int>("determinatefont", (int)eViewListAttribs::determinatefont)); |     attribIDs.insert(pair<string, int>("determinatefont", (int)eViewListAttribs::determinatefont)); | ||||||
|     attribIDs.insert(pair<string, int>("numlistelements", (int)eViewListAttribs::numlistelements)); |     attribIDs.insert(pair<string, int>("numlistelements", (int)eViewListAttribs::numlistelements)); | ||||||
|     attribIDs.insert(pair<string, int>("orientation", (int)eViewListAttribs::orientation)); |     attribIDs.insert(pair<string, int>("orientation", (int)eViewListAttribs::orientation)); | ||||||
|     attribIDs.insert(pair<string, int>("condition", (int)eViewListAttribs::condition)); |     attribIDs.insert(pair<string, int>("condition", (int)eViewListAttribs::condition)); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewListAttribs::align, "align")); |     attribNames.insert(pair<int, string>((int)eViewListAttribs::align, "align")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewListAttribs::menuitemwidth, "menuitemwidth")); |     attribNames.insert(pair<int, string>((int)eViewListAttribs::menuitemwidth, "menuitemwidth")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewListAttribs::determinatefont, "determinatefont")); |     attribNames.insert(pair<int, string>((int)eViewListAttribs::determinatefont, "determinatefont")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewListAttribs::numlistelements, "numlistelements")); |     attribNames.insert(pair<int, string>((int)eViewListAttribs::numlistelements, "numlistelements")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewListAttribs::orientation, "orientation")); |     attribNames.insert(pair<int, string>((int)eViewListAttribs::orientation, "orientation")); | ||||||
|     attribNames.insert(pair<int, string>((int)eViewListAttribs::condition, "condition")); |     attribNames.insert(pair<int, string>((int)eViewListAttribs::condition, "condition")); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewListAttribs::Debug(void) { | void cViewListAttribs::Debug(void) { | ||||||
|     esyslog("skindesigner:   ---> View List Attribs"); |     esyslog("skindesigner:   ---> View List Attribs"); | ||||||
|     esyslog("skindesigner:        DeterminateFont %s", determinateFont); |     esyslog("skindesigner:        DeterminateFont %s", determinateFont); | ||||||
|     cAttributes::Debug(); |     cAttributes::Debug(); | ||||||
| } | } | ||||||
|  |  | ||||||
| /*************************************************************************** | /*************************************************************************** | ||||||
| * cAreaAttribs | * cAreaAttribs | ||||||
| ***************************************************************************/ | ***************************************************************************/ | ||||||
| cAreaAttribs::cAreaAttribs(int numAttributes) : cAttributes(numAttributes) { | cAreaAttribs::cAreaAttribs(int numAttributes) : cAttributes(numAttributes) { | ||||||
|     name = NULL; |     name = NULL; | ||||||
|     scrollElement = NULL; |     scrollElement = NULL; | ||||||
|     dynamic = false; |     dynamic = false; | ||||||
|     SetAttributesDefs(); |     SetAttributesDefs(); | ||||||
| } | } | ||||||
|  |  | ||||||
| cAreaAttribs::cAreaAttribs(const cAreaAttribs &other) : cAttributes(other) { | cAreaAttribs::cAreaAttribs(const cAreaAttribs &other) : cAttributes(other) { | ||||||
|     name = NULL; |     name = NULL; | ||||||
|     if (other.name) |     if (other.name) | ||||||
|         name = new cTextExpr(*other.name); |         name = new cTextExpr(*other.name); | ||||||
|     scrollElement = NULL; |     scrollElement = NULL; | ||||||
|     if (other.scrollElement) |     if (other.scrollElement) | ||||||
|         scrollElement = strdup(other.scrollElement); |         scrollElement = strdup(other.scrollElement); | ||||||
|     dynamic = false; |     dynamic = false; | ||||||
| } | } | ||||||
|  |  | ||||||
| cAreaAttribs::~cAreaAttribs(void) { | cAreaAttribs::~cAreaAttribs(void) { | ||||||
|     delete name; |     delete name; | ||||||
|     free(scrollElement); |     free(scrollElement); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAreaAttribs::Set(vector<stringpair> &attributes) { | void cAreaAttribs::Set(vector<stringpair> &attributes) { | ||||||
|     for (vector<stringpair>::iterator att = attributes.begin(); att != attributes.end(); att++) { |     for (vector<stringpair>::iterator att = attributes.begin(); att != attributes.end(); att++) { | ||||||
|         const char *attName = (*att).first.c_str(); |         const char *attName = (*att).first.c_str(); | ||||||
|         const char *attVal = (*att).second.c_str(); |         const char *attVal = (*att).second.c_str(); | ||||||
|         int id = AttributeId(attName); |         int id = AttributeId(attName); | ||||||
|         if (id == ATTR_UNKNOWN) { |         if (id == ATTR_UNKNOWN) { | ||||||
|             esyslog("skindesigner: unknown area attribute \"%s\" = \"%s\"", attName, attVal); |             esyslog("skindesigner: unknown area attribute \"%s\" = \"%s\"", attName, attVal); | ||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
|         if (SetCommon(id, attVal)) |         if (SetCommon(id, attVal)) | ||||||
|             continue; |             continue; | ||||||
|         if (IdEqual(id, (int)eAreaAttribs::scrollelement)) { |         if (IdEqual(id, (int)eAreaAttribs::scrollelement)) { | ||||||
|             scrollElement = strdup(attVal); |             scrollElement = strdup(attVal); | ||||||
|         } else if (IdEqual(id, (int)eAreaAttribs::mode)) { |         } else if (IdEqual(id, (int)eAreaAttribs::mode)) { | ||||||
|             SetScrollMode(id, attVal); |             SetScrollMode(id, attVal); | ||||||
|         } else if (IdEqual(id, (int)eAreaAttribs::orientation)) { |         } else if (IdEqual(id, (int)eAreaAttribs::orientation)) { | ||||||
|             SetOrientation(id, attVal); |             SetOrientation(id, attVal); | ||||||
|         } else if (IdEqual(id, (int)eAreaAttribs::scrollspeed)) { |         } else if (IdEqual(id, (int)eAreaAttribs::scrollspeed)) { | ||||||
|             SetScrollSpeed(id, attVal); |             SetScrollSpeed(id, attVal); | ||||||
|         } else if (IdEqual(id, (int)eAreaAttribs::background)) { |         } else if (IdEqual(id, (int)eAreaAttribs::background)) { | ||||||
|             SetBool(id, attVal); |             SetBool(id, attVal); | ||||||
|         } else if (IdEqual(id, (int)eAreaAttribs::name)) { |         } else if (IdEqual(id, (int)eAreaAttribs::name)) { | ||||||
|             name = new cTextExpr(attVal); |             name = new cTextExpr(attVal); | ||||||
|         } else { |         } else { | ||||||
|             attribCtors[id] = new cNumericExpr(attVal);     |             attribCtors[id] = new cNumericExpr(attVal);     | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| int cAreaAttribs::Layer(void) { | int cAreaAttribs::Layer(void) { | ||||||
|     if (GetValue((int)eAreaAttribs::layer) > 0) { |     if (GetValue((int)eAreaAttribs::layer) > 0) { | ||||||
|         return GetValue((int)eAreaAttribs::layer); |         return GetValue((int)eAreaAttribs::layer); | ||||||
|     } |     } | ||||||
|     return 1; |     return 1; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cAreaAttribs::BackgroundArea(void) { | bool cAreaAttribs::BackgroundArea(void) { | ||||||
|     int isBackground = GetValue((int)eAreaAttribs::background); |     int isBackground = GetValue((int)eAreaAttribs::background); | ||||||
|     if (isBackground == 1) |     if (isBackground == 1) | ||||||
|         return true; |         return true; | ||||||
|     return false;  |     return false;  | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAreaAttribs::CheckDynamic(void) { | void cAreaAttribs::CheckDynamic(void) { | ||||||
|     for (int i = (int)eCommonAttribs::x; i <= (int)eCommonAttribs::height; ++i ) { |     for (int i = (int)eCommonAttribs::x; i <= (int)eCommonAttribs::height; ++i ) { | ||||||
|         if (attribCtors[i] && attribCtors[i]->Dynamic()) { |         if (attribCtors[i] && attribCtors[i]->Dynamic()) { | ||||||
|             dynamic = true; |             dynamic = true; | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| const char *cAreaAttribs::Name(void) {  | const char *cAreaAttribs::Name(void) {  | ||||||
|     if (name) |     if (name) | ||||||
|         return name->DeterminateText();  |         return name->DeterminateText();  | ||||||
|     return NULL; |     return NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAreaAttribs::SetAttributesDefs(void) { | void cAreaAttribs::SetAttributesDefs(void) { | ||||||
|     attribIDs.insert(pair<string, int>("layer", (int)eAreaAttribs::layer)); |     attribIDs.insert(pair<string, int>("layer", (int)eAreaAttribs::layer)); | ||||||
|     attribIDs.insert(pair<string, int>("transparency", (int)eAreaAttribs::transparency)); |     attribIDs.insert(pair<string, int>("transparency", (int)eAreaAttribs::transparency)); | ||||||
|     attribIDs.insert(pair<string, int>("mode", (int)eAreaAttribs::mode)); |     attribIDs.insert(pair<string, int>("mode", (int)eAreaAttribs::mode)); | ||||||
|     attribIDs.insert(pair<string, int>("orientation", (int)eAreaAttribs::orientation)); |     attribIDs.insert(pair<string, int>("orientation", (int)eAreaAttribs::orientation)); | ||||||
|     attribIDs.insert(pair<string, int>("scrollelement", (int)eAreaAttribs::scrollelement)); |     attribIDs.insert(pair<string, int>("scrollelement", (int)eAreaAttribs::scrollelement)); | ||||||
|     attribIDs.insert(pair<string, int>("scrollspeed", (int)eAreaAttribs::scrollspeed)); |     attribIDs.insert(pair<string, int>("scrollspeed", (int)eAreaAttribs::scrollspeed)); | ||||||
|     attribIDs.insert(pair<string, int>("delay", (int)eAreaAttribs::delay)); |     attribIDs.insert(pair<string, int>("delay", (int)eAreaAttribs::delay)); | ||||||
|     attribIDs.insert(pair<string, int>("background", (int)eAreaAttribs::background)); |     attribIDs.insert(pair<string, int>("background", (int)eAreaAttribs::background)); | ||||||
|     attribIDs.insert(pair<string, int>("name", (int)eAreaAttribs::name)); |     attribIDs.insert(pair<string, int>("name", (int)eAreaAttribs::name)); | ||||||
|     attribIDs.insert(pair<string, int>("scrollheight", (int)eAreaAttribs::scrollheight)); |     attribIDs.insert(pair<string, int>("scrollheight", (int)eAreaAttribs::scrollheight)); | ||||||
|     attribNames.insert(pair<int, string>((int)eAreaAttribs::layer, "layer")); |     attribNames.insert(pair<int, string>((int)eAreaAttribs::layer, "layer")); | ||||||
|     attribNames.insert(pair<int, string>((int)eAreaAttribs::transparency, "transparency")); |     attribNames.insert(pair<int, string>((int)eAreaAttribs::transparency, "transparency")); | ||||||
|     attribNames.insert(pair<int, string>((int)eAreaAttribs::mode, "mode")); |     attribNames.insert(pair<int, string>((int)eAreaAttribs::mode, "mode")); | ||||||
|     attribNames.insert(pair<int, string>((int)eAreaAttribs::orientation, "orientation")); |     attribNames.insert(pair<int, string>((int)eAreaAttribs::orientation, "orientation")); | ||||||
|     attribNames.insert(pair<int, string>((int)eAreaAttribs::scrollelement, "scrollelement")); |     attribNames.insert(pair<int, string>((int)eAreaAttribs::scrollelement, "scrollelement")); | ||||||
|     attribNames.insert(pair<int, string>((int)eAreaAttribs::scrollspeed, "scrollspeed")); |     attribNames.insert(pair<int, string>((int)eAreaAttribs::scrollspeed, "scrollspeed")); | ||||||
|     attribNames.insert(pair<int, string>((int)eAreaAttribs::delay, "delay")); |     attribNames.insert(pair<int, string>((int)eAreaAttribs::delay, "delay")); | ||||||
|     attribNames.insert(pair<int, string>((int)eAreaAttribs::background, "background")); |     attribNames.insert(pair<int, string>((int)eAreaAttribs::background, "background")); | ||||||
|     attribNames.insert(pair<int, string>((int)eAreaAttribs::name, "name")); |     attribNames.insert(pair<int, string>((int)eAreaAttribs::name, "name")); | ||||||
|     attribNames.insert(pair<int, string>((int)eAreaAttribs::scrollheight, "scrollheight")); |     attribNames.insert(pair<int, string>((int)eAreaAttribs::scrollheight, "scrollheight")); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAreaAttribs::Cache(void) { | void cAreaAttribs::Cache(void) { | ||||||
|     cAttributes::Cache(); |     cAttributes::Cache(); | ||||||
|     if (name) { |     if (name) { | ||||||
|         name->SetGlobals(globals); |         name->SetGlobals(globals); | ||||||
|         name->SetTokenContainer(tokenContainer); |         name->SetTokenContainer(tokenContainer); | ||||||
|         name->Cache(); |         name->Cache(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAreaAttribs::Debug(void) { | void cAreaAttribs::Debug(void) { | ||||||
|     if (!name) { |     if (!name) { | ||||||
|         esyslog("skindesigner:        ---> Area Attribs"); |         esyslog("skindesigner:        ---> Area Attribs"); | ||||||
|     } else { |     } else { | ||||||
|         esyslog("skindesigner:        ---> Tab %s Attribs", name->DeterminateText());         |         esyslog("skindesigner:        ---> Tab %s Attribs", name->DeterminateText());         | ||||||
|     } |     } | ||||||
|     cAttributes::Debug(); |     cAttributes::Debug(); | ||||||
| } | } | ||||||
|  |  | ||||||
| /*************************************************************************** | /*************************************************************************** | ||||||
| * cAreaContainerAttribs | * cAreaContainerAttribs | ||||||
| ***************************************************************************/ | ***************************************************************************/ | ||||||
| cAreaContainerAttribs::cAreaContainerAttribs(int numAttributes) : cAttributes(numAttributes) { | cAreaContainerAttribs::cAreaContainerAttribs(int numAttributes) : cAttributes(numAttributes) { | ||||||
|     SetAttributesDefs(); |     SetAttributesDefs(); | ||||||
| } | } | ||||||
|  |  | ||||||
| cAreaContainerAttribs::cAreaContainerAttribs(const cAreaContainerAttribs &other) : cAttributes(other) { | cAreaContainerAttribs::cAreaContainerAttribs(const cAreaContainerAttribs &other) : cAttributes(other) { | ||||||
| } | } | ||||||
|  |  | ||||||
| cAreaContainerAttribs::~cAreaContainerAttribs(void) { | cAreaContainerAttribs::~cAreaContainerAttribs(void) { | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAreaContainerAttribs::Set(vector<stringpair> &attributes) { | void cAreaContainerAttribs::Set(vector<stringpair> &attributes) { | ||||||
|     for (vector<stringpair>::iterator att = attributes.begin(); att != attributes.end(); att++) { |     for (vector<stringpair>::iterator att = attributes.begin(); att != attributes.end(); att++) { | ||||||
|         const char *attName = (*att).first.c_str(); |         const char *attName = (*att).first.c_str(); | ||||||
|         const char *attVal = (*att).second.c_str(); |         const char *attVal = (*att).second.c_str(); | ||||||
|         int id = AttributeId(attName); |         int id = AttributeId(attName); | ||||||
|         if (id == ATTR_UNKNOWN) { |         if (id == ATTR_UNKNOWN) { | ||||||
|             esyslog("skindesigner: unknown area container attribute \"%s\" = \"%s\"", attName, attVal); |             esyslog("skindesigner: unknown area container attribute \"%s\" = \"%s\"", attName, attVal); | ||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
|         if (SetCommon(id, attVal)) |         if (SetCommon(id, attVal)) | ||||||
|             continue; |             continue; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAreaContainerAttribs::SetAttributesDefs(void) { | void cAreaContainerAttribs::SetAttributesDefs(void) { | ||||||
| } | } | ||||||
|  |  | ||||||
| void cAreaContainerAttribs::Debug(void) { | void cAreaContainerAttribs::Debug(void) { | ||||||
|     esyslog("skindesigner:            ---> Area Container Attribs"); |     esyslog("skindesigner:            ---> Area Container Attribs"); | ||||||
|     cAttributes::Debug(); |     cAttributes::Debug(); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,111 +1,111 @@ | |||||||
| #ifndef __ATTRIBUTES_H | #ifndef __ATTRIBUTES_H | ||||||
| #define __ATTRIBUTES_H | #define __ATTRIBUTES_H | ||||||
|  |  | ||||||
| #include "attribute.h" | #include "attribute.h" | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cViewAttribs | * cViewAttribs | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cViewAttribs : public cAttributes { | class cViewAttribs : public cAttributes { | ||||||
| private: | private: | ||||||
|     cTextExpr *orientation; |     cTextExpr *orientation; | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
|     void SetOrientationDynamic(int id, const char *val); |     void SetOrientationDynamic(int id, const char *val); | ||||||
| public: | public: | ||||||
|     cViewAttribs(int numAttributes); |     cViewAttribs(int numAttributes); | ||||||
|     virtual ~cViewAttribs(void); |     virtual ~cViewAttribs(void); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     eOrientation Orientation(void); |     eOrientation Orientation(void); | ||||||
|     int FadeTime(void) { return GetValue((int)eViewAttribs::fadetime); }; |     int FadeTime(void) { return GetValue((int)eViewAttribs::fadetime); }; | ||||||
|     int ShiftTime(void) { return GetValue((int)eViewAttribs::shifttime); }; |     int ShiftTime(void) { return GetValue((int)eViewAttribs::shifttime); }; | ||||||
|     cPoint ShiftStartpoint(void) { return cPoint(GetValue((int)eViewAttribs::startx), GetValue((int)eViewAttribs::starty)); }; |     cPoint ShiftStartpoint(void) { return cPoint(GetValue((int)eViewAttribs::startx), GetValue((int)eViewAttribs::starty)); }; | ||||||
|     int ShiftType(void) { return GetValue((int)eViewAttribs::shifttype); }; |     int ShiftType(void) { return GetValue((int)eViewAttribs::shifttype); }; | ||||||
|     int ShiftMode(void) { return GetValue((int)eViewAttribs::shiftmode); }; |     int ShiftMode(void) { return GetValue((int)eViewAttribs::shiftmode); }; | ||||||
|     cRect TvFrame(void); |     cRect TvFrame(void); | ||||||
|     void Cache(void); |     void Cache(void); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cViewElementAttribs | * cViewElementAttribs | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cViewElementAttribs : public cAttributes { | class cViewElementAttribs : public cAttributes { | ||||||
| private: | private: | ||||||
|     char *name; |     char *name; | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
| public: | public: | ||||||
|     cViewElementAttribs(int numAttributes); |     cViewElementAttribs(int numAttributes); | ||||||
|     cViewElementAttribs(const cViewElementAttribs &other); |     cViewElementAttribs(const cViewElementAttribs &other); | ||||||
|     virtual ~cViewElementAttribs(void); |     virtual ~cViewElementAttribs(void); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     int Mode(void) { return GetValue((int)eViewElementAttribs::mode); }; |     int Mode(void) { return GetValue((int)eViewElementAttribs::mode); }; | ||||||
|     int Delay(void) { return GetValue((int)eViewElementAttribs::delay); }; |     int Delay(void) { return GetValue((int)eViewElementAttribs::delay); }; | ||||||
|     eOrientation Orientation(void); |     eOrientation Orientation(void); | ||||||
|     int FadeTime(void) { return GetValue((int)eViewElementAttribs::fadetime); }; |     int FadeTime(void) { return GetValue((int)eViewElementAttribs::fadetime); }; | ||||||
|     int ShiftTime(void) { return GetValue((int)eViewElementAttribs::shifttime); }; |     int ShiftTime(void) { return GetValue((int)eViewElementAttribs::shifttime); }; | ||||||
|     cPoint ShiftStartpoint(void) { return cPoint(GetValue((int)eViewElementAttribs::startx), GetValue((int)eViewElementAttribs::starty)); }; |     cPoint ShiftStartpoint(void) { return cPoint(GetValue((int)eViewElementAttribs::startx), GetValue((int)eViewElementAttribs::starty)); }; | ||||||
|     int ShiftType(void) { return GetValue((int)eViewElementAttribs::shifttype); }; |     int ShiftType(void) { return GetValue((int)eViewElementAttribs::shifttype); }; | ||||||
|     int ShiftMode(void) { return GetValue((int)eViewElementAttribs::shiftmode); }; |     int ShiftMode(void) { return GetValue((int)eViewElementAttribs::shiftmode); }; | ||||||
|     const char *Name(void) { return name; }; |     const char *Name(void) { return name; }; | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cViewListAttribs | * cViewListAttribs | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cViewListAttribs : public cAttributes { | class cViewListAttribs : public cAttributes { | ||||||
| private: | private: | ||||||
|     char *determinateFont; |     char *determinateFont; | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
| public: | public: | ||||||
|     cViewListAttribs(int numAttributes); |     cViewListAttribs(int numAttributes); | ||||||
|     virtual ~cViewListAttribs(void); |     virtual ~cViewListAttribs(void); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     int NumListElements(void); |     int NumListElements(void); | ||||||
|     int MenuItemWidth(void); |     int MenuItemWidth(void); | ||||||
|     const char *DeterminateFont(void); |     const char *DeterminateFont(void); | ||||||
|     eAlign Align(void); |     eAlign Align(void); | ||||||
|     eOrientation Orientation(void); |     eOrientation Orientation(void); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cAreaAttribs | * cAreaAttribs | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cAreaAttribs : public cAttributes { | class cAreaAttribs : public cAttributes { | ||||||
| private: | private: | ||||||
|     cTextExpr *name; |     cTextExpr *name; | ||||||
|     char *scrollElement; |     char *scrollElement; | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
|     bool dynamic; |     bool dynamic; | ||||||
| public: | public: | ||||||
|     cAreaAttribs(int numAttributes); |     cAreaAttribs(int numAttributes); | ||||||
|     cAreaAttribs(const cAreaAttribs &other); |     cAreaAttribs(const cAreaAttribs &other); | ||||||
|     virtual ~cAreaAttribs(void); |     virtual ~cAreaAttribs(void); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     const char *GetScrollElement(void) { return scrollElement; }; |     const char *GetScrollElement(void) { return scrollElement; }; | ||||||
|     int Orientation(void) { return GetValue((int)eAreaAttribs::orientation); }; |     int Orientation(void) { return GetValue((int)eAreaAttribs::orientation); }; | ||||||
|     int Delay(void) { return GetValue((int)eAreaAttribs::delay); }; |     int Delay(void) { return GetValue((int)eAreaAttribs::delay); }; | ||||||
|     int Mode(void) { return GetValue((int)eAreaAttribs::mode); }; |     int Mode(void) { return GetValue((int)eAreaAttribs::mode); }; | ||||||
|     int ScrollSpeed(void) { return GetValue((int)eAreaAttribs::scrollspeed); }; |     int ScrollSpeed(void) { return GetValue((int)eAreaAttribs::scrollspeed); }; | ||||||
|     int Transparency(void) { return GetValue((int)eAreaAttribs::transparency); };     |     int Transparency(void) { return GetValue((int)eAreaAttribs::transparency); };     | ||||||
|     int Layer(void); |     int Layer(void); | ||||||
|     int ScrollStep(void) { return GetValue((int)eAreaAttribs::scrollheight); }; |     int ScrollStep(void) { return GetValue((int)eAreaAttribs::scrollheight); }; | ||||||
|     bool BackgroundArea(void); |     bool BackgroundArea(void); | ||||||
|     const char *Name(void); |     const char *Name(void); | ||||||
|     void CheckDynamic(void); |     void CheckDynamic(void); | ||||||
|     bool Dynamic(void) {return dynamic; }; |     bool Dynamic(void) {return dynamic; }; | ||||||
|     void Cache(void); |     void Cache(void); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cAreaContainerAttribs | * cAreaContainerAttribs | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cAreaContainerAttribs : public cAttributes { | class cAreaContainerAttribs : public cAttributes { | ||||||
| private: | private: | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
| public: | public: | ||||||
|     cAreaContainerAttribs(int numAttributes); |     cAreaContainerAttribs(int numAttributes); | ||||||
|     cAreaContainerAttribs(const cAreaContainerAttribs &other); |     cAreaContainerAttribs(const cAreaContainerAttribs &other); | ||||||
|     virtual ~cAreaContainerAttribs(void); |     virtual ~cAreaContainerAttribs(void); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__ATTRIBUTES_H | #endif //__ATTRIBUTES_H | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,318 +1,318 @@ | |||||||
| #ifndef __COMPLEXTYPES_H | #ifndef __COMPLEXTYPES_H | ||||||
| #define __COMPLEXTYPES_H | #define __COMPLEXTYPES_H | ||||||
|  |  | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include <string> | #include <string> | ||||||
| #include <vector> | #include <vector> | ||||||
| #include <vdr/skins.h> | #include <vdr/skins.h> | ||||||
| #include "globals.h" | #include "globals.h" | ||||||
| #include "../libskindesignerapi/tokencontainer.h" | #include "../libskindesignerapi/tokencontainer.h" | ||||||
|  |  | ||||||
| class cLoopInfo; | class cLoopInfo; | ||||||
| class cFunction; | class cFunction; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * helpers | * helpers | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| char *RemoveSpace(char *e); | char *RemoveSpace(char *e); | ||||||
| void ReplaceDecimalpoint(char *e); | void ReplaceDecimalpoint(char *e); | ||||||
| void ReplaceStart(char *e, int num); | void ReplaceStart(char *e, int num); | ||||||
| void ReplaceEnd(char *e, int num); | void ReplaceEnd(char *e, int num); | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cCondition | * cCondition | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| enum class eCondOp { | enum class eCondOp { | ||||||
|     tAnd, |     tAnd, | ||||||
|     tOr |     tOr | ||||||
| }; | }; | ||||||
|  |  | ||||||
| enum class eCondType { | enum class eCondType { | ||||||
|     token, |     token, | ||||||
|     negtoken, |     negtoken, | ||||||
|     lowerInt, |     lowerInt, | ||||||
|     equalInt, |     equalInt, | ||||||
|     greaterInt, |     greaterInt, | ||||||
|     isset, |     isset, | ||||||
|     empty, |     empty, | ||||||
|     equalString, |     equalString, | ||||||
|     notEqualString, |     notEqualString, | ||||||
|     contains, |     contains, | ||||||
|     notContains |     notContains | ||||||
| }; | }; | ||||||
|  |  | ||||||
| enum class eCondTokenType { | enum class eCondTokenType { | ||||||
|     inttoken, |     inttoken, | ||||||
|     stringtoken, |     stringtoken, | ||||||
|     looptoken |     looptoken | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cCond : public cListObject { | class cCond : public cListObject { | ||||||
| public: | public: | ||||||
|     cCond(const char *expression); |     cCond(const char *expression); | ||||||
|     cCond(const cCond &other); |     cCond(const cCond &other); | ||||||
|     virtual ~cCond(void); |     virtual ~cCond(void); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
|     char *expr; |     char *expr; | ||||||
|     eCondOp operation; |     eCondOp operation; | ||||||
|     eCondType type; |     eCondType type; | ||||||
|     eCondTokenType tokenType; |     eCondTokenType tokenType; | ||||||
|     bool constant; |     bool constant; | ||||||
|     bool isTrue; |     bool isTrue; | ||||||
|     int tokenIndex; |     int tokenIndex; | ||||||
|     int compareValue; |     int compareValue; | ||||||
|     char *compareStrValue; |     char *compareStrValue; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cCondition { | class cCondition { | ||||||
| private: | private: | ||||||
|     char *expr; |     char *expr; | ||||||
|     cGlobals *globals; |     cGlobals *globals; | ||||||
|     skindesignerapi::cTokenContainer *tokenContainer; |     skindesignerapi::cTokenContainer *tokenContainer; | ||||||
|     cLoopInfo *loopInfo; |     cLoopInfo *loopInfo; | ||||||
|     cList<cCond> conds; |     cList<cCond> conds; | ||||||
|     void Tokenize(void); |     void Tokenize(void); | ||||||
|     void PrepareTokens(void); |     void PrepareTokens(void); | ||||||
|     void SetTokenCond(cCond *c); |     void SetTokenCond(cCond *c); | ||||||
|     void SetIntegerCond(cCond *c); |     void SetIntegerCond(cCond *c); | ||||||
|     void SetStringCond(cCond *c); |     void SetStringCond(cCond *c); | ||||||
|     void SetStringCompareCond(cCond *c); |     void SetStringCompareCond(cCond *c); | ||||||
|     void SetTokenIndex(cCond *c, const char *token); |     void SetTokenIndex(cCond *c, const char *token); | ||||||
| public: | public: | ||||||
|     cCondition(const char *expression); |     cCondition(const char *expression); | ||||||
|     cCondition(const cCondition &other); |     cCondition(const cCondition &other); | ||||||
|     virtual ~cCondition(void); |     virtual ~cCondition(void); | ||||||
|     void SetGlobals(cGlobals *globals) { this->globals = globals; }; |     void SetGlobals(cGlobals *globals) { this->globals = globals; }; | ||||||
|     void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer) {this->tokenContainer = tokenContainer; }; |     void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer) {this->tokenContainer = tokenContainer; }; | ||||||
|     void SetLoopInfo(cLoopInfo *loopInfo) { this->loopInfo = loopInfo; }; |     void SetLoopInfo(cLoopInfo *loopInfo) { this->loopInfo = loopInfo; }; | ||||||
|     void Prepare(void); |     void Prepare(void); | ||||||
|     bool True(void); |     bool True(void); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cNumericExpr | * cNumericExpr | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| enum class eFactorType { | enum class eFactorType { | ||||||
|     constant = 0, |     constant = 0, | ||||||
|     stringtoken, |     stringtoken, | ||||||
|     inttoken, |     inttoken, | ||||||
|     looptoken, |     looptoken, | ||||||
|     xref, |     xref, | ||||||
|     yref, |     yref, | ||||||
|     widthref, |     widthref, | ||||||
|     heightref, |     heightref, | ||||||
|     areawidth, |     areawidth, | ||||||
|     areaheight, |     areaheight, | ||||||
|     columnwidth, |     columnwidth, | ||||||
|     rowheight |     rowheight | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cFactor: public cListObject { | class cFactor: public cListObject { | ||||||
| public: | public: | ||||||
|     cFactor(void) { |     cFactor(void) { | ||||||
|         multiplication = true; |         multiplication = true; | ||||||
|         type = eFactorType::constant; |         type = eFactorType::constant; | ||||||
|         constValue = 1.0f; |         constValue = 1.0f; | ||||||
|         tokenIndex = -1; |         tokenIndex = -1; | ||||||
|         funcRefName = NULL; |         funcRefName = NULL; | ||||||
|         funcRef = NULL; |         funcRef = NULL; | ||||||
|     }; |     }; | ||||||
|     cFactor(const cFactor &other) { |     cFactor(const cFactor &other) { | ||||||
|         multiplication = other.multiplication; |         multiplication = other.multiplication; | ||||||
|         type = other.type; |         type = other.type; | ||||||
|         constValue = other.constValue; |         constValue = other.constValue; | ||||||
|         tokenIndex = other.tokenIndex; |         tokenIndex = other.tokenIndex; | ||||||
|         funcRefName = NULL; |         funcRefName = NULL; | ||||||
|         if (other.funcRefName) |         if (other.funcRefName) | ||||||
|             funcRefName = strdup(other.funcRefName); |             funcRefName = strdup(other.funcRefName); | ||||||
|         funcRef = other.funcRef; |         funcRef = other.funcRef; | ||||||
|     } |     } | ||||||
|     ~cFactor(void) { |     ~cFactor(void) { | ||||||
|         free(funcRefName); |         free(funcRefName); | ||||||
|     }; |     }; | ||||||
|     bool multiplication; |     bool multiplication; | ||||||
|     eFactorType type; |     eFactorType type; | ||||||
|     double constValue; |     double constValue; | ||||||
|     int tokenIndex; |     int tokenIndex; | ||||||
|     char *funcRefName; |     char *funcRefName; | ||||||
|     cFunction *funcRef; |     cFunction *funcRef; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cSummand : public cListObject { | class cSummand : public cListObject { | ||||||
| public: | public: | ||||||
|     cSummand(const char *summand); |     cSummand(const char *summand); | ||||||
|     cSummand(const cSummand &other); |     cSummand(const cSummand &other); | ||||||
|     ~cSummand(void); |     ~cSummand(void); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
|     char *summand; |     char *summand; | ||||||
|     bool positive; |     bool positive; | ||||||
|     cList<cFactor> factors; |     cList<cFactor> factors; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cNumericExpr { | class cNumericExpr { | ||||||
| private: | private: | ||||||
|     cGlobals *globals; |     cGlobals *globals; | ||||||
|     cRect *container; |     cRect *container; | ||||||
|     skindesignerapi::cTokenContainer *tokenContainer; |     skindesignerapi::cTokenContainer *tokenContainer; | ||||||
|     cLoopInfo *loopInfo; |     cLoopInfo *loopInfo; | ||||||
|     char *expr; |     char *expr; | ||||||
|     cList<cSummand> summands; |     cList<cSummand> summands; | ||||||
|     bool horizontal; |     bool horizontal; | ||||||
|     int value; |     int value; | ||||||
|     bool dynamic; |     bool dynamic; | ||||||
|     //common string functions |     //common string functions | ||||||
|     bool IsNumeric(const char *e); |     bool IsNumeric(const char *e); | ||||||
|     bool IsNumericExpression(const char *e); |     bool IsNumericExpression(const char *e); | ||||||
|     bool PercentValue(const char *e); |     bool PercentValue(const char *e); | ||||||
|     char *ReplacePercentValue(char *e); |     char *ReplacePercentValue(char *e); | ||||||
|     char *ReplaceToken(char *e, const char* token, int value); |     char *ReplaceToken(char *e, const char* token, int value); | ||||||
|     char *ReplaceTokens(char *e, const char* token, int value); |     char *ReplaceTokens(char *e, const char* token, int value); | ||||||
|     //calculate numeric expressions |     //calculate numeric expressions | ||||||
|     int EvaluateExpression(char *e); |     int EvaluateExpression(char *e); | ||||||
|     double EvaluateExpressionDouble(char *e); |     double EvaluateExpressionDouble(char *e); | ||||||
|     double ParseAtom(char*& e); |     double ParseAtom(char*& e); | ||||||
|     double ParseFactors(char*& e); |     double ParseFactors(char*& e); | ||||||
|     double ParseSummands(char*& e); |     double ParseSummands(char*& e); | ||||||
|     //prepare expressions with tokens |     //prepare expressions with tokens | ||||||
|     void CreateSummands(void); |     void CreateSummands(void); | ||||||
|     void CreateFactors(void); |     void CreateFactors(void); | ||||||
|     bool SetTokenFactor(cFactor *f, char *tokenName); |     bool SetTokenFactor(cFactor *f, char *tokenName); | ||||||
|     bool SetReferenceFactor(cFactor *f, char *tokenName); |     bool SetReferenceFactor(cFactor *f, char *tokenName); | ||||||
|     bool SetGeometryFactor(cFactor *f, char *tokenName); |     bool SetGeometryFactor(cFactor *f, char *tokenName); | ||||||
|     void ConsolidateSummand(void); |     void ConsolidateSummand(void); | ||||||
|     void ConsolidateFactors(void); |     void ConsolidateFactors(void); | ||||||
| public: | public: | ||||||
|     cNumericExpr(const char *expression); |     cNumericExpr(const char *expression); | ||||||
|     cNumericExpr(const cNumericExpr &other); |     cNumericExpr(const cNumericExpr &other); | ||||||
|     virtual ~cNumericExpr(void); |     virtual ~cNumericExpr(void); | ||||||
|     void SetContainer(cRect *container) { this->container = container; }; |     void SetContainer(cRect *container) { this->container = container; }; | ||||||
|     void SetGlobals(cGlobals *globals) { this->globals = globals; }; |     void SetGlobals(cGlobals *globals) { this->globals = globals; }; | ||||||
|     void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer) { this->tokenContainer = tokenContainer; }; |     void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer) { this->tokenContainer = tokenContainer; }; | ||||||
|     void SetLoopInfo(cLoopInfo *loopInfo) { this->loopInfo = loopInfo; }; |     void SetLoopInfo(cLoopInfo *loopInfo) { this->loopInfo = loopInfo; }; | ||||||
|     void SetVertical(void) { horizontal = false; }; |     void SetVertical(void) { horizontal = false; }; | ||||||
|     bool CacheStatic(void); |     bool CacheStatic(void); | ||||||
|     void PrepareTokens(void); |     void PrepareTokens(void); | ||||||
|     vector<cFactor*> GetRefFactors(void); |     vector<cFactor*> GetRefFactors(void); | ||||||
|     int GetValue(void) { return value; }; |     int GetValue(void) { return value; }; | ||||||
|     bool Dynamic(void) { return dynamic; }; |     bool Dynamic(void) { return dynamic; }; | ||||||
|     int Calculate(void); |     int Calculate(void); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cColor | * cColor | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cColor { | class cColor { | ||||||
| private: | private: | ||||||
|     cGlobals *globals; |     cGlobals *globals; | ||||||
|     char *expr; |     char *expr; | ||||||
|     tColor value; |     tColor value; | ||||||
| public: | public: | ||||||
|     cColor(const char *expression); |     cColor(const char *expression); | ||||||
|     cColor(const cColor &other); |     cColor(const cColor &other); | ||||||
|     virtual ~cColor(void); |     virtual ~cColor(void); | ||||||
|     void SetGlobals(cGlobals *globals) { this->globals = globals; }; |     void SetGlobals(cGlobals *globals) { this->globals = globals; }; | ||||||
|     void Cache(void); |     void Cache(void); | ||||||
|     tColor Color(void); |     tColor Color(void); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cTextExpr | * cTextExpr | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| enum class eTexttokenType { | enum class eTexttokenType { | ||||||
|     constant = 0, |     constant = 0, | ||||||
|     stringtoken, |     stringtoken, | ||||||
|     inttoken, |     inttoken, | ||||||
|     looptoken, |     looptoken, | ||||||
|     printftoken, |     printftoken, | ||||||
|     condstringtoken, |     condstringtoken, | ||||||
|     condinttoken, |     condinttoken, | ||||||
| }; | }; | ||||||
|  |  | ||||||
| enum class ePrintfVarType { | enum class ePrintfVarType { | ||||||
|     stringtoken, |     stringtoken, | ||||||
|     inttoken, |     inttoken, | ||||||
|     looptoken |     looptoken | ||||||
| }; | }; | ||||||
|  |  | ||||||
| struct sPrintfInfo { | struct sPrintfInfo { | ||||||
|     ePrintfVarType type; |     ePrintfVarType type; | ||||||
|     int index; |     int index; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cTextToken: public cListObject { | class cTextToken: public cListObject { | ||||||
| public: | public: | ||||||
|     cTextToken(void) { |     cTextToken(void) { | ||||||
|         type = eTexttokenType::constant; |         type = eTexttokenType::constant; | ||||||
|         constValue = NULL; |         constValue = NULL; | ||||||
|         printfExpr = NULL; |         printfExpr = NULL; | ||||||
|         printfResult = NULL; |         printfResult = NULL; | ||||||
|         tokenIndex = -1; |         tokenIndex = -1; | ||||||
|         condStart = NULL; |         condStart = NULL; | ||||||
|         condEnd = NULL; |         condEnd = NULL; | ||||||
|     }; |     }; | ||||||
|     cTextToken(const cTextToken &other) { |     cTextToken(const cTextToken &other) { | ||||||
|         type = other.type; |         type = other.type; | ||||||
|         constValue = NULL; |         constValue = NULL; | ||||||
|         if (other.constValue) |         if (other.constValue) | ||||||
|             constValue = strdup(other.constValue); |             constValue = strdup(other.constValue); | ||||||
|         printfExpr = NULL; |         printfExpr = NULL; | ||||||
|         if (other.printfExpr) |         if (other.printfExpr) | ||||||
|             printfExpr = strdup(other.printfExpr); |             printfExpr = strdup(other.printfExpr); | ||||||
|         printfVarIndices = other.printfVarIndices; |         printfVarIndices = other.printfVarIndices; | ||||||
|         printfResult = NULL; |         printfResult = NULL; | ||||||
|         if (other.printfResult) |         if (other.printfResult) | ||||||
|             printfResult = strdup(other.printfResult); |             printfResult = strdup(other.printfResult); | ||||||
|         tokenIndex = other.tokenIndex; |         tokenIndex = other.tokenIndex; | ||||||
|         condStart = NULL; |         condStart = NULL; | ||||||
|         if (other.condStart) |         if (other.condStart) | ||||||
|             condStart = strdup(other.condStart); |             condStart = strdup(other.condStart); | ||||||
|         condEnd = NULL; |         condEnd = NULL; | ||||||
|         if (other.condEnd) |         if (other.condEnd) | ||||||
|             condEnd = strdup(other.condEnd); |             condEnd = strdup(other.condEnd); | ||||||
|     }; |     }; | ||||||
|     ~cTextToken(void) { |     ~cTextToken(void) { | ||||||
|         free(constValue); |         free(constValue); | ||||||
|         free(printfExpr); |         free(printfExpr); | ||||||
|     }; |     }; | ||||||
|     eTexttokenType type; |     eTexttokenType type; | ||||||
|     char *constValue; |     char *constValue; | ||||||
|     int tokenIndex; |     int tokenIndex; | ||||||
|     char *printfExpr; |     char *printfExpr; | ||||||
|     vector<sPrintfInfo> printfVarIndices; |     vector<sPrintfInfo> printfVarIndices; | ||||||
|     char *printfResult; |     char *printfResult; | ||||||
|     char *condStart; |     char *condStart; | ||||||
|     char *condEnd; |     char *condEnd; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cTextExpr { | class cTextExpr { | ||||||
| private: | private: | ||||||
|     cGlobals *globals; |     cGlobals *globals; | ||||||
|     skindesignerapi::cTokenContainer *tokenContainer; |     skindesignerapi::cTokenContainer *tokenContainer; | ||||||
|     cLoopInfo *loopInfo; |     cLoopInfo *loopInfo; | ||||||
|     char *expr; |     char *expr; | ||||||
|     cList<cTextToken> textTokens; |     cList<cTextToken> textTokens; | ||||||
|     void Translate(void); |     void Translate(void); | ||||||
|     void Tokenize(void); |     void Tokenize(void); | ||||||
|     void PrepareTokens(void); |     void PrepareTokens(void); | ||||||
|     bool CheckGlobals(cTextToken *t); |     bool CheckGlobals(cTextToken *t); | ||||||
|     bool ParsePrintfToken(cTextToken *t); |     bool ParsePrintfToken(cTextToken *t); | ||||||
|     void DeterminatePrintfToken(cTextToken *t); |     void DeterminatePrintfToken(cTextToken *t); | ||||||
|     void ParseCondToken(cTextToken *t); |     void ParseCondToken(cTextToken *t); | ||||||
|     char *CopyTextPart(char *start, char *stop, bool incLastChar= true); |     char *CopyTextPart(char *start, char *stop, bool incLastChar= true); | ||||||
| public: | public: | ||||||
|     cTextExpr(const char *expression); |     cTextExpr(const char *expression); | ||||||
|     cTextExpr(const cTextExpr &other); |     cTextExpr(const cTextExpr &other); | ||||||
|     virtual ~cTextExpr(void); |     virtual ~cTextExpr(void); | ||||||
|     void SetGlobals(cGlobals *globals) { this->globals = globals; }; |     void SetGlobals(cGlobals *globals) { this->globals = globals; }; | ||||||
|     void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer) { this->tokenContainer = tokenContainer; }; |     void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer) { this->tokenContainer = tokenContainer; }; | ||||||
|     void SetLoopInfo(cLoopInfo *loopInfo) { this->loopInfo = loopInfo; }; |     void SetLoopInfo(cLoopInfo *loopInfo) { this->loopInfo = loopInfo; }; | ||||||
|     void CorrectImagePath(void); |     void CorrectImagePath(void); | ||||||
|     void Cache(void); |     void Cache(void); | ||||||
|     char *DeterminateText(void); |     char *DeterminateText(void); | ||||||
|     void Debug(const char *exprName); |     void Debug(const char *exprName); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__COMPLEXTYPES_H | #endif //__COMPLEXTYPES_H | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,220 +1,220 @@ | |||||||
| #ifndef __FUNCTIONS_H | #ifndef __FUNCTIONS_H | ||||||
| #define __FUNCTIONS_H | #define __FUNCTIONS_H | ||||||
|  |  | ||||||
| #include "functions.h" | #include "functions.h" | ||||||
|  |  | ||||||
| class cFuncFill : public cFunction { | class cFuncFill : public cFunction { | ||||||
| private: | private: | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
| public: | public: | ||||||
|     cFuncFill(cArea *owner, int numAttributes); |     cFuncFill(cArea *owner, int numAttributes); | ||||||
|     cFuncFill(const cFuncFill &other); |     cFuncFill(const cFuncFill &other); | ||||||
|     virtual ~cFuncFill(void); |     virtual ~cFuncFill(void); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); |     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cFuncDrawRectangle : public cFunction { | class cFuncDrawRectangle : public cFunction { | ||||||
| private: | private: | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
| public: | public: | ||||||
|     cFuncDrawRectangle(cArea *owner, int numAttributes); |     cFuncDrawRectangle(cArea *owner, int numAttributes); | ||||||
|     cFuncDrawRectangle(const cFuncDrawRectangle &other); |     cFuncDrawRectangle(const cFuncDrawRectangle &other); | ||||||
|     virtual ~cFuncDrawRectangle(void); |     virtual ~cFuncDrawRectangle(void); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); |     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); | ||||||
|     bool Blinking(void) { return GetValue((int)eDrawRectangleAttribs::animtype) == (int)eAnimType::blink; }; |     bool Blinking(void) { return GetValue((int)eDrawRectangleAttribs::animtype) == (int)eAnimType::blink; }; | ||||||
|     int BlinkFreq(void) { return GetValue((int)eDrawRectangleAttribs::animfreq); }; |     int BlinkFreq(void) { return GetValue((int)eDrawRectangleAttribs::animfreq); }; | ||||||
|     int Align(void) { return GetValue((int)eDrawRectangleAttribs::align); }; |     int Align(void) { return GetValue((int)eDrawRectangleAttribs::align); }; | ||||||
|     int Valign(void) { return GetValue((int)eDrawRectangleAttribs::valign); }; |     int Valign(void) { return GetValue((int)eDrawRectangleAttribs::valign); }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cFuncDrawEllipse : public cFunction { | class cFuncDrawEllipse : public cFunction { | ||||||
| private: | private: | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
| public: | public: | ||||||
|     cFuncDrawEllipse(cArea *owner, int numAttributes); |     cFuncDrawEllipse(cArea *owner, int numAttributes); | ||||||
|     cFuncDrawEllipse(const cFuncDrawEllipse &other); |     cFuncDrawEllipse(const cFuncDrawEllipse &other); | ||||||
|     virtual ~cFuncDrawEllipse(void); |     virtual ~cFuncDrawEllipse(void); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); |     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); | ||||||
|     bool Blinking(void) { return GetValue((int)eDrawEllipseAttribs::animtype) == (int)eAnimType::blink; }; |     bool Blinking(void) { return GetValue((int)eDrawEllipseAttribs::animtype) == (int)eAnimType::blink; }; | ||||||
|     int BlinkFreq(void) { return GetValue((int)eDrawEllipseAttribs::animfreq); }; |     int BlinkFreq(void) { return GetValue((int)eDrawEllipseAttribs::animfreq); }; | ||||||
|     int Align(void) { return GetValue((int)eDrawEllipseAttribs::align); }; |     int Align(void) { return GetValue((int)eDrawEllipseAttribs::align); }; | ||||||
|     int Valign(void) { return GetValue((int)eDrawEllipseAttribs::valign); }; |     int Valign(void) { return GetValue((int)eDrawEllipseAttribs::valign); }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cFuncDrawSlope : public cFunction { | class cFuncDrawSlope : public cFunction { | ||||||
| private: | private: | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
| public: | public: | ||||||
|     cFuncDrawSlope(cArea *owner, int numAttributes); |     cFuncDrawSlope(cArea *owner, int numAttributes); | ||||||
|     cFuncDrawSlope(const cFuncDrawSlope &other); |     cFuncDrawSlope(const cFuncDrawSlope &other); | ||||||
|     virtual ~cFuncDrawSlope(void); |     virtual ~cFuncDrawSlope(void); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); |     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); | ||||||
|     bool Blinking(void) { return GetValue((int)eDrawSlopeAttribs::animtype) == (int)eAnimType::blink; }; |     bool Blinking(void) { return GetValue((int)eDrawSlopeAttribs::animtype) == (int)eAnimType::blink; }; | ||||||
|     int BlinkFreq(void) { return GetValue((int)eDrawSlopeAttribs::animfreq); }; |     int BlinkFreq(void) { return GetValue((int)eDrawSlopeAttribs::animfreq); }; | ||||||
|     int Align(void) { return GetValue((int)eDrawSlopeAttribs::align); }; |     int Align(void) { return GetValue((int)eDrawSlopeAttribs::align); }; | ||||||
|     int Valign(void) { return GetValue((int)eDrawSlopeAttribs::valign); }; |     int Valign(void) { return GetValue((int)eDrawSlopeAttribs::valign); }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cTextDrawer { | class cTextDrawer { | ||||||
| private: | private: | ||||||
|     static cMutex fontLock; |     static cMutex fontLock; | ||||||
| protected: | protected: | ||||||
|     const cFont *font; |     const cFont *font; | ||||||
|     char *fontName; |     char *fontName; | ||||||
|     int fontSize; |     int fontSize; | ||||||
|     void CacheFont(cGlobals *globals, int size); |     void CacheFont(cGlobals *globals, int size); | ||||||
|     void LoadFont(int size); |     void LoadFont(int size); | ||||||
|     int TextWidth(const char *text); |     int TextWidth(const char *text); | ||||||
|     int FontHeight(void); |     int FontHeight(void); | ||||||
| public: | public: | ||||||
|     cTextDrawer(void); |     cTextDrawer(void); | ||||||
|     virtual ~cTextDrawer(void); |     virtual ~cTextDrawer(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cFuncDrawText : public cFunction, public cTextDrawer { | class cFuncDrawText : public cFunction, public cTextDrawer { | ||||||
| private: | private: | ||||||
|     cTextExpr *text; |     cTextExpr *text; | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
|     char *Cut(char *expr, int width); |     char *Cut(char *expr, int width); | ||||||
| public: | public: | ||||||
|     cFuncDrawText(cArea *owner, int numAttributes); |     cFuncDrawText(cArea *owner, int numAttributes); | ||||||
|     cFuncDrawText(const cFuncDrawText &other); |     cFuncDrawText(const cFuncDrawText &other); | ||||||
|     virtual ~cFuncDrawText(void); |     virtual ~cFuncDrawText(void); | ||||||
|     void SetLoopInfo(cLoopInfo *loopInfo); |     void SetLoopInfo(cLoopInfo *loopInfo); | ||||||
|     void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); |     void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     void Cache(void); |     void Cache(void); | ||||||
|     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); |     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); | ||||||
|     int FuncX(void); |     int FuncX(void); | ||||||
|     int FuncY(void); |     int FuncY(void); | ||||||
|     int FuncWidth(void); |     int FuncWidth(void); | ||||||
|     int FuncHeight(void); |     int FuncHeight(void); | ||||||
|     int AvrgFontWidth(void); |     int AvrgFontWidth(void); | ||||||
|     const cFont *GetFont(void); |     const cFont *GetFont(void); | ||||||
|     bool Blinking(void) { return GetValue((int)eDrawTextAttribs::animtype) == (int)eAnimType::blink; }; |     bool Blinking(void) { return GetValue((int)eDrawTextAttribs::animtype) == (int)eAnimType::blink; }; | ||||||
|     int BlinkFreq(void) { return GetValue((int)eDrawTextAttribs::animfreq); }; |     int BlinkFreq(void) { return GetValue((int)eDrawTextAttribs::animfreq); }; | ||||||
|     int Align(void) { return GetValue((int)eDrawTextAttribs::align); }; |     int Align(void) { return GetValue((int)eDrawTextAttribs::align); }; | ||||||
|     int Valign(void) { return GetValue((int)eDrawTextAttribs::valign); }; |     int Valign(void) { return GetValue((int)eDrawTextAttribs::valign); }; | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cFuncDrawTextVertical : public cFunction, public cTextDrawer { | class cFuncDrawTextVertical : public cFunction, public cTextDrawer { | ||||||
| private: | private: | ||||||
|     cTextExpr *text; |     cTextExpr *text; | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
| public: | public: | ||||||
|     cFuncDrawTextVertical(cArea *owner, int numAttributes); |     cFuncDrawTextVertical(cArea *owner, int numAttributes); | ||||||
|     cFuncDrawTextVertical(const cFuncDrawTextVertical &other); |     cFuncDrawTextVertical(const cFuncDrawTextVertical &other); | ||||||
|     virtual ~cFuncDrawTextVertical(void); |     virtual ~cFuncDrawTextVertical(void); | ||||||
|     void SetLoopInfo(cLoopInfo *loopInfo); |     void SetLoopInfo(cLoopInfo *loopInfo); | ||||||
|     void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); |     void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     void Cache(void); |     void Cache(void); | ||||||
|     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); |     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); | ||||||
|     int FuncWidth(void); |     int FuncWidth(void); | ||||||
|     int FuncHeight(void); |     int FuncHeight(void); | ||||||
|     bool Blinking(void) { return GetValue((int)eDrawTextAttribsVertical::animtype) == (int)eAnimType::blink; }; |     bool Blinking(void) { return GetValue((int)eDrawTextAttribsVertical::animtype) == (int)eAnimType::blink; }; | ||||||
|     int BlinkFreq(void) { return GetValue((int)eDrawTextAttribsVertical::animfreq); }; |     int BlinkFreq(void) { return GetValue((int)eDrawTextAttribsVertical::animfreq); }; | ||||||
|     int Align(void) { return GetValue((int)eDrawTextAttribsVertical::align); }; |     int Align(void) { return GetValue((int)eDrawTextAttribsVertical::align); }; | ||||||
|     int Valign(void) { return GetValue((int)eDrawTextAttribsVertical::valign); }; |     int Valign(void) { return GetValue((int)eDrawTextAttribsVertical::valign); }; | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cTextFloater; | class cTextFloater; | ||||||
|  |  | ||||||
| class cFuncDrawTextBox : public cFunction, public cTextDrawer { | class cFuncDrawTextBox : public cFunction, public cTextDrawer { | ||||||
| private: | private: | ||||||
|     cTextExpr *text; |     cTextExpr *text; | ||||||
|     cTextFloater *floater; |     cTextFloater *floater; | ||||||
|     void SetFloater(void); |     void SetFloater(void); | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
|     void SetFloatMode(int id, const char *val); |     void SetFloatMode(int id, const char *val); | ||||||
| public: | public: | ||||||
|     cFuncDrawTextBox(cArea *owner, int numAttributes); |     cFuncDrawTextBox(cArea *owner, int numAttributes); | ||||||
|     cFuncDrawTextBox(const cFuncDrawTextBox &other); |     cFuncDrawTextBox(const cFuncDrawTextBox &other); | ||||||
|     virtual ~cFuncDrawTextBox(void); |     virtual ~cFuncDrawTextBox(void); | ||||||
|     void SetLoopInfo(cLoopInfo *loopInfo); |     void SetLoopInfo(cLoopInfo *loopInfo); | ||||||
|     void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); |     void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     void Cache(void); |     void Cache(void); | ||||||
|     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); |     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); | ||||||
|     int FuncWidth(void); |     int FuncWidth(void); | ||||||
|     int FuncHeight(void); |     int FuncHeight(void); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cFuncDrawImage : public cFunction { | class cFuncDrawImage : public cFunction { | ||||||
| private: | private: | ||||||
|     cTextExpr *path; |     cTextExpr *path; | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
|     void SetImageType(int id, const char *val); |     void SetImageType(int id, const char *val); | ||||||
|     void PreCacheImage(void); |     void PreCacheImage(void); | ||||||
| public: | public: | ||||||
|     cFuncDrawImage(cArea *owner, int numAttributes); |     cFuncDrawImage(cArea *owner, int numAttributes); | ||||||
|     cFuncDrawImage(const cFuncDrawImage &other); |     cFuncDrawImage(const cFuncDrawImage &other); | ||||||
|     virtual ~cFuncDrawImage(void); |     virtual ~cFuncDrawImage(void); | ||||||
|     void SetLoopInfo(cLoopInfo *loopInfo); |     void SetLoopInfo(cLoopInfo *loopInfo); | ||||||
|     void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); |     void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     void Cache(void); |     void Cache(void); | ||||||
|     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); |     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); | ||||||
|     bool Blinking(void) { return GetValue((int)eDrawImageAttribs::animtype) == (int)eAnimType::blink; }; |     bool Blinking(void) { return GetValue((int)eDrawImageAttribs::animtype) == (int)eAnimType::blink; }; | ||||||
|     int BlinkFreq(void) { return GetValue((int)eDrawImageAttribs::animfreq); }; |     int BlinkFreq(void) { return GetValue((int)eDrawImageAttribs::animfreq); }; | ||||||
|     int Align(void) { return GetValue((int)eDrawImageAttribs::align); }; |     int Align(void) { return GetValue((int)eDrawImageAttribs::align); }; | ||||||
|     int Valign(void) { return GetValue((int)eDrawImageAttribs::valign); }; |     int Valign(void) { return GetValue((int)eDrawImageAttribs::valign); }; | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cFuncLoop : public cFunction { | class cFuncLoop : public cFunction { | ||||||
| private: | private: | ||||||
|     cLoopInfo loopInfo; |     cLoopInfo loopInfo; | ||||||
|     cList<cFunction> functions; |     cList<cFunction> functions; | ||||||
|     void SetAttributesDefs(void); |     void SetAttributesDefs(void); | ||||||
|     int ColumnWidth(void); |     int ColumnWidth(void); | ||||||
|     int RowHeight(void); |     int RowHeight(void); | ||||||
| public: | public: | ||||||
|     cFuncLoop(cArea *owner, int numAttributes); |     cFuncLoop(cArea *owner, int numAttributes); | ||||||
|     virtual ~cFuncLoop(void); |     virtual ~cFuncLoop(void); | ||||||
|     void Set(vector<stringpair> &attributes); |     void Set(vector<stringpair> &attributes); | ||||||
|     void SetContainer(int x, int y, int width, int height); |     void SetContainer(int x, int y, int width, int height); | ||||||
|     void Cache(void); |     void Cache(void); | ||||||
|     void AddFunction(cFunction *f); |     void AddFunction(cFunction *f); | ||||||
|     cFunction *GetFunction(const char *name); |     cFunction *GetFunction(const char *name); | ||||||
|     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); |     void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0); | ||||||
|     int FuncWidth(void); |     int FuncWidth(void); | ||||||
|     int FuncHeight(void); |     int FuncHeight(void); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cTextFloater { | class cTextFloater { | ||||||
| private: | private: | ||||||
|     char *text; |     char *text; | ||||||
|     char *eol; |     char *eol; | ||||||
|     int lines; |     int lines; | ||||||
|     int lastLine; |     int lastLine; | ||||||
| public: | public: | ||||||
|     cTextFloater(void); |     cTextFloater(void); | ||||||
|     cTextFloater(const char *text, const cFont *font, int width, int height = 0, int floatWidth = 0, int floatHeight = 0, int maxLines = 0); |     cTextFloater(const char *text, const cFont *font, int width, int height = 0, int floatWidth = 0, int floatHeight = 0, int maxLines = 0); | ||||||
|     ~cTextFloater(); |     ~cTextFloater(); | ||||||
|     void Set(const char *Text, const cFont *font, int width, int height = 0, int floatWidth = 0, int floatHeight = 0, int maxLines = 0); |     void Set(const char *Text, const cFont *font, int width, int height = 0, int floatWidth = 0, int floatHeight = 0, int maxLines = 0); | ||||||
|     ///< Wraps the Text to make it fit into the area defined by the given Width |     ///< Wraps the Text to make it fit into the area defined by the given Width | ||||||
|     ///< when displayed with the given Font. |     ///< when displayed with the given Font. | ||||||
|     ///< Wrapping is done by inserting the necessary number of newline |     ///< Wrapping is done by inserting the necessary number of newline | ||||||
|     ///< characters into the string. |     ///< characters into the string. | ||||||
|     ///< if height is set, new lines are only set till height is reached |     ///< if height is set, new lines are only set till height is reached | ||||||
|     ///< if floatwidth and floatheight are set, the first lines (depending on  |     ///< if floatwidth and floatheight are set, the first lines (depending on  | ||||||
|     ///< size of floatheight) are set to floatwidth |     ///< size of floatheight) are set to floatwidth | ||||||
|     const char *Text(void); |     const char *Text(void); | ||||||
|     ///< Returns the full wrapped text. |     ///< Returns the full wrapped text. | ||||||
|     int Lines(void) { return lines; } |     int Lines(void) { return lines; } | ||||||
|     ///< Returns the actual number of lines needed to display the full wrapped text. |     ///< Returns the actual number of lines needed to display the full wrapped text. | ||||||
|     const char *GetLine(int line); |     const char *GetLine(int line); | ||||||
|     ///< Returns the given Line. The first line is numbered 0. |     ///< Returns the given Line. The first line is numbered 0. | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif //__FUNCTIONS_H | #endif //__FUNCTIONS_H | ||||||
| @@ -1,57 +1,57 @@ | |||||||
| #include "gridelement.h" | #include "gridelement.h" | ||||||
| #include "../config.h" | #include "../config.h" | ||||||
|  |  | ||||||
| cGridElement::cGridElement(void) { | cGridElement::cGridElement(void) { | ||||||
|     current = false; |     current = false; | ||||||
|     indexCurrent = -1; |     indexCurrent = -1; | ||||||
|     viewId = -1; |     viewId = -1; | ||||||
|     plugId = -1; |     plugId = -1; | ||||||
| } | } | ||||||
|  |  | ||||||
| cGridElement::cGridElement(const cGridElement &other) : cViewElement(other) { | cGridElement::cGridElement(const cGridElement &other) : cViewElement(other) { | ||||||
|     current = false; |     current = false; | ||||||
|     viewId = other.viewId; |     viewId = other.viewId; | ||||||
|     plugId = other.plugId; |     plugId = other.plugId; | ||||||
|     tokenContainer = new skindesignerapi::cTokenContainer(*other.tokenContainer); |     tokenContainer = new skindesignerapi::cTokenContainer(*other.tokenContainer); | ||||||
|     indexCurrent = other.indexCurrent; |     indexCurrent = other.indexCurrent; | ||||||
|     InheritTokenContainerDeep(); |     InheritTokenContainerDeep(); | ||||||
| } | } | ||||||
|  |  | ||||||
| cGridElement::~cGridElement(void) { | cGridElement::~cGridElement(void) { | ||||||
| } | } | ||||||
|  |  | ||||||
| void cGridElement::SetTokenContainer(void) { | void cGridElement::SetTokenContainer(void) { | ||||||
|     skindesignerapi::cTokenContainer *tkGe = plgManager->GetTokenContainerGE(plugId, viewId, id); |     skindesignerapi::cTokenContainer *tkGe = plgManager->GetTokenContainerGE(plugId, viewId, id); | ||||||
|     if (!tkGe) |     if (!tkGe) | ||||||
|         return; |         return; | ||||||
|     tokenContainer = new skindesignerapi::cTokenContainer(*tkGe); |     tokenContainer = new skindesignerapi::cTokenContainer(*tkGe); | ||||||
|     indexCurrent = tokenContainer->GetNumDefinedIntTokens(); |     indexCurrent = tokenContainer->GetNumDefinedIntTokens(); | ||||||
|     tokenContainer->DefineIntToken("{current}", indexCurrent); |     tokenContainer->DefineIntToken("{current}", indexCurrent); | ||||||
|     InheritTokenContainer(); |     InheritTokenContainer(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cGridElement::Set(skindesignerapi::cTokenContainer *tk) { | void cGridElement::Set(skindesignerapi::cTokenContainer *tk) { | ||||||
|     tokenContainer->Clear(); |     tokenContainer->Clear(); | ||||||
|     tokenContainer->SetTokens(tk); |     tokenContainer->SetTokens(tk); | ||||||
|     SetDirty(); |     SetDirty(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cGridElement::SetCurrent(bool current) { | void cGridElement::SetCurrent(bool current) { | ||||||
|     this->current = current; |     this->current = current; | ||||||
|     SetDirty(); |     SetDirty(); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cGridElement::Parse(bool forced) { | bool cGridElement::Parse(bool forced) { | ||||||
|     if (!dirty) |     if (!dirty) | ||||||
|         return false; |         return false; | ||||||
|     tokenContainer->AddIntToken(indexCurrent, current); |     tokenContainer->AddIntToken(indexCurrent, current); | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| int cGridElement::Width(void) { | int cGridElement::Width(void) { | ||||||
|     return container.Width(); |     return container.Width(); | ||||||
| } | } | ||||||
|  |  | ||||||
| int cGridElement::Height(void) { | int cGridElement::Height(void) { | ||||||
|     return container.Height(); |     return container.Height(); | ||||||
| } | } | ||||||
| @@ -1,27 +1,27 @@ | |||||||
| #ifndef __GRIDELEMENT_H | #ifndef __GRIDELEMENT_H | ||||||
| #define __GRIDELEMENT_H | #define __GRIDELEMENT_H | ||||||
|  |  | ||||||
| #include "viewelement.h" | #include "viewelement.h" | ||||||
|  |  | ||||||
| class cGridElement : public cViewElement { | class cGridElement : public cViewElement { | ||||||
| private: | private: | ||||||
|     int viewId; |     int viewId; | ||||||
|     int plugId; |     int plugId; | ||||||
|     bool current; |     bool current; | ||||||
|     int indexCurrent; |     int indexCurrent; | ||||||
| public: | public: | ||||||
|     cGridElement(void); |     cGridElement(void); | ||||||
|     cGridElement(const cGridElement &other); |     cGridElement(const cGridElement &other); | ||||||
|     virtual ~cGridElement(void); |     virtual ~cGridElement(void); | ||||||
|     void SetPluginId(int plugId) { this->plugId = plugId; }; |     void SetPluginId(int plugId) { this->plugId = plugId; }; | ||||||
|     void SetViewId(int viewId) { this->viewId = viewId; }; |     void SetViewId(int viewId) { this->viewId = viewId; }; | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     skindesignerapi::cTokenContainer *GetTokenContainer(void) { return tokenContainer; }; |     skindesignerapi::cTokenContainer *GetTokenContainer(void) { return tokenContainer; }; | ||||||
|     void Set(skindesignerapi::cTokenContainer *tk); |     void Set(skindesignerapi::cTokenContainer *tk); | ||||||
|     void SetCurrent(bool current); |     void SetCurrent(bool current); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
|     int Width(void); |     int Width(void); | ||||||
|     int Height(void); |     int Height(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__GRIDELEMENT_H | #endif //__GRIDELEMENT_H | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,340 +1,340 @@ | |||||||
| #ifndef __LISTELEMENTS_H | #ifndef __LISTELEMENTS_H | ||||||
| #define __LISTELEMENTS_H | #define __LISTELEMENTS_H | ||||||
|  |  | ||||||
| #include "viewelement.h" | #include "viewelement.h" | ||||||
| #include "../extensions/scrapmanager.h" | #include "../extensions/scrapmanager.h" | ||||||
|  |  | ||||||
| #define MAX_TABS 6 | #define MAX_TABS 6 | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cListElement | * cListElement | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cListElement : public cViewElement { | class cListElement : public cViewElement { | ||||||
| protected: | protected: | ||||||
|     eMenuCategory menuCat; |     eMenuCategory menuCat; | ||||||
|     int num; |     int num; | ||||||
|     bool current; |     bool current; | ||||||
|     bool wasCurrent; |     bool wasCurrent; | ||||||
|     bool selectable; |     bool selectable; | ||||||
|     cViewElement *currentElement; |     cViewElement *currentElement; | ||||||
|     char *ParseSeparator(const char *text); |     char *ParseSeparator(const char *text); | ||||||
| public: | public: | ||||||
|     cListElement(void); |     cListElement(void); | ||||||
|     cListElement(const cListElement &other); |     cListElement(const cListElement &other); | ||||||
|     virtual ~cListElement(void) {}; |     virtual ~cListElement(void) {}; | ||||||
|     void SetMenuCategory(eMenuCategory menuCat) { this->menuCat = menuCat; }; |     void SetMenuCategory(eMenuCategory menuCat) { this->menuCat = menuCat; }; | ||||||
|     void SetNumber(int number) { num = number; }; |     void SetNumber(int number) { num = number; }; | ||||||
|     void SetCurrent(bool cur); |     void SetCurrent(bool cur); | ||||||
|     bool Current(void) { return current; }; |     bool Current(void) { return current; }; | ||||||
|     void WakeCurrent(void); |     void WakeCurrent(void); | ||||||
|     void SetSelectable(bool sel) { selectable = sel; }; |     void SetSelectable(bool sel) { selectable = sel; }; | ||||||
|     bool DoScroll(void) { return current; }; |     bool DoScroll(void) { return current; }; | ||||||
|     virtual void RenderCurrent(void) { }; |     virtual void RenderCurrent(void) { }; | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void Clear(void); |     void Clear(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cCurrentElement | * cCurrentElement | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCurrentElement : public cViewElement { | class cCurrentElement : public cViewElement { | ||||||
| protected: | protected: | ||||||
|     int listX; |     int listX; | ||||||
|     int listY; |     int listY; | ||||||
|     int listWidth; |     int listWidth; | ||||||
|     int listHeight; |     int listHeight; | ||||||
| public: | public: | ||||||
|     cCurrentElement(void); |     cCurrentElement(void); | ||||||
|     virtual ~cCurrentElement(void) {}; |     virtual ~cCurrentElement(void) {}; | ||||||
|     void SetListPosition(int x, int y, int width, int height); |     void SetListPosition(int x, int y, int width, int height); | ||||||
|     void SetListTokens(skindesignerapi::cTokenContainer *tokenContainer); |     void SetListTokens(skindesignerapi::cTokenContainer *tokenContainer); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cLeMenuDefault | * cLeMenuDefault | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cLeMenuDefault : public cListElement { | class cLeMenuDefault : public cListElement { | ||||||
| private: | private: | ||||||
|     char *text; |     char *text; | ||||||
|     int *colX; |     int *colX; | ||||||
|     int *colWidths; |     int *colWidths; | ||||||
|     const char *plugName; |     const char *plugName; | ||||||
|     const char *GetTabbedText(const char *s, int tab); |     const char *GetTabbedText(const char *s, int tab); | ||||||
|     void SetMenuCategory(void); |     void SetMenuCategory(void); | ||||||
|     void CheckProgressBar(const char *text, int tab); |     void CheckProgressBar(const char *text, int tab); | ||||||
| public: | public: | ||||||
|     cLeMenuDefault(void); |     cLeMenuDefault(void); | ||||||
|     cLeMenuDefault(const cLeMenuDefault &other); |     cLeMenuDefault(const cLeMenuDefault &other); | ||||||
|     virtual ~cLeMenuDefault(void); |     virtual ~cLeMenuDefault(void); | ||||||
|     void SetListInfo(int *colX, int *colWidths); |     void SetListInfo(int *colX, int *colWidths); | ||||||
|     void SetText(const char *text); |     void SetText(const char *text); | ||||||
|     void SetPlugin(const char *plugName) { this->plugName = plugName; }; |     void SetPlugin(const char *plugName) { this->plugName = plugName; }; | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeMenuMain | * cVeMenuMain | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeMenuMain { | class cVeMenuMain { | ||||||
| protected: | protected: | ||||||
|     char *text; |     char *text; | ||||||
|     char *number; |     char *number; | ||||||
|     char *label; |     char *label; | ||||||
|     void SplitText(void); |     void SplitText(void); | ||||||
| public: | public: | ||||||
|     cVeMenuMain(void); |     cVeMenuMain(void); | ||||||
|     virtual ~cVeMenuMain(void); |     virtual ~cVeMenuMain(void); | ||||||
|     void SetText(const char *text); |     void SetText(const char *text); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cLeMenuMain | * cLeMenuMain | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCeMenuMain; | class cCeMenuMain; | ||||||
| class cLeMenuMain : public cListElement, public cVeMenuMain { | class cLeMenuMain : public cListElement, public cVeMenuMain { | ||||||
| private: | private: | ||||||
|     cCeMenuMain *currentMain; |     cCeMenuMain *currentMain; | ||||||
| public: | public: | ||||||
|     cLeMenuMain(void); |     cLeMenuMain(void); | ||||||
|     cLeMenuMain(const cLeMenuMain &other); |     cLeMenuMain(const cLeMenuMain &other); | ||||||
|     virtual ~cLeMenuMain(void); |     virtual ~cLeMenuMain(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetCurrentElement(cCeMenuMain *cur) { currentMain = cur; currentElement = (cViewElement*)cur; }; |     void SetCurrentElement(cCeMenuMain *cur) { currentMain = cur; currentElement = (cViewElement*)cur; }; | ||||||
|     void ClearCurrentElement(void); |     void ClearCurrentElement(void); | ||||||
|     void SetText(const char *text); |     void SetText(const char *text); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
|     void RenderCurrent(void); |     void RenderCurrent(void); | ||||||
|     const char *PluginName(void); |     const char *PluginName(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cCeMenuMain | * cCeMenuMain | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCeMenuMain : public cCurrentElement, public cVeMenuMain { | class cCeMenuMain : public cCurrentElement, public cVeMenuMain { | ||||||
| private: | private: | ||||||
| public: | public: | ||||||
|     cCeMenuMain(void); |     cCeMenuMain(void); | ||||||
|     virtual ~cCeMenuMain(void); |     virtual ~cCeMenuMain(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetText(const char *text); |     void SetText(const char *text); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeMenuSchedules | * cVeMenuSchedules | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeMenuSchedules { | class cVeMenuSchedules { | ||||||
| protected: | protected: | ||||||
|     const cEvent *event; |     const cEvent *event; | ||||||
|     const cChannel *channel; |     const cChannel *channel; | ||||||
|     bool withDate; |     bool withDate; | ||||||
|     eTimerMatch timerMatch; |     eTimerMatch timerMatch; | ||||||
|     bool epgSearchFav; |     bool epgSearchFav; | ||||||
| public: | public: | ||||||
|     cVeMenuSchedules(void); |     cVeMenuSchedules(void); | ||||||
|     virtual ~cVeMenuSchedules(void){}; |     virtual ~cVeMenuSchedules(void){}; | ||||||
|     void SetEpgSearchFav(bool isFav) { epgSearchFav = isFav; }; |     void SetEpgSearchFav(bool isFav) { epgSearchFav = isFav; }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cLeMenuSchedules | * cLeMenuSchedules | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCeMenuSchedules; | class cCeMenuSchedules; | ||||||
| class cLeMenuSchedules : public cListElement, public cVeMenuSchedules { | class cLeMenuSchedules : public cListElement, public cVeMenuSchedules { | ||||||
| private: | private: | ||||||
|     cCeMenuSchedules *currentSchedules; |     cCeMenuSchedules *currentSchedules; | ||||||
| public: | public: | ||||||
|     cLeMenuSchedules(void); |     cLeMenuSchedules(void); | ||||||
|     cLeMenuSchedules(const cLeMenuSchedules &other); |     cLeMenuSchedules(const cLeMenuSchedules &other); | ||||||
|     virtual ~cLeMenuSchedules(void); |     virtual ~cLeMenuSchedules(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetCurrentElement(cCeMenuSchedules *cur) { currentSchedules = cur; currentElement = (cViewElement*)cur; }; |     void SetCurrentElement(cCeMenuSchedules *cur) { currentSchedules = cur; currentElement = (cViewElement*)cur; }; | ||||||
|     void ClearCurrentElement(void); |     void ClearCurrentElement(void); | ||||||
|     void Set(const cEvent *event, const cChannel *channel, bool withDate, eTimerMatch timerMatch); |     void Set(const cEvent *event, const cChannel *channel, bool withDate, eTimerMatch timerMatch); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
|     void RenderCurrent(void); |     void RenderCurrent(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cCeMenuSchedules | * cCeMenuSchedules | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCeMenuSchedules : public cCurrentElement, public cVeMenuSchedules, public cScrapManager { | class cCeMenuSchedules : public cCurrentElement, public cVeMenuSchedules, public cScrapManager { | ||||||
| private: | private: | ||||||
|     eMenuCategory menuCat; |     eMenuCategory menuCat; | ||||||
|     int schedulesIndex; |     int schedulesIndex; | ||||||
| public: | public: | ||||||
|     cCeMenuSchedules(void); |     cCeMenuSchedules(void); | ||||||
|     virtual ~cCeMenuSchedules(void); |     virtual ~cCeMenuSchedules(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cEvent *event, const cChannel *channel, bool withDate, eTimerMatch timerMatch, eMenuCategory menuCat); |     void Set(const cEvent *event, const cChannel *channel, bool withDate, eTimerMatch timerMatch, eMenuCategory menuCat); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cLeMenuChannels | * cLeMenuChannels | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCeMenuChannels; | class cCeMenuChannels; | ||||||
| class cLeMenuChannels : public cListElement { | class cLeMenuChannels : public cListElement { | ||||||
| private: | private: | ||||||
|     cCeMenuChannels *currentChannel; |     cCeMenuChannels *currentChannel; | ||||||
|     const cChannel *channel; |     const cChannel *channel; | ||||||
|     bool withProvider; |     bool withProvider; | ||||||
| public: | public: | ||||||
|     cLeMenuChannels(void); |     cLeMenuChannels(void); | ||||||
|     cLeMenuChannels(const cLeMenuChannels &other); |     cLeMenuChannels(const cLeMenuChannels &other); | ||||||
|     virtual ~cLeMenuChannels(void); |     virtual ~cLeMenuChannels(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetCurrentElement(cCeMenuChannels *cur) { currentChannel = cur; currentElement = (cViewElement*)cur; }; |     void SetCurrentElement(cCeMenuChannels *cur) { currentChannel = cur; currentElement = (cViewElement*)cur; }; | ||||||
|     void ClearCurrentElement(void); |     void ClearCurrentElement(void); | ||||||
|     void Set(const cChannel *channel, bool withProvider); |     void Set(const cChannel *channel, bool withProvider); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
|     void RenderCurrent(void); |     void RenderCurrent(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cCeMenuChannels | * cCeMenuChannels | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCeMenuChannels : public cCurrentElement { | class cCeMenuChannels : public cCurrentElement { | ||||||
| private: | private: | ||||||
|     const cChannel *channel; |     const cChannel *channel; | ||||||
|     bool withProvider; |     bool withProvider; | ||||||
|     int schedulesIndex; |     int schedulesIndex; | ||||||
| public: | public: | ||||||
|     cCeMenuChannels(void); |     cCeMenuChannels(void); | ||||||
|     virtual ~cCeMenuChannels(void); |     virtual ~cCeMenuChannels(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cChannel *channel, bool withProvider); |     void Set(const cChannel *channel, bool withProvider); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cLeMenuTimers | * cLeMenuTimers | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCeMenuTimers; | class cCeMenuTimers; | ||||||
| class cLeMenuTimers : public cListElement { | class cLeMenuTimers : public cListElement { | ||||||
| private: | private: | ||||||
|     cCeMenuTimers *currentTimer; |     cCeMenuTimers *currentTimer; | ||||||
|     const cTimer *timer; |     const cTimer *timer; | ||||||
| public: | public: | ||||||
|     cLeMenuTimers(void); |     cLeMenuTimers(void); | ||||||
|     cLeMenuTimers(const cLeMenuTimers &other); |     cLeMenuTimers(const cLeMenuTimers &other); | ||||||
|     virtual ~cLeMenuTimers(void); |     virtual ~cLeMenuTimers(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetCurrentElement(cCeMenuTimers *cur) { currentTimer = cur; currentElement = (cViewElement*)cur; }; |     void SetCurrentElement(cCeMenuTimers *cur) { currentTimer = cur; currentElement = (cViewElement*)cur; }; | ||||||
|     void ClearCurrentElement(void); |     void ClearCurrentElement(void); | ||||||
|     void Set(const cTimer *timer); |     void Set(const cTimer *timer); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
|     void RenderCurrent(void); |     void RenderCurrent(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cCeMenuTimers | * cCeMenuTimers | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCeMenuTimers : public cCurrentElement { | class cCeMenuTimers : public cCurrentElement { | ||||||
| private: | private: | ||||||
|     const cTimer *timer; |     const cTimer *timer; | ||||||
| public: | public: | ||||||
|     cCeMenuTimers(void); |     cCeMenuTimers(void); | ||||||
|     virtual ~cCeMenuTimers(void); |     virtual ~cCeMenuTimers(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cTimer *timer); |     void Set(const cTimer *timer); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cLeMenuRecordings | * cLeMenuRecordings | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCeMenuRecordings; | class cCeMenuRecordings; | ||||||
| class cLeMenuRecordings : public cListElement, public cScrapManager { | class cLeMenuRecordings : public cListElement, public cScrapManager { | ||||||
| private: | private: | ||||||
|     cCeMenuRecordings *currentRecording; |     cCeMenuRecordings *currentRecording; | ||||||
|     const cRecording *recording; |     const cRecording *recording; | ||||||
|     int level; |     int level; | ||||||
|     int total; |     int total; | ||||||
|     int New; |     int New; | ||||||
|     char *RecName(const char *path, int level); |     char *RecName(const char *path, int level); | ||||||
|     char *FolderName(const char *path, int level); |     char *FolderName(const char *path, int level); | ||||||
| public: | public: | ||||||
|     cLeMenuRecordings(void); |     cLeMenuRecordings(void); | ||||||
|     cLeMenuRecordings(const cLeMenuRecordings &other); |     cLeMenuRecordings(const cLeMenuRecordings &other); | ||||||
|     virtual ~cLeMenuRecordings(void); |     virtual ~cLeMenuRecordings(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetCurrentElement(cCeMenuRecordings *cur) { currentRecording = cur; currentElement = (cViewElement*)cur; }; |     void SetCurrentElement(cCeMenuRecordings *cur) { currentRecording = cur; currentElement = (cViewElement*)cur; }; | ||||||
|     void ClearCurrentElement(void); |     void ClearCurrentElement(void); | ||||||
|     void Set(const cRecording *recording, int level, int total, int New); |     void Set(const cRecording *recording, int level, int total, int New); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
|     void RenderCurrent(void); |     void RenderCurrent(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cCeMenuRecordings | * cCeMenuRecordings | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCeMenuRecordings : public cCurrentElement, public cScrapManager { | class cCeMenuRecordings : public cCurrentElement, public cScrapManager { | ||||||
| private: | private: | ||||||
|     const cRecording *recording; |     const cRecording *recording; | ||||||
|     int level; |     int level; | ||||||
|     int total; |     int total; | ||||||
|     int New; |     int New; | ||||||
| public: | public: | ||||||
|     cCeMenuRecordings(void); |     cCeMenuRecordings(void); | ||||||
|     virtual ~cCeMenuRecordings(void); |     virtual ~cCeMenuRecordings(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cRecording *recording, int level, int total, int New); |     void Set(const cRecording *recording, int level, int total, int New); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cLeMenuPlugin | * cLeMenuPlugin | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCeMenuPlugin; | class cCeMenuPlugin; | ||||||
| class cLeMenuPlugin : public cListElement { | class cLeMenuPlugin : public cListElement { | ||||||
| private: | private: | ||||||
|     int plugId; |     int plugId; | ||||||
|     int plugMenuId; |     int plugMenuId; | ||||||
|     cCeMenuPlugin *currentPlugin; |     cCeMenuPlugin *currentPlugin; | ||||||
| public: | public: | ||||||
|     cLeMenuPlugin(void); |     cLeMenuPlugin(void); | ||||||
|     cLeMenuPlugin(const cLeMenuPlugin &other); |     cLeMenuPlugin(const cLeMenuPlugin &other); | ||||||
|     virtual ~cLeMenuPlugin(void); |     virtual ~cLeMenuPlugin(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetPlugId(int id) { plugId = id; }; |     void SetPlugId(int id) { plugId = id; }; | ||||||
|     void SetPlugMenuId(int id) { plugMenuId = id; }; |     void SetPlugMenuId(int id) { plugMenuId = id; }; | ||||||
|     void SetCurrentElement(cCeMenuPlugin *cur) { currentPlugin = cur; currentElement = (cViewElement*)cur; }; |     void SetCurrentElement(cCeMenuPlugin *cur) { currentPlugin = cur; currentElement = (cViewElement*)cur; }; | ||||||
|     void ClearCurrentElement(void); |     void ClearCurrentElement(void); | ||||||
|     void Set(skindesignerapi::cTokenContainer *tk); |     void Set(skindesignerapi::cTokenContainer *tk); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
|     void RenderCurrent(void); |     void RenderCurrent(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cCeMenuPlugin | * cCeMenuPlugin | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cCeMenuPlugin : public cCurrentElement { | class cCeMenuPlugin : public cCurrentElement { | ||||||
| private: | private: | ||||||
|     int plugId; |     int plugId; | ||||||
|     int plugMenuId; |     int plugMenuId; | ||||||
| public: | public: | ||||||
|     cCeMenuPlugin(void); |     cCeMenuPlugin(void); | ||||||
|     virtual ~cCeMenuPlugin(void); |     virtual ~cCeMenuPlugin(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetPlugId(int id) { plugId = id; }; |     void SetPlugId(int id) { plugId = id; }; | ||||||
|     void SetPlugMenuId(int id) { plugMenuId = id; }; |     void SetPlugMenuId(int id) { plugMenuId = id; }; | ||||||
|     void Set(skindesignerapi::cTokenContainer *tk); |     void Set(skindesignerapi::cTokenContainer *tk); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cLeAudioTracks | * cLeAudioTracks | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cLeAudioTracks : public cListElement { | class cLeAudioTracks : public cListElement { | ||||||
| private: | private: | ||||||
|     char *text; |     char *text; | ||||||
| public: | public: | ||||||
|     cLeAudioTracks(void); |     cLeAudioTracks(void); | ||||||
|     virtual ~cLeAudioTracks(void); |     virtual ~cLeAudioTracks(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const char *text); |     void Set(const char *text); | ||||||
|     bool Parse(bool forced = true); |     bool Parse(bool forced = true); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__LISTELEMENTS_H | #endif //__LISTELEMENTS_H | ||||||
| @@ -1,71 +1,71 @@ | |||||||
| #include "osdwrapper.h" | #include "osdwrapper.h" | ||||||
|  |  | ||||||
| cSdOsd::cSdOsd(void) { | cSdOsd::cSdOsd(void) { | ||||||
|     osd = NULL; |     osd = NULL; | ||||||
|     flushLocked = false; |     flushLocked = false; | ||||||
| } | } | ||||||
|  |  | ||||||
| cSdOsd::~cSdOsd(void) { | cSdOsd::~cSdOsd(void) { | ||||||
|     DeleteOsd(); |     DeleteOsd(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSdOsd::Lock(void) { | void cSdOsd::Lock(void) { | ||||||
|     mutex.Lock(); |     mutex.Lock(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSdOsd::Unlock(void) { | void cSdOsd::Unlock(void) { | ||||||
|     mutex.Unlock(); |     mutex.Unlock(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSdOsd::LockFlush(void) { | void cSdOsd::LockFlush(void) { | ||||||
|     Lock(); |     Lock(); | ||||||
|     flushLocked = true; |     flushLocked = true; | ||||||
|     Unlock(); |     Unlock(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSdOsd::UnlockFlush(void) { | void cSdOsd::UnlockFlush(void) { | ||||||
|     Lock(); |     Lock(); | ||||||
|     flushLocked = false; |     flushLocked = false; | ||||||
|     Unlock(); |     Unlock(); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cSdOsd::CreateOsd(int x, int y, int width, int height) { | bool cSdOsd::CreateOsd(int x, int y, int width, int height) { | ||||||
|     cOsd *newOsd = cOsdProvider::NewOsd(cOsd::OsdLeft() + x, cOsd::OsdTop() + y); |     cOsd *newOsd = cOsdProvider::NewOsd(cOsd::OsdLeft() + x, cOsd::OsdTop() + y); | ||||||
|     if (newOsd) { |     if (newOsd) { | ||||||
|         tArea Area = { 0, 0, width - 1, height - 1,  32 }; |         tArea Area = { 0, 0, width - 1, height - 1,  32 }; | ||||||
|         if (newOsd->SetAreas(&Area, 1) == oeOk) { |         if (newOsd->SetAreas(&Area, 1) == oeOk) { | ||||||
|             Lock(); |             Lock(); | ||||||
|             osd = newOsd; |             osd = newOsd; | ||||||
|             Unlock(); |             Unlock(); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     return false; |     return false; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSdOsd::DeleteOsd(void) { | void cSdOsd::DeleteOsd(void) { | ||||||
|     Lock(); |     Lock(); | ||||||
|     delete osd; |     delete osd; | ||||||
|     osd = NULL; |     osd = NULL; | ||||||
|     Unlock(); |     Unlock(); | ||||||
| } | } | ||||||
|  |  | ||||||
| cPixmap *cSdOsd::CreatePixmap(int layer, cRect &viewPort, cRect &drawPort) { | cPixmap *cSdOsd::CreatePixmap(int layer, cRect &viewPort, cRect &drawPort) { | ||||||
|     if (osd) { |     if (osd) { | ||||||
|         return osd->CreatePixmap(layer, viewPort, drawPort); |         return osd->CreatePixmap(layer, viewPort, drawPort); | ||||||
|     } |     } | ||||||
|     return NULL; |     return NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSdOsd::DestroyPixmap(cPixmap *pix) { | void cSdOsd::DestroyPixmap(cPixmap *pix) { | ||||||
|     if (osd) { |     if (osd) { | ||||||
|         osd->DestroyPixmap(pix); |         osd->DestroyPixmap(pix); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSdOsd::Flush(void) { | void cSdOsd::Flush(void) { | ||||||
|     Lock(); |     Lock(); | ||||||
|     if (osd && !flushLocked) |     if (osd && !flushLocked) | ||||||
|         osd->Flush(); |         osd->Flush(); | ||||||
|     Unlock();     |     Unlock();     | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,26 +1,26 @@ | |||||||
| #ifndef __OSDWRAPPER_H | #ifndef __OSDWRAPPER_H | ||||||
| #define __OSDWRAPPER_H | #define __OSDWRAPPER_H | ||||||
|  |  | ||||||
| #include <vdr/osd.h> | #include <vdr/osd.h> | ||||||
| #include <vdr/thread.h> | #include <vdr/thread.h> | ||||||
|  |  | ||||||
| class cSdOsd { | class cSdOsd { | ||||||
| private: | private: | ||||||
|     cOsd *osd; |     cOsd *osd; | ||||||
|     cMutex mutex; |     cMutex mutex; | ||||||
|     bool flushLocked; |     bool flushLocked; | ||||||
| public: | public: | ||||||
|     cSdOsd(void); |     cSdOsd(void); | ||||||
|     virtual ~cSdOsd(void); |     virtual ~cSdOsd(void); | ||||||
|     void Lock(void); |     void Lock(void); | ||||||
|     void Unlock(void); |     void Unlock(void); | ||||||
|     void LockFlush(void); |     void LockFlush(void); | ||||||
|     void UnlockFlush(void); |     void UnlockFlush(void); | ||||||
|     bool CreateOsd(int x, int y, int width, int height); |     bool CreateOsd(int x, int y, int width, int height); | ||||||
|     void DeleteOsd(void); |     void DeleteOsd(void); | ||||||
|     cPixmap *CreatePixmap(int layer, cRect &viewPort, cRect &drawPort); |     cPixmap *CreatePixmap(int layer, cRect &viewPort, cRect &drawPort); | ||||||
|     void DestroyPixmap(cPixmap *pix); |     void DestroyPixmap(cPixmap *pix); | ||||||
|     void Flush(void); |     void Flush(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__OSDWRAPPER_H | #endif //__OSDWRAPPER_H | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,114 +1,114 @@ | |||||||
| #ifndef __VIEWDETAIL_H | #ifndef __VIEWDETAIL_H | ||||||
| #define __VIEWDETAIL_H | #define __VIEWDETAIL_H | ||||||
|  |  | ||||||
| #include "../services/epgsearch.h" | #include "../services/epgsearch.h" | ||||||
| #include "../extensions/scrapmanager.h" | #include "../extensions/scrapmanager.h" | ||||||
| #include "viewelement.h" | #include "viewelement.h" | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cViewDetail | * cViewDetail | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cViewDetail : public cViewElement, public cScrapManager { | class cViewDetail : public cViewElement, public cScrapManager { | ||||||
| protected: | protected: | ||||||
|     int plugId; |     int plugId; | ||||||
|     int plugMenuId; |     int plugMenuId; | ||||||
|     cArea *activeTab; |     cArea *activeTab; | ||||||
|     int activeTabIndex; |     int activeTabIndex; | ||||||
|     int numTabs; |     int numTabs; | ||||||
|     void SetActiveTab(void); |     void SetActiveTab(void); | ||||||
| public: | public: | ||||||
|     cViewDetail(void); |     cViewDetail(void); | ||||||
|     virtual ~cViewDetail(void); |     virtual ~cViewDetail(void); | ||||||
|     void SetPlugId(int id) { plugId = id; }; |     void SetPlugId(int id) { plugId = id; }; | ||||||
|     void SetPlugMenuId(int id) { plugMenuId = id; }; |     void SetPlugMenuId(int id) { plugMenuId = id; }; | ||||||
|     int GetWidth(void); |     int GetWidth(void); | ||||||
|     void ResetTabs(void); |     void ResetTabs(void); | ||||||
|     void Clear(void); |     void Clear(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void Render(void); |     void Render(void); | ||||||
|     void Scrollbar(int &barheight, int &offset, bool &end); |     void Scrollbar(int &barheight, int &offset, bool &end); | ||||||
|     bool ScrollUp(bool page = false); |     bool ScrollUp(bool page = false); | ||||||
|     bool ScrollDown(bool page = false); |     bool ScrollDown(bool page = false); | ||||||
|     int GetTabs(vector<const char*> &tabs); |     int GetTabs(vector<const char*> &tabs); | ||||||
|     int NumTabs(void) { return numTabs; }; |     int NumTabs(void) { return numTabs; }; | ||||||
|     int ActiveTab(void) { return activeTabIndex; }; |     int ActiveTab(void) { return activeTabIndex; }; | ||||||
|     void NextTab(void); |     void NextTab(void); | ||||||
|     void PrevTab(void); |     void PrevTab(void); | ||||||
|     void SetTransparency(int transparency, bool forceDetached = false); |     void SetTransparency(int transparency, bool forceDetached = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cViewDetailEpg | * cViewDetailEpg | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cViewDetailEpg : public cViewDetail { | class cViewDetailEpg : public cViewDetail { | ||||||
| protected: | protected: | ||||||
|     const cEvent *event; |     const cEvent *event; | ||||||
|     int rerunsIndex; |     int rerunsIndex; | ||||||
|     int actorsIndex; |     int actorsIndex; | ||||||
|     cList<Epgsearch_searchresults_v1_0::cServiceSearchResult> *LoadReruns(void); |     cList<Epgsearch_searchresults_v1_0::cServiceSearchResult> *LoadReruns(void); | ||||||
|     int NumReruns(cList<Epgsearch_searchresults_v1_0::cServiceSearchResult> *reruns); |     int NumReruns(cList<Epgsearch_searchresults_v1_0::cServiceSearchResult> *reruns); | ||||||
|     void SetReruns(cList<Epgsearch_searchresults_v1_0::cServiceSearchResult> *reruns); |     void SetReruns(cList<Epgsearch_searchresults_v1_0::cServiceSearchResult> *reruns); | ||||||
| public: | public: | ||||||
|     cViewDetailEpg(void); |     cViewDetailEpg(void); | ||||||
|     virtual ~cViewDetailEpg(void); |     virtual ~cViewDetailEpg(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetEvent(const cEvent *event) { this->event = event; }; |     void SetEvent(const cEvent *event) { this->event = event; }; | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cViewDetailRec | * cViewDetailRec | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cViewDetailRec : public cViewDetail { | class cViewDetailRec : public cViewDetail { | ||||||
| protected: | protected: | ||||||
|     const cRecording *recording; |     const cRecording *recording; | ||||||
|     int actorsIndex; |     int actorsIndex; | ||||||
|     void SetRecInfos(void); |     void SetRecInfos(void); | ||||||
|     int ReadSizeVdr(const char *strPath); |     int ReadSizeVdr(const char *strPath); | ||||||
|     string StripXmlTag(string &Line, const char *Tag); |     string StripXmlTag(string &Line, const char *Tag); | ||||||
|     void SetRecordingImages(const char *recPath); |     void SetRecordingImages(const char *recPath); | ||||||
| public: | public: | ||||||
|     cViewDetailRec(void); |     cViewDetailRec(void); | ||||||
|     virtual ~cViewDetailRec(void); |     virtual ~cViewDetailRec(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetRecording(const cRecording *recording) { this->recording = recording; }; |     void SetRecording(const cRecording *recording) { this->recording = recording; }; | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cViewDetailText | * cViewDetailText | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cViewDetailText : public cViewDetail { | class cViewDetailText : public cViewDetail { | ||||||
| protected: | protected: | ||||||
|     const char *text; |     const char *text; | ||||||
| public: | public: | ||||||
|     cViewDetailText(void); |     cViewDetailText(void); | ||||||
|     virtual ~cViewDetailText(void); |     virtual ~cViewDetailText(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetText(const char *text) { this->text = text; }; |     void SetText(const char *text) { this->text = text; }; | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cViewDetailPlugin | * cViewDetailPlugin | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cViewDetailPlugin : public cViewDetail { | class cViewDetailPlugin : public cViewDetail { | ||||||
| protected: | protected: | ||||||
| public: | public: | ||||||
|     cViewDetailPlugin(void); |     cViewDetailPlugin(void); | ||||||
|     virtual ~cViewDetailPlugin(void); |     virtual ~cViewDetailPlugin(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(skindesignerapi::cTokenContainer *tk); |     void Set(skindesignerapi::cTokenContainer *tk); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cViewDetailAdvancedPlugin | * cViewDetailAdvancedPlugin | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cViewDetailAdvancedPlugin : public cViewDetail { | class cViewDetailAdvancedPlugin : public cViewDetail { | ||||||
| protected: | protected: | ||||||
|     int plugViewId; |     int plugViewId; | ||||||
| public: | public: | ||||||
|     cViewDetailAdvancedPlugin(int viewId, int plugId); |     cViewDetailAdvancedPlugin(int viewId, int plugId); | ||||||
|     virtual ~cViewDetailAdvancedPlugin(void); |     virtual ~cViewDetailAdvancedPlugin(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(skindesignerapi::cTokenContainer *tk); |     void Set(skindesignerapi::cTokenContainer *tk); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| #endif //__VIEWDETAIL_H | #endif //__VIEWDETAIL_H | ||||||
| @@ -1,199 +1,199 @@ | |||||||
| #include "viewdisplaychannel.h" | #include "viewdisplaychannel.h" | ||||||
| #include "../config.h" | #include "../config.h" | ||||||
|  |  | ||||||
| /************************************************************************************ | /************************************************************************************ | ||||||
| * cViewChannel | * cViewChannel | ||||||
| ************************************************************************************/ | ************************************************************************************/ | ||||||
|  |  | ||||||
| cViewChannel::cViewChannel(void) { | cViewChannel::cViewChannel(void) { | ||||||
|     veCustomTokens = NULL; |     veCustomTokens = NULL; | ||||||
|     ClearVariables(); |     ClearVariables(); | ||||||
|     viewId = eViewType::DisplayChannel; |     viewId = eViewType::DisplayChannel; | ||||||
|     viewName = strdup("displaychannel"); |     viewName = strdup("displaychannel"); | ||||||
|     numViewElements = (int)eVeDisplayChannel::count; |     numViewElements = (int)eVeDisplayChannel::count; | ||||||
|     viewElements = new cViewElement*[numViewElements]; |     viewElements = new cViewElement*[numViewElements]; | ||||||
|     for (int i=0; i < numViewElements; i++) { |     for (int i=0; i < numViewElements; i++) { | ||||||
|         viewElements[i] = NULL; |         viewElements[i] = NULL; | ||||||
|     } |     } | ||||||
|     SetViewElements(); |     SetViewElements(); | ||||||
|     veMessage = NULL; |     veMessage = NULL; | ||||||
|     veChannelInfo = NULL; |     veChannelInfo = NULL; | ||||||
|     veChannelGroup = NULL; |     veChannelGroup = NULL; | ||||||
|     veEpgInfo = NULL; |     veEpgInfo = NULL; | ||||||
|     veProgressBar = NULL; |     veProgressBar = NULL; | ||||||
|     veStatusInfo = NULL; |     veStatusInfo = NULL; | ||||||
|     veScraperContent = NULL; |     veScraperContent = NULL; | ||||||
|     veEcmInfo = NULL; |     veEcmInfo = NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| cViewChannel::~cViewChannel() { | cViewChannel::~cViewChannel() { | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewChannel::SetViewElements(void) { | void cViewChannel::SetViewElements(void) { | ||||||
|     viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayChannel::background)); |     viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayChannel::background)); | ||||||
|     viewElementNames.insert(pair<string, int>("channelgroup", (int)eVeDisplayChannel::channelgroup)); |     viewElementNames.insert(pair<string, int>("channelgroup", (int)eVeDisplayChannel::channelgroup)); | ||||||
|     viewElementNames.insert(pair<string, int>("channelinfo", (int)eVeDisplayChannel::channelinfo)); |     viewElementNames.insert(pair<string, int>("channelinfo", (int)eVeDisplayChannel::channelinfo)); | ||||||
|     viewElementNames.insert(pair<string, int>("epginfo", (int)eVeDisplayChannel::epginfo)); |     viewElementNames.insert(pair<string, int>("epginfo", (int)eVeDisplayChannel::epginfo)); | ||||||
|     viewElementNames.insert(pair<string, int>("progressbar", (int)eVeDisplayChannel::progressbar)); |     viewElementNames.insert(pair<string, int>("progressbar", (int)eVeDisplayChannel::progressbar)); | ||||||
|     viewElementNames.insert(pair<string, int>("statusinfo", (int)eVeDisplayChannel::statusinfo)); |     viewElementNames.insert(pair<string, int>("statusinfo", (int)eVeDisplayChannel::statusinfo)); | ||||||
|     viewElementNames.insert(pair<string, int>("audioinfo", (int)eVeDisplayChannel::audioinfo)); |     viewElementNames.insert(pair<string, int>("audioinfo", (int)eVeDisplayChannel::audioinfo)); | ||||||
|     viewElementNames.insert(pair<string, int>("ecminfo", (int)eVeDisplayChannel::ecminfo)); |     viewElementNames.insert(pair<string, int>("ecminfo", (int)eVeDisplayChannel::ecminfo)); | ||||||
|     viewElementNames.insert(pair<string, int>("screenresolution", (int)eVeDisplayChannel::screenresolution)); |     viewElementNames.insert(pair<string, int>("screenresolution", (int)eVeDisplayChannel::screenresolution)); | ||||||
|     viewElementNames.insert(pair<string, int>("signalquality", (int)eVeDisplayChannel::signalquality)); |     viewElementNames.insert(pair<string, int>("signalquality", (int)eVeDisplayChannel::signalquality)); | ||||||
|     viewElementNames.insert(pair<string, int>("devices", (int)eVeDisplayChannel::devices)); |     viewElementNames.insert(pair<string, int>("devices", (int)eVeDisplayChannel::devices)); | ||||||
|     viewElementNames.insert(pair<string, int>("currentweather", (int)eVeDisplayChannel::currentweather)); |     viewElementNames.insert(pair<string, int>("currentweather", (int)eVeDisplayChannel::currentweather)); | ||||||
|     viewElementNames.insert(pair<string, int>("scrapercontent", (int)eVeDisplayChannel::scrapercontent)); |     viewElementNames.insert(pair<string, int>("scrapercontent", (int)eVeDisplayChannel::scrapercontent)); | ||||||
|     viewElementNames.insert(pair<string, int>("datetime", (int)eVeDisplayChannel::datetime)); |     viewElementNames.insert(pair<string, int>("datetime", (int)eVeDisplayChannel::datetime)); | ||||||
|     viewElementNames.insert(pair<string, int>("time", (int)eVeDisplayChannel::time)); |     viewElementNames.insert(pair<string, int>("time", (int)eVeDisplayChannel::time)); | ||||||
|     viewElementNames.insert(pair<string, int>("message", (int)eVeDisplayChannel::message)); |     viewElementNames.insert(pair<string, int>("message", (int)eVeDisplayChannel::message)); | ||||||
|     viewElementNames.insert(pair<string, int>("customtokens", (int)eVeDisplayChannel::customtokens)); |     viewElementNames.insert(pair<string, int>("customtokens", (int)eVeDisplayChannel::customtokens)); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewChannel::SetViewElementObjects(void) { | void cViewChannel::SetViewElementObjects(void) { | ||||||
|     for (int i = 0; i < numViewElements; i++) { |     for (int i = 0; i < numViewElements; i++) { | ||||||
|         if (!viewElements[i]) |         if (!viewElements[i]) | ||||||
|             continue; |             continue; | ||||||
|         if (dynamic_cast<cVeMessage*>(viewElements[i]))  |         if (dynamic_cast<cVeMessage*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veMessage = dynamic_cast<cVeMessage*>(viewElements[i]); |             veMessage = dynamic_cast<cVeMessage*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDcChannelInfo*>(viewElements[i])) { |         else if (dynamic_cast<cVeDcChannelInfo*>(viewElements[i])) { | ||||||
|  |  | ||||||
|             veChannelInfo = dynamic_cast<cVeDcChannelInfo*>(viewElements[i]); |             veChannelInfo = dynamic_cast<cVeDcChannelInfo*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDcChannelGroup*>(viewElements[i]))  |         else if (dynamic_cast<cVeDcChannelGroup*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veChannelGroup = dynamic_cast<cVeDcChannelGroup*>(viewElements[i]); |             veChannelGroup = dynamic_cast<cVeDcChannelGroup*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDcEpgInfo*>(viewElements[i]))  |         else if (dynamic_cast<cVeDcEpgInfo*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veEpgInfo = dynamic_cast<cVeDcEpgInfo*>(viewElements[i]); |             veEpgInfo = dynamic_cast<cVeDcEpgInfo*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDcProgressBar*>(viewElements[i]))  |         else if (dynamic_cast<cVeDcProgressBar*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veProgressBar = dynamic_cast<cVeDcProgressBar*>(viewElements[i]); |             veProgressBar = dynamic_cast<cVeDcProgressBar*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDcStatusInfo*>(viewElements[i]))  |         else if (dynamic_cast<cVeDcStatusInfo*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veStatusInfo = dynamic_cast<cVeDcStatusInfo*>(viewElements[i]); |             veStatusInfo = dynamic_cast<cVeDcStatusInfo*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDcScraperContent*>(viewElements[i]))  |         else if (dynamic_cast<cVeDcScraperContent*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veScraperContent = dynamic_cast<cVeDcScraperContent*>(viewElements[i]); |             veScraperContent = dynamic_cast<cVeDcScraperContent*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDcEcmInfo*>(viewElements[i]))  |         else if (dynamic_cast<cVeDcEcmInfo*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veEcmInfo = dynamic_cast<cVeDcEcmInfo*>(viewElements[i]); |             veEcmInfo = dynamic_cast<cVeDcEcmInfo*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeCustomTokens*>(viewElements[i]))  |         else if (dynamic_cast<cVeCustomTokens*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veCustomTokens = dynamic_cast<cVeCustomTokens*>(viewElements[i]); |             veCustomTokens = dynamic_cast<cVeCustomTokens*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDevices*>(viewElements[i]))  |         else if (dynamic_cast<cVeDevices*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             viewElements[i]->SetDetached(); |             viewElements[i]->SetDetached(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewChannel::ClearVariables(void) { | void cViewChannel::ClearVariables(void) { | ||||||
|     cView::ClearVariables(); |     cView::ClearVariables(); | ||||||
|     channelChange = false; |     channelChange = false; | ||||||
|     displayChannelGroups = false; |     displayChannelGroups = false; | ||||||
|     if (veCustomTokens) |     if (veCustomTokens) | ||||||
|         veCustomTokens->Reset(); |         veCustomTokens->Reset(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewChannel::SetChannel(const cChannel *channel, int number) { | void cViewChannel::SetChannel(const cChannel *channel, int number) { | ||||||
|     channelChange = true; |     channelChange = true; | ||||||
|     bool wasChannelGroups = displayChannelGroups; |     bool wasChannelGroups = displayChannelGroups; | ||||||
|     displayChannelGroups = false; |     displayChannelGroups = false; | ||||||
|  |  | ||||||
|     if (veChannelInfo) { |     if (veChannelInfo) { | ||||||
|         veChannelInfo->Set(channel, number); |         veChannelInfo->Set(channel, number); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (channel) { |     if (channel) { | ||||||
|         if (!channel->GroupSep()) { |         if (!channel->GroupSep()) { | ||||||
|             if (wasChannelGroups) |             if (wasChannelGroups) | ||||||
|                 Clear((int)eVeDisplayChannel::channelgroup); |                 Clear((int)eVeDisplayChannel::channelgroup); | ||||||
|             if (veStatusInfo) |             if (veStatusInfo) | ||||||
|                 veStatusInfo->Set(channel); |                 veStatusInfo->Set(channel); | ||||||
|             if (veEcmInfo) |             if (veEcmInfo) | ||||||
|                 veEcmInfo->Set(channel); |                 veEcmInfo->Set(channel); | ||||||
|         } else { |         } else { | ||||||
|             displayChannelGroups = true; |             displayChannelGroups = true; | ||||||
|             Clear((int)eVeDisplayChannel::channelinfo); |             Clear((int)eVeDisplayChannel::channelinfo); | ||||||
|             Clear((int)eVeDisplayChannel::epginfo); |             Clear((int)eVeDisplayChannel::epginfo); | ||||||
|             Clear((int)eVeDisplayChannel::statusinfo); |             Clear((int)eVeDisplayChannel::statusinfo); | ||||||
|             Clear((int)eVeDisplayChannel::progressbar); |             Clear((int)eVeDisplayChannel::progressbar); | ||||||
|             Clear((int)eVeDisplayChannel::screenresolution); |             Clear((int)eVeDisplayChannel::screenresolution); | ||||||
|             Clear((int)eVeDisplayChannel::signalquality); |             Clear((int)eVeDisplayChannel::signalquality); | ||||||
|             Clear((int)eVeDisplayChannel::audioinfo); |             Clear((int)eVeDisplayChannel::audioinfo); | ||||||
|             Clear((int)eVeDisplayChannel::ecminfo); |             Clear((int)eVeDisplayChannel::ecminfo); | ||||||
|             Clear((int)eVeDisplayChannel::devices); |             Clear((int)eVeDisplayChannel::devices); | ||||||
|             Clear((int)eVeDisplayChannel::customtokens); |             Clear((int)eVeDisplayChannel::customtokens); | ||||||
|             if (veChannelGroup) |             if (veChannelGroup) | ||||||
|                 veChannelGroup->Set(channel); |                 veChannelGroup->Set(channel); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewChannel::SetEvents(const cEvent *present, const cEvent *following) { | void cViewChannel::SetEvents(const cEvent *present, const cEvent *following) { | ||||||
|     Clear((int)eVeDisplayChannel::epginfo); |     Clear((int)eVeDisplayChannel::epginfo); | ||||||
|     Clear((int)eVeDisplayChannel::progressbar); |     Clear((int)eVeDisplayChannel::progressbar); | ||||||
|     Clear((int)eVeDisplayChannel::scrapercontent); |     Clear((int)eVeDisplayChannel::scrapercontent); | ||||||
|     if (veProgressBar) |     if (veProgressBar) | ||||||
|         veProgressBar->Set(present); |         veProgressBar->Set(present); | ||||||
|  |  | ||||||
|     if (!present && !following) |     if (!present && !following) | ||||||
|         return; |         return; | ||||||
|      |      | ||||||
|     if (veEpgInfo) |     if (veEpgInfo) | ||||||
|         veEpgInfo->Set(present, following); |         veEpgInfo->Set(present, following); | ||||||
|  |  | ||||||
|     if (veScraperContent) |     if (veScraperContent) | ||||||
|         veScraperContent->Set(present); |         veScraperContent->Set(present); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewChannel::SetMessage(eMessageType type, const char *text) { | void cViewChannel::SetMessage(eMessageType type, const char *text) { | ||||||
|     if (veMessage) { |     if (veMessage) { | ||||||
|         if (text) |         if (text) | ||||||
|             veMessage->Set(type, text); |             veMessage->Set(type, text); | ||||||
|         else |         else | ||||||
|             veMessage->Clear(); |             veMessage->Clear(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewChannel::Flush(void) { | void cViewChannel::Flush(void) { | ||||||
|     if (init) { |     if (init) { | ||||||
|         sdOsd.LockFlush(); |         sdOsd.LockFlush(); | ||||||
|         Render((int)eVeDisplayChannel::background); |         Render((int)eVeDisplayChannel::background); | ||||||
|         Render((int)eVeDisplayChannel::progressbar); |         Render((int)eVeDisplayChannel::progressbar); | ||||||
|         Render((int)eVeDisplayChannel::currentweather); |         Render((int)eVeDisplayChannel::currentweather); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     if (!displayChannelGroups) { |     if (!displayChannelGroups) { | ||||||
|         //normal display |         //normal display | ||||||
|         Render((int)eVeDisplayChannel::channelinfo); |         Render((int)eVeDisplayChannel::channelinfo); | ||||||
|         Render((int)eVeDisplayChannel::epginfo); |         Render((int)eVeDisplayChannel::epginfo); | ||||||
|         Render((int)eVeDisplayChannel::statusinfo); |         Render((int)eVeDisplayChannel::statusinfo); | ||||||
|         Render((int)eVeDisplayChannel::scrapercontent); |         Render((int)eVeDisplayChannel::scrapercontent); | ||||||
|         Render((int)eVeDisplayChannel::progressbar, channelChange); |         Render((int)eVeDisplayChannel::progressbar, channelChange); | ||||||
|         Render((int)eVeDisplayChannel::screenresolution); |         Render((int)eVeDisplayChannel::screenresolution); | ||||||
|         Render((int)eVeDisplayChannel::signalquality); |         Render((int)eVeDisplayChannel::signalquality); | ||||||
|         Render((int)eVeDisplayChannel::audioinfo); |         Render((int)eVeDisplayChannel::audioinfo); | ||||||
|         Render((int)eVeDisplayChannel::ecminfo); |         Render((int)eVeDisplayChannel::ecminfo); | ||||||
|         Render((int)eVeDisplayChannel::devices); |         Render((int)eVeDisplayChannel::devices); | ||||||
|         Render((int)eVeDisplayChannel::customtokens); |         Render((int)eVeDisplayChannel::customtokens); | ||||||
|         Render((int)eVeDisplayChannel::message); |         Render((int)eVeDisplayChannel::message); | ||||||
|     } else { |     } else { | ||||||
|         //channelgroup display |         //channelgroup display | ||||||
|         Render((int)eVeDisplayChannel::channelgroup); |         Render((int)eVeDisplayChannel::channelgroup); | ||||||
|     } |     } | ||||||
|     Render((int)eVeDisplayChannel::datetime); |     Render((int)eVeDisplayChannel::datetime); | ||||||
|     Render((int)eVeDisplayChannel::time); |     Render((int)eVeDisplayChannel::time); | ||||||
|     channelChange = false; |     channelChange = false; | ||||||
|     cView::Flush(); |     cView::Flush(); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,31 +1,31 @@ | |||||||
| #ifndef __VIEWDISPLAYCHANNEL_H | #ifndef __VIEWDISPLAYCHANNEL_H | ||||||
| #define __VIEWDISPLAYCHANNEL_H | #define __VIEWDISPLAYCHANNEL_H | ||||||
|  |  | ||||||
| #include "view.h" | #include "view.h" | ||||||
|  |  | ||||||
| class cViewChannel : public cView { | class cViewChannel : public cView { | ||||||
| private: | private: | ||||||
|     cVeMessage             *veMessage; |     cVeMessage             *veMessage; | ||||||
|     cVeCustomTokens        *veCustomTokens; |     cVeCustomTokens        *veCustomTokens; | ||||||
|     cVeDcChannelInfo       *veChannelInfo; |     cVeDcChannelInfo       *veChannelInfo; | ||||||
|     cVeDcChannelGroup      *veChannelGroup; |     cVeDcChannelGroup      *veChannelGroup; | ||||||
|     cVeDcEpgInfo           *veEpgInfo; |     cVeDcEpgInfo           *veEpgInfo; | ||||||
|     cVeDcProgressBar       *veProgressBar; |     cVeDcProgressBar       *veProgressBar; | ||||||
|     cVeDcStatusInfo        *veStatusInfo; |     cVeDcStatusInfo        *veStatusInfo; | ||||||
|     cVeDcScraperContent    *veScraperContent; |     cVeDcScraperContent    *veScraperContent; | ||||||
|     cVeDcEcmInfo           *veEcmInfo; |     cVeDcEcmInfo           *veEcmInfo; | ||||||
|     bool channelChange; |     bool channelChange; | ||||||
|     bool displayChannelGroups; |     bool displayChannelGroups; | ||||||
|     void SetViewElements(void); |     void SetViewElements(void); | ||||||
|     void ClearVariables(void); |     void ClearVariables(void); | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
| public: | public: | ||||||
|     cViewChannel(void); |     cViewChannel(void); | ||||||
|     virtual ~cViewChannel(void); |     virtual ~cViewChannel(void); | ||||||
|     void SetChannel(const cChannel *channel, int number); |     void SetChannel(const cChannel *channel, int number); | ||||||
|     void SetEvents(const cEvent *present, const cEvent *following); |     void SetEvents(const cEvent *present, const cEvent *following); | ||||||
|     void SetMessage(eMessageType type, const char *text); |     void SetMessage(eMessageType type, const char *text); | ||||||
|     void Flush(void); |     void Flush(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__VIEWDISPLAYCHANNEL_H | #endif //__VIEWDISPLAYCHANNEL_H | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,325 +1,325 @@ | |||||||
| #ifndef __VIEWDISPLAYMENU_H | #ifndef __VIEWDISPLAYMENU_H | ||||||
| #define __VIEWDISPLAYMENU_H | #define __VIEWDISPLAYMENU_H | ||||||
|  |  | ||||||
| #include "view.h" | #include "view.h" | ||||||
| #include "viewdetail.h" | #include "viewdetail.h" | ||||||
|  |  | ||||||
| #if defined(APIVERSNUM) && APIVERSNUM < 20301 | #if defined(APIVERSNUM) && APIVERSNUM < 20301 | ||||||
| #ifndef MENU_ORIENTATION_DEFINED | #ifndef MENU_ORIENTATION_DEFINED | ||||||
| enum eMenuOrientation { | enum eMenuOrientation { | ||||||
|     moVertical = 0, |     moVertical = 0, | ||||||
|     moHorizontal |     moHorizontal | ||||||
| }; | }; | ||||||
| #endif | #endif | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cViewMenu | * cViewMenu | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cSubView; | class cSubView; | ||||||
| class cViewMenuDefault; | class cViewMenuDefault; | ||||||
| class cViewMenuMain; | class cViewMenuMain; | ||||||
| class cViewMenuSetup; | class cViewMenuSetup; | ||||||
| class cViewMenuSchedules; | class cViewMenuSchedules; | ||||||
| class cViewMenuChannels; | class cViewMenuChannels; | ||||||
| class cViewMenuTimers; | class cViewMenuTimers; | ||||||
| class cViewMenuRecordings; | class cViewMenuRecordings; | ||||||
| class cViewMenuDetail; | class cViewMenuDetail; | ||||||
|  |  | ||||||
| class cViewMenu : public cView { | class cViewMenu : public cView { | ||||||
| protected: | protected: | ||||||
|     map<string,int> subviewNames; |     map<string,int> subviewNames; | ||||||
|     cSubView **subViews; |     cSubView **subViews; | ||||||
|     int numSubviews; |     int numSubviews; | ||||||
|     cSubView *activeSubview; |     cSubView *activeSubview; | ||||||
|     cSubView *activeSubviewLast; |     cSubView *activeSubviewLast; | ||||||
|     cViewMenuDefault    *menuDefault; |     cViewMenuDefault    *menuDefault; | ||||||
|     cViewMenuMain       *menuMain; |     cViewMenuMain       *menuMain; | ||||||
|     cViewMenuSetup      *menuSetup; |     cViewMenuSetup      *menuSetup; | ||||||
|     cViewMenuSchedules  *menuSchedules; |     cViewMenuSchedules  *menuSchedules; | ||||||
|     cViewMenuChannels   *menuChannels; |     cViewMenuChannels   *menuChannels; | ||||||
|     cViewMenuTimers     *menuTimers; |     cViewMenuTimers     *menuTimers; | ||||||
|     cViewMenuRecordings *menuRecordings; |     cViewMenuRecordings *menuRecordings; | ||||||
|     cViewMenuDetail     *menuDetailedEpg; |     cViewMenuDetail     *menuDetailedEpg; | ||||||
|     cViewMenuDetail     *menuDetailedRec; |     cViewMenuDetail     *menuDetailedRec; | ||||||
|     cViewMenuDetail     *menuDetailedText; |     cViewMenuDetail     *menuDetailedText; | ||||||
|     eMenuCategory menuCat; |     eMenuCategory menuCat; | ||||||
|     //name of current plugin for menu icon |     //name of current plugin for menu icon | ||||||
|     const char *plugName; |     const char *plugName; | ||||||
|     //external plugin menus |     //external plugin menus | ||||||
|     bool pluginIdSet; |     bool pluginIdSet; | ||||||
|     int plugId; |     int plugId; | ||||||
|     int plugMenuId; |     int plugMenuId; | ||||||
|     //status variables |     //status variables | ||||||
|     bool menuChange; |     bool menuChange; | ||||||
|     bool listChange; |     bool listChange; | ||||||
|     bool detailViewInit; |     bool detailViewInit; | ||||||
|     void SetViewElements(void); |     void SetViewElements(void); | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
|     void SetSubViews(void); |     void SetSubViews(void); | ||||||
|     void ClearVariables(void); |     void ClearVariables(void); | ||||||
|     int SubviewId(const char *name); |     int SubviewId(const char *name); | ||||||
|     bool SetPluginSubView(eMenuCategory menuCat); |     bool SetPluginSubView(eMenuCategory menuCat); | ||||||
|     void WakeViewElements(void); |     void WakeViewElements(void); | ||||||
| public: | public: | ||||||
|     cViewMenu(void); |     cViewMenu(void); | ||||||
|     virtual ~cViewMenu(void); |     virtual ~cViewMenu(void); | ||||||
|     void SetGlobals(cGlobals *globals); |     void SetGlobals(cGlobals *globals); | ||||||
|     void PreCache(void); |     void PreCache(void); | ||||||
|     bool ValidSubView(const char *subView); |     bool ValidSubView(const char *subView); | ||||||
|     static cSubView *CreateSubview(const char *name); |     static cSubView *CreateSubview(const char *name); | ||||||
|     static cSubView *CreatePluginview(const char *plugname, int plugId, int menuNumber, int menuType); |     static cSubView *CreatePluginview(const char *plugname, int plugId, int menuNumber, int menuType); | ||||||
|     void AddSubview(const char *sSubView, cSubView *subView); |     void AddSubview(const char *sSubView, cSubView *subView); | ||||||
|     void AddPluginview(cSubView *plugView); |     void AddPluginview(cSubView *plugView); | ||||||
|     void SetSubView(eMenuCategory MenuCat); |     void SetSubView(eMenuCategory MenuCat); | ||||||
|     void SetSortMode(eMenuSortMode sortMode); |     void SetSortMode(eMenuSortMode sortMode); | ||||||
|     void SetPluginMenu(int plugId, int plugMenuId); |     void SetPluginMenu(int plugId, int plugMenuId); | ||||||
|     int NumListItems(void); |     int NumListItems(void); | ||||||
|     eMenuOrientation MenuOrientation(void); |     eMenuOrientation MenuOrientation(void); | ||||||
|     const cFont *GetTextAreaFont(void); |     const cFont *GetTextAreaFont(void); | ||||||
|     int GetTextAreaWidth(void); |     int GetTextAreaWidth(void); | ||||||
|     int GetListWidth(void); |     int GetListWidth(void); | ||||||
|     void SetTitleHeader(const char *title); |     void SetTitleHeader(const char *title); | ||||||
|     void SetChannelHeader(const cEvent *event); |     void SetChannelHeader(const cEvent *event); | ||||||
|     void SetMessage(eMessageType type, const char *text); |     void SetMessage(eMessageType type, const char *text); | ||||||
|     void SetMenuButtons(const char *red, const char *green, const char *yellow, const char *blue); |     void SetMenuButtons(const char *red, const char *green, const char *yellow, const char *blue); | ||||||
|     void SetScrollbar(int total, int offset); |     void SetScrollbar(int total, int offset); | ||||||
|     void SetTabs(int tab1, int tab2, int tab3, int tab4, int tab5); |     void SetTabs(int tab1, int tab2, int tab3, int tab4, int tab5); | ||||||
|     void SetItem(const char *text, int index, bool current, bool selectable); |     void SetItem(const char *text, int index, bool current, bool selectable); | ||||||
|     bool SetItemEvent(const cEvent *event, int index, bool current, bool selectable, const cChannel *channel, bool withDate, eTimerMatch timerMatch); |     bool SetItemEvent(const cEvent *event, int index, bool current, bool selectable, const cChannel *channel, bool withDate, eTimerMatch timerMatch); | ||||||
|     bool SetItemTimer(const cTimer *timer, int index, bool current, bool selectable); |     bool SetItemTimer(const cTimer *timer, int index, bool current, bool selectable); | ||||||
|     bool SetItemChannel(const cChannel *channel, int index, bool current, bool selectable, bool withProvider); |     bool SetItemChannel(const cChannel *channel, int index, bool current, bool selectable, bool withProvider); | ||||||
|     bool SetItemRecording(const cRecording *recording, int index, bool current, bool selectable, int level, int total, int New); |     bool SetItemRecording(const cRecording *recording, int index, bool current, bool selectable, int level, int total, int New); | ||||||
|     bool SetItemPlugin(skindesignerapi::cTokenContainer *tk, int index, bool current, bool selectable); |     bool SetItemPlugin(skindesignerapi::cTokenContainer *tk, int index, bool current, bool selectable); | ||||||
|     void SetEvent(const cEvent *event); |     void SetEvent(const cEvent *event); | ||||||
|     void SetRecording(const cRecording *recording); |     void SetRecording(const cRecording *recording); | ||||||
|     void SetText(const char *text); |     void SetText(const char *text); | ||||||
|     bool SetPluginText(skindesignerapi::cTokenContainer *tk); |     bool SetPluginText(skindesignerapi::cTokenContainer *tk); | ||||||
|     void SetCurrentRecording(const char *currentRec); |     void SetCurrentRecording(const char *currentRec); | ||||||
|     void KeyDetailView(bool up, bool page); |     void KeyDetailView(bool up, bool page); | ||||||
|     bool Init(void); |     bool Init(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void Clear(void); |     void Clear(void); | ||||||
|     void Flush(void); |     void Flush(void); | ||||||
|     void SetTransparency(int transparency, bool forceDetached = false); |     void SetTransparency(int transparency, bool forceDetached = false); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cSubView | * cSubView | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cSubView : public cView { | class cSubView : public cView { | ||||||
| protected: | protected: | ||||||
|     eMenuCategory menuCat; |     eMenuCategory menuCat; | ||||||
|     int plugId; |     int plugId; | ||||||
|     int plugMenuId; |     int plugMenuId; | ||||||
|     cViewList *viewList; |     cViewList *viewList; | ||||||
|     cViewList *viewListVertical; |     cViewList *viewListVertical; | ||||||
|     cViewList *viewListHorizontal; |     cViewList *viewListHorizontal; | ||||||
|     cViewElement *background; |     cViewElement *background; | ||||||
|     cVeDmHeader *header; |     cVeDmHeader *header; | ||||||
|     cVeDateTime *datetime; |     cVeDateTime *datetime; | ||||||
|     cVeTime *time; |     cVeTime *time; | ||||||
|     cVeMessage *message; |     cVeMessage *message; | ||||||
|     cVeDmSortmode *sortmode; |     cVeDmSortmode *sortmode; | ||||||
|     cVeDmColorbuttons *colorbuttons; |     cVeDmColorbuttons *colorbuttons; | ||||||
|     cVeDmScrollbar *scrollbar; |     cVeDmScrollbar *scrollbar; | ||||||
|     virtual void SetViewElementObjects(void); |     virtual void SetViewElementObjects(void); | ||||||
|     virtual void SetViewElements(void); |     virtual void SetViewElements(void); | ||||||
| public: | public: | ||||||
|     cSubView(const char *name); |     cSubView(const char *name); | ||||||
|     virtual ~cSubView(void); |     virtual ~cSubView(void); | ||||||
|     virtual void SetGlobals(cGlobals *globals); |     virtual void SetGlobals(cGlobals *globals); | ||||||
|     virtual void PreCache(void); |     virtual void PreCache(void); | ||||||
|     bool ViewElementSet(int ve); |     bool ViewElementSet(int ve); | ||||||
|     bool ViewElementHorizontalSet(int ve); |     bool ViewElementHorizontalSet(int ve); | ||||||
|     void SetViewElement(eVeDisplayMenu ve, cViewElement *viewElement); |     void SetViewElement(eVeDisplayMenu ve, cViewElement *viewElement); | ||||||
|     void SetViewElementHorizontal(eVeDisplayMenu ve, cViewElement *viewElement); |     void SetViewElementHorizontal(eVeDisplayMenu ve, cViewElement *viewElement); | ||||||
|     void AddViewList(cViewList *viewList); |     void AddViewList(cViewList *viewList); | ||||||
|     virtual void AddTab(cArea *tab) {}; |     virtual void AddTab(cArea *tab) {}; | ||||||
|     int NumListItems(void); |     int NumListItems(void); | ||||||
|     eMenuOrientation MenuOrientation(void); |     eMenuOrientation MenuOrientation(void); | ||||||
|     void SetMenuCategory(eMenuCategory menuCat) { this->menuCat = menuCat; }; |     void SetMenuCategory(eMenuCategory menuCat) { this->menuCat = menuCat; }; | ||||||
|     void SetPlugId(int id) { plugId = id; }; |     void SetPlugId(int id) { plugId = id; }; | ||||||
|     void SetPlugMenuId(int id) { plugMenuId = id; }; |     void SetPlugMenuId(int id) { plugMenuId = id; }; | ||||||
|     void SetTitle(const char *title); |     void SetTitle(const char *title); | ||||||
|     void SetMessage(eMessageType type, const char *text); |     void SetMessage(eMessageType type, const char *text); | ||||||
|     void SetChannel(const cChannel *channel); |     void SetChannel(const cChannel *channel); | ||||||
|     void SetMenuButtons(const char *red, const char *green, const char *yellow, const char *blue); |     void SetMenuButtons(const char *red, const char *green, const char *yellow, const char *blue); | ||||||
|     void SetScrollbar(int total, int offset); |     void SetScrollbar(int total, int offset); | ||||||
|     void SetSortMode(eMenuSortMode sortMode); |     void SetSortMode(eMenuSortMode sortMode); | ||||||
|     virtual void Close(void); |     virtual void Close(void); | ||||||
|     virtual void Clear(void); |     virtual void Clear(void); | ||||||
|     void ClearViewList(void); |     void ClearViewList(void); | ||||||
|     void WakeViewElements(void); |     void WakeViewElements(void); | ||||||
|     virtual void DrawStaticVEs(void); |     virtual void DrawStaticVEs(void); | ||||||
|     virtual void DrawDynamicVEs(void); |     virtual void DrawDynamicVEs(void); | ||||||
|     void DrawList(void); |     void DrawList(void); | ||||||
|     virtual void DrawDetailedView(void) {}; |     virtual void DrawDetailedView(void) {}; | ||||||
|     virtual void UpdateDetailedView(void) {}; |     virtual void UpdateDetailedView(void) {}; | ||||||
|     void SetTransparency(int transparency, bool forceDetached = false); |     void SetTransparency(int transparency, bool forceDetached = false); | ||||||
| }; | }; | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cViewMenuDefault | * cViewMenuDefault | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cViewMenuDefault : public cSubView { | class cViewMenuDefault : public cSubView { | ||||||
| private: | private: | ||||||
|     cViewListDefault *listDefault; |     cViewListDefault *listDefault; | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
| public: | public: | ||||||
|     cViewMenuDefault(const char *name); |     cViewMenuDefault(const char *name); | ||||||
|     virtual ~cViewMenuDefault(void); |     virtual ~cViewMenuDefault(void); | ||||||
|     void SetTabs(int tab1, int tab2, int tab3, int tab4, int tab5); |     void SetTabs(int tab1, int tab2, int tab3, int tab4, int tab5); | ||||||
|     void SetPlugin(const char *plugName); |     void SetPlugin(const char *plugName); | ||||||
|     void SetItem(const char *text, int index, bool current, bool selectable); |     void SetItem(const char *text, int index, bool current, bool selectable); | ||||||
|     const cFont *GetTextAreaFont(void); |     const cFont *GetTextAreaFont(void); | ||||||
|     int GetListWidth(void); |     int GetListWidth(void); | ||||||
| }; | }; | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cViewMenuMain | * cViewMenuMain | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cViewMenuMain : public cSubView { | class cViewMenuMain : public cSubView { | ||||||
| private: | private: | ||||||
|     cViewListMain *listMain; |     cViewListMain *listMain; | ||||||
|     cVeDmTimers *timers; |     cVeDmTimers *timers; | ||||||
|     cVeDevices *devices; |     cVeDevices *devices; | ||||||
|     cVeCurrentWeather *weather; |     cVeCurrentWeather *weather; | ||||||
|     cVeDmDiscusage *discusage; |     cVeDmDiscusage *discusage; | ||||||
|     cVeDmSystemload *load; |     cVeDmSystemload *load; | ||||||
|     cVeDmSystemmemory *memory; |     cVeDmSystemmemory *memory; | ||||||
|     cVeDmVdrstatistics *vdrstats; |     cVeDmVdrstatistics *vdrstats; | ||||||
|     cVeDmTemperatures *temperatures; |     cVeDmTemperatures *temperatures; | ||||||
|     cVeDmCurrentschedule *currentSchedule; |     cVeDmCurrentschedule *currentSchedule; | ||||||
|     cVeDmLastrecordings *lastRecordings; |     cVeDmLastrecordings *lastRecordings; | ||||||
|     cVeCustomTokens *customTokens; |     cVeCustomTokens *customTokens; | ||||||
|     uint64_t lastDrawDynamic; |     uint64_t lastDrawDynamic; | ||||||
|     void ClearVariables(void); |     void ClearVariables(void); | ||||||
|     void SetViewElements(void); |     void SetViewElements(void); | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
| public: | public: | ||||||
|     cViewMenuMain(const char *name); |     cViewMenuMain(const char *name); | ||||||
|     virtual ~cViewMenuMain(void); |     virtual ~cViewMenuMain(void); | ||||||
|     void Clear(void); |     void Clear(void); | ||||||
|     void SetItem(const char *text, int index, bool current, bool selectable); |     void SetItem(const char *text, int index, bool current, bool selectable); | ||||||
|     void SetCurrentRecording(const char *currentRec); |     void SetCurrentRecording(const char *currentRec); | ||||||
|     void DrawStaticVEs(void); |     void DrawStaticVEs(void); | ||||||
|     void DrawDynamicVEs(void); |     void DrawDynamicVEs(void); | ||||||
|     const char *GetPlugin(void); |     const char *GetPlugin(void); | ||||||
| }; | }; | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cViewMenuSetup | * cViewMenuSetup | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cViewMenuSetup : public cSubView { | class cViewMenuSetup : public cSubView { | ||||||
| private: | private: | ||||||
|     cViewListMain *listSetup; |     cViewListMain *listSetup; | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
| public: | public: | ||||||
|     cViewMenuSetup(const char *name); |     cViewMenuSetup(const char *name); | ||||||
|     virtual ~cViewMenuSetup(void); |     virtual ~cViewMenuSetup(void); | ||||||
|     void SetItem(const char *text, int index, bool current, bool selectable); |     void SetItem(const char *text, int index, bool current, bool selectable); | ||||||
| }; | }; | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cViewMenuSchedules | * cViewMenuSchedules | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cViewMenuSchedules : public cSubView { | class cViewMenuSchedules : public cSubView { | ||||||
| private: | private: | ||||||
|     cViewListSchedules *listSchedules; |     cViewListSchedules *listSchedules; | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
| public: | public: | ||||||
|     cViewMenuSchedules(const char *name); |     cViewMenuSchedules(const char *name); | ||||||
|     virtual ~cViewMenuSchedules(void); |     virtual ~cViewMenuSchedules(void); | ||||||
|     void SetItem(const cEvent *event, int index, bool current, bool selectable, const cChannel *channel, bool withDate, eTimerMatch timerMatch); |     void SetItem(const cEvent *event, int index, bool current, bool selectable, const cChannel *channel, bool withDate, eTimerMatch timerMatch); | ||||||
| }; | }; | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cViewMenuChannels | * cViewMenuChannels | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cViewMenuChannels : public cSubView { | class cViewMenuChannels : public cSubView { | ||||||
| private: | private: | ||||||
|     cViewListChannels *listChannels; |     cViewListChannels *listChannels; | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
| public: | public: | ||||||
|     cViewMenuChannels(const char *name); |     cViewMenuChannels(const char *name); | ||||||
|     virtual ~cViewMenuChannels(void); |     virtual ~cViewMenuChannels(void); | ||||||
|     void SetItem(const cChannel *channel, int index, bool current, bool selectable, bool withProvider); |     void SetItem(const cChannel *channel, int index, bool current, bool selectable, bool withProvider); | ||||||
| }; | }; | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cViewMenuTimers | * cViewMenuTimers | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cViewMenuTimers : public cSubView { | class cViewMenuTimers : public cSubView { | ||||||
| private: | private: | ||||||
|     cViewListTimers *listTimers; |     cViewListTimers *listTimers; | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
| public: | public: | ||||||
|     cViewMenuTimers(const char *name); |     cViewMenuTimers(const char *name); | ||||||
|     virtual ~cViewMenuTimers(void); |     virtual ~cViewMenuTimers(void); | ||||||
|     void SetItem(const cTimer *timer, int index, bool current, bool selectable); |     void SetItem(const cTimer *timer, int index, bool current, bool selectable); | ||||||
| }; | }; | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cViewMenuRecordings | * cViewMenuRecordings | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cViewMenuRecordings : public cSubView { | class cViewMenuRecordings : public cSubView { | ||||||
| private: | private: | ||||||
|     cViewListRecordings *listRecordings; |     cViewListRecordings *listRecordings; | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
| public: | public: | ||||||
|     cViewMenuRecordings(const char *name); |     cViewMenuRecordings(const char *name); | ||||||
|     virtual ~cViewMenuRecordings(void); |     virtual ~cViewMenuRecordings(void); | ||||||
|     void SetItem(const cRecording *recording, int index, bool current, bool selectable, int level, int total, int New); |     void SetItem(const cRecording *recording, int index, bool current, bool selectable, int level, int total, int New); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cViewMenuPlugins | * cViewMenuPlugins | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cViewMenuPlugin : public cSubView { | class cViewMenuPlugin : public cSubView { | ||||||
| private: | private: | ||||||
|     cViewListPlugin *listPlugin; |     cViewListPlugin *listPlugin; | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
| public: | public: | ||||||
|     cViewMenuPlugin(const char *name); |     cViewMenuPlugin(const char *name); | ||||||
|     virtual ~cViewMenuPlugin(void); |     virtual ~cViewMenuPlugin(void); | ||||||
|     void SetItem(skindesignerapi::cTokenContainer *tk, int index, bool current, bool selectable); |     void SetItem(skindesignerapi::cTokenContainer *tk, int index, bool current, bool selectable); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cViewMenuDetail | * cViewMenuDetail | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cViewMenuDetail : public cSubView { | class cViewMenuDetail : public cSubView { | ||||||
| private: | private: | ||||||
|     bool firstTab; |     bool firstTab; | ||||||
|     cVeDmDetailheaderEpg *detailedheaderEpg; |     cVeDmDetailheaderEpg *detailedheaderEpg; | ||||||
|     cVeDmDetailheaderRec *detailedheaderRec; |     cVeDmDetailheaderRec *detailedheaderRec; | ||||||
|     cVeDmDetailheaderPlugin *detailedheaderPlug; |     cVeDmDetailheaderPlugin *detailedheaderPlug; | ||||||
|     cVeDmTablabels *tablabels; |     cVeDmTablabels *tablabels; | ||||||
|     cViewDetail *detailView; |     cViewDetail *detailView; | ||||||
|     cViewDetailEpg *detailViewEpg; |     cViewDetailEpg *detailViewEpg; | ||||||
|     cViewDetailRec *detailViewRec; |     cViewDetailRec *detailViewRec; | ||||||
|     cViewDetailText *detailViewText; |     cViewDetailText *detailViewText; | ||||||
|     cViewDetailPlugin *detailViewPlugin; |     cViewDetailPlugin *detailViewPlugin; | ||||||
|     void SetDetailedView(void); |     void SetDetailedView(void); | ||||||
|     void SetViewElements(void); |     void SetViewElements(void); | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
|     void DrawScrollbar(void); |     void DrawScrollbar(void); | ||||||
| public: | public: | ||||||
|     cViewMenuDetail(const char *name); |     cViewMenuDetail(const char *name); | ||||||
|     virtual ~cViewMenuDetail(void); |     virtual ~cViewMenuDetail(void); | ||||||
|     void SetGlobals(cGlobals *globals); |     void SetGlobals(cGlobals *globals); | ||||||
|     void AddTab(cArea *tab); |     void AddTab(cArea *tab); | ||||||
|     void PreCache(void); |     void PreCache(void); | ||||||
|     int GetWidth(void); |     int GetWidth(void); | ||||||
|     void SetEvent(const cEvent *event); |     void SetEvent(const cEvent *event); | ||||||
|     void SetRecording(const cRecording *recording); |     void SetRecording(const cRecording *recording); | ||||||
|     void SetText(const char *text); |     void SetText(const char *text); | ||||||
|     void SetPluginText(skindesignerapi::cTokenContainer *tk); |     void SetPluginText(skindesignerapi::cTokenContainer *tk); | ||||||
|     void Clear(void); |     void Clear(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void DrawStaticVEs(void); |     void DrawStaticVEs(void); | ||||||
|     void DrawDynamicVEs(void); |     void DrawDynamicVEs(void); | ||||||
|     void DrawDetailedView(void); |     void DrawDetailedView(void); | ||||||
|     void KeyLeft(void); |     void KeyLeft(void); | ||||||
|     void KeyRight(void); |     void KeyRight(void); | ||||||
|     void KeyUp(void); |     void KeyUp(void); | ||||||
|     void KeyDown(void); |     void KeyDown(void); | ||||||
|     void SetTransparency(int transparency, bool forceDetached = false); |     void SetTransparency(int transparency, bool forceDetached = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__VIEWDISPLAYMENU_H | #endif //__VIEWDISPLAYMENU_H | ||||||
| @@ -1,54 +1,54 @@ | |||||||
| #include "viewdisplaymessage.h" | #include "viewdisplaymessage.h" | ||||||
| #include "../config.h" | #include "../config.h" | ||||||
|  |  | ||||||
| /************************************************************************************ | /************************************************************************************ | ||||||
| * cViewMessage | * cViewMessage | ||||||
| ************************************************************************************/ | ************************************************************************************/ | ||||||
|  |  | ||||||
| cViewMessage::cViewMessage(void) { | cViewMessage::cViewMessage(void) { | ||||||
|     ClearVariables(); |     ClearVariables(); | ||||||
|     viewId = eViewType::DisplayMessage; |     viewId = eViewType::DisplayMessage; | ||||||
|     viewName = strdup("displaymessage"); |     viewName = strdup("displaymessage"); | ||||||
|     numViewElements = (int)eVeDisplayMessage::count; |     numViewElements = (int)eVeDisplayMessage::count; | ||||||
|     viewElements = new cViewElement*[numViewElements]; |     viewElements = new cViewElement*[numViewElements]; | ||||||
|     for (int i=0; i < numViewElements; i++) { |     for (int i=0; i < numViewElements; i++) { | ||||||
|         viewElements[i] = NULL; |         viewElements[i] = NULL; | ||||||
|     } |     } | ||||||
|     SetViewElements(); |     SetViewElements(); | ||||||
|     veMessage = NULL; |     veMessage = NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| cViewMessage::~cViewMessage() { | cViewMessage::~cViewMessage() { | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewMessage::SetViewElements(void) { | void cViewMessage::SetViewElements(void) { | ||||||
|     viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayMessage::background)); |     viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayMessage::background)); | ||||||
|     viewElementNames.insert(pair<string, int>("message", (int)eVeDisplayMessage::message)); |     viewElementNames.insert(pair<string, int>("message", (int)eVeDisplayMessage::message)); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewMessage::SetViewElementObjects(void) { | void cViewMessage::SetViewElementObjects(void) { | ||||||
|     if (!viewElements[(int)eVeDisplayMessage::message]) |     if (!viewElements[(int)eVeDisplayMessage::message]) | ||||||
|         return; |         return; | ||||||
|     veMessage = dynamic_cast<cVeMessage*>(viewElements[(int)eVeDisplayMessage::message]); |     veMessage = dynamic_cast<cVeMessage*>(viewElements[(int)eVeDisplayMessage::message]); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewMessage::ClearVariables(void) { | void cViewMessage::ClearVariables(void) { | ||||||
|     init = true; |     init = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewMessage::SetMessage(eMessageType type, const char *text) { | void cViewMessage::SetMessage(eMessageType type, const char *text) { | ||||||
|     if (!text) |     if (!text) | ||||||
|         veMessage->Clear(); |         veMessage->Clear(); | ||||||
|     else |     else | ||||||
|         veMessage->Set(type, text); |         veMessage->Set(type, text); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewMessage::Flush(void) { | void cViewMessage::Flush(void) { | ||||||
|     if (init) { |     if (init) { | ||||||
|         sdOsd.LockFlush(); |         sdOsd.LockFlush(); | ||||||
|         Render((int)eVeDisplayMessage::background); |         Render((int)eVeDisplayMessage::background); | ||||||
|     } |     } | ||||||
|     Render((int)eVeDisplayMessage::message); |     Render((int)eVeDisplayMessage::message); | ||||||
|     cView::Flush(); |     cView::Flush(); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,19 +1,19 @@ | |||||||
| #ifndef __VIEWDISPLAYMESSAGE_H | #ifndef __VIEWDISPLAYMESSAGE_H | ||||||
| #define __VIEWDISPLAYMESSAGE_H | #define __VIEWDISPLAYMESSAGE_H | ||||||
|  |  | ||||||
| #include "view.h" | #include "view.h" | ||||||
|  |  | ||||||
| class cViewMessage : public cView { | class cViewMessage : public cView { | ||||||
| private: | private: | ||||||
|     cVeMessage *veMessage; |     cVeMessage *veMessage; | ||||||
|     void SetViewElements(void); |     void SetViewElements(void); | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
|     void ClearVariables(void); |     void ClearVariables(void); | ||||||
| public: | public: | ||||||
|     cViewMessage(void); |     cViewMessage(void); | ||||||
|     virtual ~cViewMessage(void); |     virtual ~cViewMessage(void); | ||||||
|     void SetMessage(eMessageType type, const char *text); |     void SetMessage(eMessageType type, const char *text); | ||||||
|     void Flush(void); |     void Flush(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__VIEWDISPLAYMESSAGE_H | #endif //__VIEWDISPLAYMESSAGE_H | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,101 +1,101 @@ | |||||||
| #ifndef __VIEWDISPLAYPLUGIN_H | #ifndef __VIEWDISPLAYPLUGIN_H | ||||||
| #define __VIEWDISPLAYPLUGIN_H | #define __VIEWDISPLAYPLUGIN_H | ||||||
|  |  | ||||||
| #include "view.h" | #include "view.h" | ||||||
| #include "viewdetail.h" | #include "viewdetail.h" | ||||||
| #include "viewelementsdisplaymenu.h" | #include "viewelementsdisplaymenu.h" | ||||||
| #include "viewgrid.h" | #include "viewgrid.h" | ||||||
| #include "../libskindesignerapi/skindesignerapi.h" | #include "../libskindesignerapi/skindesignerapi.h" | ||||||
|  |  | ||||||
| class cPluginTabView; | class cPluginTabView; | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cViewPlugin | * cViewPlugin | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cViewPlugin : public cView, public skindesignerapi::ISkinDisplayPlugin { | class cViewPlugin : public cView, public skindesignerapi::ISkinDisplayPlugin { | ||||||
| private: | private: | ||||||
|     int id; |     int id; | ||||||
|     int plugId; |     int plugId; | ||||||
|     int numViews; |     int numViews; | ||||||
|     cViewPlugin **views; |     cViewPlugin **views; | ||||||
|     int numViewGrids; |     int numViewGrids; | ||||||
|     cViewGrid **viewGrids; |     cViewGrid **viewGrids; | ||||||
|     map<string,int> gridNames; |     map<string,int> gridNames; | ||||||
|     cPluginTabView *tabView; |     cPluginTabView *tabView; | ||||||
|     bool viewChanged; |     bool viewChanged; | ||||||
|     int newViewId; |     int newViewId; | ||||||
|     void SetViewElements(void); |     void SetViewElements(void); | ||||||
|     void SetViewGrids(void); |     void SetViewGrids(void); | ||||||
|     int GridId(const char *name); |     int GridId(const char *name); | ||||||
| public: | public: | ||||||
|     cViewPlugin(int id, int plugId); |     cViewPlugin(int id, int plugId); | ||||||
|     ~cViewPlugin(void); |     ~cViewPlugin(void); | ||||||
|     //Internal Interface |     //Internal Interface | ||||||
|     bool ReadFromXML(const char *plugName, const char *tplName, cSdOsd *osd = NULL); |     bool ReadFromXML(const char *plugName, const char *tplName, cSdOsd *osd = NULL); | ||||||
|     bool ReadSubViews(const char *plugName); |     bool ReadSubViews(const char *plugName); | ||||||
|     void AddViewElement(cVePlugin *viewElement); |     void AddViewElement(cVePlugin *viewElement); | ||||||
|     void AddViewGrid(cViewGrid *viewGrid); |     void AddViewGrid(cViewGrid *viewGrid); | ||||||
|     void AddTab(cArea *tab); |     void AddTab(cArea *tab); | ||||||
|     void AddScrollbar(cVeDmScrollbar *scrollbar); |     void AddScrollbar(cVeDmScrollbar *scrollbar); | ||||||
|     void AddTablabels(cVeDmTablabels *tablabels); |     void AddTablabels(cVeDmTablabels *tablabels); | ||||||
|     void SetGlobals(cGlobals *globals); |     void SetGlobals(cGlobals *globals); | ||||||
|     void PreCache(void); |     void PreCache(void); | ||||||
|     cVePlugin *GetViewElement(int veId); |     cVePlugin *GetViewElement(int veId); | ||||||
|     cViewGrid *GetViewGrid(int gId); |     cViewGrid *GetViewGrid(int gId); | ||||||
|     cPluginTabView *GetViewTab(void); |     cPluginTabView *GetViewTab(void); | ||||||
|     void Hide(void); |     void Hide(void); | ||||||
|     void Show(void); |     void Show(void); | ||||||
|     //libskindesigner api interface |     //libskindesigner api interface | ||||||
|     bool InitOsd(void); |     bool InitOsd(void); | ||||||
|     void CloseOsd(void); |     void CloseOsd(void); | ||||||
|     void Deactivate(int viewId, bool hide); |     void Deactivate(int viewId, bool hide); | ||||||
|     void Activate(int viewId); |     void Activate(int viewId); | ||||||
|     void SetViewElementTokens(int veId, int viewId, skindesignerapi::cTokenContainer *tk); |     void SetViewElementTokens(int veId, int viewId, skindesignerapi::cTokenContainer *tk); | ||||||
|     void ClearViewElement(int veId, int viewId); |     void ClearViewElement(int veId, int viewId); | ||||||
|     void DisplayViewElement(int veId, int viewId); |     void DisplayViewElement(int veId, int viewId); | ||||||
|     void SetGrid(long gId, int viewId, int viewGridId,  double x, double y, double width, double height, skindesignerapi::cTokenContainer *tk); |     void SetGrid(long gId, int viewId, int viewGridId,  double x, double y, double width, double height, skindesignerapi::cTokenContainer *tk); | ||||||
|     void SetGridCurrent(long gId, int viewId, int viewGridId, bool current); |     void SetGridCurrent(long gId, int viewId, int viewGridId, bool current); | ||||||
|     void DeleteGrid(long gId, int viewId, int viewGridId); |     void DeleteGrid(long gId, int viewId, int viewGridId); | ||||||
|     void DisplayGrids(int viewId, int viewGridId); |     void DisplayGrids(int viewId, int viewGridId); | ||||||
|     void ClearGrids(int viewId, int viewGridId); |     void ClearGrids(int viewId, int viewGridId); | ||||||
|     void SetTabTokens(int viewId, skindesignerapi::cTokenContainer *tk); |     void SetTabTokens(int viewId, skindesignerapi::cTokenContainer *tk); | ||||||
|     void TabLeft(int viewId); |     void TabLeft(int viewId); | ||||||
|     void TabRight(int viewId); |     void TabRight(int viewId); | ||||||
|     void TabUp(int viewId); |     void TabUp(int viewId); | ||||||
|     void TabDown(int viewId); |     void TabDown(int viewId); | ||||||
|     void DisplayTabs(int viewId); |     void DisplayTabs(int viewId); | ||||||
|     void ClearTab(int viewId); |     void ClearTab(int viewId); | ||||||
|     void Flush(void); |     void Flush(void); | ||||||
|     bool ChannelLogoExists(string channelId); |     bool ChannelLogoExists(string channelId); | ||||||
|     string GetEpgImagePath(void); |     string GetEpgImagePath(void); | ||||||
| }; | }; | ||||||
| /*********************************************************** | /*********************************************************** | ||||||
| * cPluginTabView | * cPluginTabView | ||||||
| ***********************************************************/ | ***********************************************************/ | ||||||
| class cPluginTabView { | class cPluginTabView { | ||||||
| private: | private: | ||||||
|     cSdOsd *sdOsd; |     cSdOsd *sdOsd; | ||||||
|     bool init; |     bool init; | ||||||
|     bool drawScrollbar; |     bool drawScrollbar; | ||||||
|     bool firstTab; |     bool firstTab; | ||||||
|     cVeDmScrollbar *scrollbar; |     cVeDmScrollbar *scrollbar; | ||||||
|     cVeDmTablabels *tablabels; |     cVeDmTablabels *tablabels; | ||||||
|     cViewDetailAdvancedPlugin *detailView; |     cViewDetailAdvancedPlugin *detailView; | ||||||
|     void DrawScrollbar(void); |     void DrawScrollbar(void); | ||||||
| public: | public: | ||||||
|     cPluginTabView(int viewId, int plugId); |     cPluginTabView(int viewId, int plugId); | ||||||
|     ~cPluginTabView(void); |     ~cPluginTabView(void); | ||||||
|     void SetGlobals(cGlobals *globals); |     void SetGlobals(cGlobals *globals); | ||||||
|     void SetOsd(cSdOsd *osd) { sdOsd = osd; }; |     void SetOsd(cSdOsd *osd) { sdOsd = osd; }; | ||||||
|     void AddTab(cArea *tab); |     void AddTab(cArea *tab); | ||||||
|     void AddScrollbar(cVeDmScrollbar *scrollbar); |     void AddScrollbar(cVeDmScrollbar *scrollbar); | ||||||
|     void AddTablabels(cVeDmTablabels *tablabels); |     void AddTablabels(cVeDmTablabels *tablabels); | ||||||
|     void PreCache(int containerX, int containerY, int containerWidth, int containerHeight); |     void PreCache(int containerX, int containerY, int containerWidth, int containerHeight); | ||||||
|     void Set(skindesignerapi::cTokenContainer *tk); |     void Set(skindesignerapi::cTokenContainer *tk); | ||||||
|     void Render(void); |     void Render(void); | ||||||
|     void Clear(void); |     void Clear(void); | ||||||
|     void KeyLeft(void); |     void KeyLeft(void); | ||||||
|     void KeyRight(void); |     void KeyRight(void); | ||||||
|     void KeyUp(void); |     void KeyUp(void); | ||||||
|     void KeyDown(void); |     void KeyDown(void); | ||||||
| }; | }; | ||||||
| #endif //__VIEWDISPLAYPLUGIN_H | #endif //__VIEWDISPLAYPLUGIN_H | ||||||
| @@ -1,314 +1,314 @@ | |||||||
| #include "viewdisplayreplay.h" | #include "viewdisplayreplay.h" | ||||||
|  |  | ||||||
| /************************************************************************************ | /************************************************************************************ | ||||||
| * cViewReplay | * cViewReplay | ||||||
| ************************************************************************************/ | ************************************************************************************/ | ||||||
|  |  | ||||||
| cViewReplay::cViewReplay(void) { | cViewReplay::cViewReplay(void) { | ||||||
|     veCustomTokens = NULL; |     veCustomTokens = NULL; | ||||||
|     veEndTime = NULL; |     veEndTime = NULL; | ||||||
|     veMessage = NULL; |     veMessage = NULL; | ||||||
|     veScraperContent = NULL; |     veScraperContent = NULL; | ||||||
|     veRecTitle = NULL; |     veRecTitle = NULL; | ||||||
|     veRecInfo = NULL; |     veRecInfo = NULL; | ||||||
|     veCurrentTime = NULL; |     veCurrentTime = NULL; | ||||||
|     veTotalTime = NULL; |     veTotalTime = NULL; | ||||||
|     veProgressbar = NULL; |     veProgressbar = NULL; | ||||||
|     veCutMarks = NULL; |     veCutMarks = NULL; | ||||||
|     veProgressModeOnly = NULL; |     veProgressModeOnly = NULL; | ||||||
|     veControlIcons = NULL; |     veControlIcons = NULL; | ||||||
|     veControlIconsModeOnly = NULL; |     veControlIconsModeOnly = NULL; | ||||||
|     veJump = NULL; |     veJump = NULL; | ||||||
|     veOnPause = NULL; |     veOnPause = NULL; | ||||||
|     veOnPauseModeOnly = NULL; |     veOnPauseModeOnly = NULL; | ||||||
|     ClearVariables(); |     ClearVariables(); | ||||||
|     viewId = eViewType::DisplayReplay; |     viewId = eViewType::DisplayReplay; | ||||||
|     viewName = strdup("displayreplay"); |     viewName = strdup("displayreplay"); | ||||||
|     numViewElements = (int)eVeDisplayReplay::count; |     numViewElements = (int)eVeDisplayReplay::count; | ||||||
|     viewElements = new cViewElement*[numViewElements]; |     viewElements = new cViewElement*[numViewElements]; | ||||||
|     for (int i=0; i < numViewElements; i++) { |     for (int i=0; i < numViewElements; i++) { | ||||||
|         viewElements[i] = NULL; |         viewElements[i] = NULL; | ||||||
|     } |     } | ||||||
|     SetViewElements(); |     SetViewElements(); | ||||||
| } | } | ||||||
|  |  | ||||||
| cViewReplay::~cViewReplay() { | cViewReplay::~cViewReplay() { | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetViewElements(void) { | void cViewReplay::SetViewElements(void) { | ||||||
|     viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayReplay::background)); |     viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayReplay::background)); | ||||||
|     viewElementNames.insert(pair<string, int>("backgroundmodeonly", (int)eVeDisplayReplay::backgroundmodeonly)); |     viewElementNames.insert(pair<string, int>("backgroundmodeonly", (int)eVeDisplayReplay::backgroundmodeonly)); | ||||||
|     viewElementNames.insert(pair<string, int>("datetime", (int)eVeDisplayReplay::datetime)); |     viewElementNames.insert(pair<string, int>("datetime", (int)eVeDisplayReplay::datetime)); | ||||||
|     viewElementNames.insert(pair<string, int>("time", (int)eVeDisplayReplay::time)); |     viewElementNames.insert(pair<string, int>("time", (int)eVeDisplayReplay::time)); | ||||||
|     viewElementNames.insert(pair<string, int>("scrapercontent", (int)eVeDisplayReplay::scrapercontent)); |     viewElementNames.insert(pair<string, int>("scrapercontent", (int)eVeDisplayReplay::scrapercontent)); | ||||||
|     viewElementNames.insert(pair<string, int>("rectitle", (int)eVeDisplayReplay::rectitle)); |     viewElementNames.insert(pair<string, int>("rectitle", (int)eVeDisplayReplay::rectitle)); | ||||||
|     viewElementNames.insert(pair<string, int>("recinfo", (int)eVeDisplayReplay::recinfo)); |     viewElementNames.insert(pair<string, int>("recinfo", (int)eVeDisplayReplay::recinfo)); | ||||||
|     viewElementNames.insert(pair<string, int>("currenttime", (int)eVeDisplayReplay::currenttime)); |     viewElementNames.insert(pair<string, int>("currenttime", (int)eVeDisplayReplay::currenttime)); | ||||||
|     viewElementNames.insert(pair<string, int>("endtime", (int)eVeDisplayReplay::endtime)); |     viewElementNames.insert(pair<string, int>("endtime", (int)eVeDisplayReplay::endtime)); | ||||||
|     viewElementNames.insert(pair<string, int>("totaltime", (int)eVeDisplayReplay::totaltime)); |     viewElementNames.insert(pair<string, int>("totaltime", (int)eVeDisplayReplay::totaltime)); | ||||||
|     viewElementNames.insert(pair<string, int>("progressbar", (int)eVeDisplayReplay::progressbar)); |     viewElementNames.insert(pair<string, int>("progressbar", (int)eVeDisplayReplay::progressbar)); | ||||||
|     viewElementNames.insert(pair<string, int>("cutmarks", (int)eVeDisplayReplay::cutmarks)); |     viewElementNames.insert(pair<string, int>("cutmarks", (int)eVeDisplayReplay::cutmarks)); | ||||||
|     viewElementNames.insert(pair<string, int>("cutmarks", (int)eVeDisplayReplay::cutmarks)); |     viewElementNames.insert(pair<string, int>("cutmarks", (int)eVeDisplayReplay::cutmarks)); | ||||||
|     viewElementNames.insert(pair<string, int>("controlicons", (int)eVeDisplayReplay::controlicons)); |     viewElementNames.insert(pair<string, int>("controlicons", (int)eVeDisplayReplay::controlicons)); | ||||||
|     viewElementNames.insert(pair<string, int>("controliconsmodeonly", (int)eVeDisplayReplay::controliconsmodeonly)); |     viewElementNames.insert(pair<string, int>("controliconsmodeonly", (int)eVeDisplayReplay::controliconsmodeonly)); | ||||||
|     viewElementNames.insert(pair<string, int>("progressmodeonly", (int)eVeDisplayReplay::progressmodeonly)); |     viewElementNames.insert(pair<string, int>("progressmodeonly", (int)eVeDisplayReplay::progressmodeonly)); | ||||||
|     viewElementNames.insert(pair<string, int>("jump", (int)eVeDisplayReplay::jump)); |     viewElementNames.insert(pair<string, int>("jump", (int)eVeDisplayReplay::jump)); | ||||||
|     viewElementNames.insert(pair<string, int>("message", (int)eVeDisplayReplay::message)); |     viewElementNames.insert(pair<string, int>("message", (int)eVeDisplayReplay::message)); | ||||||
|     viewElementNames.insert(pair<string, int>("onpause", (int)eVeDisplayReplay::onpause)); |     viewElementNames.insert(pair<string, int>("onpause", (int)eVeDisplayReplay::onpause)); | ||||||
|     viewElementNames.insert(pair<string, int>("onpausemodeonly", (int)eVeDisplayReplay::onpausemodeonly)); |     viewElementNames.insert(pair<string, int>("onpausemodeonly", (int)eVeDisplayReplay::onpausemodeonly)); | ||||||
|     viewElementNames.insert(pair<string, int>("customtokens", (int)eVeDisplayReplay::customtokens)); |     viewElementNames.insert(pair<string, int>("customtokens", (int)eVeDisplayReplay::customtokens)); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetViewElementObjects(void) { | void cViewReplay::SetViewElementObjects(void) { | ||||||
|     for (int i = 0; i < numViewElements; i++) { |     for (int i = 0; i < numViewElements; i++) { | ||||||
|         if (!viewElements[i]) |         if (!viewElements[i]) | ||||||
|             continue; |             continue; | ||||||
|         if (dynamic_cast<cVeMessage*>(viewElements[i]))  |         if (dynamic_cast<cVeMessage*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veMessage = dynamic_cast<cVeMessage*>(viewElements[i]); |             veMessage = dynamic_cast<cVeMessage*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrScraperContent*>(viewElements[i]))  |         else if (dynamic_cast<cVeDrScraperContent*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veScraperContent = dynamic_cast<cVeDrScraperContent*>(viewElements[i]); |             veScraperContent = dynamic_cast<cVeDrScraperContent*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeCustomTokens*>(viewElements[i]))  |         else if (dynamic_cast<cVeCustomTokens*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veCustomTokens = dynamic_cast<cVeCustomTokens*>(viewElements[i]); |             veCustomTokens = dynamic_cast<cVeCustomTokens*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrRecTitle*>(viewElements[i]))  |         else if (dynamic_cast<cVeDrRecTitle*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veRecTitle = dynamic_cast<cVeDrRecTitle*>(viewElements[i]); |             veRecTitle = dynamic_cast<cVeDrRecTitle*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrRecInfo*>(viewElements[i]))  |         else if (dynamic_cast<cVeDrRecInfo*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veRecInfo = dynamic_cast<cVeDrRecInfo*>(viewElements[i]); |             veRecInfo = dynamic_cast<cVeDrRecInfo*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrCurrentTime*>(viewElements[i]))  |         else if (dynamic_cast<cVeDrCurrentTime*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veCurrentTime = dynamic_cast<cVeDrCurrentTime*>(viewElements[i]); |             veCurrentTime = dynamic_cast<cVeDrCurrentTime*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrTotalTime*>(viewElements[i]))  |         else if (dynamic_cast<cVeDrTotalTime*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veTotalTime = dynamic_cast<cVeDrTotalTime*>(viewElements[i]); |             veTotalTime = dynamic_cast<cVeDrTotalTime*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrEndTime*>(viewElements[i]))  |         else if (dynamic_cast<cVeDrEndTime*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veEndTime = dynamic_cast<cVeDrEndTime*>(viewElements[i]); |             veEndTime = dynamic_cast<cVeDrEndTime*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrProgressBar*>(viewElements[i]))  |         else if (dynamic_cast<cVeDrProgressBar*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veProgressbar = dynamic_cast<cVeDrProgressBar*>(viewElements[i]); |             veProgressbar = dynamic_cast<cVeDrProgressBar*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrCutMarks*>(viewElements[i]))  |         else if (dynamic_cast<cVeDrCutMarks*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veCutMarks = dynamic_cast<cVeDrCutMarks*>(viewElements[i]); |             veCutMarks = dynamic_cast<cVeDrCutMarks*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrProgressModeonly*>(viewElements[i]))  |         else if (dynamic_cast<cVeDrProgressModeonly*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veProgressModeOnly = dynamic_cast<cVeDrProgressModeonly*>(viewElements[i]); |             veProgressModeOnly = dynamic_cast<cVeDrProgressModeonly*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrControlIcons*>(viewElements[i]) && (i == (int)eVeDisplayReplay::controlicons))  |         else if (dynamic_cast<cVeDrControlIcons*>(viewElements[i]) && (i == (int)eVeDisplayReplay::controlicons))  | ||||||
|         { |         { | ||||||
|             veControlIcons = dynamic_cast<cVeDrControlIcons*>(viewElements[i]); |             veControlIcons = dynamic_cast<cVeDrControlIcons*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrControlIcons*>(viewElements[i]) && i == (int)eVeDisplayReplay::controliconsmodeonly)  |         else if (dynamic_cast<cVeDrControlIcons*>(viewElements[i]) && i == (int)eVeDisplayReplay::controliconsmodeonly)  | ||||||
|         { |         { | ||||||
|             veControlIconsModeOnly = dynamic_cast<cVeDrControlIcons*>(viewElements[i]); |             veControlIconsModeOnly = dynamic_cast<cVeDrControlIcons*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrJump*>(viewElements[i]))  |         else if (dynamic_cast<cVeDrJump*>(viewElements[i]))  | ||||||
|         { |         { | ||||||
|             veJump = dynamic_cast<cVeDrJump*>(viewElements[i]); |             veJump = dynamic_cast<cVeDrJump*>(viewElements[i]); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrOnPause*>(viewElements[i]) && i == (int)eVeDisplayReplay::onpause) |         else if (dynamic_cast<cVeDrOnPause*>(viewElements[i]) && i == (int)eVeDisplayReplay::onpause) | ||||||
|         { |         { | ||||||
|             veOnPause = dynamic_cast<cVeDrOnPause*>(viewElements[i]); |             veOnPause = dynamic_cast<cVeDrOnPause*>(viewElements[i]); | ||||||
|             veOnPause->SetDetached(); |             veOnPause->SetDetached(); | ||||||
|             veOnPause->UnsetWaitOnWakeup(); |             veOnPause->UnsetWaitOnWakeup(); | ||||||
|         } |         } | ||||||
|         else if (dynamic_cast<cVeDrOnPause*>(viewElements[i])  && i == (int)eVeDisplayReplay::onpausemodeonly)  |         else if (dynamic_cast<cVeDrOnPause*>(viewElements[i])  && i == (int)eVeDisplayReplay::onpausemodeonly)  | ||||||
|         { |         { | ||||||
|             veOnPauseModeOnly = dynamic_cast<cVeDrOnPause*>(viewElements[i]); |             veOnPauseModeOnly = dynamic_cast<cVeDrOnPause*>(viewElements[i]); | ||||||
|             veOnPauseModeOnly->SetDetached(); |             veOnPauseModeOnly->SetDetached(); | ||||||
|             veOnPauseModeOnly->UnsetWaitOnWakeup(); |             veOnPauseModeOnly->UnsetWaitOnWakeup(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::ClearVariables(void) { | void cViewReplay::ClearVariables(void) { | ||||||
|     cView::ClearVariables(); |     cView::ClearVariables(); | ||||||
|     modeOnly = false; |     modeOnly = false; | ||||||
|     lastFlush = 0; |     lastFlush = 0; | ||||||
|     message = false; |     message = false; | ||||||
|     reclength = -1; |     reclength = -1; | ||||||
|     timeShiftActive = false; |     timeShiftActive = false; | ||||||
|     timeShiftFramesTotal = -1; |     timeShiftFramesTotal = -1; | ||||||
|     timeShiftLength = -1; |     timeShiftLength = -1; | ||||||
|     timeShiftDuration = ""; |     timeShiftDuration = ""; | ||||||
|     if (veCustomTokens) |     if (veCustomTokens) | ||||||
|         veCustomTokens->Reset(); |         veCustomTokens->Reset(); | ||||||
|     if (veEndTime) |     if (veEndTime) | ||||||
|         veEndTime->Set(cString("")); |         veEndTime->Set(cString("")); | ||||||
|     if (veCutMarks) |     if (veCutMarks) | ||||||
|         veCutMarks->Reset(); |         veCutMarks->Reset(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetTimeShift(int framesTotal, int timeShiftLength) { | void cViewReplay::SetTimeShift(int framesTotal, int timeShiftLength) { | ||||||
|     timeShiftActive = true; |     timeShiftActive = true; | ||||||
|     timeShiftFramesTotal = framesTotal; |     timeShiftFramesTotal = framesTotal; | ||||||
|     this->timeShiftLength = timeShiftLength; |     this->timeShiftLength = timeShiftLength; | ||||||
|     int mins = (timeShiftLength / 60) % 60; |     int mins = (timeShiftLength / 60) % 60; | ||||||
|     int hours = (timeShiftLength / 3600) % 24; |     int hours = (timeShiftLength / 3600) % 24; | ||||||
|     timeShiftDuration = cString::sprintf("%d:%02d", hours, mins); |     timeShiftDuration = cString::sprintf("%d:%02d", hours, mins); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetRecording(const cRecording *recording) { | void cViewReplay::SetRecording(const cRecording *recording) { | ||||||
|     if (veRecTitle) { |     if (veRecTitle) { | ||||||
|         veRecTitle->Set(recording); |         veRecTitle->Set(recording); | ||||||
|     } |     } | ||||||
|     if (veRecInfo) { |     if (veRecInfo) { | ||||||
|         veRecInfo->Set(recording); |         veRecInfo->Set(recording); | ||||||
|     } |     } | ||||||
|     if (veScraperContent) { |     if (veScraperContent) { | ||||||
|         veScraperContent->Set(recording); |         veScraperContent->Set(recording); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetTitle(const char *title) { | void cViewReplay::SetTitle(const char *title) { | ||||||
|     if (veRecTitle) { |     if (veRecTitle) { | ||||||
|         veRecTitle->Set(title); |         veRecTitle->Set(title); | ||||||
|     }     |     }     | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetCurrent(const char *current) { | void cViewReplay::SetCurrent(const char *current) { | ||||||
|     if (veCurrentTime) |     if (veCurrentTime) | ||||||
|         veCurrentTime->Set(current); |         veCurrentTime->Set(current); | ||||||
|     Render((int)eVeDisplayReplay::currenttime); |     Render((int)eVeDisplayReplay::currenttime); | ||||||
|     //good place to refresh these viewelements  |     //good place to refresh these viewelements  | ||||||
|     //since SetCurrent is called every second |     //since SetCurrent is called every second | ||||||
|     Render((int)eVeDisplayReplay::datetime); |     Render((int)eVeDisplayReplay::datetime); | ||||||
|     Render((int)eVeDisplayReplay::time); |     Render((int)eVeDisplayReplay::time); | ||||||
|     Render((int)eVeDisplayChannel::customtokens); |     Render((int)eVeDisplayChannel::customtokens); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetTotal(const char *total) { | void cViewReplay::SetTotal(const char *total) { | ||||||
|     if (veTotalTime) |     if (veTotalTime) | ||||||
|         veTotalTime->Set(total, timeShiftActive, *timeShiftDuration); |         veTotalTime->Set(total, timeShiftActive, *timeShiftDuration); | ||||||
|     Render((int)eVeDisplayReplay::totaltime); |     Render((int)eVeDisplayReplay::totaltime); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetEndTime(int current, int total) { | void cViewReplay::SetEndTime(int current, int total) { | ||||||
|     if (!veEndTime) |     if (!veEndTime) | ||||||
|         return; |         return; | ||||||
|     int totalLength = total; |     int totalLength = total; | ||||||
|     int recordingLength = reclength; |     int recordingLength = reclength; | ||||||
|     if (timeShiftActive && timeShiftFramesTotal > 0) { |     if (timeShiftActive && timeShiftFramesTotal > 0) { | ||||||
|         totalLength = timeShiftFramesTotal; |         totalLength = timeShiftFramesTotal; | ||||||
|         recordingLength = timeShiftLength; |         recordingLength = timeShiftLength; | ||||||
|     } |     } | ||||||
|     double rest = (double)(totalLength - current) / (double)totalLength; |     double rest = (double)(totalLength - current) / (double)totalLength; | ||||||
|     time_t end = time(0) + rest*recordingLength; |     time_t end = time(0) + rest*recordingLength; | ||||||
|     veEndTime->Set(TimeString(end)); |     veEndTime->Set(TimeString(end)); | ||||||
|     Render((int)eVeDisplayReplay::endtime); |     Render((int)eVeDisplayReplay::endtime); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetProgressbar(int current, int total) { | void cViewReplay::SetProgressbar(int current, int total) { | ||||||
|     if (veProgressbar) |     if (veProgressbar) | ||||||
|         veProgressbar->Set(current, total, timeShiftActive, timeShiftFramesTotal); |         veProgressbar->Set(current, total, timeShiftActive, timeShiftFramesTotal); | ||||||
|     Render((int)eVeDisplayReplay::progressbar); |     Render((int)eVeDisplayReplay::progressbar); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetMarks(const cMarks *marks, int current, int total) { | void cViewReplay::SetMarks(const cMarks *marks, int current, int total) { | ||||||
|     if (veCutMarks) |     if (veCutMarks) | ||||||
|         veCutMarks->Set(marks, current, total, timeShiftActive, timeShiftFramesTotal); |         veCutMarks->Set(marks, current, total, timeShiftActive, timeShiftFramesTotal); | ||||||
|     Render((int)eVeDisplayReplay::cutmarks); |     Render((int)eVeDisplayReplay::cutmarks); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetControlIcons(bool play, bool forward, int speed) { | void cViewReplay::SetControlIcons(bool play, bool forward, int speed) { | ||||||
|     if (!modeOnly) { |     if (!modeOnly) { | ||||||
|         if (veControlIcons) |         if (veControlIcons) | ||||||
|             veControlIcons->Set(play, forward, speed); |             veControlIcons->Set(play, forward, speed); | ||||||
|         Render((int)eVeDisplayReplay::controlicons); |         Render((int)eVeDisplayReplay::controlicons); | ||||||
|     } else { |     } else { | ||||||
|         if (veControlIconsModeOnly) |         if (veControlIconsModeOnly) | ||||||
|             veControlIconsModeOnly->Set(play, forward, speed); |             veControlIconsModeOnly->Set(play, forward, speed); | ||||||
|         Render((int)eVeDisplayReplay::controliconsmodeonly); |         Render((int)eVeDisplayReplay::controliconsmodeonly); | ||||||
|     } |     } | ||||||
|      |      | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetJump(const char *jump) { | void cViewReplay::SetJump(const char *jump) { | ||||||
|     if (veJump) { |     if (veJump) { | ||||||
|         if (!jump) |         if (!jump) | ||||||
|             veJump->Clear(); |             veJump->Clear(); | ||||||
|         else |         else | ||||||
|             veJump->Set(jump); |             veJump->Set(jump); | ||||||
|     } |     } | ||||||
|     Render((int)eVeDisplayReplay::jump); |     Render((int)eVeDisplayReplay::jump); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetMessage(eMessageType type, const char *text) { | void cViewReplay::SetMessage(eMessageType type, const char *text) { | ||||||
|     if (veMessage) { |     if (veMessage) { | ||||||
|         if (text) |         if (text) | ||||||
|             veMessage->Set(type, text); |             veMessage->Set(type, text); | ||||||
|         else |         else | ||||||
|             veMessage->Clear(); |             veMessage->Clear(); | ||||||
|     } |     } | ||||||
|     Render((int)eVeDisplayReplay::message); |     Render((int)eVeDisplayReplay::message); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::StartOnPause(const char *recfilename) { | void cViewReplay::StartOnPause(const char *recfilename) { | ||||||
|     cVeDrOnPause *onPause = (!modeOnly) ? veOnPause : veOnPauseModeOnly; |     cVeDrOnPause *onPause = (!modeOnly) ? veOnPause : veOnPauseModeOnly; | ||||||
|     if (!onPause) |     if (!onPause) | ||||||
|         return; |         return; | ||||||
|     onPause->Set(recfilename); |     onPause->Set(recfilename); | ||||||
|     onPause->Parse(true); |     onPause->Parse(true); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::ClearOnPause(void) { | void cViewReplay::ClearOnPause(void) { | ||||||
|     cVeDrOnPause *onPause = (!modeOnly) ? veOnPause : veOnPauseModeOnly; |     cVeDrOnPause *onPause = (!modeOnly) ? veOnPause : veOnPauseModeOnly; | ||||||
|     if (!onPause) |     if (!onPause) | ||||||
|         return; |         return; | ||||||
|     onPause->Close(); |     onPause->Close(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::Flush(void) { | void cViewReplay::Flush(void) { | ||||||
|     if (init) { |     if (init) { | ||||||
|         sdOsd.LockFlush(); |         sdOsd.LockFlush(); | ||||||
|         if (!modeOnly) { |         if (!modeOnly) { | ||||||
|             Render((int)eVeDisplayReplay::background); |             Render((int)eVeDisplayReplay::background); | ||||||
|             Render((int)eVeDisplayReplay::rectitle); |             Render((int)eVeDisplayReplay::rectitle); | ||||||
|             Render((int)eVeDisplayReplay::recinfo); |             Render((int)eVeDisplayReplay::recinfo); | ||||||
|             Render((int)eVeDisplayReplay::scrapercontent); |             Render((int)eVeDisplayReplay::scrapercontent); | ||||||
|         } else { |         } else { | ||||||
|             Render((int)eVeDisplayReplay::backgroundmodeonly);             |             Render((int)eVeDisplayReplay::backgroundmodeonly);             | ||||||
|         }  |         }  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (modeOnly) { |     if (modeOnly) { | ||||||
|         SetProgressModeOnly(); |         SetProgressModeOnly(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     cView::Flush(); |     cView::Flush(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewReplay::SetProgressModeOnly(void) { | void cViewReplay::SetProgressModeOnly(void) { | ||||||
|     if (!veProgressModeOnly) |     if (!veProgressModeOnly) | ||||||
|         return; |         return; | ||||||
|     time_t now = time(0); |     time_t now = time(0); | ||||||
|     if (now == lastFlush) { |     if (now == lastFlush) { | ||||||
|         return; |         return; | ||||||
|     }  |     }  | ||||||
|     lastFlush = now; |     lastFlush = now; | ||||||
|  |  | ||||||
|     cControl *control = cControl::Control(); |     cControl *control = cControl::Control(); | ||||||
|     if (!control) |     if (!control) | ||||||
|         return; |         return; | ||||||
|     double fps = control->FramesPerSecond(); |     double fps = control->FramesPerSecond(); | ||||||
|     int current = 0; |     int current = 0; | ||||||
|     int total = 0; |     int total = 0; | ||||||
|     if (!control->GetIndex(current, total)) |     if (!control->GetIndex(current, total)) | ||||||
|         return; |         return; | ||||||
|     veProgressModeOnly->Set(fps, current, total); |     veProgressModeOnly->Set(fps, current, total); | ||||||
|     if (veProgressModeOnly->Parse()) |     if (veProgressModeOnly->Parse()) | ||||||
|         veProgressModeOnly->Render(); |         veProgressModeOnly->Render(); | ||||||
| } | } | ||||||
| @@ -1,57 +1,57 @@ | |||||||
| #ifndef __VIEWDISPLAYREPLAY_H | #ifndef __VIEWDISPLAYREPLAY_H | ||||||
| #define __VIEWDISPLAYREPLAY_H | #define __VIEWDISPLAYREPLAY_H | ||||||
|  |  | ||||||
| #include "view.h" | #include "view.h" | ||||||
|  |  | ||||||
| class cViewReplay : public cView { | class cViewReplay : public cView { | ||||||
| private: | private: | ||||||
|     cVeMessage             *veMessage; |     cVeMessage             *veMessage; | ||||||
|     cVeCustomTokens        *veCustomTokens; |     cVeCustomTokens        *veCustomTokens; | ||||||
|     cVeDrRecTitle          *veRecTitle; |     cVeDrRecTitle          *veRecTitle; | ||||||
|     cVeDrRecInfo           *veRecInfo; |     cVeDrRecInfo           *veRecInfo; | ||||||
|     cVeDrScraperContent    *veScraperContent; |     cVeDrScraperContent    *veScraperContent; | ||||||
|     cVeDrCurrentTime       *veCurrentTime; |     cVeDrCurrentTime       *veCurrentTime; | ||||||
|     cVeDrTotalTime         *veTotalTime; |     cVeDrTotalTime         *veTotalTime; | ||||||
|     cVeDrEndTime           *veEndTime; |     cVeDrEndTime           *veEndTime; | ||||||
|     cVeDrProgressBar       *veProgressbar; |     cVeDrProgressBar       *veProgressbar; | ||||||
|     cVeDrCutMarks          *veCutMarks; |     cVeDrCutMarks          *veCutMarks; | ||||||
|     cVeDrProgressModeonly  *veProgressModeOnly; |     cVeDrProgressModeonly  *veProgressModeOnly; | ||||||
|     cVeDrControlIcons      *veControlIcons; |     cVeDrControlIcons      *veControlIcons; | ||||||
|     cVeDrControlIcons      *veControlIconsModeOnly; |     cVeDrControlIcons      *veControlIconsModeOnly; | ||||||
|     cVeDrJump              *veJump; |     cVeDrJump              *veJump; | ||||||
|     cVeDrOnPause           *veOnPause; |     cVeDrOnPause           *veOnPause; | ||||||
|     cVeDrOnPause           *veOnPauseModeOnly; |     cVeDrOnPause           *veOnPauseModeOnly; | ||||||
|     bool modeOnly; |     bool modeOnly; | ||||||
|     time_t lastFlush; |     time_t lastFlush; | ||||||
|     bool message; |     bool message; | ||||||
|     int reclength; |     int reclength; | ||||||
|     bool timeShiftActive; |     bool timeShiftActive; | ||||||
|     int timeShiftFramesTotal; |     int timeShiftFramesTotal; | ||||||
|     int timeShiftLength; |     int timeShiftLength; | ||||||
|     cString timeShiftDuration; |     cString timeShiftDuration; | ||||||
|     void SetViewElements(void); |     void SetViewElements(void); | ||||||
|     void ClearVariables(void); |     void ClearVariables(void); | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
|     void SetProgressModeOnly(void); |     void SetProgressModeOnly(void); | ||||||
| public: | public: | ||||||
|     cViewReplay(void); |     cViewReplay(void); | ||||||
|     virtual ~cViewReplay(void); |     virtual ~cViewReplay(void); | ||||||
|     void SetModeOnly(bool modeOnly) { this->modeOnly = modeOnly; }; |     void SetModeOnly(bool modeOnly) { this->modeOnly = modeOnly; }; | ||||||
|     void SetRecordingLength(int length) { reclength = length; }; |     void SetRecordingLength(int length) { reclength = length; }; | ||||||
|     void SetTimeShift(int framesTotal, int timeShiftLength); |     void SetTimeShift(int framesTotal, int timeShiftLength); | ||||||
|     void SetRecording(const cRecording *recording); |     void SetRecording(const cRecording *recording); | ||||||
|     void SetTitle(const char *title); |     void SetTitle(const char *title); | ||||||
|     void SetCurrent(const char *current); |     void SetCurrent(const char *current); | ||||||
|     void SetTotal(const char *total); |     void SetTotal(const char *total); | ||||||
|     void SetEndTime(int current, int total); |     void SetEndTime(int current, int total); | ||||||
|     void SetProgressbar(int current, int total); |     void SetProgressbar(int current, int total); | ||||||
|     void SetMarks(const cMarks *marks, int current, int total); |     void SetMarks(const cMarks *marks, int current, int total); | ||||||
|     void SetControlIcons(bool play, bool forward, int speed); |     void SetControlIcons(bool play, bool forward, int speed); | ||||||
|     void SetJump(const char *jump); |     void SetJump(const char *jump); | ||||||
|     void SetMessage(eMessageType type, const char *text); |     void SetMessage(eMessageType type, const char *text); | ||||||
|     void StartOnPause(const char *recfilename); |     void StartOnPause(const char *recfilename); | ||||||
|     void ClearOnPause(void); |     void ClearOnPause(void); | ||||||
|     void Flush(void); |     void Flush(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__VIEWDISPLAYREPLAY_H1 | #endif //__VIEWDISPLAYREPLAY_H1 | ||||||
| @@ -1,122 +1,122 @@ | |||||||
| #include "viewdisplaytracks.h" | #include "viewdisplaytracks.h" | ||||||
| #include "../config.h" | #include "../config.h" | ||||||
|  |  | ||||||
| /************************************************************************************ | /************************************************************************************ | ||||||
| * cViewTracks | * cViewTracks | ||||||
| ************************************************************************************/ | ************************************************************************************/ | ||||||
|  |  | ||||||
| cViewTracks::cViewTracks(void) { | cViewTracks::cViewTracks(void) { | ||||||
|     ClearVariables(); |     ClearVariables(); | ||||||
|     viewId = eViewType::DisplayTracks; |     viewId = eViewType::DisplayTracks; | ||||||
|     viewName = strdup("displayaudiotracks"); |     viewName = strdup("displayaudiotracks"); | ||||||
|     numViewElements = (int)eVeDisplayTracks::count; |     numViewElements = (int)eVeDisplayTracks::count; | ||||||
|     viewElements = new cViewElement*[numViewElements]; |     viewElements = new cViewElement*[numViewElements]; | ||||||
|     for (int i=0; i < numViewElements; i++) { |     for (int i=0; i < numViewElements; i++) { | ||||||
|         viewElements[i] = NULL; |         viewElements[i] = NULL; | ||||||
|     } |     } | ||||||
|     viewList = NULL; |     viewList = NULL; | ||||||
|     veBackground = NULL; |     veBackground = NULL; | ||||||
|     veHeader = NULL; |     veHeader = NULL; | ||||||
|     SetViewElements(); |     SetViewElements(); | ||||||
| } | } | ||||||
|  |  | ||||||
| cViewTracks::~cViewTracks() { | cViewTracks::~cViewTracks() { | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewTracks::SetViewElements(void) { | void cViewTracks::SetViewElements(void) { | ||||||
|     viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayTracks::background)); |     viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayTracks::background)); | ||||||
|     viewElementNames.insert(pair<string, int>("header", (int)eVeDisplayTracks::header)); |     viewElementNames.insert(pair<string, int>("header", (int)eVeDisplayTracks::header)); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewTracks::SetViewElementObjects(void) { | void cViewTracks::SetViewElementObjects(void) { | ||||||
|     if (viewElements[(int)eVeDisplayTracks::background]) |     if (viewElements[(int)eVeDisplayTracks::background]) | ||||||
|         veBackground = dynamic_cast<cVeDtBackground*>(viewElements[(int)eVeDisplayTracks::background]); |         veBackground = dynamic_cast<cVeDtBackground*>(viewElements[(int)eVeDisplayTracks::background]); | ||||||
|     if (viewElements[(int)eVeDisplayTracks::header]) |     if (viewElements[(int)eVeDisplayTracks::header]) | ||||||
|         veHeader = dynamic_cast<cVeDtHeader*>(viewElements[(int)eVeDisplayTracks::header]); |         veHeader = dynamic_cast<cVeDtHeader*>(viewElements[(int)eVeDisplayTracks::header]); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewTracks::ClearVariables(void) { | void cViewTracks::ClearVariables(void) { | ||||||
|     init = true; |     init = true; | ||||||
|     change = true; |     change = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewTracks::Close(void) { | void cViewTracks::Close(void) { | ||||||
|     delete fader; |     delete fader; | ||||||
|     fader = NULL; |     fader = NULL; | ||||||
|     if (FadeTime() > 0) { |     if (FadeTime() > 0) { | ||||||
|         fader = new cAnimation((cFadable*)this, false); |         fader = new cAnimation((cFadable*)this, false); | ||||||
|         fader->Fade(); |         fader->Fade(); | ||||||
|         delete fader; |         delete fader; | ||||||
|         fader = NULL; |         fader = NULL; | ||||||
|     } |     } | ||||||
|     for (int i=0; i < numViewElements; i++) { |     for (int i=0; i < numViewElements; i++) { | ||||||
|         if (viewElements[i]) { |         if (viewElements[i]) { | ||||||
|             viewElements[i]->Close(); |             viewElements[i]->Close(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     if (viewList) { |     if (viewList) { | ||||||
|         viewList->Close(); |         viewList->Close(); | ||||||
|     } |     } | ||||||
|     ClearVariables(); |     ClearVariables(); | ||||||
|     sdOsd.DeleteOsd(); |     sdOsd.DeleteOsd(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewTracks::AddViewList(cViewList *viewList) { | void cViewTracks::AddViewList(cViewList *viewList) { | ||||||
|     this->viewList = dynamic_cast<cViewListAudioTracks*>(viewList); |     this->viewList = dynamic_cast<cViewListAudioTracks*>(viewList); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewTracks::PreCache(void) { | void cViewTracks::PreCache(void) { | ||||||
|     cView::PreCache(); |     cView::PreCache(); | ||||||
|     if (viewList) { |     if (viewList) { | ||||||
|         viewList->SetContainer(0, 0, attribs->Width(), attribs->Height()); |         viewList->SetContainer(0, 0, attribs->Width(), attribs->Height()); | ||||||
|         viewList->SetGlobals(globals); |         viewList->SetGlobals(globals); | ||||||
|         viewList->PreCache(); |         viewList->PreCache(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewTracks::SetTitle(const char *title) { | void cViewTracks::SetTitle(const char *title) { | ||||||
|     if (veHeader) |     if (veHeader) | ||||||
|         veHeader->SetTitle(title); |         veHeader->SetTitle(title); | ||||||
|     change = true; |     change = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewTracks::SetNumtracks(int numTracks) { | void cViewTracks::SetNumtracks(int numTracks) { | ||||||
|     if (veBackground) |     if (veBackground) | ||||||
|         veBackground->Set(numTracks); |         veBackground->Set(numTracks); | ||||||
|     if (veHeader) |     if (veHeader) | ||||||
|         veHeader->SetNumtracks(numTracks); |         veHeader->SetNumtracks(numTracks); | ||||||
|     if (viewList) |     if (viewList) | ||||||
|         viewList->SetNumtracks(numTracks); |         viewList->SetNumtracks(numTracks); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewTracks::SetAudiochannel(int audioChannel) { | void cViewTracks::SetAudiochannel(int audioChannel) { | ||||||
|     if (veHeader) |     if (veHeader) | ||||||
|         veHeader->SetAudiochannel(audioChannel); |         veHeader->SetAudiochannel(audioChannel); | ||||||
|     change = true; |     change = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewTracks::SetTracks(const char * const *tracks) { | void cViewTracks::SetTracks(const char * const *tracks) { | ||||||
|     if (viewList) |     if (viewList) | ||||||
|         viewList->SetTracks(tracks); |         viewList->SetTracks(tracks); | ||||||
|     change = true; |     change = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewTracks::SetCurrentTrack(int index) { | void cViewTracks::SetCurrentTrack(int index) { | ||||||
|     if (viewList) |     if (viewList) | ||||||
|         viewList->SetCurrentTrack(index);     |         viewList->SetCurrentTrack(index);     | ||||||
|     change = true; |     change = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewTracks::Flush(void) { | void cViewTracks::Flush(void) { | ||||||
|     if (init) { |     if (init) { | ||||||
|         sdOsd.LockFlush(); |         sdOsd.LockFlush(); | ||||||
|         Render((int)eVeDisplayTracks::background); |         Render((int)eVeDisplayTracks::background); | ||||||
|     } |     } | ||||||
|     if (change) { |     if (change) { | ||||||
|         Render((int)eVeDisplayTracks::header); |         Render((int)eVeDisplayTracks::header); | ||||||
|         if (viewList) |         if (viewList) | ||||||
|             viewList->Draw(); |             viewList->Draw(); | ||||||
|         change = false; |         change = false; | ||||||
|     } |     } | ||||||
|     cView::Flush(); |     cView::Flush(); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,29 +1,29 @@ | |||||||
| #ifndef __VIEWDISPLAYTRACKS_H | #ifndef __VIEWDISPLAYTRACKS_H | ||||||
| #define __VIEWDISPLAYTRACKS_H | #define __VIEWDISPLAYTRACKS_H | ||||||
|  |  | ||||||
| #include "view.h" | #include "view.h" | ||||||
|  |  | ||||||
| class cViewTracks : public cView { | class cViewTracks : public cView { | ||||||
| private: | private: | ||||||
|     cViewListAudioTracks *viewList; |     cViewListAudioTracks *viewList; | ||||||
|     cVeDtBackground *veBackground; |     cVeDtBackground *veBackground; | ||||||
|     cVeDtHeader *veHeader; |     cVeDtHeader *veHeader; | ||||||
|     bool change; |     bool change; | ||||||
|     void SetViewElements(void); |     void SetViewElements(void); | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
|     void ClearVariables(void); |     void ClearVariables(void); | ||||||
| public: | public: | ||||||
|     cViewTracks(void); |     cViewTracks(void); | ||||||
|     virtual ~cViewTracks(void); |     virtual ~cViewTracks(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void AddViewList(cViewList *viewList); |     void AddViewList(cViewList *viewList); | ||||||
|     void PreCache(void); |     void PreCache(void); | ||||||
|     void SetTitle(const char *title); |     void SetTitle(const char *title); | ||||||
|     void SetNumtracks(int numTracks); |     void SetNumtracks(int numTracks); | ||||||
|     void SetTracks(const char * const *tracks); |     void SetTracks(const char * const *tracks); | ||||||
|     void SetAudiochannel(int audioChannel); |     void SetAudiochannel(int audioChannel); | ||||||
|     void SetCurrentTrack(int index); |     void SetCurrentTrack(int index); | ||||||
|     void Flush(void); |     void Flush(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__VIEWDISPLAYTRACKS_H | #endif //__VIEWDISPLAYTRACKS_H | ||||||
| @@ -1,52 +1,52 @@ | |||||||
| #include "viewdisplayvolume.h" | #include "viewdisplayvolume.h" | ||||||
|  |  | ||||||
| /************************************************************************************ | /************************************************************************************ | ||||||
| * cViewVolume | * cViewVolume | ||||||
| ************************************************************************************/ | ************************************************************************************/ | ||||||
|  |  | ||||||
| cViewVolume::cViewVolume(void) { | cViewVolume::cViewVolume(void) { | ||||||
|     viewId = eViewType::DisplayVolume; |     viewId = eViewType::DisplayVolume; | ||||||
|     viewName = strdup("displayvolume"); |     viewName = strdup("displayvolume"); | ||||||
|     numViewElements = (int)eVeDisplayVolume::count; |     numViewElements = (int)eVeDisplayVolume::count; | ||||||
|     viewElements = new cViewElement*[numViewElements]; |     viewElements = new cViewElement*[numViewElements]; | ||||||
|     for (int i=0; i < numViewElements; i++) { |     for (int i=0; i < numViewElements; i++) { | ||||||
|         viewElements[i] = NULL; |         viewElements[i] = NULL; | ||||||
|     } |     } | ||||||
|     SetViewElements(); |     SetViewElements(); | ||||||
|     ClearVariables(); |     ClearVariables(); | ||||||
|     veVolume = NULL; |     veVolume = NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| cViewVolume::~cViewVolume() { | cViewVolume::~cViewVolume() { | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewVolume::SetViewElements(void) { | void cViewVolume::SetViewElements(void) { | ||||||
|     viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayVolume::background)); |     viewElementNames.insert(pair<string, int>("background", (int)eVeDisplayVolume::background)); | ||||||
|     viewElementNames.insert(pair<string, int>("volume", (int)eVeDisplayVolume::volume)); |     viewElementNames.insert(pair<string, int>("volume", (int)eVeDisplayVolume::volume)); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewVolume::SetViewElementObjects(void) { | void cViewVolume::SetViewElementObjects(void) { | ||||||
|     if (!viewElements[(int)eVeDisplayVolume::volume]) |     if (!viewElements[(int)eVeDisplayVolume::volume]) | ||||||
|         return; |         return; | ||||||
|     veVolume = dynamic_cast<cVeVolume*>(viewElements[(int)eVeDisplayVolume::volume]); |     veVolume = dynamic_cast<cVeVolume*>(viewElements[(int)eVeDisplayVolume::volume]); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewVolume::ClearVariables(void) { | void cViewVolume::ClearVariables(void) { | ||||||
|     init = true; |     init = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewVolume::SetVolume(int current, int total, bool mute) { | void cViewVolume::SetVolume(int current, int total, bool mute) { | ||||||
|     if (veVolume) |     if (veVolume) | ||||||
|         veVolume->Set(current, total, mute); |         veVolume->Set(current, total, mute); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewVolume::Flush(void) { | void cViewVolume::Flush(void) { | ||||||
|     if (init) { |     if (init) { | ||||||
|         sdOsd.LockFlush(); |         sdOsd.LockFlush(); | ||||||
|         Render((int)eVeDisplayVolume::background); |         Render((int)eVeDisplayVolume::background); | ||||||
|     } |     } | ||||||
|     Render((int)eVeDisplayVolume::volume); |     Render((int)eVeDisplayVolume::volume); | ||||||
|     cView::Flush(); |     cView::Flush(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,19 +1,19 @@ | |||||||
| #ifndef __VIEWDISPLAYVOLUME_H | #ifndef __VIEWDISPLAYVOLUME_H | ||||||
| #define __VIEWDISPLAYVOLUME_H | #define __VIEWDISPLAYVOLUME_H | ||||||
|  |  | ||||||
| #include "view.h" | #include "view.h" | ||||||
|  |  | ||||||
| class cViewVolume : public cView { | class cViewVolume : public cView { | ||||||
| private: | private: | ||||||
|     cVeVolume *veVolume; |     cVeVolume *veVolume; | ||||||
|     void SetViewElements(void); |     void SetViewElements(void); | ||||||
|     void SetViewElementObjects(void); |     void SetViewElementObjects(void); | ||||||
|     void ClearVariables(void); |     void ClearVariables(void); | ||||||
| public: | public: | ||||||
|     cViewVolume(void); |     cViewVolume(void); | ||||||
|     virtual ~cViewVolume(void); |     virtual ~cViewVolume(void); | ||||||
|     void SetVolume(int current, int total, bool mute); |     void SetVolume(int current, int total, bool mute); | ||||||
|     void Flush(void); |     void Flush(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__VIEWDISPLAYVOLUME_H | #endif //__VIEWDISPLAYVOLUME_H | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,93 +1,93 @@ | |||||||
| #ifndef __VIEWELEMENT_H | #ifndef __VIEWELEMENT_H | ||||||
| #define __VIEWELEMENT_H | #define __VIEWELEMENT_H | ||||||
|  |  | ||||||
| #include <iostream> | #include <iostream> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include <stdint.h> | #include <stdint.h> | ||||||
| #include <vdr/tools.h> | #include <vdr/tools.h> | ||||||
| #include "osdwrapper.h" | #include "osdwrapper.h" | ||||||
| #include "globals.h" | #include "globals.h" | ||||||
| #include "../libskindesignerapi/tokencontainer.h" | #include "../libskindesignerapi/tokencontainer.h" | ||||||
| #include "area.h" | #include "area.h" | ||||||
| #include "animation.h" | #include "animation.h" | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cViewElement | * cViewElement | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cViewElement : public cDetachable, public cFadable, public cShiftable { | class cViewElement : public cDetachable, public cFadable, public cShiftable { | ||||||
| protected: | protected: | ||||||
|     cSdOsd *sdOsd; |     cSdOsd *sdOsd; | ||||||
|     int id; |     int id; | ||||||
|     bool init; |     bool init; | ||||||
|     bool drawn; |     bool drawn; | ||||||
|     bool dirty; |     bool dirty; | ||||||
|     bool blocked; |     bool blocked; | ||||||
|     bool detached; |     bool detached; | ||||||
|     bool waitOnWakeup; |     bool waitOnWakeup; | ||||||
|     bool scrollingStarted; |     bool scrollingStarted; | ||||||
|     bool startAnimation; |     bool startAnimation; | ||||||
|     cGlobals *globals; |     cGlobals *globals; | ||||||
|     cRect container; |     cRect container; | ||||||
|     cViewElementAttribs *attribs; |     cViewElementAttribs *attribs; | ||||||
|     cList<cAreaNode> areaNodes; |     cList<cAreaNode> areaNodes; | ||||||
|     skindesignerapi::cTokenContainer *tokenContainer; |     skindesignerapi::cTokenContainer *tokenContainer; | ||||||
|     cList<cAnimation> scrollers; |     cList<cAnimation> scrollers; | ||||||
|     cAnimation *detacher; |     cAnimation *detacher; | ||||||
|     cAnimation *fader; |     cAnimation *fader; | ||||||
|     cAnimation *shifter; |     cAnimation *shifter; | ||||||
|     void InheritTokenContainer(void); |     void InheritTokenContainer(void); | ||||||
|     void InheritTokenContainerDeep(void); |     void InheritTokenContainerDeep(void); | ||||||
|     virtual bool DoScroll(void) { return true; }; |     virtual bool DoScroll(void) { return true; }; | ||||||
|     cPoint ShiftStart(cRect &shiftbox); |     cPoint ShiftStart(cRect &shiftbox); | ||||||
| public: | public: | ||||||
|     cViewElement(void); |     cViewElement(void); | ||||||
|     cViewElement(const cViewElement &other); |     cViewElement(const cViewElement &other); | ||||||
|     virtual ~cViewElement(void); |     virtual ~cViewElement(void); | ||||||
|     void SetOsd(cSdOsd *osd) { sdOsd = osd; }; |     void SetOsd(cSdOsd *osd) { sdOsd = osd; }; | ||||||
|     static cViewElement *CreateViewElement(const char *name, const char *viewname); |     static cViewElement *CreateViewElement(const char *name, const char *viewname); | ||||||
|     void SetId(int id) { this->id = id; }; |     void SetId(int id) { this->id = id; }; | ||||||
|     void SetGlobals(cGlobals *globals); |     void SetGlobals(cGlobals *globals); | ||||||
|     virtual void SetTokenContainer(void); |     virtual void SetTokenContainer(void); | ||||||
|     void SetDetached(void) { detached = true; }; |     void SetDetached(void) { detached = true; }; | ||||||
|     void UnsetWaitOnWakeup(void) { waitOnWakeup = false; }; |     void UnsetWaitOnWakeup(void) { waitOnWakeup = false; }; | ||||||
|     bool Detached(void); |     bool Detached(void); | ||||||
|     void SetContainer(int x, int y, int width, int height); |     void SetContainer(int x, int y, int width, int height); | ||||||
|     void SetAttributes(vector<stringpair> &attributes); |     void SetAttributes(vector<stringpair> &attributes); | ||||||
|     void AddArea(cAreaNode *area); |     void AddArea(cAreaNode *area); | ||||||
|     void SetAreaX(int x); |     void SetAreaX(int x); | ||||||
|     void SetAreaY(int y); |     void SetAreaY(int y); | ||||||
|     void SetAreaWidth(int width); |     void SetAreaWidth(int width); | ||||||
|     void SetAreaHeight(int height); |     void SetAreaHeight(int height); | ||||||
|     void Cache(void); |     void Cache(void); | ||||||
|     virtual void Close(void); |     virtual void Close(void); | ||||||
|     virtual void Clear(void); |     virtual void Clear(void); | ||||||
|     void Hide(void); |     void Hide(void); | ||||||
|     void Show(void); |     void Show(void); | ||||||
|     void WakeUp(void); |     void WakeUp(void); | ||||||
|     bool Execute(void); |     bool Execute(void); | ||||||
|     void SetDirty(void) { dirty = true; }; |     void SetDirty(void) { dirty = true; }; | ||||||
|     bool Dirty(void) { return dirty; }; |     bool Dirty(void) { return dirty; }; | ||||||
|     void SetPosition(int newX, int newY, int newWidth, int newHeight); |     void SetPosition(int newX, int newY, int newWidth, int newHeight); | ||||||
|     virtual void Render(void); |     virtual void Render(void); | ||||||
|     void StopScrolling(bool deletePixmaps = true); |     void StopScrolling(bool deletePixmaps = true); | ||||||
|     eOrientation Orientation(void) { return attribs->Orientation(); }; |     eOrientation Orientation(void) { return attribs->Orientation(); }; | ||||||
|     virtual int Delay(void) { return attribs->Delay(); }; |     virtual int Delay(void) { return attribs->Delay(); }; | ||||||
|     void ParseDetached(void); |     void ParseDetached(void); | ||||||
|     void RenderDetached(void); |     void RenderDetached(void); | ||||||
|     bool Shifting(void); |     bool Shifting(void); | ||||||
|     bool Fading(void); |     bool Fading(void); | ||||||
|     int FadeTime(void); |     int FadeTime(void); | ||||||
|     int ShiftTime(void); |     int ShiftTime(void); | ||||||
|     int ShiftMode(void); |     int ShiftMode(void); | ||||||
|     void StartAnimation(void); |     void StartAnimation(void); | ||||||
|     virtual void SetTransparency(int transparency, bool force = false); |     virtual void SetTransparency(int transparency, bool force = false); | ||||||
|     virtual void SetPosition(cPoint &position, cPoint &reference, bool force = false); |     virtual void SetPosition(cPoint &position, cPoint &reference, bool force = false); | ||||||
|     cRect CoveredArea(void); |     cRect CoveredArea(void); | ||||||
|     void Flush(void); |     void Flush(void); | ||||||
|     virtual bool Parse(bool forced = false); |     virtual bool Parse(bool forced = false); | ||||||
|     cFunction *GetFunction(const char *name); |     cFunction *GetFunction(const char *name); | ||||||
|     virtual void Debug(bool full = false); |     virtual void Debug(bool full = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__VIEWELEMENT_H | #endif //__VIEWELEMENT_H | ||||||
| @@ -1,36 +1,36 @@ | |||||||
| #include "viewelementplugin.h" | #include "viewelementplugin.h" | ||||||
| #include "../config.h" | #include "../config.h" | ||||||
|  |  | ||||||
| cVePlugin::cVePlugin(void) { | cVePlugin::cVePlugin(void) { | ||||||
|     plugId = -1; |     plugId = -1; | ||||||
|     viewId = -1; |     viewId = -1; | ||||||
| } | } | ||||||
|  |  | ||||||
| cVePlugin::~cVePlugin(void) { | cVePlugin::~cVePlugin(void) { | ||||||
| } | } | ||||||
|  |  | ||||||
| void cVePlugin::Close(void) { | void cVePlugin::Close(void) { | ||||||
|     cViewElement::Close(); |     cViewElement::Close(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cVePlugin::SetTokenContainer(void) { | void cVePlugin::SetTokenContainer(void) { | ||||||
|     skindesignerapi::cTokenContainer *tkVe = plgManager->GetTokenContainerVE(plugId, viewId, id); |     skindesignerapi::cTokenContainer *tkVe = plgManager->GetTokenContainerVE(plugId, viewId, id); | ||||||
|     if (!tkVe) |     if (!tkVe) | ||||||
|         return; |         return; | ||||||
|     tokenContainer = new skindesignerapi::cTokenContainer(*tkVe); |     tokenContainer = new skindesignerapi::cTokenContainer(*tkVe); | ||||||
|     InheritTokenContainer(); |     InheritTokenContainer(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cVePlugin::Set(skindesignerapi::cTokenContainer *tk) { | void cVePlugin::Set(skindesignerapi::cTokenContainer *tk) { | ||||||
|     tokenContainer->Clear(); |     tokenContainer->Clear(); | ||||||
|     tokenContainer->SetTokens(tk); |     tokenContainer->SetTokens(tk); | ||||||
|     SetDirty(); |     SetDirty(); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cVePlugin::Parse(bool forced) { | bool cVePlugin::Parse(bool forced) { | ||||||
|     if (!cViewElement::Parse(forced)) |     if (!cViewElement::Parse(forced)) | ||||||
|         return false; |         return false; | ||||||
|     if (!dirty) |     if (!dirty) | ||||||
|         return false; |         return false; | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,22 +1,22 @@ | |||||||
| #ifndef __VIEWELEMENTPLUGIN_H | #ifndef __VIEWELEMENTPLUGIN_H | ||||||
| #define __VIEWELEMENTPLUGIN_H | #define __VIEWELEMENTPLUGIN_H | ||||||
|  |  | ||||||
| #include "viewelement.h" | #include "viewelement.h" | ||||||
|  |  | ||||||
| class cVePlugin : public cViewElement { | class cVePlugin : public cViewElement { | ||||||
| private: | private: | ||||||
|     int plugId; |     int plugId; | ||||||
|     int viewId; |     int viewId; | ||||||
| public: | public: | ||||||
|     cVePlugin(void); |     cVePlugin(void); | ||||||
|     virtual ~cVePlugin(void); |     virtual ~cVePlugin(void); | ||||||
|     void SetPluginId(int plugId) { this->plugId = plugId; }; |     void SetPluginId(int plugId) { this->plugId = plugId; }; | ||||||
|     void SetViewId(int viewId) { this->viewId = viewId; }; |     void SetViewId(int viewId) { this->viewId = viewId; }; | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(skindesignerapi::cTokenContainer *tk); |     void Set(skindesignerapi::cTokenContainer *tk); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
|     const char *Name(void) { return attribs->Name(); }; |     const char *Name(void) { return attribs->Name(); }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__VIEWELEMENTPLUGIN_H | #endif //__VIEWELEMENTPLUGIN_H | ||||||
|   | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,110 +1,110 @@ | |||||||
| #ifndef __VIEWELEMENTSCOMMON_H | #ifndef __VIEWELEMENTSCOMMON_H | ||||||
| #define __VIEWELEMENTSCOMMON_H | #define __VIEWELEMENTSCOMMON_H | ||||||
|  |  | ||||||
| #include <vdr/menu.h> | #include <vdr/menu.h> | ||||||
| #include "viewelement.h" | #include "viewelement.h" | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDateTime | * cVeDateTime | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDateTime : public cViewElement { | class cVeDateTime : public cViewElement { | ||||||
| private: | private: | ||||||
|     int lastMinute; |     int lastMinute; | ||||||
| public: | public: | ||||||
|     cVeDateTime(void); |     cVeDateTime(void); | ||||||
|     virtual ~cVeDateTime(void); |     virtual ~cVeDateTime(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeTime | * cVeTime | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeTime : public cViewElement { | class cVeTime : public cViewElement { | ||||||
| private: | private: | ||||||
|     int lastSecond; |     int lastSecond; | ||||||
| public: | public: | ||||||
|     cVeTime(void); |     cVeTime(void); | ||||||
|     virtual ~cVeTime(void); |     virtual ~cVeTime(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeMessage | * cVeMessage | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeMessage : public cViewElement { | class cVeMessage : public cViewElement { | ||||||
| private: | private: | ||||||
|     bool changed; |     bool changed; | ||||||
|     eMessageType type; |     eMessageType type; | ||||||
|     char *text; |     char *text; | ||||||
| public: | public: | ||||||
|     cVeMessage(void); |     cVeMessage(void); | ||||||
|     virtual ~cVeMessage(void); |     virtual ~cVeMessage(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(eMessageType type, const char *text); |     void Set(eMessageType type, const char *text); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDevices | * cVeDevices | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDevices : public cViewElement { | class cVeDevices : public cViewElement { | ||||||
| private: | private: | ||||||
|     bool light; |     bool light; | ||||||
|     time_t lastRefresh; |     time_t lastRefresh; | ||||||
|     vector<int> devices; |     vector<int> devices; | ||||||
|     bool initial; |     bool initial; | ||||||
|     int devicesIndex; |     int devicesIndex; | ||||||
|     cMutex mutexDevices; |     cMutex mutexDevices; | ||||||
|     int numDevices; |     int numDevices; | ||||||
|     int* lastSignalStrength; |     int* lastSignalStrength; | ||||||
|     int* lastSignalQuality; |     int* lastSignalQuality; | ||||||
|     bool* recDevices; |     bool* recDevices; | ||||||
|     void Init(void); |     void Init(void); | ||||||
| public: | public: | ||||||
|     cVeDevices(void); |     cVeDevices(void); | ||||||
|     virtual ~cVeDevices(void); |     virtual ~cVeDevices(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeCurrentWeather | * cVeCurrentWeather | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeCurrentWeather : public cViewElement { | class cVeCurrentWeather : public cViewElement { | ||||||
| private: | private: | ||||||
| public: | public: | ||||||
|     cVeCurrentWeather(void); |     cVeCurrentWeather(void); | ||||||
|     virtual ~cVeCurrentWeather(void); |     virtual ~cVeCurrentWeather(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeCustomTokens | * cVeCustomTokens | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeCustomTokens : public cViewElement { | class cVeCustomTokens : public cViewElement { | ||||||
| private: | private: | ||||||
| public: | public: | ||||||
|     cVeCustomTokens(void); |     cVeCustomTokens(void); | ||||||
|     virtual ~cVeCustomTokens(void); |     virtual ~cVeCustomTokens(void); | ||||||
|     void Reset(void); |     void Reset(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeVolume | * cVeVolume | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeVolume : public cViewElement { | class cVeVolume : public cViewElement { | ||||||
| private: | private: | ||||||
|     int current; |     int current; | ||||||
|     int total; |     int total; | ||||||
|     bool mute; |     bool mute; | ||||||
|     bool changed; |     bool changed; | ||||||
| public: | public: | ||||||
|     cVeVolume(void); |     cVeVolume(void); | ||||||
|     virtual ~cVeVolume(void); |     virtual ~cVeVolume(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(int current, int total, bool mute); |     void Set(int current, int total, bool mute); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| #endif //__VIEWELEMENTSCOMMON_H | #endif //__VIEWELEMENTSCOMMON_H | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,145 +1,145 @@ | |||||||
| #ifndef __VIEWELEMENTSDC_H | #ifndef __VIEWELEMENTSDC_H | ||||||
| #define __VIEWELEMENTSDC_H | #define __VIEWELEMENTSDC_H | ||||||
|  |  | ||||||
| #include "viewelement.h" | #include "viewelement.h" | ||||||
| #include "../extensions/scrapmanager.h" | #include "../extensions/scrapmanager.h" | ||||||
| #include "../services/dvbapi.h" | #include "../services/dvbapi.h" | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDcChannelInfo | * cVeDcChannelInfo | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDcChannelInfo : public cViewElement { | class cVeDcChannelInfo : public cViewElement { | ||||||
| private: | private: | ||||||
| public: | public: | ||||||
|     cVeDcChannelInfo(void); |     cVeDcChannelInfo(void); | ||||||
|     virtual ~cVeDcChannelInfo(void); |     virtual ~cVeDcChannelInfo(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cChannel *c, int number); |     void Set(const cChannel *c, int number); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDcChannelGroup | * cVeDcChannelGroup | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDcChannelGroup : public cViewElement { | class cVeDcChannelGroup : public cViewElement { | ||||||
| private: | private: | ||||||
|     const char *GetChannelSep(const cChannel *c, bool prev); |     const char *GetChannelSep(const cChannel *c, bool prev); | ||||||
| public: | public: | ||||||
|     cVeDcChannelGroup(void); |     cVeDcChannelGroup(void); | ||||||
|     virtual ~cVeDcChannelGroup(void); |     virtual ~cVeDcChannelGroup(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cChannel *c); |     void Set(const cChannel *c); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDcEpgInfo | * cVeDcEpgInfo | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDcEpgInfo : public cViewElement { | class cVeDcEpgInfo : public cViewElement { | ||||||
| private: | private: | ||||||
|     bool EventHasTimer(const cEvent *e); |     bool EventHasTimer(const cEvent *e); | ||||||
| public: | public: | ||||||
|     cVeDcEpgInfo(void); |     cVeDcEpgInfo(void); | ||||||
|     virtual ~cVeDcEpgInfo(void); |     virtual ~cVeDcEpgInfo(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cEvent *p, const cEvent *f); |     void Set(const cEvent *p, const cEvent *f); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDcProgressBar | * cVeDcProgressBar | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDcProgressBar : public cViewElement { | class cVeDcProgressBar : public cViewElement { | ||||||
| private: | private: | ||||||
|     int currentLast; |     int currentLast; | ||||||
|     int startTime; |     int startTime; | ||||||
|     int duration; |     int duration; | ||||||
|     int GetLiveBuffer(void); |     int GetLiveBuffer(void); | ||||||
| public: | public: | ||||||
|     cVeDcProgressBar(void); |     cVeDcProgressBar(void); | ||||||
|     virtual ~cVeDcProgressBar(void); |     virtual ~cVeDcProgressBar(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cEvent *p); |     void Set(const cEvent *p); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDcStatusInfo | * cVeDcStatusInfo | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDcStatusInfo : public cViewElement { | class cVeDcStatusInfo : public cViewElement { | ||||||
| private: | private: | ||||||
|     bool CheckMails(void); |     bool CheckMails(void); | ||||||
| public: | public: | ||||||
|     cVeDcStatusInfo(void); |     cVeDcStatusInfo(void); | ||||||
|     virtual ~cVeDcStatusInfo(void); |     virtual ~cVeDcStatusInfo(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cChannel *c); |     void Set(const cChannel *c); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDcAudioInfo | * cVeDcAudioInfo | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDcAudioInfo : public cViewElement { | class cVeDcAudioInfo : public cViewElement { | ||||||
| private: | private: | ||||||
|     int lastNumAudioTracks; |     int lastNumAudioTracks; | ||||||
|     int lastAudioChannel; |     int lastAudioChannel; | ||||||
|     char *lastTracDesc; |     char *lastTracDesc; | ||||||
|     char *lastTrackLang; |     char *lastTrackLang; | ||||||
| public: | public: | ||||||
|     cVeDcAudioInfo(void); |     cVeDcAudioInfo(void); | ||||||
|     virtual ~cVeDcAudioInfo(void); |     virtual ~cVeDcAudioInfo(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDcScreenResolution | * cVeDcScreenResolution | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDcScreenResolution : public cViewElement { | class cVeDcScreenResolution : public cViewElement { | ||||||
| private: | private: | ||||||
|     int lastScreenWidth; |     int lastScreenWidth; | ||||||
|     int lastScreenHeight; |     int lastScreenHeight; | ||||||
| public: | public: | ||||||
|     cVeDcScreenResolution(void); |     cVeDcScreenResolution(void); | ||||||
|     virtual ~cVeDcScreenResolution(void); |     virtual ~cVeDcScreenResolution(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDcSignalQuality | * cVeDcSignalQuality | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDcSignalQuality : public cViewElement { | class cVeDcSignalQuality : public cViewElement { | ||||||
| private: | private: | ||||||
|     int lastSignalDisplay; |     int lastSignalDisplay; | ||||||
|     int lastSignalStrength; |     int lastSignalStrength; | ||||||
|     int lastSignalQuality; |     int lastSignalQuality; | ||||||
| public: | public: | ||||||
|     cVeDcSignalQuality(void); |     cVeDcSignalQuality(void); | ||||||
|     virtual ~cVeDcSignalQuality(void); |     virtual ~cVeDcSignalQuality(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDcScraperContent | * cVeDcScraperContent | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDcScraperContent : public cViewElement, public cScrapManager { | class cVeDcScraperContent : public cViewElement, public cScrapManager { | ||||||
| private: | private: | ||||||
| public: | public: | ||||||
|     cVeDcScraperContent(void); |     cVeDcScraperContent(void); | ||||||
|     virtual ~cVeDcScraperContent(void); |     virtual ~cVeDcScraperContent(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cEvent *e); |     void Set(const cEvent *e); | ||||||
| }; | }; | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDcEcmInfo | * cVeDcEcmInfo | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDcEcmInfo : public cViewElement { | class cVeDcEcmInfo : public cViewElement { | ||||||
| private: | private: | ||||||
|     int channelSid; |     int channelSid; | ||||||
|     sDVBAPIEcmInfo lastEcmInfo; |     sDVBAPIEcmInfo lastEcmInfo; | ||||||
|     bool CompareECMInfos(sDVBAPIEcmInfo *ecmInfo); |     bool CompareECMInfos(sDVBAPIEcmInfo *ecmInfo); | ||||||
| public: | public: | ||||||
|     cVeDcEcmInfo(void); |     cVeDcEcmInfo(void); | ||||||
|     virtual ~cVeDcEcmInfo(void); |     virtual ~cVeDcEcmInfo(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cChannel *c); |     void Set(const cChannel *c); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__VIEWELEMENTSDC_H | #endif //__VIEWELEMENTSDC_H | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,250 +1,250 @@ | |||||||
| #ifndef __VIEWELEMENTSDM_H | #ifndef __VIEWELEMENTSDM_H | ||||||
| #define __VIEWELEMENTSDM_H | #define __VIEWELEMENTSDM_H | ||||||
|  |  | ||||||
| #include "viewelement.h" | #include "viewelement.h" | ||||||
| #include "../extensions/scrapmanager.h" | #include "../extensions/scrapmanager.h" | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmHeader | * cVeDmHeader | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmHeader : public cViewElement { | class cVeDmHeader : public cViewElement { | ||||||
| private: | private: | ||||||
|     char *title; |     char *title; | ||||||
|     char *channelName; |     char *channelName; | ||||||
|     int channelNumber; |     int channelNumber; | ||||||
|     char *channelId; |     char *channelId; | ||||||
|     bool epgSearchFav; |     bool epgSearchFav; | ||||||
| public: | public: | ||||||
|     cVeDmHeader(void); |     cVeDmHeader(void); | ||||||
|     virtual ~cVeDmHeader(void); |     virtual ~cVeDmHeader(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetTitle(const char *title); |     void SetTitle(const char *title); | ||||||
|     void SetChannel(const cChannel *channel); |     void SetChannel(const cChannel *channel); | ||||||
|     void Set(eMenuCategory menuCat); |     void Set(eMenuCategory menuCat); | ||||||
|     void IsEpgSearchFav(bool isFav) { epgSearchFav = isFav;} ; |     void IsEpgSearchFav(bool isFav) { epgSearchFav = isFav;} ; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmSortmode | * cVeDmSortmode | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmSortmode : public cViewElement { | class cVeDmSortmode : public cViewElement { | ||||||
| private: | private: | ||||||
|     eMenuSortMode sortMode; |     eMenuSortMode sortMode; | ||||||
|     eMenuSortMode lastSortMode; |     eMenuSortMode lastSortMode; | ||||||
| public: | public: | ||||||
|     cVeDmSortmode(void); |     cVeDmSortmode(void); | ||||||
|     virtual ~cVeDmSortmode(void); |     virtual ~cVeDmSortmode(void); | ||||||
|     void Reset(void) { lastSortMode = msmUnknown; } |     void Reset(void) { lastSortMode = msmUnknown; } | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(eMenuSortMode sortMode); |     void Set(eMenuSortMode sortMode); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmColorbuttons | * cVeDmColorbuttons | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmColorbuttons : public cViewElement { | class cVeDmColorbuttons : public cViewElement { | ||||||
| private: | private: | ||||||
|     bool changed; |     bool changed; | ||||||
|     char *red; |     char *red; | ||||||
|     char *green; |     char *green; | ||||||
|     char *yellow; |     char *yellow; | ||||||
|     char *blue; |     char *blue; | ||||||
| public: | public: | ||||||
|     cVeDmColorbuttons(void); |     cVeDmColorbuttons(void); | ||||||
|     virtual ~cVeDmColorbuttons(void); |     virtual ~cVeDmColorbuttons(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetButtons(const char *red, const char *green, const char *yellow, const char *blue); |     void SetButtons(const char *red, const char *green, const char *yellow, const char *blue); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmScrollbar | * cVeDmScrollbar | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmScrollbar : public cViewElement { | class cVeDmScrollbar : public cViewElement { | ||||||
| private: | private: | ||||||
| public: | public: | ||||||
|     cVeDmScrollbar(void); |     cVeDmScrollbar(void); | ||||||
|     virtual ~cVeDmScrollbar(void); |     virtual ~cVeDmScrollbar(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetList(int numDisplayed, int offset, int numMax); |     void SetList(int numDisplayed, int offset, int numMax); | ||||||
|     void SetDetail(int height, int offset, bool end); |     void SetDetail(int height, int offset, bool end); | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmTimers | * cVeDmTimers | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmTimers : public cViewElement { | class cVeDmTimers : public cViewElement { | ||||||
| private: | private: | ||||||
|     int timerIndex; |     int timerIndex; | ||||||
| public: | public: | ||||||
|     cVeDmTimers(void); |     cVeDmTimers(void); | ||||||
|     virtual ~cVeDmTimers(void); |     virtual ~cVeDmTimers(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmCurrentschedule | * cVeDmCurrentschedule | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmCurrentschedule : public cViewElement, public cScrapManager { | class cVeDmCurrentschedule : public cViewElement, public cScrapManager { | ||||||
| private: | private: | ||||||
|     const char *rec; |     const char *rec; | ||||||
|     void ParseFromChannel(const cChannel *channel); |     void ParseFromChannel(const cChannel *channel); | ||||||
|     void ParseFromRecording(const cRecording *recording); |     void ParseFromRecording(const cRecording *recording); | ||||||
|     void RecName(string &path, string &name, string &folder); |     void RecName(string &path, string &name, string &folder); | ||||||
| public: | public: | ||||||
|     cVeDmCurrentschedule(void); |     cVeDmCurrentschedule(void); | ||||||
|     virtual ~cVeDmCurrentschedule(void); |     virtual ~cVeDmCurrentschedule(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetRecording(const char *currentRec); |     void SetRecording(const char *currentRec); | ||||||
|     bool Parse(bool forced = false);     |     bool Parse(bool forced = false);     | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmDiscusage | * cVeDmDiscusage | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmDiscusage : public cViewElement { | class cVeDmDiscusage : public cViewElement { | ||||||
| private: | private: | ||||||
| public: | public: | ||||||
|     cVeDmDiscusage(void); |     cVeDmDiscusage(void); | ||||||
|     virtual ~cVeDmDiscusage(void); |     virtual ~cVeDmDiscusage(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmSystemload | * cVeDmSystemload | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmSystemload : public cViewElement { | class cVeDmSystemload : public cViewElement { | ||||||
| private: | private: | ||||||
|     double lastSystemLoad; |     double lastSystemLoad; | ||||||
| public: | public: | ||||||
|     cVeDmSystemload(void); |     cVeDmSystemload(void); | ||||||
|     virtual ~cVeDmSystemload(void); |     virtual ~cVeDmSystemload(void); | ||||||
|     void Reset(void) { lastSystemLoad = -1.0f; } |     void Reset(void) { lastSystemLoad = -1.0f; } | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmSystemmemory | * cVeDmSystemmemory | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmSystemmemory : public cViewElement { | class cVeDmSystemmemory : public cViewElement { | ||||||
| private: | private: | ||||||
|     int lastMemUsage; |     int lastMemUsage; | ||||||
| public: | public: | ||||||
|     cVeDmSystemmemory(void); |     cVeDmSystemmemory(void); | ||||||
|     virtual ~cVeDmSystemmemory(void); |     virtual ~cVeDmSystemmemory(void); | ||||||
|     void Reset(void) { lastMemUsage = -1; } |     void Reset(void) { lastMemUsage = -1; } | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmTemperatures | * cVeDmTemperatures | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmTemperatures : public cViewElement { | class cVeDmTemperatures : public cViewElement { | ||||||
| private: | private: | ||||||
|     int lastCpuTemp; |     int lastCpuTemp; | ||||||
|     int lastGpuTemp; |     int lastGpuTemp; | ||||||
| public: | public: | ||||||
|     cVeDmTemperatures(void); |     cVeDmTemperatures(void); | ||||||
|     virtual ~cVeDmTemperatures(void); |     virtual ~cVeDmTemperatures(void); | ||||||
|     void Reset(void) { lastCpuTemp = -1; lastGpuTemp = -1; } |     void Reset(void) { lastCpuTemp = -1; lastGpuTemp = -1; } | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmVdrstatistics | * cVeDmVdrstatistics | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmVdrstatistics : public cViewElement { | class cVeDmVdrstatistics : public cViewElement { | ||||||
| private: | private: | ||||||
|     string lastVdrCPU; |     string lastVdrCPU; | ||||||
|     string lastVdrMEM; |     string lastVdrMEM; | ||||||
| public: | public: | ||||||
|     cVeDmVdrstatistics(void); |     cVeDmVdrstatistics(void); | ||||||
|     virtual ~cVeDmVdrstatistics(void); |     virtual ~cVeDmVdrstatistics(void); | ||||||
|     void Reset(void) { lastVdrCPU = "undefined"; lastVdrMEM = "undefined"; } |     void Reset(void) { lastVdrCPU = "undefined"; lastVdrMEM = "undefined"; } | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmLastrecordings | * cVeDmLastrecordings | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmLastrecordings : public cViewElement, public cScrapManager { | class cVeDmLastrecordings : public cViewElement, public cScrapManager { | ||||||
| private: | private: | ||||||
|     int recIndex; |     int recIndex; | ||||||
|     void RecName(string &path, string &name, string &folder); |     void RecName(string &path, string &name, string &folder); | ||||||
| public: | public: | ||||||
|     cVeDmLastrecordings(void); |     cVeDmLastrecordings(void); | ||||||
|     virtual ~cVeDmLastrecordings(void); |     virtual ~cVeDmLastrecordings(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmDetailheaderEpg | * cVeDmDetailheaderEpg | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmDetailheaderEpg : public cViewElement, public cScrapManager { | class cVeDmDetailheaderEpg : public cViewElement, public cScrapManager { | ||||||
| private: | private: | ||||||
|     const cEvent *event; |     const cEvent *event; | ||||||
| public: | public: | ||||||
|     cVeDmDetailheaderEpg(void); |     cVeDmDetailheaderEpg(void); | ||||||
|     virtual ~cVeDmDetailheaderEpg(void); |     virtual ~cVeDmDetailheaderEpg(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetEvent(const cEvent *event); |     void SetEvent(const cEvent *event); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmDetailheaderRec | * cVeDmDetailheaderRec | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmDetailheaderRec : public cViewElement, public cScrapManager { | class cVeDmDetailheaderRec : public cViewElement, public cScrapManager { | ||||||
| private: | private: | ||||||
|     const cRecording *recording; |     const cRecording *recording; | ||||||
| public: | public: | ||||||
|     cVeDmDetailheaderRec(void); |     cVeDmDetailheaderRec(void); | ||||||
|     virtual ~cVeDmDetailheaderRec(void); |     virtual ~cVeDmDetailheaderRec(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetRecording(const cRecording *rec); |     void SetRecording(const cRecording *rec); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmDetailheaderPlugin | * cVeDmDetailheaderPlugin | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmDetailheaderPlugin : public cViewElement { | class cVeDmDetailheaderPlugin : public cViewElement { | ||||||
| private: | private: | ||||||
|     int plugId; |     int plugId; | ||||||
|     int plugMenuId; |     int plugMenuId; | ||||||
| public: | public: | ||||||
|     cVeDmDetailheaderPlugin(void); |     cVeDmDetailheaderPlugin(void); | ||||||
|     virtual ~cVeDmDetailheaderPlugin(void); |     virtual ~cVeDmDetailheaderPlugin(void); | ||||||
|     void SetPlugId(int id) { plugId = id; }; |     void SetPlugId(int id) { plugId = id; }; | ||||||
|     void SetPlugMenuId(int id) { plugMenuId = id; }; |     void SetPlugMenuId(int id) { plugMenuId = id; }; | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(skindesignerapi::cTokenContainer *tk); |     void Set(skindesignerapi::cTokenContainer *tk); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDmTablabels | * cVeDmTablabels | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDmTablabels : public cViewElement { | class cVeDmTablabels : public cViewElement { | ||||||
| private: | private: | ||||||
|     int tabIndex; |     int tabIndex; | ||||||
|     int activeTab; |     int activeTab; | ||||||
|     vector<const char*> tabs; |     vector<const char*> tabs; | ||||||
| public: | public: | ||||||
|     cVeDmTablabels(void); |     cVeDmTablabels(void); | ||||||
|     virtual ~cVeDmTablabels(void); |     virtual ~cVeDmTablabels(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetTabs(vector<const char*> &newTabs); |     void SetTabs(vector<const char*> &newTabs); | ||||||
|     void SetActiveTab(int activeTab) { SetDirty(); this->activeTab = activeTab; }; |     void SetActiveTab(int activeTab) { SetDirty(); this->activeTab = activeTab; }; | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
| #endif //__VIEWELEMENTSDM_H | #endif //__VIEWELEMENTSDM_H | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,206 +1,206 @@ | |||||||
| #ifndef __VIEWELEMENTSDR_H | #ifndef __VIEWELEMENTSDR_H | ||||||
| #define __VIEWELEMENTSDR_H | #define __VIEWELEMENTSDR_H | ||||||
|  |  | ||||||
| #include "viewelement.h" | #include "viewelement.h" | ||||||
| #include "../extensions/scrapmanager.h" | #include "../extensions/scrapmanager.h" | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDrRecTitle | * cVeDrRecTitle | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDrRecTitle : public cViewElement { | class cVeDrRecTitle : public cViewElement { | ||||||
| private: | private: | ||||||
|     const cRecording *recording; |     const cRecording *recording; | ||||||
|     char *title; |     char *title; | ||||||
| public: | public: | ||||||
|     cVeDrRecTitle(void); |     cVeDrRecTitle(void); | ||||||
|     virtual ~cVeDrRecTitle(void); |     virtual ~cVeDrRecTitle(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cRecording *recording); |     void Set(const cRecording *recording); | ||||||
|     void Set(const char *title); |     void Set(const char *title); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDrRecInfo | * cVeDrRecInfo | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDrRecInfo : public cViewElement { | class cVeDrRecInfo : public cViewElement { | ||||||
| private: | private: | ||||||
|     const cRecording *recording; |     const cRecording *recording; | ||||||
| public: | public: | ||||||
|     cVeDrRecInfo(void); |     cVeDrRecInfo(void); | ||||||
|     virtual ~cVeDrRecInfo(void); |     virtual ~cVeDrRecInfo(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cRecording *recording); |     void Set(const cRecording *recording); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDrCurrentTime | * cVeDrCurrentTime | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDrCurrentTime : public cViewElement { | class cVeDrCurrentTime : public cViewElement { | ||||||
| private: | private: | ||||||
|     bool changed; |     bool changed; | ||||||
|     char *current; |     char *current; | ||||||
| public: | public: | ||||||
|     cVeDrCurrentTime(void); |     cVeDrCurrentTime(void); | ||||||
|     virtual ~cVeDrCurrentTime(void); |     virtual ~cVeDrCurrentTime(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const char *current); |     void Set(const char *current); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDrTotalTime | * cVeDrTotalTime | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDrTotalTime : public cViewElement { | class cVeDrTotalTime : public cViewElement { | ||||||
| private: | private: | ||||||
|     bool changed; |     bool changed; | ||||||
|     char *total; |     char *total; | ||||||
|     bool timeshiftActive; |     bool timeshiftActive; | ||||||
|     char *timeshiftDuration; |     char *timeshiftDuration; | ||||||
| public: | public: | ||||||
|     cVeDrTotalTime(void); |     cVeDrTotalTime(void); | ||||||
|     virtual ~cVeDrTotalTime(void); |     virtual ~cVeDrTotalTime(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const char *total, bool timeshiftActive, const char *timeshiftDuration); |     void Set(const char *total, bool timeshiftActive, const char *timeshiftDuration); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDrEndTime | * cVeDrEndTime | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDrEndTime : public cViewElement { | class cVeDrEndTime : public cViewElement { | ||||||
| private: | private: | ||||||
|     cString end; |     cString end; | ||||||
|     bool changed; |     bool changed; | ||||||
| public: | public: | ||||||
|     cVeDrEndTime(void); |     cVeDrEndTime(void); | ||||||
|     virtual ~cVeDrEndTime(void); |     virtual ~cVeDrEndTime(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(cString end); |     void Set(cString end); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDrProgressBar | * cVeDrProgressBar | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDrProgressBar : public cViewElement { | class cVeDrProgressBar : public cViewElement { | ||||||
| private: | private: | ||||||
|     int current; |     int current; | ||||||
|     int total; |     int total; | ||||||
|     bool timeshiftActive; |     bool timeshiftActive; | ||||||
|     int timeshiftTotal; |     int timeshiftTotal; | ||||||
|     bool changed; |     bool changed; | ||||||
| public: | public: | ||||||
|     cVeDrProgressBar(void); |     cVeDrProgressBar(void); | ||||||
|     virtual ~cVeDrProgressBar(void); |     virtual ~cVeDrProgressBar(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(int current, int total, bool timeshiftActive, int timeshiftTotal); |     void Set(int current, int total, bool timeshiftActive, int timeshiftTotal); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDrCutMarks | * cVeDrCutMarks | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDrCutMarks : public cViewElement { | class cVeDrCutMarks : public cViewElement { | ||||||
| private: | private: | ||||||
|     int cutmarksIndex; |     int cutmarksIndex; | ||||||
|     const cMarks *marks; |     const cMarks *marks; | ||||||
|     int current; |     int current; | ||||||
|     int total; |     int total; | ||||||
|     bool timeshiftActive; |     bool timeshiftActive; | ||||||
|     int timeshiftTotal; |     int timeshiftTotal; | ||||||
|     int numMarksLast; |     int numMarksLast; | ||||||
|     int *lastMarks; |     int *lastMarks; | ||||||
|     int markActive; |     int markActive; | ||||||
|     bool MarksChanged(void); |     bool MarksChanged(void); | ||||||
|     void RememberMarks(void); |     void RememberMarks(void); | ||||||
| public: | public: | ||||||
|     cVeDrCutMarks(void); |     cVeDrCutMarks(void); | ||||||
|     virtual ~cVeDrCutMarks(void); |     virtual ~cVeDrCutMarks(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cMarks *marks, int current, int total, bool timeshiftActive, int timeshiftTotal); |     void Set(const cMarks *marks, int current, int total, bool timeshiftActive, int timeshiftTotal); | ||||||
|     void Reset(void); |     void Reset(void); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDrControlIcons | * cVeDrControlIcons | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDrControlIcons : public cViewElement { | class cVeDrControlIcons : public cViewElement { | ||||||
| private: | private: | ||||||
|     bool play; |     bool play; | ||||||
|     bool forward; |     bool forward; | ||||||
|     int speed; |     int speed; | ||||||
|     bool changed; |     bool changed; | ||||||
| public: | public: | ||||||
|     cVeDrControlIcons(void); |     cVeDrControlIcons(void); | ||||||
|     virtual ~cVeDrControlIcons(void); |     virtual ~cVeDrControlIcons(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(bool play, bool forward, int speed); |     void Set(bool play, bool forward, int speed); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDrProgressModeonly | * cVeDrProgressModeonly | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDrProgressModeonly : public cViewElement { | class cVeDrProgressModeonly : public cViewElement { | ||||||
| private: | private: | ||||||
|     double fps; |     double fps; | ||||||
|     int current; |     int current; | ||||||
|     int total; |     int total; | ||||||
|     bool changed; |     bool changed; | ||||||
| public: | public: | ||||||
|     cVeDrProgressModeonly(void); |     cVeDrProgressModeonly(void); | ||||||
|     virtual ~cVeDrProgressModeonly(void); |     virtual ~cVeDrProgressModeonly(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(double fps, int current, int total); |     void Set(double fps, int current, int total); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDrJump | * cVeDrJump | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDrJump : public cViewElement { | class cVeDrJump : public cViewElement { | ||||||
| private: | private: | ||||||
|     char *jump; |     char *jump; | ||||||
|     bool changed; |     bool changed; | ||||||
| public: | public: | ||||||
|     cVeDrJump(void); |     cVeDrJump(void); | ||||||
|     virtual ~cVeDrJump(void); |     virtual ~cVeDrJump(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const char *jump); |     void Set(const char *jump); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDrOnPause | * cVeDrOnPause | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDrOnPause : public cViewElement, public cScrapManager { | class cVeDrOnPause : public cViewElement, public cScrapManager { | ||||||
| private: | private: | ||||||
|     int actorsIndex; |     int actorsIndex; | ||||||
|     char *recfilename; |     char *recfilename; | ||||||
| public: | public: | ||||||
|     cVeDrOnPause(void); |     cVeDrOnPause(void); | ||||||
|     virtual ~cVeDrOnPause(void); |     virtual ~cVeDrOnPause(void); | ||||||
|     int Delay(void) { return attribs->Delay() * 1000; }; |     int Delay(void) { return attribs->Delay() * 1000; }; | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const char *recfilename); |     void Set(const char *recfilename); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDrScraperContent | * cVeDrScraperContent | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDrScraperContent : public cViewElement, public cScrapManager { | class cVeDrScraperContent : public cViewElement, public cScrapManager { | ||||||
| private: | private: | ||||||
|     const cRecording *recording; |     const cRecording *recording; | ||||||
| public: | public: | ||||||
|     cVeDrScraperContent(void); |     cVeDrScraperContent(void); | ||||||
|     virtual ~cVeDrScraperContent(void); |     virtual ~cVeDrScraperContent(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(const cRecording *recording); |     void Set(const cRecording *recording); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__VIEWELEMENTSDR_H | #endif //__VIEWELEMENTSDR_H | ||||||
| @@ -1,84 +1,84 @@ | |||||||
| #include "viewelementsdisplaytracks.h" | #include "viewelementsdisplaytracks.h" | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDtBackground | * cVeDtBackground | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| cVeDtBackground::cVeDtBackground(void) { | cVeDtBackground::cVeDtBackground(void) { | ||||||
|     numTracks = 0; |     numTracks = 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| cVeDtBackground::~cVeDtBackground(void) { | cVeDtBackground::~cVeDtBackground(void) { | ||||||
| } | } | ||||||
|  |  | ||||||
| void cVeDtBackground::SetTokenContainer(void) { | void cVeDtBackground::SetTokenContainer(void) { | ||||||
|     tokenContainer = new skindesignerapi::cTokenContainer(); |     tokenContainer = new skindesignerapi::cTokenContainer(); | ||||||
|     tokenContainer->DefineIntToken("{numtracks}", (int)eDTBackgroundIT::numtracks); |     tokenContainer->DefineIntToken("{numtracks}", (int)eDTBackgroundIT::numtracks); | ||||||
|     InheritTokenContainer(); |     InheritTokenContainer(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cVeDtBackground::Set(int numTracks) { | void cVeDtBackground::Set(int numTracks) { | ||||||
|     this->numTracks = numTracks; |     this->numTracks = numTracks; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cVeDtBackground::Parse(bool forced) { | bool cVeDtBackground::Parse(bool forced) { | ||||||
|     if (!cViewElement::Parse(forced)) |     if (!cViewElement::Parse(forced)) | ||||||
|         return false; |         return false; | ||||||
|     tokenContainer->Clear(); |     tokenContainer->Clear(); | ||||||
|     tokenContainer->AddIntToken((int)eDTBackgroundIT::numtracks, numTracks); |     tokenContainer->AddIntToken((int)eDTBackgroundIT::numtracks, numTracks); | ||||||
|     SetDirty(); |     SetDirty(); | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDtHeader | * cVeDtHeader | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| cVeDtHeader::cVeDtHeader(void) { | cVeDtHeader::cVeDtHeader(void) { | ||||||
|     title = NULL; |     title = NULL; | ||||||
|     audioChannel = 0; |     audioChannel = 0; | ||||||
|     numTracks = 0; |     numTracks = 0; | ||||||
|     changed = true; |     changed = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| cVeDtHeader::~cVeDtHeader(void) { | cVeDtHeader::~cVeDtHeader(void) { | ||||||
|     free(title); |     free(title); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cVeDtHeader::SetTokenContainer(void) { | void cVeDtHeader::SetTokenContainer(void) { | ||||||
|     tokenContainer = new skindesignerapi::cTokenContainer(); |     tokenContainer = new skindesignerapi::cTokenContainer(); | ||||||
|     tokenContainer->DefineIntToken("{numtracks}", (int)eDTHeaderIT::numtracks); |     tokenContainer->DefineIntToken("{numtracks}", (int)eDTHeaderIT::numtracks); | ||||||
|     tokenContainer->DefineIntToken("{isstereo}", (int)eDTHeaderIT::isstereo); |     tokenContainer->DefineIntToken("{isstereo}", (int)eDTHeaderIT::isstereo); | ||||||
|     tokenContainer->DefineIntToken("{isac3}", (int)eDTHeaderIT::isac3); |     tokenContainer->DefineIntToken("{isac3}", (int)eDTHeaderIT::isac3); | ||||||
|     tokenContainer->DefineStringToken("{title}", (int)eDTHeaderST::title); |     tokenContainer->DefineStringToken("{title}", (int)eDTHeaderST::title); | ||||||
|     InheritTokenContainer(); |     InheritTokenContainer(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cVeDtHeader::SetTitle(const char *title) { | void cVeDtHeader::SetTitle(const char *title) { | ||||||
|     if (!title) |     if (!title) | ||||||
|         return; |         return; | ||||||
|     free(this->title); |     free(this->title); | ||||||
|     this->title = strdup(title); |     this->title = strdup(title); | ||||||
|     changed = true; |     changed = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cVeDtHeader::SetNumtracks(int numTracks) {     | void cVeDtHeader::SetNumtracks(int numTracks) {     | ||||||
|     this->numTracks = numTracks; |     this->numTracks = numTracks; | ||||||
|     changed = true; |     changed = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cVeDtHeader::SetAudiochannel(int audioChannel) { | void cVeDtHeader::SetAudiochannel(int audioChannel) { | ||||||
|     this->audioChannel = audioChannel; |     this->audioChannel = audioChannel; | ||||||
|     changed = true; |     changed = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cVeDtHeader::Parse(bool forced) { | bool cVeDtHeader::Parse(bool forced) { | ||||||
|     if (!cViewElement::Parse(forced) || !changed) |     if (!cViewElement::Parse(forced) || !changed) | ||||||
|         return false; |         return false; | ||||||
|  |  | ||||||
|     tokenContainer->Clear(); |     tokenContainer->Clear(); | ||||||
|     tokenContainer->AddIntToken((int)eDTHeaderIT::numtracks, numTracks); |     tokenContainer->AddIntToken((int)eDTHeaderIT::numtracks, numTracks); | ||||||
|     tokenContainer->AddIntToken((int)eDTHeaderIT::isstereo, (audioChannel < 0) ? false : true); |     tokenContainer->AddIntToken((int)eDTHeaderIT::isstereo, (audioChannel < 0) ? false : true); | ||||||
|     tokenContainer->AddIntToken((int)eDTHeaderIT::isac3, (audioChannel < 0) ? true : false); |     tokenContainer->AddIntToken((int)eDTHeaderIT::isac3, (audioChannel < 0) ? true : false); | ||||||
|     tokenContainer->AddStringToken((int)eDTHeaderST::title, title); |     tokenContainer->AddStringToken((int)eDTHeaderST::title, title); | ||||||
|     SetDirty(); |     SetDirty(); | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| @@ -1,40 +1,40 @@ | |||||||
| #ifndef __VIEWELEMENTSDT_H | #ifndef __VIEWELEMENTSDT_H | ||||||
| #define __VIEWELEMENTSDT_H | #define __VIEWELEMENTSDT_H | ||||||
|  |  | ||||||
| #include <vdr/menu.h> | #include <vdr/menu.h> | ||||||
| #include "viewelement.h" | #include "viewelement.h" | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDtBackground | * cVeDtBackground | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDtBackground : public cViewElement { | class cVeDtBackground : public cViewElement { | ||||||
| private: | private: | ||||||
|     int numTracks; |     int numTracks; | ||||||
| public: | public: | ||||||
|     cVeDtBackground(void); |     cVeDtBackground(void); | ||||||
|     virtual ~cVeDtBackground(void); |     virtual ~cVeDtBackground(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void Set(int numTracks); |     void Set(int numTracks); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /****************************************************************** | /****************************************************************** | ||||||
| * cVeDtHeader | * cVeDtHeader | ||||||
| ******************************************************************/ | ******************************************************************/ | ||||||
| class cVeDtHeader : public cViewElement { | class cVeDtHeader : public cViewElement { | ||||||
| private: | private: | ||||||
|     char *title; |     char *title; | ||||||
|     int audioChannel; |     int audioChannel; | ||||||
|     int numTracks; |     int numTracks; | ||||||
|     bool changed; |     bool changed; | ||||||
| public: | public: | ||||||
|     cVeDtHeader(void); |     cVeDtHeader(void); | ||||||
|     virtual ~cVeDtHeader(void); |     virtual ~cVeDtHeader(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void SetTitle(const char *title); |     void SetTitle(const char *title); | ||||||
|     void SetNumtracks(int numTracks); |     void SetNumtracks(int numTracks); | ||||||
|     void SetAudiochannel(int audioChannel); |     void SetAudiochannel(int audioChannel); | ||||||
|     bool Parse(bool forced = false); |     bool Parse(bool forced = false); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__VIEWELEMENTSDT_H | #endif //__VIEWELEMENTSDT_H | ||||||
| @@ -1,188 +1,188 @@ | |||||||
| #include "viewgrid.h" | #include "viewgrid.h" | ||||||
| #include "../extensions/helpers.h" | #include "../extensions/helpers.h" | ||||||
|  |  | ||||||
| cViewGrid::cViewGrid(void) { | cViewGrid::cViewGrid(void) { | ||||||
|     id = -1; |     id = -1; | ||||||
|     plugId = -1; |     plugId = -1; | ||||||
|     viewId = -1; |     viewId = -1; | ||||||
|     globals = NULL; |     globals = NULL; | ||||||
|     attribs = new cViewElementAttribs((int)eViewElementAttribs::count); |     attribs = new cViewElementAttribs((int)eViewElementAttribs::count); | ||||||
|     gridTpl = NULL; |     gridTpl = NULL; | ||||||
|     gridsize = GRIDSIZE; |     gridsize = GRIDSIZE; | ||||||
|     grid = new cGridElement*[gridsize]; |     grid = new cGridElement*[gridsize]; | ||||||
|     for (int i=0; i < gridsize; i++) { |     for (int i=0; i < gridsize; i++) { | ||||||
|         grid[i] = NULL; |         grid[i] = NULL; | ||||||
|     } |     } | ||||||
|     gridMin = 0; |     gridMin = 0; | ||||||
|     gridMax = -1; |     gridMax = -1; | ||||||
| } | } | ||||||
|  |  | ||||||
| cViewGrid::~cViewGrid(void) { | cViewGrid::~cViewGrid(void) { | ||||||
|     delete attribs; |     delete attribs; | ||||||
|     delete gridTpl; |     delete gridTpl; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::SetGlobals(cGlobals *globals) { | void cViewGrid::SetGlobals(cGlobals *globals) { | ||||||
|     this->globals = globals; |     this->globals = globals; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::SetContainer(int x, int y, int width, int height) { | void cViewGrid::SetContainer(int x, int y, int width, int height) { | ||||||
|     container.SetX(x); |     container.SetX(x); | ||||||
|     container.SetY(y); |     container.SetY(y); | ||||||
|     container.SetWidth(width); |     container.SetWidth(width); | ||||||
|     container.SetHeight(height); |     container.SetHeight(height); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::SetAttributes(vector<stringpair> &attributes) { | void cViewGrid::SetAttributes(vector<stringpair> &attributes) { | ||||||
|     attribs->Set(attributes); |     attribs->Set(attributes); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::AddGridElement(cGridElement *gridElement) { | void cViewGrid::AddGridElement(cGridElement *gridElement) { | ||||||
|     gridTpl = gridElement; |     gridTpl = gridElement; | ||||||
| } | } | ||||||
|  |  | ||||||
| const char *cViewGrid::Name(void) { | const char *cViewGrid::Name(void) { | ||||||
|     return attribs->Name(); |     return attribs->Name(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::SetTokenContainer(void) { | void cViewGrid::SetTokenContainer(void) { | ||||||
|     if (!gridTpl) |     if (!gridTpl) | ||||||
|         return; |         return; | ||||||
|     gridTpl->SetId(id); |     gridTpl->SetId(id); | ||||||
|     gridTpl->SetPluginId(plugId); |     gridTpl->SetPluginId(plugId); | ||||||
|     gridTpl->SetViewId(viewId); |     gridTpl->SetViewId(viewId); | ||||||
|     gridTpl->SetTokenContainer(); |     gridTpl->SetTokenContainer(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::PreCache(void) { | void cViewGrid::PreCache(void) { | ||||||
|     attribs->SetContainer(container.X(), container.Y(), container.Width(), container.Height()); |     attribs->SetContainer(container.X(), container.Y(), container.Width(), container.Height()); | ||||||
|     attribs->SetGlobals(globals); |     attribs->SetGlobals(globals); | ||||||
|     attribs->Cache(); |     attribs->Cache(); | ||||||
|     gridTpl->SetGlobals(globals); |     gridTpl->SetGlobals(globals); | ||||||
|     gridTpl->SetContainer(attribs->X(), attribs->Y(), attribs->Width(), attribs->Height()); |     gridTpl->SetContainer(attribs->X(), attribs->Y(), attribs->Width(), attribs->Height()); | ||||||
|     gridTpl->Cache(); |     gridTpl->Cache(); | ||||||
|      |      | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::CheckSize(int id) { | void cViewGrid::CheckSize(int id) { | ||||||
|     if (id < gridsize) |     if (id < gridsize) | ||||||
|         return; |         return; | ||||||
|     int newgridsize = gridsize + GRIDSIZE; |     int newgridsize = gridsize + GRIDSIZE; | ||||||
|     while (newgridsize < id) |     while (newgridsize < id) | ||||||
|         newgridsize += gridsize; |         newgridsize += gridsize; | ||||||
|     cGridElement **gridNew = new cGridElement*[newgridsize]; |     cGridElement **gridNew = new cGridElement*[newgridsize]; | ||||||
|     int i=0; |     int i=0; | ||||||
|     bool foundFirst = false; |     bool foundFirst = false; | ||||||
|     for (; i < gridsize; i++) { |     for (; i < gridsize; i++) { | ||||||
|         if (!foundFirst && grid[i]) { |         if (!foundFirst && grid[i]) { | ||||||
|             foundFirst = true; |             foundFirst = true; | ||||||
|             gridMin = i; |             gridMin = i; | ||||||
|         } |         } | ||||||
|         gridNew[i] = grid[i]; |         gridNew[i] = grid[i]; | ||||||
|     } |     } | ||||||
|     gridsize = newgridsize; |     gridsize = newgridsize; | ||||||
|     for (; i < gridsize; i++) { |     for (; i < gridsize; i++) { | ||||||
|         gridNew[i] = NULL; |         gridNew[i] = NULL; | ||||||
|     } |     } | ||||||
|     delete[] grid; |     delete[] grid; | ||||||
|     grid = gridNew; |     grid = gridNew; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::SetTokens(int gId, skindesignerapi::cTokenContainer *tk) { | void cViewGrid::SetTokens(int gId, skindesignerapi::cTokenContainer *tk) { | ||||||
|     if (!grid[gId]) { |     if (!grid[gId]) { | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     grid[gId]->Set(tk); |     grid[gId]->Set(tk); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::PositionGrid(int gId, double x, double y, double width, double height) { | void cViewGrid::PositionGrid(int gId, double x, double y, double width, double height) { | ||||||
|     int gridX = attribs->X() + x * attribs->Width(); |     int gridX = attribs->X() + x * attribs->Width(); | ||||||
|     int gridY = attribs->Y() + y * attribs->Height(); |     int gridY = attribs->Y() + y * attribs->Height(); | ||||||
|     int gridWidth = width * attribs->Width(); |     int gridWidth = width * attribs->Width(); | ||||||
|     int gridHeight = height * attribs->Height(); |     int gridHeight = height * attribs->Height(); | ||||||
|     if (!grid[gId]) { |     if (!grid[gId]) { | ||||||
|         if (gId >= gridMax) |         if (gId >= gridMax) | ||||||
|             gridMax = gId+1; |             gridMax = gId+1; | ||||||
|         grid[gId] = CreateGrid(gridX, gridY, gridWidth, gridHeight); |         grid[gId] = CreateGrid(gridX, gridY, gridWidth, gridHeight); | ||||||
|     } else { |     } else { | ||||||
|         if (grid[gId]->Width() == gridWidth && grid[gId]->Height() == gridHeight) { |         if (grid[gId]->Width() == gridWidth && grid[gId]->Height() == gridHeight) { | ||||||
|             grid[gId]->SetPosition(gridX, gridY, gridWidth, gridHeight); |             grid[gId]->SetPosition(gridX, gridY, gridWidth, gridHeight); | ||||||
|         } else { |         } else { | ||||||
|             cGridElement *ge = CreateGrid(gridX, gridY, gridWidth, gridHeight); |             cGridElement *ge = CreateGrid(gridX, gridY, gridWidth, gridHeight); | ||||||
|             ge->Set(grid[gId]->GetTokenContainer()); |             ge->Set(grid[gId]->GetTokenContainer()); | ||||||
|             grid[gId]->Close(); |             grid[gId]->Close(); | ||||||
|             delete grid[gId]; |             delete grid[gId]; | ||||||
|             grid[gId] = ge; |             grid[gId] = ge; | ||||||
|         } |         } | ||||||
|         grid[gId]->SetDirty(); |         grid[gId]->SetDirty(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::SetCurrentGrid(int gId, bool current) { | void cViewGrid::SetCurrentGrid(int gId, bool current) { | ||||||
|     if (gId >= 0 && grid[gId]) { |     if (gId >= 0 && grid[gId]) { | ||||||
|         grid[gId]->SetCurrent(current); |         grid[gId]->SetCurrent(current); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::DeleteGrid(int gId) { | void cViewGrid::DeleteGrid(int gId) { | ||||||
|     if (!grid[gId]) |     if (!grid[gId]) | ||||||
|         return; |         return; | ||||||
|     grid[gId]->Close(); |     grid[gId]->Close(); | ||||||
|     delete grid[gId]; |     delete grid[gId]; | ||||||
|     grid[gId] = NULL; |     grid[gId] = NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::ClearGrids(void) { | void cViewGrid::ClearGrids(void) { | ||||||
|     for (int i = 0; i < gridsize; i++) { |     for (int i = 0; i < gridsize; i++) { | ||||||
|         if (!grid[i]) |         if (!grid[i]) | ||||||
|             continue; |             continue; | ||||||
|         grid[i]->Close(); |         grid[i]->Close(); | ||||||
|         delete grid[i]; |         delete grid[i]; | ||||||
|         grid[i] = NULL; |         grid[i] = NULL; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::Render(void) { | void cViewGrid::Render(void) { | ||||||
|     for (int i = gridMin; i < gridMax; i++) { |     for (int i = gridMin; i < gridMax; i++) { | ||||||
|         if (grid[i] && grid[i]->Parse()) { |         if (grid[i] && grid[i]->Parse()) { | ||||||
|             grid[i]->Render(); |             grid[i]->Render(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| cGridElement *cViewGrid::CreateGrid(int x, int y, int width, int height) { | cGridElement *cViewGrid::CreateGrid(int x, int y, int width, int height) { | ||||||
|     cGridElement *ge = new cGridElement(*gridTpl); |     cGridElement *ge = new cGridElement(*gridTpl); | ||||||
|     ge->SetAreaX(x); |     ge->SetAreaX(x); | ||||||
|     ge->SetAreaY(y); |     ge->SetAreaY(y); | ||||||
|     ge->SetAreaWidth(width); |     ge->SetAreaWidth(width); | ||||||
|     ge->SetAreaHeight(height); |     ge->SetAreaHeight(height); | ||||||
|     return ge; |     return ge; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::Close(void) { | void cViewGrid::Close(void) { | ||||||
|     ClearGrids(); |     ClearGrids(); | ||||||
|     gridsize = GRIDSIZE; |     gridsize = GRIDSIZE; | ||||||
|     delete[] grid; |     delete[] grid; | ||||||
|     grid = new cGridElement*[gridsize]; |     grid = new cGridElement*[gridsize]; | ||||||
|     for (int i=0; i < gridsize; i++) { |     for (int i=0; i < gridsize; i++) { | ||||||
|         grid[i] = NULL; |         grid[i] = NULL; | ||||||
|     } |     } | ||||||
|     gridMin = 0; |     gridMin = 0; | ||||||
|     gridMax = -1; |     gridMax = -1; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::Hide(void) { | void cViewGrid::Hide(void) { | ||||||
|     for (int i = 0; i < gridsize; i++) { |     for (int i = 0; i < gridsize; i++) { | ||||||
|         if (grid[i]) { |         if (grid[i]) { | ||||||
|             grid[i]->Hide(); |             grid[i]->Hide(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cViewGrid::Show(void) { | void cViewGrid::Show(void) { | ||||||
|     for (int i = 0; i < gridsize; i++) { |     for (int i = 0; i < gridsize; i++) { | ||||||
|         if (grid[i]) { |         if (grid[i]) { | ||||||
|             grid[i]->Show(); |             grid[i]->Show(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,47 +1,47 @@ | |||||||
| #ifndef __VIEWGRID_H | #ifndef __VIEWGRID_H | ||||||
| #define __VIEWGRID_H | #define __VIEWGRID_H | ||||||
|  |  | ||||||
| #define GRIDSIZE 500 | #define GRIDSIZE 500 | ||||||
|  |  | ||||||
| #include "gridelement.h" | #include "gridelement.h" | ||||||
|  |  | ||||||
| class cViewGrid { | class cViewGrid { | ||||||
| protected: | protected: | ||||||
|     cRect container; |     cRect container; | ||||||
|     cGlobals *globals; |     cGlobals *globals; | ||||||
|     cViewElementAttribs *attribs; |     cViewElementAttribs *attribs; | ||||||
|     cGridElement *gridTpl; |     cGridElement *gridTpl; | ||||||
|     int gridsize; |     int gridsize; | ||||||
|     cGridElement **grid; |     cGridElement **grid; | ||||||
|     int gridMin; |     int gridMin; | ||||||
|     int gridMax; |     int gridMax; | ||||||
|     int id; |     int id; | ||||||
|     int viewId; |     int viewId; | ||||||
|     int plugId; |     int plugId; | ||||||
|     cGridElement *CreateGrid(int x, int y, int width, int height); |     cGridElement *CreateGrid(int x, int y, int width, int height); | ||||||
| public: | public: | ||||||
|     cViewGrid(void); |     cViewGrid(void); | ||||||
|     virtual ~cViewGrid(void); |     virtual ~cViewGrid(void); | ||||||
|     void SetGlobals(cGlobals *globals); |     void SetGlobals(cGlobals *globals); | ||||||
|     void SetContainer(int x, int y, int width, int height); |     void SetContainer(int x, int y, int width, int height); | ||||||
|     void SetAttributes(vector<stringpair> &attributes); |     void SetAttributes(vector<stringpair> &attributes); | ||||||
|     void SetId(int id) { this->id = id; }; |     void SetId(int id) { this->id = id; }; | ||||||
|     void SetPluginId(int plugId) { this->plugId = plugId; }; |     void SetPluginId(int plugId) { this->plugId = plugId; }; | ||||||
|     void SetViewId(int viewId) { this->viewId = viewId; }; |     void SetViewId(int viewId) { this->viewId = viewId; }; | ||||||
|     void AddGridElement(cGridElement *gridElement); |     void AddGridElement(cGridElement *gridElement); | ||||||
|     const char *Name(void); |     const char *Name(void); | ||||||
|     void SetTokenContainer(void); |     void SetTokenContainer(void); | ||||||
|     void PreCache(void); |     void PreCache(void); | ||||||
|     void CheckSize(int id); |     void CheckSize(int id); | ||||||
|     void SetTokens(int gId, skindesignerapi::cTokenContainer *tk); |     void SetTokens(int gId, skindesignerapi::cTokenContainer *tk); | ||||||
|     void PositionGrid(int gId, double x, double y, double width, double height); |     void PositionGrid(int gId, double x, double y, double width, double height); | ||||||
|     void SetCurrentGrid(int gId, bool current); |     void SetCurrentGrid(int gId, bool current); | ||||||
|     void DeleteGrid(int gId); |     void DeleteGrid(int gId); | ||||||
|     void ClearGrids(void); |     void ClearGrids(void); | ||||||
|     void Render(void); |     void Render(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void Hide(void); |     void Hide(void); | ||||||
|     void Show(void); |     void Show(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__VIEWGRID_H | #endif //__VIEWGRID_H | ||||||
| @@ -1,155 +1,155 @@ | |||||||
| #ifndef __VIEWLIST_H | #ifndef __VIEWLIST_H | ||||||
| #define __VIEWLIST_H | #define __VIEWLIST_H | ||||||
|  |  | ||||||
| #include "globals.h" | #include "globals.h" | ||||||
| #include "../libskindesignerapi/tokencontainer.h" | #include "../libskindesignerapi/tokencontainer.h" | ||||||
| #include "listelements.h" | #include "listelements.h" | ||||||
| #include "area.h" | #include "area.h" | ||||||
|  |  | ||||||
| class cViewList { | class cViewList { | ||||||
| protected: | protected: | ||||||
|     int plugId; |     int plugId; | ||||||
|     int plugMenuId; |     int plugMenuId; | ||||||
|     cViewListAttribs *attribs; |     cViewListAttribs *attribs; | ||||||
|     cRect container; |     cRect container; | ||||||
|     cGlobals *globals; |     cGlobals *globals; | ||||||
|     int numElements; |     int numElements; | ||||||
|     eOrientation orientation; |     eOrientation orientation; | ||||||
|     cViewElement *listElement; |     cViewElement *listElement; | ||||||
|     cViewElement *currentElement; |     cViewElement *currentElement; | ||||||
|     cListElement **listElements; |     cListElement **listElements; | ||||||
|     virtual void Prepare(int start, int step) {}; |     virtual void Prepare(int start, int step) {}; | ||||||
| public: | public: | ||||||
|     cViewList(void); |     cViewList(void); | ||||||
|     virtual ~cViewList(void); |     virtual ~cViewList(void); | ||||||
|     void SetGlobals(cGlobals *globals);     |     void SetGlobals(cGlobals *globals);     | ||||||
|     void SetContainer(int x, int y, int width, int height); |     void SetContainer(int x, int y, int width, int height); | ||||||
|     void SetAttributes(vector<stringpair> &attributes); |     void SetAttributes(vector<stringpair> &attributes); | ||||||
|     void SetPlugId(int id) { plugId = id; }; |     void SetPlugId(int id) { plugId = id; }; | ||||||
|     void SetPlugMenuId(int id) { plugMenuId = id; }; |     void SetPlugMenuId(int id) { plugMenuId = id; }; | ||||||
|     static cViewList *CreateViewList(const char *name); |     static cViewList *CreateViewList(const char *name); | ||||||
|     static cViewElement *CreateListElement(const char *name); |     static cViewElement *CreateListElement(const char *name); | ||||||
|     static cViewElement *CreateCurrentElement(const char *name); |     static cViewElement *CreateCurrentElement(const char *name); | ||||||
|     void AddListElement(cViewElement *listElement); |     void AddListElement(cViewElement *listElement); | ||||||
|     void AddCurrentElement(cViewElement *currentElement); |     void AddCurrentElement(cViewElement *currentElement); | ||||||
|     virtual void PreCache(void); |     virtual void PreCache(void); | ||||||
|     int NumItems(void); |     int NumItems(void); | ||||||
|     eOrientation Orientation(void); |     eOrientation Orientation(void); | ||||||
|     void Draw(eMenuCategory menuCat); |     void Draw(eMenuCategory menuCat); | ||||||
|     void Clear(void); |     void Clear(void); | ||||||
|     virtual void Close(void); |     virtual void Close(void); | ||||||
|     void SetTransparency(int transparency); |     void SetTransparency(int transparency); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cViewListDefault : public cViewList { | class cViewListDefault : public cViewList { | ||||||
| private: | private: | ||||||
|     cLeMenuDefault **listDefault; |     cLeMenuDefault **listDefault; | ||||||
|     int avrgFontWidth; |     int avrgFontWidth; | ||||||
|     const cFont *listFont; |     const cFont *listFont; | ||||||
|     int *colX; |     int *colX; | ||||||
|     int *colWidths; |     int *colWidths; | ||||||
|     const char *plugName; |     const char *plugName; | ||||||
| protected: | protected: | ||||||
|     void Prepare(int start, int step); |     void Prepare(int start, int step); | ||||||
| public: | public: | ||||||
|     cViewListDefault(void); |     cViewListDefault(void); | ||||||
|     virtual ~cViewListDefault(void); |     virtual ~cViewListDefault(void); | ||||||
|     void SetTabs(int tab1, int tab2, int tab3, int tab4, int tab5); |     void SetTabs(int tab1, int tab2, int tab3, int tab4, int tab5); | ||||||
|     void SetPlugin(const char *plugName) { this->plugName = plugName; }; |     void SetPlugin(const char *plugName) { this->plugName = plugName; }; | ||||||
|     void Set(const char *text, int index, bool current, bool selectable); |     void Set(const char *text, int index, bool current, bool selectable); | ||||||
|     const cFont *GetListFont(void); |     const cFont *GetListFont(void); | ||||||
|     int GetListWidth(void); |     int GetListWidth(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cViewListMain : public cViewList { | class cViewListMain : public cViewList { | ||||||
| private: | private: | ||||||
|     cLeMenuMain **listMain; |     cLeMenuMain **listMain; | ||||||
|     cCeMenuMain *currentMain; |     cCeMenuMain *currentMain; | ||||||
| protected: | protected: | ||||||
|     void Prepare(int start, int step); |     void Prepare(int start, int step); | ||||||
| public: | public: | ||||||
|     cViewListMain(void); |     cViewListMain(void); | ||||||
|     virtual ~cViewListMain(void); |     virtual ~cViewListMain(void); | ||||||
|     void Set(const char *text, int index, bool current, bool selectable); |     void Set(const char *text, int index, bool current, bool selectable); | ||||||
|     const char *GetPlugin(void); |     const char *GetPlugin(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cViewListSchedules : public cViewList { | class cViewListSchedules : public cViewList { | ||||||
| private: | private: | ||||||
|     cLeMenuSchedules **listSchedules; |     cLeMenuSchedules **listSchedules; | ||||||
|     cCeMenuSchedules *currentSchedules; |     cCeMenuSchedules *currentSchedules; | ||||||
|     bool epgSearchFav; |     bool epgSearchFav; | ||||||
| protected: | protected: | ||||||
|     void Prepare(int start, int step); |     void Prepare(int start, int step); | ||||||
| public: | public: | ||||||
|     cViewListSchedules(void); |     cViewListSchedules(void); | ||||||
|     virtual ~cViewListSchedules(void); |     virtual ~cViewListSchedules(void); | ||||||
|     void IsEpgSearchFav(bool isFav) { epgSearchFav = isFav; }; |     void IsEpgSearchFav(bool isFav) { epgSearchFav = isFav; }; | ||||||
|     void Set(const cEvent *event, int index, bool current, bool selectable, const cChannel *channel, bool withDate, eTimerMatch timerMatch); |     void Set(const cEvent *event, int index, bool current, bool selectable, const cChannel *channel, bool withDate, eTimerMatch timerMatch); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cViewListTimers : public cViewList { | class cViewListTimers : public cViewList { | ||||||
| private: | private: | ||||||
|     cLeMenuTimers **listTimers; |     cLeMenuTimers **listTimers; | ||||||
|     cCeMenuTimers *currentTimer; |     cCeMenuTimers *currentTimer; | ||||||
| protected: | protected: | ||||||
|     void Prepare(int start, int step); |     void Prepare(int start, int step); | ||||||
| public: | public: | ||||||
|     cViewListTimers(void); |     cViewListTimers(void); | ||||||
|     virtual ~cViewListTimers(void); |     virtual ~cViewListTimers(void); | ||||||
|     void Set(const cTimer *timer, int index, bool current, bool selectable); |     void Set(const cTimer *timer, int index, bool current, bool selectable); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cViewListChannels : public cViewList { | class cViewListChannels : public cViewList { | ||||||
| private: | private: | ||||||
|     cLeMenuChannels **listChannels; |     cLeMenuChannels **listChannels; | ||||||
|     cCeMenuChannels *currentChannel; |     cCeMenuChannels *currentChannel; | ||||||
| protected: | protected: | ||||||
|     void Prepare(int start, int step); |     void Prepare(int start, int step); | ||||||
| public: | public: | ||||||
|     cViewListChannels(void); |     cViewListChannels(void); | ||||||
|     virtual ~cViewListChannels(void); |     virtual ~cViewListChannels(void); | ||||||
|     void Set(const cChannel *channel, int index, bool current, bool selectable, bool withProvider); |     void Set(const cChannel *channel, int index, bool current, bool selectable, bool withProvider); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cViewListRecordings : public cViewList { | class cViewListRecordings : public cViewList { | ||||||
| private: | private: | ||||||
|     cLeMenuRecordings **listRecordings; |     cLeMenuRecordings **listRecordings; | ||||||
|     cCeMenuRecordings *currentRecording; |     cCeMenuRecordings *currentRecording; | ||||||
| protected: | protected: | ||||||
|     void Prepare(int start, int step); |     void Prepare(int start, int step); | ||||||
| public: | public: | ||||||
|     cViewListRecordings(void); |     cViewListRecordings(void); | ||||||
|     virtual ~cViewListRecordings(void); |     virtual ~cViewListRecordings(void); | ||||||
|     void Set(const cRecording *recording, int index, bool current, bool selectable, int level, int total, int New); |     void Set(const cRecording *recording, int index, bool current, bool selectable, int level, int total, int New); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cViewListPlugin : public cViewList { | class cViewListPlugin : public cViewList { | ||||||
| private: | private: | ||||||
|     cLeMenuPlugin **listPlugin; |     cLeMenuPlugin **listPlugin; | ||||||
|     cCeMenuPlugin *currentPlugin; |     cCeMenuPlugin *currentPlugin; | ||||||
| protected: | protected: | ||||||
|     void Prepare(int start, int step); |     void Prepare(int start, int step); | ||||||
| public: | public: | ||||||
|     cViewListPlugin(void); |     cViewListPlugin(void); | ||||||
|     virtual ~cViewListPlugin(void); |     virtual ~cViewListPlugin(void); | ||||||
|     void Set(skindesignerapi::cTokenContainer *tk, int index, bool current, bool selectable); |     void Set(skindesignerapi::cTokenContainer *tk, int index, bool current, bool selectable); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cViewListAudioTracks : public cViewList { | class cViewListAudioTracks : public cViewList { | ||||||
| private: | private: | ||||||
|     skindesignerapi::cTokenContainer *tokenContainer; |     skindesignerapi::cTokenContainer *tokenContainer; | ||||||
|     int numTracks; |     int numTracks; | ||||||
|     cLeAudioTracks **listAudioTracks; |     cLeAudioTracks **listAudioTracks; | ||||||
| public: | public: | ||||||
|     cViewListAudioTracks(void); |     cViewListAudioTracks(void); | ||||||
|     virtual ~cViewListAudioTracks(void); |     virtual ~cViewListAudioTracks(void); | ||||||
|     void Close(void); |     void Close(void); | ||||||
|     void PreCache(void); |     void PreCache(void); | ||||||
|     void SetNumtracks(int numTracks); |     void SetNumtracks(int numTracks); | ||||||
|     void SetTracks(const char * const *tracks); |     void SetTracks(const char * const *tracks); | ||||||
|     void SetCurrentTrack(int index); |     void SetCurrentTrack(int index); | ||||||
|     void Draw(void); |     void Draw(void); | ||||||
| }; | }; | ||||||
| #endif //__VIEWLIST_H | #endif //__VIEWLIST_H | ||||||
| @@ -1,189 +1,189 @@ | |||||||
| #include "helpers.h" | #include "helpers.h" | ||||||
| #include "libxmlwrapper.h" | #include "libxmlwrapper.h" | ||||||
|  |  | ||||||
| void SkinDesignerXMLErrorHandler (void * userData, xmlErrorPtr error) { | void SkinDesignerXMLErrorHandler (void * userData, xmlErrorPtr error) { | ||||||
|     esyslog("skindesigner: Error in XML: %s", error->message); |     esyslog("skindesigner: Error in XML: %s", error->message); | ||||||
| } | } | ||||||
|  |  | ||||||
| cLibXMLWrapper::cLibXMLWrapper(void) { | cLibXMLWrapper::cLibXMLWrapper(void) { | ||||||
|     ctxt = NULL; |     ctxt = NULL; | ||||||
|     doc = NULL; |     doc = NULL; | ||||||
|     root = NULL; |     root = NULL; | ||||||
|  |  | ||||||
|     initGenericErrorDefaultFunc(NULL); |     initGenericErrorDefaultFunc(NULL); | ||||||
|     xmlSetStructuredErrorFunc(NULL, SkinDesignerXMLErrorHandler); |     xmlSetStructuredErrorFunc(NULL, SkinDesignerXMLErrorHandler); | ||||||
|     ctxt = xmlNewParserCtxt(); |     ctxt = xmlNewParserCtxt(); | ||||||
| } | } | ||||||
|  |  | ||||||
| cLibXMLWrapper::~cLibXMLWrapper() { | cLibXMLWrapper::~cLibXMLWrapper() { | ||||||
|     DeleteDocument(); |     DeleteDocument(); | ||||||
|     xmlFreeParserCtxt(ctxt); |     xmlFreeParserCtxt(ctxt); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cLibXMLWrapper::InitLibXML() { | void cLibXMLWrapper::InitLibXML() { | ||||||
|     xmlInitParser(); |     xmlInitParser(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cLibXMLWrapper::CleanupLibXML() { | void cLibXMLWrapper::CleanupLibXML() { | ||||||
|     xmlCleanupParser(); |     xmlCleanupParser(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cLibXMLWrapper::DeleteDocument(void) { | void cLibXMLWrapper::DeleteDocument(void) { | ||||||
|     if (doc) { |     if (doc) { | ||||||
|         xmlFreeDoc(doc); |         xmlFreeDoc(doc); | ||||||
|         doc = NULL; |         doc = NULL; | ||||||
|     } |     } | ||||||
|     while (!nodeStack.empty()) |     while (!nodeStack.empty()) | ||||||
|         nodeStack.pop(); |         nodeStack.pop(); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cLibXMLWrapper::ReadXMLFile(const char *path, bool validate) { | bool cLibXMLWrapper::ReadXMLFile(const char *path, bool validate) { | ||||||
|     if (!ctxt) { |     if (!ctxt) { | ||||||
|         esyslog("skindesigner: Failed to allocate parser context"); |         esyslog("skindesigner: Failed to allocate parser context"); | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|     if (!FileExists(path)) { |     if (!FileExists(path)) { | ||||||
|         dsyslog("skindesigner: reading XML Template %s failed", path); |         dsyslog("skindesigner: reading XML Template %s failed", path); | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|     if (validate) |     if (validate) | ||||||
|         doc = xmlCtxtReadFile(ctxt, path, NULL, XML_PARSE_NOENT | XML_PARSE_DTDVALID); |         doc = xmlCtxtReadFile(ctxt, path, NULL, XML_PARSE_NOENT | XML_PARSE_DTDVALID); | ||||||
|     else |     else | ||||||
|         doc = xmlCtxtReadFile(ctxt, path, NULL, XML_PARSE_NOENT); |         doc = xmlCtxtReadFile(ctxt, path, NULL, XML_PARSE_NOENT); | ||||||
|  |  | ||||||
|     if (!doc) { |     if (!doc) { | ||||||
|         dsyslog("skindesigner: reading XML Template %s failed", path); |         dsyslog("skindesigner: reading XML Template %s failed", path); | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cLibXMLWrapper::SetDocument(void) { | bool cLibXMLWrapper::SetDocument(void) { | ||||||
|     if (!doc) |     if (!doc) | ||||||
|         return false; |         return false; | ||||||
|     root = xmlDocGetRootElement(doc); |     root = xmlDocGetRootElement(doc); | ||||||
|     nodeStack.push(root); |     nodeStack.push(root); | ||||||
|     if (root == NULL) { |     if (root == NULL) { | ||||||
|         esyslog("skindesigner: ERROR: XML File is empty"); |         esyslog("skindesigner: ERROR: XML File is empty"); | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cLibXMLWrapper::Validate(void) { | bool cLibXMLWrapper::Validate(void) { | ||||||
|     if (!ctxt) |     if (!ctxt) | ||||||
|         return false; |         return false; | ||||||
|     if (ctxt->valid == 0) { |     if (ctxt->valid == 0) { | ||||||
|         esyslog("skindesigner: Failed to validate XML File"); |         esyslog("skindesigner: Failed to validate XML File"); | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cLibXMLWrapper::CheckNodeName(const char *name) { | bool cLibXMLWrapper::CheckNodeName(const char *name) { | ||||||
|     if (nodeStack.empty()) |     if (nodeStack.empty()) | ||||||
|         return false; |         return false; | ||||||
|     xmlNodePtr current = nodeStack.top();  |     xmlNodePtr current = nodeStack.top();  | ||||||
|     if (xmlStrcmp(current->name, (const xmlChar *) name)) { |     if (xmlStrcmp(current->name, (const xmlChar *) name)) { | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| const char *cLibXMLWrapper::NodeName(void) { | const char *cLibXMLWrapper::NodeName(void) { | ||||||
|     xmlNodePtr current = nodeStack.top();  |     xmlNodePtr current = nodeStack.top();  | ||||||
|     return (const char*)current->name; |     return (const char*)current->name; | ||||||
| } | } | ||||||
|  |  | ||||||
| vector<stringpair> cLibXMLWrapper::ParseAttributes(void) { | vector<stringpair> cLibXMLWrapper::ParseAttributes(void) { | ||||||
|     vector<stringpair> attributes; |     vector<stringpair> attributes; | ||||||
|     if (nodeStack.empty()) |     if (nodeStack.empty()) | ||||||
|         return attributes; |         return attributes; | ||||||
|     xmlNodePtr current = nodeStack.top(); |     xmlNodePtr current = nodeStack.top(); | ||||||
|     xmlAttrPtr attrPtr = current->properties; |     xmlAttrPtr attrPtr = current->properties; | ||||||
|     if (attrPtr == NULL) { |     if (attrPtr == NULL) { | ||||||
|         return attributes; |         return attributes; | ||||||
|     } |     } | ||||||
|     while (NULL != attrPtr) { |     while (NULL != attrPtr) { | ||||||
|         string name = (const char*)attrPtr->name; |         string name = (const char*)attrPtr->name; | ||||||
|         xmlChar *value = NULL; |         xmlChar *value = NULL; | ||||||
|         value = xmlGetProp(current, attrPtr->name); |         value = xmlGetProp(current, attrPtr->name); | ||||||
|         if (value) |         if (value) | ||||||
|             attributes.push_back(stringpair((const char*)attrPtr->name, (const char*)value)); |             attributes.push_back(stringpair((const char*)attrPtr->name, (const char*)value)); | ||||||
|         attrPtr = attrPtr->next; |         attrPtr = attrPtr->next; | ||||||
|         if (value) |         if (value) | ||||||
|             xmlFree(value); |             xmlFree(value); | ||||||
|     } |     } | ||||||
|     return attributes; |     return attributes; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cLibXMLWrapper::LevelDown(void) { | bool cLibXMLWrapper::LevelDown(void) { | ||||||
|     if (nodeStack.empty()) |     if (nodeStack.empty()) | ||||||
|         return false; |         return false; | ||||||
|     xmlNodePtr current = nodeStack.top(); |     xmlNodePtr current = nodeStack.top(); | ||||||
|     xmlNodePtr child = current->xmlChildrenNode; |     xmlNodePtr child = current->xmlChildrenNode; | ||||||
|     while (child && child->type != XML_ELEMENT_NODE) { |     while (child && child->type != XML_ELEMENT_NODE) { | ||||||
|         child = child->next; |         child = child->next; | ||||||
|     } |     } | ||||||
|     if (!child) |     if (!child) | ||||||
|         return false; |         return false; | ||||||
|     nodeStack.push(child); |     nodeStack.push(child); | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cLibXMLWrapper::LevelUp(void) { | bool cLibXMLWrapper::LevelUp(void) { | ||||||
|     if (nodeStack.size() == 1) |     if (nodeStack.size() == 1) | ||||||
|         return false; |         return false; | ||||||
|     nodeStack.pop(); |     nodeStack.pop(); | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cLibXMLWrapper::NextNode(void) { | bool cLibXMLWrapper::NextNode(void) { | ||||||
|     xmlNodePtr current = nodeStack.top(); |     xmlNodePtr current = nodeStack.top(); | ||||||
|     current = current->next; |     current = current->next; | ||||||
|     while (current && current->type != XML_ELEMENT_NODE) { |     while (current && current->type != XML_ELEMENT_NODE) { | ||||||
|         current = current->next; |         current = current->next; | ||||||
|     } |     } | ||||||
|     if (!current) |     if (!current) | ||||||
|         return false; |         return false; | ||||||
|     nodeStack.pop(); |     nodeStack.pop(); | ||||||
|     nodeStack.push(current); |     nodeStack.push(current); | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cLibXMLWrapper::GetAttribute(string &name, string &value) { | bool cLibXMLWrapper::GetAttribute(string &name, string &value) { | ||||||
|     bool ok = false; |     bool ok = false; | ||||||
|     xmlNodePtr current = nodeStack.top(); |     xmlNodePtr current = nodeStack.top(); | ||||||
|     xmlAttrPtr attr = current->properties; |     xmlAttrPtr attr = current->properties; | ||||||
|     if (attr == NULL) { |     if (attr == NULL) { | ||||||
|         return ok; |         return ok; | ||||||
|     } |     } | ||||||
|     xmlChar *xmlValue = NULL; |     xmlChar *xmlValue = NULL; | ||||||
|     while (NULL != attr) { |     while (NULL != attr) { | ||||||
|         if (xmlStrcmp(attr->name, (const xmlChar *) name.c_str())) { |         if (xmlStrcmp(attr->name, (const xmlChar *) name.c_str())) { | ||||||
|             attr = attr->next; |             attr = attr->next; | ||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
|         ok = true; |         ok = true; | ||||||
|         xmlValue = xmlGetProp(current, attr->name); |         xmlValue = xmlGetProp(current, attr->name); | ||||||
|         if (xmlValue) { |         if (xmlValue) { | ||||||
|             value = (const char*)xmlValue; |             value = (const char*)xmlValue; | ||||||
|             xmlFree(xmlValue); |             xmlFree(xmlValue); | ||||||
|         } |         } | ||||||
|         break; |         break; | ||||||
|     } |     } | ||||||
|     return ok; |     return ok; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cLibXMLWrapper::GetNodeValue(string &value) { | bool cLibXMLWrapper::GetNodeValue(string &value) { | ||||||
|     xmlChar *val = NULL; |     xmlChar *val = NULL; | ||||||
|     xmlNodePtr current = nodeStack.top(); |     xmlNodePtr current = nodeStack.top(); | ||||||
|     val = xmlNodeListGetString(doc, current->xmlChildrenNode, 1); |     val = xmlNodeListGetString(doc, current->xmlChildrenNode, 1); | ||||||
|     if (val) { |     if (val) { | ||||||
|         value = (const char*)val; |         value = (const char*)val; | ||||||
|         xmlFree(val); |         xmlFree(val); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|     value = ""; |     value = ""; | ||||||
|     return false; |     return false; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,46 +1,46 @@ | |||||||
| #ifndef __LIBXMLWRAPPER_H | #ifndef __LIBXMLWRAPPER_H | ||||||
| #define __LIBXMLWRAPPER_H | #define __LIBXMLWRAPPER_H | ||||||
|  |  | ||||||
| #include <string> | #include <string> | ||||||
| #include <vector> | #include <vector> | ||||||
| #include <map> | #include <map> | ||||||
| #include <set> | #include <set> | ||||||
| #include <utility> | #include <utility> | ||||||
| #include <stack> | #include <stack> | ||||||
| #include <libxml/parser.h> | #include <libxml/parser.h> | ||||||
| #include <libxml/tree.h> | #include <libxml/tree.h> | ||||||
| #include <libxml/xmlerror.h> | #include <libxml/xmlerror.h> | ||||||
| #include <vdr/plugin.h> | #include <vdr/plugin.h> | ||||||
|  |  | ||||||
| using namespace std; | using namespace std; | ||||||
| typedef pair<string,string> stringpair; | typedef pair<string,string> stringpair; | ||||||
| typedef map<string,string> stringmap; | typedef map<string,string> stringmap; | ||||||
|  |  | ||||||
| class cLibXMLWrapper { | class cLibXMLWrapper { | ||||||
| private: | private: | ||||||
|     xmlParserCtxtPtr ctxt; |     xmlParserCtxtPtr ctxt; | ||||||
|     xmlDocPtr doc; |     xmlDocPtr doc; | ||||||
|     xmlNodePtr root; |     xmlNodePtr root; | ||||||
|     xmlNodePtr current; |     xmlNodePtr current; | ||||||
|     stack<xmlNodePtr> nodeStack; |     stack<xmlNodePtr> nodeStack; | ||||||
| protected: | protected: | ||||||
|     void DeleteDocument(void); |     void DeleteDocument(void); | ||||||
|     bool ReadXMLFile(const char *path, bool validate = true); |     bool ReadXMLFile(const char *path, bool validate = true); | ||||||
|     bool SetDocument(void); |     bool SetDocument(void); | ||||||
|     bool Validate(void); |     bool Validate(void); | ||||||
|     bool CheckNodeName(const char *name); |     bool CheckNodeName(const char *name); | ||||||
|     const char *NodeName(void); |     const char *NodeName(void); | ||||||
|     vector<stringpair> ParseAttributes(void); |     vector<stringpair> ParseAttributes(void); | ||||||
|     bool LevelDown(void); |     bool LevelDown(void); | ||||||
|     bool LevelUp(void); |     bool LevelUp(void); | ||||||
|     bool NextNode(void); |     bool NextNode(void); | ||||||
|     bool GetAttribute(string &name, string &value); |     bool GetAttribute(string &name, string &value); | ||||||
|     bool GetNodeValue(string &value); |     bool GetNodeValue(string &value); | ||||||
| public: | public: | ||||||
|     cLibXMLWrapper(void); |     cLibXMLWrapper(void); | ||||||
|     virtual ~cLibXMLWrapper(void); |     virtual ~cLibXMLWrapper(void); | ||||||
|     static void InitLibXML(); |     static void InitLibXML(); | ||||||
|     static void CleanupLibXML(); |     static void CleanupLibXML(); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__LIBXMLWRAPPER_H | #endif //__LIBXMLWRAPPER_H | ||||||
| @@ -1,301 +1,301 @@ | |||||||
| #include "pluginmanager.h" | #include "pluginmanager.h" | ||||||
|  |  | ||||||
| cSDPluginManager::cSDPluginManager(void) { | cSDPluginManager::cSDPluginManager(void) { | ||||||
|     lastId = 0; |     lastId = 0; | ||||||
|     subviewsfound = false; |     subviewsfound = false; | ||||||
| } | } | ||||||
|  |  | ||||||
| cSDPluginManager::~cSDPluginManager(void) { | cSDPluginManager::~cSDPluginManager(void) { | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSDPluginManager::Reset(void) { | void cSDPluginManager::Reset(void) { | ||||||
|     subViewMapping.clear(); |     subViewMapping.clear(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSDPluginManager::RegisterBasicPlugin(skindesignerapi::cPluginStructure *plugStructure) { | void cSDPluginManager::RegisterBasicPlugin(skindesignerapi::cPluginStructure *plugStructure) { | ||||||
|     dsyslog("skindesigner: plugin %s uses libskindesigner API Version %s",  |     dsyslog("skindesigner: plugin %s uses libskindesigner API Version %s",  | ||||||
|                                                             plugStructure->name.c_str(),  |                                                             plugStructure->name.c_str(),  | ||||||
|                                                             plugStructure->libskindesignerAPIVersion.c_str()); |                                                             plugStructure->libskindesignerAPIVersion.c_str()); | ||||||
|     plugStructure->id = lastId; |     plugStructure->id = lastId; | ||||||
|     registeredPlugins.insert(pair<int,string>(lastId, plugStructure->name)); |     registeredPlugins.insert(pair<int,string>(lastId, plugStructure->name)); | ||||||
|     lastId++; |     lastId++; | ||||||
|     map< int, skindesignerapi::sPlugMenu > menusNew; |     map< int, skindesignerapi::sPlugMenu > menusNew; | ||||||
|     for (map< int, skindesignerapi::sPlugMenu >::iterator it = plugStructure->menus.begin(); it != plugStructure->menus.end(); it++) { |     for (map< int, skindesignerapi::sPlugMenu >::iterator it = plugStructure->menus.begin(); it != plugStructure->menus.end(); it++) { | ||||||
|         int key = it->first; |         int key = it->first; | ||||||
|         skindesignerapi::sPlugMenu menu = it->second; |         skindesignerapi::sPlugMenu menu = it->second; | ||||||
|         skindesignerapi::sPlugMenu menuNew; |         skindesignerapi::sPlugMenu menuNew; | ||||||
|         menuNew.type = menu.type; |         menuNew.type = menu.type; | ||||||
|         menuNew.tplname = menu.tplname; |         menuNew.tplname = menu.tplname; | ||||||
|         menuNew.tokenContainer = new skindesignerapi::cTokenContainer(*menu.tokenContainer); |         menuNew.tokenContainer = new skindesignerapi::cTokenContainer(*menu.tokenContainer); | ||||||
|         menusNew.insert(pair<int, skindesignerapi::sPlugMenu>(key, menuNew)); |         menusNew.insert(pair<int, skindesignerapi::sPlugMenu>(key, menuNew)); | ||||||
|     } |     } | ||||||
|     pluginMenus.insert(pair< int, map < int, skindesignerapi::sPlugMenu > >(plugStructure->id, menusNew)); |     pluginMenus.insert(pair< int, map < int, skindesignerapi::sPlugMenu > >(plugStructure->id, menusNew)); | ||||||
|  |  | ||||||
|     if (plugStructure->menus.size() > 0) |     if (plugStructure->menus.size() > 0) | ||||||
|         dsyslog("skindesigner: plugin %s has registered %ld menus", plugStructure->name.c_str(), plugStructure->menus.size()); |         dsyslog("skindesigner: plugin %s has registered %ld menus", plugStructure->name.c_str(), plugStructure->menus.size()); | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
| int cSDPluginManager::GetNumPluginMenus(void) { | int cSDPluginManager::GetNumPluginMenus(void) { | ||||||
|     int numMenusTotal = 0; |     int numMenusTotal = 0; | ||||||
|     for (map < int, map < int, skindesignerapi::sPlugMenu > >::iterator it = pluginMenus.begin(); it != pluginMenus.end(); it++) { |     for (map < int, map < int, skindesignerapi::sPlugMenu > >::iterator it = pluginMenus.begin(); it != pluginMenus.end(); it++) { | ||||||
|         numMenusTotal += (it->second).size(); |         numMenusTotal += (it->second).size(); | ||||||
|     } |     } | ||||||
|     return numMenusTotal; |     return numMenusTotal; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSDPluginManager::InitPluginMenuIterator(void) { | void cSDPluginManager::InitPluginMenuIterator(void) { | ||||||
|     plugMenuIt = pluginMenus.begin(); |     plugMenuIt = pluginMenus.begin(); | ||||||
| } | } | ||||||
|  |  | ||||||
| map <int,skindesignerapi::sPlugMenu> *cSDPluginManager::GetPluginMenus(string &name, int &id) { | map <int,skindesignerapi::sPlugMenu> *cSDPluginManager::GetPluginMenus(string &name, int &id) { | ||||||
|     if (plugMenuIt == pluginMenus.end()) |     if (plugMenuIt == pluginMenus.end()) | ||||||
|         return NULL; |         return NULL; | ||||||
|     id = plugMenuIt->first; |     id = plugMenuIt->first; | ||||||
|     map<int,string>::iterator hit = registeredPlugins.find(id); |     map<int,string>::iterator hit = registeredPlugins.find(id); | ||||||
|     if (hit != registeredPlugins.end()) |     if (hit != registeredPlugins.end()) | ||||||
|         name = hit->second;  |         name = hit->second;  | ||||||
|     map <int,skindesignerapi::sPlugMenu> *templates = &plugMenuIt->second; |     map <int,skindesignerapi::sPlugMenu> *templates = &plugMenuIt->second; | ||||||
|     plugMenuIt++; |     plugMenuIt++; | ||||||
|     return templates;  |     return templates;  | ||||||
| } | } | ||||||
|  |  | ||||||
| skindesignerapi::cTokenContainer *cSDPluginManager::GetTokenContainer(int plugId, int plugMenuId) { | skindesignerapi::cTokenContainer *cSDPluginManager::GetTokenContainer(int plugId, int plugMenuId) { | ||||||
|     map <int, map<int, skindesignerapi::sPlugMenu> >::iterator hit = pluginMenus.find(plugId); |     map <int, map<int, skindesignerapi::sPlugMenu> >::iterator hit = pluginMenus.find(plugId); | ||||||
|     if (hit == pluginMenus.end()) |     if (hit == pluginMenus.end()) | ||||||
|         return NULL; |         return NULL; | ||||||
|     map<int, skindesignerapi::sPlugMenu>::iterator hit2 = (hit->second).find(plugMenuId); |     map<int, skindesignerapi::sPlugMenu>::iterator hit2 = (hit->second).find(plugMenuId); | ||||||
|     if (hit2 == (hit->second).end()) |     if (hit2 == (hit->second).end()) | ||||||
|         return NULL; |         return NULL; | ||||||
|     skindesignerapi::cTokenContainer *tk = hit2->second.tokenContainer; |     skindesignerapi::cTokenContainer *tk = hit2->second.tokenContainer; | ||||||
|     return tk;     |     return tk;     | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSDPluginManager::AddSubviewMapping(int plugId, int plugMenuId, int subViewId) { | void cSDPluginManager::AddSubviewMapping(int plugId, int plugMenuId, int subViewId) { | ||||||
|     map <int, map<int,int> >::iterator hit = subViewMapping.find(plugId); |     map <int, map<int,int> >::iterator hit = subViewMapping.find(plugId); | ||||||
|     if (hit == subViewMapping.end()) { |     if (hit == subViewMapping.end()) { | ||||||
|         map<int,int> menus; |         map<int,int> menus; | ||||||
|         menus.insert(pair<int,int>(plugMenuId, subViewId)); |         menus.insert(pair<int,int>(plugMenuId, subViewId)); | ||||||
|         subViewMapping.insert(pair<int, map<int,int> >(plugId, menus)); |         subViewMapping.insert(pair<int, map<int,int> >(plugId, menus)); | ||||||
|     } else { |     } else { | ||||||
|         (hit->second).insert(pair<int,int>(plugMenuId, subViewId)); |         (hit->second).insert(pair<int,int>(plugMenuId, subViewId)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| int cSDPluginManager::GetSubviewId(int plugId, int plugMenuId) { | int cSDPluginManager::GetSubviewId(int plugId, int plugMenuId) { | ||||||
|     map <int, map<int,int> >::iterator hit = subViewMapping.find(plugId); |     map <int, map<int,int> >::iterator hit = subViewMapping.find(plugId); | ||||||
|     if (hit == subViewMapping.end()) |     if (hit == subViewMapping.end()) | ||||||
|         return -1; |         return -1; | ||||||
|     map<int,int>::iterator hit2 = (hit->second).find(plugMenuId); |     map<int,int>::iterator hit2 = (hit->second).find(plugMenuId); | ||||||
|     if (hit2 == (hit->second).end()) |     if (hit2 == (hit->second).end()) | ||||||
|         return -1; |         return -1; | ||||||
|     return hit2->second; |     return hit2->second; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSDPluginManager::RegisterAdvancedPlugin(skindesignerapi::cPluginStructure *plugStructure) { | void cSDPluginManager::RegisterAdvancedPlugin(skindesignerapi::cPluginStructure *plugStructure) { | ||||||
|     dsyslog("skindesigner: plugin %s uses libskindesigner API Version %s",  |     dsyslog("skindesigner: plugin %s uses libskindesigner API Version %s",  | ||||||
|                                                             plugStructure->name.c_str(),  |                                                             plugStructure->name.c_str(),  | ||||||
|                                                             plugStructure->libskindesignerAPIVersion.c_str()); |                                                             plugStructure->libskindesignerAPIVersion.c_str()); | ||||||
|     plugStructure->id = lastId; |     plugStructure->id = lastId; | ||||||
|     registeredPlugins.insert(pair<int,string>(lastId, plugStructure->name)); |     registeredPlugins.insert(pair<int,string>(lastId, plugStructure->name)); | ||||||
|     lastId++; |     lastId++; | ||||||
|  |  | ||||||
|     rootviews.insert(pair<int,string>(plugStructure->id, plugStructure->rootview)); |     rootviews.insert(pair<int,string>(plugStructure->id, plugStructure->rootview)); | ||||||
|     subviews.insert(pair<int,map<int,string> >(plugStructure->id, plugStructure->subviews)); |     subviews.insert(pair<int,map<int,string> >(plugStructure->id, plugStructure->subviews)); | ||||||
|  |  | ||||||
|     multimap< int, skindesignerapi::sPlugViewElement > viewelementsNew; |     multimap< int, skindesignerapi::sPlugViewElement > viewelementsNew; | ||||||
|     for (map< int, skindesignerapi::sPlugViewElement >::iterator it = plugStructure->viewelements.begin(); it != plugStructure->viewelements.end(); it++) { |     for (map< int, skindesignerapi::sPlugViewElement >::iterator it = plugStructure->viewelements.begin(); it != plugStructure->viewelements.end(); it++) { | ||||||
|         int key = it->first; |         int key = it->first; | ||||||
|         skindesignerapi::sPlugViewElement ve = it->second; |         skindesignerapi::sPlugViewElement ve = it->second; | ||||||
|         skindesignerapi::sPlugViewElement veNew; |         skindesignerapi::sPlugViewElement veNew; | ||||||
|         veNew.id = ve.id; |         veNew.id = ve.id; | ||||||
|         veNew.viewId = ve.viewId; |         veNew.viewId = ve.viewId; | ||||||
|         veNew.name = ve.name;         |         veNew.name = ve.name;         | ||||||
|         veNew.tokenContainer = new skindesignerapi::cTokenContainer(*ve.tokenContainer); |         veNew.tokenContainer = new skindesignerapi::cTokenContainer(*ve.tokenContainer); | ||||||
|         viewelementsNew.insert(pair<int, skindesignerapi::sPlugViewElement>(key, veNew)); |         viewelementsNew.insert(pair<int, skindesignerapi::sPlugViewElement>(key, veNew)); | ||||||
|     } |     } | ||||||
|     viewelements.insert(pair< int, multimap < int, skindesignerapi::sPlugViewElement > >(plugStructure->id, viewelementsNew)); |     viewelements.insert(pair< int, multimap < int, skindesignerapi::sPlugViewElement > >(plugStructure->id, viewelementsNew)); | ||||||
|  |  | ||||||
|     multimap< int, skindesignerapi::sPlugViewGrid > viewgridsNew; |     multimap< int, skindesignerapi::sPlugViewGrid > viewgridsNew; | ||||||
|     for (map< int, skindesignerapi::sPlugViewGrid >::iterator it = plugStructure->viewgrids.begin(); it != plugStructure->viewgrids.end(); it++) { |     for (map< int, skindesignerapi::sPlugViewGrid >::iterator it = plugStructure->viewgrids.begin(); it != plugStructure->viewgrids.end(); it++) { | ||||||
|         int key = it->first; |         int key = it->first; | ||||||
|         skindesignerapi::sPlugViewGrid vg = it->second; |         skindesignerapi::sPlugViewGrid vg = it->second; | ||||||
|         skindesignerapi::sPlugViewGrid vgNew; |         skindesignerapi::sPlugViewGrid vgNew; | ||||||
|         vgNew.id = vg.id; |         vgNew.id = vg.id; | ||||||
|         vgNew.viewId = vg.viewId; |         vgNew.viewId = vg.viewId; | ||||||
|         vgNew.name = vg.name;         |         vgNew.name = vg.name;         | ||||||
|         vgNew.tokenContainer = new skindesignerapi::cTokenContainer(*vg.tokenContainer); |         vgNew.tokenContainer = new skindesignerapi::cTokenContainer(*vg.tokenContainer); | ||||||
|         viewgridsNew.insert(pair<int, skindesignerapi::sPlugViewGrid>(key, vgNew)); |         viewgridsNew.insert(pair<int, skindesignerapi::sPlugViewGrid>(key, vgNew)); | ||||||
|     } |     } | ||||||
|     viewgrids.insert(pair< int, multimap < int, skindesignerapi::sPlugViewGrid > >(plugStructure->id, viewgridsNew)); |     viewgrids.insert(pair< int, multimap < int, skindesignerapi::sPlugViewGrid > >(plugStructure->id, viewgridsNew)); | ||||||
|  |  | ||||||
|     map< int, skindesignerapi::cTokenContainer* > viewtabsNew; |     map< int, skindesignerapi::cTokenContainer* > viewtabsNew; | ||||||
|     for (map<int,skindesignerapi::cTokenContainer*>::iterator it = plugStructure->viewtabs.begin(); it != plugStructure->viewtabs.end(); it++) { |     for (map<int,skindesignerapi::cTokenContainer*>::iterator it = plugStructure->viewtabs.begin(); it != plugStructure->viewtabs.end(); it++) { | ||||||
|         int id = it->first; |         int id = it->first; | ||||||
|         skindesignerapi::cTokenContainer *tk = it->second; |         skindesignerapi::cTokenContainer *tk = it->second; | ||||||
|         viewtabsNew.insert(pair<int,skindesignerapi::cTokenContainer*>(id, new skindesignerapi::cTokenContainer(*tk))); |         viewtabsNew.insert(pair<int,skindesignerapi::cTokenContainer*>(id, new skindesignerapi::cTokenContainer(*tk))); | ||||||
|     } |     } | ||||||
|     viewtabs.insert(pair< int, map<int,skindesignerapi::cTokenContainer*> >(plugStructure->id, viewtabsNew)); |     viewtabs.insert(pair< int, map<int,skindesignerapi::cTokenContainer*> >(plugStructure->id, viewtabsNew)); | ||||||
|  |  | ||||||
|     if (plugStructure->rootview.size() > 0) |     if (plugStructure->rootview.size() > 0) | ||||||
|         dsyslog("skindesigner: plugin %s has registered %ld views with %ld viewelements and %ld viewgrids",  |         dsyslog("skindesigner: plugin %s has registered %ld views with %ld viewelements and %ld viewgrids",  | ||||||
|                  plugStructure->name.c_str(),  |                  plugStructure->name.c_str(),  | ||||||
|                  1 + plugStructure->subviews.size(), |                  1 + plugStructure->subviews.size(), | ||||||
|                  plugStructure->viewelements.size(), |                  plugStructure->viewelements.size(), | ||||||
|                  plugStructure->viewgrids.size()); |                  plugStructure->viewgrids.size()); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSDPluginManager::InitPluginViewIterator(void) { | void cSDPluginManager::InitPluginViewIterator(void) { | ||||||
|     rootViewsIt = rootviews.begin(); |     rootViewsIt = rootviews.begin(); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cSDPluginManager::GetNextPluginView(string &plugName, int &plugId, string &tplName) { | bool cSDPluginManager::GetNextPluginView(string &plugName, int &plugId, string &tplName) { | ||||||
|     if (rootViewsIt == rootviews.end()) |     if (rootViewsIt == rootviews.end()) | ||||||
|         return false; |         return false; | ||||||
|     plugId = rootViewsIt->first; |     plugId = rootViewsIt->first; | ||||||
|     tplName = rootViewsIt->second; |     tplName = rootViewsIt->second; | ||||||
|     map<int,string>::iterator hit = registeredPlugins.find(plugId); |     map<int,string>::iterator hit = registeredPlugins.find(plugId); | ||||||
|     if (hit != registeredPlugins.end()) |     if (hit != registeredPlugins.end()) | ||||||
|         plugName = hit->second;  |         plugName = hit->second;  | ||||||
|     rootViewsIt++; |     rootViewsIt++; | ||||||
|     return true;  |     return true;  | ||||||
| }  | }  | ||||||
|  |  | ||||||
| int cSDPluginManager::GetNumSubviews(int plugId) { | int cSDPluginManager::GetNumSubviews(int plugId) { | ||||||
|     map< int, map< int, string > >::iterator hit = subviews.find(plugId); |     map< int, map< int, string > >::iterator hit = subviews.find(plugId); | ||||||
|     if (hit == subviews.end()) |     if (hit == subviews.end()) | ||||||
|         return 0; |         return 0; | ||||||
|     return (hit->second).size(); |     return (hit->second).size(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSDPluginManager::InitPluginSubviewIterator(int plugId) { | void cSDPluginManager::InitPluginSubviewIterator(int plugId) { | ||||||
|     map< int, map< int, string > >::iterator hit = subviews.find(plugId); |     map< int, map< int, string > >::iterator hit = subviews.find(plugId); | ||||||
|     if (hit == subviews.end()) { |     if (hit == subviews.end()) { | ||||||
|         subviewsfound = false; |         subviewsfound = false; | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     subviewsCurrent = hit->second; |     subviewsCurrent = hit->second; | ||||||
|     subviewsfound = true; |     subviewsfound = true; | ||||||
|     svIt = subviewsCurrent.begin(); |     svIt = subviewsCurrent.begin(); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cSDPluginManager::GetNextSubView(int &id, string &tplname) { | bool cSDPluginManager::GetNextSubView(int &id, string &tplname) { | ||||||
|     if (!subviewsfound) |     if (!subviewsfound) | ||||||
|         return false; |         return false; | ||||||
|     if( svIt == subviewsCurrent.end() ) { |     if( svIt == subviewsCurrent.end() ) { | ||||||
|         return false;     |         return false;     | ||||||
|     } |     } | ||||||
|     id = svIt->first; |     id = svIt->first; | ||||||
|     tplname = svIt->second; |     tplname = svIt->second; | ||||||
|     svIt++; |     svIt++; | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| int cSDPluginManager::GetNumViewElements(int plugId, int viewId) { | int cSDPluginManager::GetNumViewElements(int plugId, int viewId) { | ||||||
|     map< int, multimap< int, skindesignerapi::sPlugViewElement > >::iterator hit = viewelements.find(plugId); |     map< int, multimap< int, skindesignerapi::sPlugViewElement > >::iterator hit = viewelements.find(plugId); | ||||||
|     if (hit == viewelements.end()) |     if (hit == viewelements.end()) | ||||||
|         return 0; |         return 0; | ||||||
|     multimap<int, skindesignerapi::sPlugViewElement> *plugVEs = &hit->second; |     multimap<int, skindesignerapi::sPlugViewElement> *plugVEs = &hit->second; | ||||||
|     pair<multimap<int, skindesignerapi::sPlugViewElement>::iterator, multimap<int, skindesignerapi::sPlugViewElement>::iterator> range; |     pair<multimap<int, skindesignerapi::sPlugViewElement>::iterator, multimap<int, skindesignerapi::sPlugViewElement>::iterator> range; | ||||||
|     range = plugVEs->equal_range(viewId); |     range = plugVEs->equal_range(viewId); | ||||||
|     int numVEs = 0; |     int numVEs = 0; | ||||||
|     for (multimap<int, skindesignerapi::sPlugViewElement>::iterator it=range.first; it!=range.second; ++it) { |     for (multimap<int, skindesignerapi::sPlugViewElement>::iterator it=range.first; it!=range.second; ++it) { | ||||||
|         numVEs++; |         numVEs++; | ||||||
|     } |     } | ||||||
|     return numVEs; |     return numVEs; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSDPluginManager::InitViewElementIterator(int plugId, int viewId) { | void cSDPluginManager::InitViewElementIterator(int plugId, int viewId) { | ||||||
|     map< int, multimap< int, skindesignerapi::sPlugViewElement > >::iterator hit = viewelements.find(plugId); |     map< int, multimap< int, skindesignerapi::sPlugViewElement > >::iterator hit = viewelements.find(plugId); | ||||||
|     if (hit == viewelements.end()) |     if (hit == viewelements.end()) | ||||||
|         return; |         return; | ||||||
|     multimap<int, skindesignerapi::sPlugViewElement> *plugVEs = &hit->second; |     multimap<int, skindesignerapi::sPlugViewElement> *plugVEs = &hit->second; | ||||||
|     veRange = plugVEs->equal_range(viewId); |     veRange = plugVEs->equal_range(viewId); | ||||||
|     veIt = veRange.first; |     veIt = veRange.first; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cSDPluginManager::GetNextViewElement(int &veId, string &veName) { | bool cSDPluginManager::GetNextViewElement(int &veId, string &veName) { | ||||||
|     if (veIt == veRange.second) |     if (veIt == veRange.second) | ||||||
|         return false; |         return false; | ||||||
|     skindesignerapi::sPlugViewElement *ve = &veIt->second; |     skindesignerapi::sPlugViewElement *ve = &veIt->second; | ||||||
|     veId = ve->id; |     veId = ve->id; | ||||||
|     veName = ve->name; |     veName = ve->name; | ||||||
|     veIt++; |     veIt++; | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| skindesignerapi::cTokenContainer *cSDPluginManager::GetTokenContainerVE(int plugId, int viewId, int veId) { | skindesignerapi::cTokenContainer *cSDPluginManager::GetTokenContainerVE(int plugId, int viewId, int veId) { | ||||||
|     map< int, multimap< int, skindesignerapi::sPlugViewElement > >::iterator hit = viewelements.find(plugId); |     map< int, multimap< int, skindesignerapi::sPlugViewElement > >::iterator hit = viewelements.find(plugId); | ||||||
|     if (hit == viewelements.end()) |     if (hit == viewelements.end()) | ||||||
|         return NULL; |         return NULL; | ||||||
|     multimap<int, skindesignerapi::sPlugViewElement> *plugVEs = &hit->second; |     multimap<int, skindesignerapi::sPlugViewElement> *plugVEs = &hit->second; | ||||||
|     for (multimap<int, skindesignerapi::sPlugViewElement>::iterator it = plugVEs->begin(); it != plugVEs->end(); it++) { |     for (multimap<int, skindesignerapi::sPlugViewElement>::iterator it = plugVEs->begin(); it != plugVEs->end(); it++) { | ||||||
|         int view = it->first; |         int view = it->first; | ||||||
|         if (view != viewId) |         if (view != viewId) | ||||||
|             continue; |             continue; | ||||||
|         skindesignerapi::sPlugViewElement *ve = &it->second; |         skindesignerapi::sPlugViewElement *ve = &it->second; | ||||||
|         if (ve->id == veId) |         if (ve->id == veId) | ||||||
|             return ve->tokenContainer; |             return ve->tokenContainer; | ||||||
|     } |     } | ||||||
|     return NULL; |     return NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| int cSDPluginManager::GetNumViewGrids(int plugId, int viewId) { | int cSDPluginManager::GetNumViewGrids(int plugId, int viewId) { | ||||||
|     map< int, multimap< int, skindesignerapi::sPlugViewGrid > >::iterator hit = viewgrids.find(plugId); |     map< int, multimap< int, skindesignerapi::sPlugViewGrid > >::iterator hit = viewgrids.find(plugId); | ||||||
|     if (hit == viewgrids.end()) |     if (hit == viewgrids.end()) | ||||||
|         return 0; |         return 0; | ||||||
|     multimap<int, skindesignerapi::sPlugViewGrid> *plugVGs = &hit->second; |     multimap<int, skindesignerapi::sPlugViewGrid> *plugVGs = &hit->second; | ||||||
|     pair<multimap<int, skindesignerapi::sPlugViewGrid>::iterator, multimap<int, skindesignerapi::sPlugViewGrid>::iterator> range; |     pair<multimap<int, skindesignerapi::sPlugViewGrid>::iterator, multimap<int, skindesignerapi::sPlugViewGrid>::iterator> range; | ||||||
|     range = plugVGs->equal_range(viewId); |     range = plugVGs->equal_range(viewId); | ||||||
|     int numVGs = 0; |     int numVGs = 0; | ||||||
|     for (multimap<int, skindesignerapi::sPlugViewGrid>::iterator it=range.first; it!=range.second; ++it) { |     for (multimap<int, skindesignerapi::sPlugViewGrid>::iterator it=range.first; it!=range.second; ++it) { | ||||||
|         numVGs++; |         numVGs++; | ||||||
|     } |     } | ||||||
|     return numVGs; |     return numVGs; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cSDPluginManager::InitViewGridIterator(int plugId, int viewId) { | void cSDPluginManager::InitViewGridIterator(int plugId, int viewId) { | ||||||
|     map< int, multimap< int, skindesignerapi::sPlugViewGrid > >::iterator hit = viewgrids.find(plugId); |     map< int, multimap< int, skindesignerapi::sPlugViewGrid > >::iterator hit = viewgrids.find(plugId); | ||||||
|     if (hit == viewgrids.end()) |     if (hit == viewgrids.end()) | ||||||
|         return; |         return; | ||||||
|     multimap<int, skindesignerapi::sPlugViewGrid> *plugGEs = &hit->second; |     multimap<int, skindesignerapi::sPlugViewGrid> *plugGEs = &hit->second; | ||||||
|     gRange = plugGEs->equal_range(viewId); |     gRange = plugGEs->equal_range(viewId); | ||||||
|     gIt = gRange.first; |     gIt = gRange.first; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cSDPluginManager::GetNextViewGrid(int &gId, string &gName) { | bool cSDPluginManager::GetNextViewGrid(int &gId, string &gName) { | ||||||
|     if (gIt == gRange.second) |     if (gIt == gRange.second) | ||||||
|         return false; |         return false; | ||||||
|     skindesignerapi::sPlugViewGrid *ge = &gIt->second; |     skindesignerapi::sPlugViewGrid *ge = &gIt->second; | ||||||
|     gId = ge->id; |     gId = ge->id; | ||||||
|     gName = ge->name; |     gName = ge->name; | ||||||
|     gIt++; |     gIt++; | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| skindesignerapi::cTokenContainer *cSDPluginManager::GetTokenContainerGE(int plugId, int viewId, int gId) { | skindesignerapi::cTokenContainer *cSDPluginManager::GetTokenContainerGE(int plugId, int viewId, int gId) { | ||||||
|     map< int, multimap< int, skindesignerapi::sPlugViewGrid > >::iterator hit = viewgrids.find(plugId); |     map< int, multimap< int, skindesignerapi::sPlugViewGrid > >::iterator hit = viewgrids.find(plugId); | ||||||
|     if (hit == viewgrids.end()) |     if (hit == viewgrids.end()) | ||||||
|         return NULL; |         return NULL; | ||||||
|     multimap<int, skindesignerapi::sPlugViewGrid> *plugGEs = &hit->second; |     multimap<int, skindesignerapi::sPlugViewGrid> *plugGEs = &hit->second; | ||||||
|     for (multimap<int, skindesignerapi::sPlugViewGrid>::iterator it = plugGEs->begin(); it != plugGEs->end(); it++) { |     for (multimap<int, skindesignerapi::sPlugViewGrid>::iterator it = plugGEs->begin(); it != plugGEs->end(); it++) { | ||||||
|         int view = it->first; |         int view = it->first; | ||||||
|         if (view != viewId) |         if (view != viewId) | ||||||
|             continue; |             continue; | ||||||
|         skindesignerapi::sPlugViewGrid *g = &it->second; |         skindesignerapi::sPlugViewGrid *g = &it->second; | ||||||
|         if (g->id == gId) |         if (g->id == gId) | ||||||
|             return g->tokenContainer; |             return g->tokenContainer; | ||||||
|     } |     } | ||||||
|     return NULL; |     return NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| skindesignerapi::cTokenContainer *cSDPluginManager::GetTokenContainerTab(int plugId, int viewId) { | skindesignerapi::cTokenContainer *cSDPluginManager::GetTokenContainerTab(int plugId, int viewId) { | ||||||
|     map< int, map< int, skindesignerapi::cTokenContainer* > >::iterator hit = viewtabs.find(plugId); |     map< int, map< int, skindesignerapi::cTokenContainer* > >::iterator hit = viewtabs.find(plugId); | ||||||
|     if (hit == viewtabs.end()) |     if (hit == viewtabs.end()) | ||||||
|         return NULL; |         return NULL; | ||||||
|     map< int, skindesignerapi::cTokenContainer* > *tabs = &hit->second; |     map< int, skindesignerapi::cTokenContainer* > *tabs = &hit->second; | ||||||
|     map< int, skindesignerapi::cTokenContainer* >::iterator hit2 = tabs->find(viewId); |     map< int, skindesignerapi::cTokenContainer* >::iterator hit2 = tabs->find(viewId); | ||||||
|     if (hit2 == tabs->end()) |     if (hit2 == tabs->end()) | ||||||
|         return NULL; |         return NULL; | ||||||
|     return (hit2->second); |     return (hit2->second); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,71 +1,71 @@ | |||||||
| #ifndef __PLUGINMANAGER_H | #ifndef __PLUGINMANAGER_H | ||||||
| #define __PLUGINMANAGER_H | #define __PLUGINMANAGER_H | ||||||
|  |  | ||||||
| #include <string> | #include <string> | ||||||
| #include <map> | #include <map> | ||||||
| #include "../libskindesignerapi/skindesignerapi.h" | #include "../libskindesignerapi/skindesignerapi.h" | ||||||
|  |  | ||||||
| using namespace std; | using namespace std; | ||||||
|  |  | ||||||
| class cSDPluginManager { | class cSDPluginManager { | ||||||
| private: | private: | ||||||
|     int lastId; |     int lastId; | ||||||
|     //plugin id --> plugin name |     //plugin id --> plugin name | ||||||
|     map < int, string > registeredPlugins; |     map < int, string > registeredPlugins; | ||||||
|     //Basic Plugin Interface |     //Basic Plugin Interface | ||||||
|     //plugin id --> plugin definition  |     //plugin id --> plugin definition  | ||||||
|     map < int, map < int, skindesignerapi::sPlugMenu > > pluginMenus; |     map < int, map < int, skindesignerapi::sPlugMenu > > pluginMenus; | ||||||
|     map < int, map < int, skindesignerapi::sPlugMenu > >::iterator plugMenuIt; |     map < int, map < int, skindesignerapi::sPlugMenu > >::iterator plugMenuIt; | ||||||
|     //plugin id - menuId --> subviewid |     //plugin id - menuId --> subviewid | ||||||
|     map < int, map<int, int> > subViewMapping; |     map < int, map<int, int> > subViewMapping; | ||||||
|      |      | ||||||
|     //Advanced Plugin Interface |     //Advanced Plugin Interface | ||||||
|     //plugin id --> rootview templatename definition  |     //plugin id --> rootview templatename definition  | ||||||
|     map< int, string > rootviews; |     map< int, string > rootviews; | ||||||
|     map< int, string >::iterator rootViewsIt; |     map< int, string >::iterator rootViewsIt; | ||||||
|     //plugin id --> subviewid /templatename definition  |     //plugin id --> subviewid /templatename definition  | ||||||
|     map< int, map< int, string > > subviews; |     map< int, map< int, string > > subviews; | ||||||
|     map< int, string> subviewsCurrent; |     map< int, string> subviewsCurrent; | ||||||
|     map< int, string>::iterator svIt; |     map< int, string>::iterator svIt; | ||||||
|     bool subviewsfound; |     bool subviewsfound; | ||||||
|     //plugin id --> view id --> viewelement definition  |     //plugin id --> view id --> viewelement definition  | ||||||
|     map< int, multimap< int, skindesignerapi::sPlugViewElement > > viewelements; |     map< int, multimap< int, skindesignerapi::sPlugViewElement > > viewelements; | ||||||
|     pair<multimap<int, skindesignerapi::sPlugViewElement>::iterator, multimap<int, skindesignerapi::sPlugViewElement>::iterator> veRange; |     pair<multimap<int, skindesignerapi::sPlugViewElement>::iterator, multimap<int, skindesignerapi::sPlugViewElement>::iterator> veRange; | ||||||
|     multimap<int, skindesignerapi::sPlugViewElement>::iterator veIt; |     multimap<int, skindesignerapi::sPlugViewElement>::iterator veIt; | ||||||
|     //plugin id --> view id --> viewgrid definition  |     //plugin id --> view id --> viewgrid definition  | ||||||
|     map< int, multimap< int, skindesignerapi::sPlugViewGrid > > viewgrids; |     map< int, multimap< int, skindesignerapi::sPlugViewGrid > > viewgrids; | ||||||
|     pair<multimap<int, skindesignerapi::sPlugViewGrid>::iterator, multimap<int, skindesignerapi::sPlugViewGrid>::iterator> gRange; |     pair<multimap<int, skindesignerapi::sPlugViewGrid>::iterator, multimap<int, skindesignerapi::sPlugViewGrid>::iterator> gRange; | ||||||
|     multimap<int, skindesignerapi::sPlugViewGrid>::iterator gIt; |     multimap<int, skindesignerapi::sPlugViewGrid>::iterator gIt; | ||||||
|     //plugin id --> view id --> tokencontainer of detailedview definition |     //plugin id --> view id --> tokencontainer of detailedview definition | ||||||
|     map< int, map< int, skindesignerapi::cTokenContainer* > > viewtabs; |     map< int, map< int, skindesignerapi::cTokenContainer* > > viewtabs; | ||||||
| public: | public: | ||||||
|     cSDPluginManager(void); |     cSDPluginManager(void); | ||||||
|     ~cSDPluginManager(void); |     ~cSDPluginManager(void); | ||||||
|     void Reset(void); |     void Reset(void); | ||||||
|     //Basic Plugin Interface |     //Basic Plugin Interface | ||||||
|     void RegisterBasicPlugin(skindesignerapi::cPluginStructure *plugStructure); |     void RegisterBasicPlugin(skindesignerapi::cPluginStructure *plugStructure); | ||||||
|     int GetNumPluginMenus(void); |     int GetNumPluginMenus(void); | ||||||
|     void InitPluginMenuIterator(void); |     void InitPluginMenuIterator(void); | ||||||
|     map <int,skindesignerapi::sPlugMenu> *GetPluginMenus(string &name, int &id); |     map <int,skindesignerapi::sPlugMenu> *GetPluginMenus(string &name, int &id); | ||||||
|     skindesignerapi::cTokenContainer *GetTokenContainer(int plugId, int plugMenuId); |     skindesignerapi::cTokenContainer *GetTokenContainer(int plugId, int plugMenuId); | ||||||
|     void AddSubviewMapping(int plugId, int plugMenuId, int subViewId); |     void AddSubviewMapping(int plugId, int plugMenuId, int subViewId); | ||||||
|     int GetSubviewId(int plugId, int plugMenuId); |     int GetSubviewId(int plugId, int plugMenuId); | ||||||
|     //Advanced Plugin Interface |     //Advanced Plugin Interface | ||||||
|     void RegisterAdvancedPlugin(skindesignerapi::cPluginStructure *plugStructure); |     void RegisterAdvancedPlugin(skindesignerapi::cPluginStructure *plugStructure); | ||||||
|     void InitPluginViewIterator(void); |     void InitPluginViewIterator(void); | ||||||
|     bool GetNextPluginView(string &plugName, int &plugId, string &tplName); |     bool GetNextPluginView(string &plugName, int &plugId, string &tplName); | ||||||
|     int GetNumSubviews(int plugId); |     int GetNumSubviews(int plugId); | ||||||
|     void InitPluginSubviewIterator(int plugId); |     void InitPluginSubviewIterator(int plugId); | ||||||
|     bool GetNextSubView(int &id, string &tplname); |     bool GetNextSubView(int &id, string &tplname); | ||||||
|     int GetNumViewElements(int plugId, int viewId); |     int GetNumViewElements(int plugId, int viewId); | ||||||
|     void InitViewElementIterator(int plugId, int viewId); |     void InitViewElementIterator(int plugId, int viewId); | ||||||
|     bool GetNextViewElement(int &veId, string &veName); |     bool GetNextViewElement(int &veId, string &veName); | ||||||
|     skindesignerapi::cTokenContainer *GetTokenContainerVE(int plugId, int viewId, int veId); |     skindesignerapi::cTokenContainer *GetTokenContainerVE(int plugId, int viewId, int veId); | ||||||
|     int GetNumViewGrids(int plugId, int viewId); |     int GetNumViewGrids(int plugId, int viewId); | ||||||
|     void InitViewGridIterator(int plugId, int viewId); |     void InitViewGridIterator(int plugId, int viewId); | ||||||
|     bool GetNextViewGrid(int &gId, string &gName); |     bool GetNextViewGrid(int &gId, string &gName); | ||||||
|     skindesignerapi::cTokenContainer *GetTokenContainerGE(int plugId, int viewId, int gId); |     skindesignerapi::cTokenContainer *GetTokenContainerGE(int plugId, int viewId, int gId); | ||||||
|     skindesignerapi::cTokenContainer *GetTokenContainerTab(int plugId, int viewId); |     skindesignerapi::cTokenContainer *GetTokenContainerTab(int plugId, int viewId); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif //__PLUGINMANAGER_H | #endif //__PLUGINMANAGER_H | ||||||
|   | |||||||
| @@ -1,359 +1,359 @@ | |||||||
| #include "scrapmanager.h" | #include "scrapmanager.h" | ||||||
| #include "../coreengine/definitions.h" | #include "../coreengine/definitions.h" | ||||||
| #include "helpers.h" | #include "helpers.h" | ||||||
|  |  | ||||||
| cPlugin *cScrapManager::pScraper = NULL; | cPlugin *cScrapManager::pScraper = NULL; | ||||||
|  |  | ||||||
| cScrapManager::cScrapManager(void) { | cScrapManager::cScrapManager(void) { | ||||||
|     if (!pScraper) { |     if (!pScraper) { | ||||||
|         pScraper = GetScraperPlugin(); |         pScraper = GetScraperPlugin(); | ||||||
|     } |     } | ||||||
|     movie = NULL; |     movie = NULL; | ||||||
|     series = NULL; |     series = NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| cScrapManager::~cScrapManager(void) { | cScrapManager::~cScrapManager(void) { | ||||||
|     delete movie; |     delete movie; | ||||||
|     delete series; |     delete series; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool cScrapManager::LoadFullScrapInfo(const cEvent *event, const cRecording *recording) { | bool cScrapManager::LoadFullScrapInfo(const cEvent *event, const cRecording *recording) { | ||||||
|     if (!pScraper) { |     if (!pScraper) { | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|     delete movie; |     delete movie; | ||||||
|     movie = NULL; |     movie = NULL; | ||||||
|     delete series; |     delete series; | ||||||
|     series = NULL; |     series = NULL; | ||||||
|      |      | ||||||
|     ScraperGetEventType getType; |     ScraperGetEventType getType; | ||||||
|     getType.event = event; |     getType.event = event; | ||||||
|     getType.recording = recording; |     getType.recording = recording; | ||||||
|     if (!pScraper->Service("GetEventType", &getType)) { |     if (!pScraper->Service("GetEventType", &getType)) { | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|     if (getType.type == tMovie) { |     if (getType.type == tMovie) { | ||||||
|         movie = new cMovie(); |         movie = new cMovie(); | ||||||
|         movie->movieId = getType.movieId; |         movie->movieId = getType.movieId; | ||||||
|         pScraper->Service("GetMovie", movie); |         pScraper->Service("GetMovie", movie); | ||||||
|         return true; |         return true; | ||||||
|     } else if (getType.type == tSeries) { |     } else if (getType.type == tSeries) { | ||||||
|         series = new cSeries(); |         series = new cSeries(); | ||||||
|         series->seriesId = getType.seriesId; |         series->seriesId = getType.seriesId; | ||||||
|         series->episodeId = getType.episodeId; |         series->episodeId = getType.episodeId; | ||||||
|         pScraper->Service("GetSeries", series); |         pScraper->Service("GetSeries", series); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|     return false; |     return false; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cScrapManager::SetFullScrapInfo(skindesignerapi::cTokenContainer *tk, int actorsIndex) { | void cScrapManager::SetFullScrapInfo(skindesignerapi::cTokenContainer *tk, int actorsIndex) { | ||||||
|     if (series) { |     if (series) { | ||||||
|         tk->AddIntToken((int)eScraperIT::ismovie, 0); |         tk->AddIntToken((int)eScraperIT::ismovie, 0); | ||||||
|         tk->AddIntToken((int)eScraperIT::isseries, 1); |         tk->AddIntToken((int)eScraperIT::isseries, 1); | ||||||
|         SetSeries(tk, actorsIndex); |         SetSeries(tk, actorsIndex); | ||||||
|     } else if (movie) { |     } else if (movie) { | ||||||
|         tk->AddIntToken((int)eScraperIT::ismovie, 1); |         tk->AddIntToken((int)eScraperIT::ismovie, 1); | ||||||
|         tk->AddIntToken((int)eScraperIT::isseries, 0); |         tk->AddIntToken((int)eScraperIT::isseries, 0); | ||||||
|         SetMovie(tk, actorsIndex); |         SetMovie(tk, actorsIndex); | ||||||
|     } else { |     } else { | ||||||
|         tk->AddIntToken((int)eScraperIT::ismovie, 0); |         tk->AddIntToken((int)eScraperIT::ismovie, 0); | ||||||
|         tk->AddIntToken((int)eScraperIT::isseries, 0);         |         tk->AddIntToken((int)eScraperIT::isseries, 0);         | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int cScrapManager::NumActors(void) { | int cScrapManager::NumActors(void) { | ||||||
|     if (series) { |     if (series) { | ||||||
|         return series->actors.size(); |         return series->actors.size(); | ||||||
|     } else if (movie) { |     } else if (movie) { | ||||||
|         return movie->actors.size(); |         return movie->actors.size(); | ||||||
|     }     |     }     | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cScrapManager::SetHeaderScrapInfo(skindesignerapi::cTokenContainer *tk) { | void cScrapManager::SetHeaderScrapInfo(skindesignerapi::cTokenContainer *tk) { | ||||||
|     if (series) { |     if (series) { | ||||||
|         tk->AddIntToken((int)eScraperHeaderIT::ismovie, 0); |         tk->AddIntToken((int)eScraperHeaderIT::ismovie, 0); | ||||||
|         tk->AddIntToken((int)eScraperHeaderIT::isseries, 1); |         tk->AddIntToken((int)eScraperHeaderIT::isseries, 1); | ||||||
|         vector<cTvMedia>::iterator poster = series->posters.begin(); |         vector<cTvMedia>::iterator poster = series->posters.begin(); | ||||||
|         if (poster != series->posters.end()) { |         if (poster != series->posters.end()) { | ||||||
|             tk->AddIntToken((int)eScraperHeaderIT::posteravailable, true); |             tk->AddIntToken((int)eScraperHeaderIT::posteravailable, true); | ||||||
|             tk->AddIntToken((int)eScraperHeaderIT::posterwidth, (*poster).width); |             tk->AddIntToken((int)eScraperHeaderIT::posterwidth, (*poster).width); | ||||||
|             tk->AddIntToken((int)eScraperHeaderIT::posterheight, (*poster).height); |             tk->AddIntToken((int)eScraperHeaderIT::posterheight, (*poster).height); | ||||||
|             tk->AddStringToken((int)eScraperHeaderST::posterpath, (*poster).path.c_str()); |             tk->AddStringToken((int)eScraperHeaderST::posterpath, (*poster).path.c_str()); | ||||||
|         } |         } | ||||||
|         vector<cTvMedia>::iterator banner = series->banners.begin(); |         vector<cTvMedia>::iterator banner = series->banners.begin(); | ||||||
|         if (banner != series->banners.end()) { |         if (banner != series->banners.end()) { | ||||||
|             tk->AddIntToken((int)eScraperHeaderIT::banneravailable, true); |             tk->AddIntToken((int)eScraperHeaderIT::banneravailable, true); | ||||||
|             tk->AddIntToken((int)eScraperHeaderIT::bannerwidth, (*banner).width); |             tk->AddIntToken((int)eScraperHeaderIT::bannerwidth, (*banner).width); | ||||||
|             tk->AddIntToken((int)eScraperHeaderIT::bannerheight, (*banner).height); |             tk->AddIntToken((int)eScraperHeaderIT::bannerheight, (*banner).height); | ||||||
|             tk->AddStringToken((int)eScraperHeaderST::bannerpath, (*banner).path.c_str()); |             tk->AddStringToken((int)eScraperHeaderST::bannerpath, (*banner).path.c_str()); | ||||||
|         } |         } | ||||||
|     } else if (movie) { |     } else if (movie) { | ||||||
|         tk->AddIntToken((int)eScraperHeaderIT::ismovie, 1); |         tk->AddIntToken((int)eScraperHeaderIT::ismovie, 1); | ||||||
|         tk->AddIntToken((int)eScraperHeaderIT::isseries, 0); |         tk->AddIntToken((int)eScraperHeaderIT::isseries, 0); | ||||||
|         tk->AddIntToken((int)eScraperHeaderIT::posteravailable, true); |         tk->AddIntToken((int)eScraperHeaderIT::posteravailable, true); | ||||||
|         tk->AddIntToken((int)eScraperHeaderIT::banneravailable, false); |         tk->AddIntToken((int)eScraperHeaderIT::banneravailable, false); | ||||||
|         tk->AddIntToken((int)eScraperHeaderIT::posterwidth, movie->poster.width); |         tk->AddIntToken((int)eScraperHeaderIT::posterwidth, movie->poster.width); | ||||||
|         tk->AddIntToken((int)eScraperHeaderIT::posterheight, movie->poster.height); |         tk->AddIntToken((int)eScraperHeaderIT::posterheight, movie->poster.height); | ||||||
|         tk->AddStringToken((int)eScraperHeaderST::posterpath, movie->poster.path.c_str()); |         tk->AddStringToken((int)eScraperHeaderST::posterpath, movie->poster.path.c_str()); | ||||||
|     } else { |     } else { | ||||||
|         tk->AddIntToken((int)eScraperHeaderIT::ismovie, 0); |         tk->AddIntToken((int)eScraperHeaderIT::ismovie, 0); | ||||||
|         tk->AddIntToken((int)eScraperHeaderIT::isseries, 0);         |         tk->AddIntToken((int)eScraperHeaderIT::isseries, 0);         | ||||||
|     }     |     }     | ||||||
| } | } | ||||||
|  |  | ||||||
| void cScrapManager::SetScraperPosterBanner(skindesignerapi::cTokenContainer *tk) { | void cScrapManager::SetScraperPosterBanner(skindesignerapi::cTokenContainer *tk) { | ||||||
|     if (movie) { |     if (movie) { | ||||||
|         tk->AddIntToken((int)eCeMenuSchedulesIT::hasposter, 1); |         tk->AddIntToken((int)eCeMenuSchedulesIT::hasposter, 1); | ||||||
|         tk->AddStringToken((int)eCeMenuSchedulesST::posterpath, movie->poster.path.c_str()); |         tk->AddStringToken((int)eCeMenuSchedulesST::posterpath, movie->poster.path.c_str()); | ||||||
|         tk->AddIntToken((int)eCeMenuSchedulesIT::posterwidth, movie->poster.width); |         tk->AddIntToken((int)eCeMenuSchedulesIT::posterwidth, movie->poster.width); | ||||||
|         tk->AddIntToken((int)eCeMenuSchedulesIT::posterheight, movie->poster.height); |         tk->AddIntToken((int)eCeMenuSchedulesIT::posterheight, movie->poster.height); | ||||||
|     } else if (series) { |     } else if (series) { | ||||||
|         vector<cTvMedia>::iterator poster = series->posters.begin(); |         vector<cTvMedia>::iterator poster = series->posters.begin(); | ||||||
|         if (poster != series->posters.end()) { |         if (poster != series->posters.end()) { | ||||||
|             tk->AddIntToken((int)eCeMenuSchedulesIT::hasposter, 1); |             tk->AddIntToken((int)eCeMenuSchedulesIT::hasposter, 1); | ||||||
|             tk->AddIntToken((int)eCeMenuSchedulesIT::posterwidth, (*poster).width); |             tk->AddIntToken((int)eCeMenuSchedulesIT::posterwidth, (*poster).width); | ||||||
|             tk->AddIntToken((int)eCeMenuSchedulesIT::posterheight, (*poster).height); |             tk->AddIntToken((int)eCeMenuSchedulesIT::posterheight, (*poster).height); | ||||||
|             tk->AddStringToken((int)eCeMenuSchedulesST::posterpath, (*poster).path.c_str()); |             tk->AddStringToken((int)eCeMenuSchedulesST::posterpath, (*poster).path.c_str()); | ||||||
|         } |         } | ||||||
|         vector<cTvMedia>::iterator banner = series->banners.begin(); |         vector<cTvMedia>::iterator banner = series->banners.begin(); | ||||||
|         if (banner != series->banners.end()) { |         if (banner != series->banners.end()) { | ||||||
|             tk->AddIntToken((int)eCeMenuSchedulesIT::hasbanner, 1); |             tk->AddIntToken((int)eCeMenuSchedulesIT::hasbanner, 1); | ||||||
|             tk->AddIntToken((int)eCeMenuSchedulesIT::bannerwidth, (*banner).width); |             tk->AddIntToken((int)eCeMenuSchedulesIT::bannerwidth, (*banner).width); | ||||||
|             tk->AddIntToken((int)eCeMenuSchedulesIT::bannerheight, (*banner).height); |             tk->AddIntToken((int)eCeMenuSchedulesIT::bannerheight, (*banner).height); | ||||||
|             tk->AddStringToken((int)eCeMenuSchedulesST::bannerpath, (*banner).path.c_str()); |             tk->AddStringToken((int)eCeMenuSchedulesST::bannerpath, (*banner).path.c_str()); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cScrapManager::SetScraperRecordingPoster(skindesignerapi::cTokenContainer *tk, const cRecording *recording, bool isListElement) { | void cScrapManager::SetScraperRecordingPoster(skindesignerapi::cTokenContainer *tk, const cRecording *recording, bool isListElement) { | ||||||
|     if (!pScraper) { |     if (!pScraper) { | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     ScraperGetPosterThumb call; |     ScraperGetPosterThumb call; | ||||||
|     call.event = NULL; |     call.event = NULL; | ||||||
|     call.recording = recording; |     call.recording = recording; | ||||||
|     if (pScraper->Service("GetPosterThumb", &call)) { |     if (pScraper->Service("GetPosterThumb", &call)) { | ||||||
|         if (isListElement) { |         if (isListElement) { | ||||||
|             tk->AddIntToken((int)eLeMenuRecordingsIT::hasposterthumbnail, FileExists(call.poster.path)); |             tk->AddIntToken((int)eLeMenuRecordingsIT::hasposterthumbnail, FileExists(call.poster.path)); | ||||||
|             tk->AddIntToken((int)eLeMenuRecordingsIT::thumbnailwidth, call.poster.width); |             tk->AddIntToken((int)eLeMenuRecordingsIT::thumbnailwidth, call.poster.width); | ||||||
|             tk->AddIntToken((int)eLeMenuRecordingsIT::thumbnailheight, call.poster.height); |             tk->AddIntToken((int)eLeMenuRecordingsIT::thumbnailheight, call.poster.height); | ||||||
|             tk->AddStringToken((int)eLeMenuRecordingsST::thumbnailpath, call.poster.path.c_str()); |             tk->AddStringToken((int)eLeMenuRecordingsST::thumbnailpath, call.poster.path.c_str()); | ||||||
|         } else { |         } else { | ||||||
|             tk->AddIntToken((int)eCeMenuRecordingsIT::hasposterthumbnail, FileExists(call.poster.path)); |             tk->AddIntToken((int)eCeMenuRecordingsIT::hasposterthumbnail, FileExists(call.poster.path)); | ||||||
|             tk->AddIntToken((int)eCeMenuRecordingsIT::thumbnailwidth, call.poster.width); |             tk->AddIntToken((int)eCeMenuRecordingsIT::thumbnailwidth, call.poster.width); | ||||||
|             tk->AddIntToken((int)eCeMenuRecordingsIT::thumbnailheight, call.poster.height); |             tk->AddIntToken((int)eCeMenuRecordingsIT::thumbnailheight, call.poster.height); | ||||||
|             tk->AddStringToken((int)eCeMenuRecordingsST::thumbnailpath, call.poster.path.c_str()); |             tk->AddStringToken((int)eCeMenuRecordingsST::thumbnailpath, call.poster.path.c_str()); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     ScraperGetPoster call2; |     ScraperGetPoster call2; | ||||||
|     call2.event = NULL; |     call2.event = NULL; | ||||||
|     call2.recording = recording; |     call2.recording = recording; | ||||||
|     if (pScraper->Service("GetPoster", &call2)) { |     if (pScraper->Service("GetPoster", &call2)) { | ||||||
|         if (isListElement) { |         if (isListElement) { | ||||||
|             tk->AddIntToken((int)eLeMenuRecordingsIT::hasposter, FileExists(call2.poster.path)); |             tk->AddIntToken((int)eLeMenuRecordingsIT::hasposter, FileExists(call2.poster.path)); | ||||||
|             tk->AddIntToken((int)eLeMenuRecordingsIT::posterwidth, call2.poster.width); |             tk->AddIntToken((int)eLeMenuRecordingsIT::posterwidth, call2.poster.width); | ||||||
|             tk->AddIntToken((int)eLeMenuRecordingsIT::posterheight, call2.poster.height); |             tk->AddIntToken((int)eLeMenuRecordingsIT::posterheight, call2.poster.height); | ||||||
|             tk->AddStringToken((int)eLeMenuRecordingsST::posterpath, call2.poster.path.c_str()); |             tk->AddStringToken((int)eLeMenuRecordingsST::posterpath, call2.poster.path.c_str()); | ||||||
|         } else { |         } else { | ||||||
|             tk->AddIntToken((int)eCeMenuRecordingsIT::hasposter, FileExists(call2.poster.path)); |             tk->AddIntToken((int)eCeMenuRecordingsIT::hasposter, FileExists(call2.poster.path)); | ||||||
|             tk->AddIntToken((int)eCeMenuRecordingsIT::posterwidth, call2.poster.width); |             tk->AddIntToken((int)eCeMenuRecordingsIT::posterwidth, call2.poster.width); | ||||||
|             tk->AddIntToken((int)eCeMenuRecordingsIT::posterheight, call2.poster.height); |             tk->AddIntToken((int)eCeMenuRecordingsIT::posterheight, call2.poster.height); | ||||||
|             tk->AddStringToken((int)eCeMenuRecordingsST::posterpath, call2.poster.path.c_str());             |             tk->AddStringToken((int)eCeMenuRecordingsST::posterpath, call2.poster.path.c_str());             | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| cPlugin *cScrapManager::GetScraperPlugin(void) { | cPlugin *cScrapManager::GetScraperPlugin(void) { | ||||||
|     static cPlugin *pScraper = cPluginManager::GetPlugin("scraper2vdr"); |     static cPlugin *pScraper = cPluginManager::GetPlugin("scraper2vdr"); | ||||||
|     if( !pScraper ) // if it doesn't exit, try tvscraper |     if( !pScraper ) // if it doesn't exit, try tvscraper | ||||||
|         pScraper = cPluginManager::GetPlugin("tvscraper"); |         pScraper = cPluginManager::GetPlugin("tvscraper"); | ||||||
|     return pScraper; |     return pScraper; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cScrapManager::SetMovie(skindesignerapi::cTokenContainer *tk, int actorsIndex) { | void cScrapManager::SetMovie(skindesignerapi::cTokenContainer *tk, int actorsIndex) { | ||||||
|     tk->AddStringToken((int)eScraperST::movietitle, movie->title.c_str()); |     tk->AddStringToken((int)eScraperST::movietitle, movie->title.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::movieoriginalTitle, movie->originalTitle.c_str()); |     tk->AddStringToken((int)eScraperST::movieoriginalTitle, movie->originalTitle.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::movietagline, movie->tagline.c_str()); |     tk->AddStringToken((int)eScraperST::movietagline, movie->tagline.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::movieoverview, movie->overview.c_str()); |     tk->AddStringToken((int)eScraperST::movieoverview, movie->overview.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::moviegenres, movie->genres.c_str()); |     tk->AddStringToken((int)eScraperST::moviegenres, movie->genres.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::moviehomepage, movie->homepage.c_str()); |     tk->AddStringToken((int)eScraperST::moviehomepage, movie->homepage.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::moviereleasedate, movie->releaseDate.c_str()); |     tk->AddStringToken((int)eScraperST::moviereleasedate, movie->releaseDate.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::moviepopularity, *cString::sprintf("%f", movie->popularity)); |     tk->AddStringToken((int)eScraperST::moviepopularity, *cString::sprintf("%f", movie->popularity)); | ||||||
|     tk->AddStringToken((int)eScraperST::movievoteaverage, *cString::sprintf("%f", movie->voteAverage)); |     tk->AddStringToken((int)eScraperST::movievoteaverage, *cString::sprintf("%f", movie->voteAverage)); | ||||||
|     tk->AddStringToken((int)eScraperST::posterpath, movie->poster.path.c_str()); |     tk->AddStringToken((int)eScraperST::posterpath, movie->poster.path.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::fanartpath, movie->fanart.path.c_str()); |     tk->AddStringToken((int)eScraperST::fanartpath, movie->fanart.path.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::collectionposterpath, movie->collectionPoster.path.c_str()); |     tk->AddStringToken((int)eScraperST::collectionposterpath, movie->collectionPoster.path.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::collectionfanartpath, movie->collectionFanart.path.c_str()); |     tk->AddStringToken((int)eScraperST::collectionfanartpath, movie->collectionFanart.path.c_str()); | ||||||
|     tk->AddIntToken((int)eScraperIT::movieadult, movie->adult); |     tk->AddIntToken((int)eScraperIT::movieadult, movie->adult); | ||||||
|     tk->AddIntToken((int)eScraperIT::moviebudget, movie->budget); |     tk->AddIntToken((int)eScraperIT::moviebudget, movie->budget); | ||||||
|     tk->AddIntToken((int)eScraperIT::movierevenue, movie->revenue); |     tk->AddIntToken((int)eScraperIT::movierevenue, movie->revenue); | ||||||
|     tk->AddIntToken((int)eScraperIT::movieruntime, movie->runtime); |     tk->AddIntToken((int)eScraperIT::movieruntime, movie->runtime); | ||||||
|     tk->AddIntToken((int)eScraperIT::posterwidth, movie->poster.width); |     tk->AddIntToken((int)eScraperIT::posterwidth, movie->poster.width); | ||||||
|     tk->AddIntToken((int)eScraperIT::posterheight, movie->poster.height); |     tk->AddIntToken((int)eScraperIT::posterheight, movie->poster.height); | ||||||
|     tk->AddIntToken((int)eScraperIT::fanartwidth, movie->fanart.width); |     tk->AddIntToken((int)eScraperIT::fanartwidth, movie->fanart.width); | ||||||
|     tk->AddIntToken((int)eScraperIT::fanartheight, movie->fanart.height); |     tk->AddIntToken((int)eScraperIT::fanartheight, movie->fanart.height); | ||||||
|     tk->AddIntToken((int)eScraperIT::collectionposterwidth, movie->collectionPoster.width); |     tk->AddIntToken((int)eScraperIT::collectionposterwidth, movie->collectionPoster.width); | ||||||
|     tk->AddIntToken((int)eScraperIT::collectionposterheight, movie->collectionPoster.height); |     tk->AddIntToken((int)eScraperIT::collectionposterheight, movie->collectionPoster.height); | ||||||
|     tk->AddIntToken((int)eScraperIT::collectionfanartwidth, movie->collectionFanart.width); |     tk->AddIntToken((int)eScraperIT::collectionfanartwidth, movie->collectionFanart.width); | ||||||
|     tk->AddIntToken((int)eScraperIT::collectionfanartheight, movie->collectionFanart.height); |     tk->AddIntToken((int)eScraperIT::collectionfanartheight, movie->collectionFanart.height); | ||||||
|     if (movie->collectionPoster.path.size() > 0) |     if (movie->collectionPoster.path.size() > 0) | ||||||
|         tk->AddIntToken((int)eScraperIT::movieiscollection, 1); |         tk->AddIntToken((int)eScraperIT::movieiscollection, 1); | ||||||
|     int i=0; |     int i=0; | ||||||
|     for (vector<cActor>::iterator act = movie->actors.begin(); act != movie->actors.end(); act++) { |     for (vector<cActor>::iterator act = movie->actors.begin(); act != movie->actors.end(); act++) { | ||||||
|         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::name, (*act).name.c_str()); |         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::name, (*act).name.c_str()); | ||||||
|         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::role, (*act).role.c_str()); |         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::role, (*act).role.c_str()); | ||||||
|         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::thumb, (*act).actorThumb.path.c_str()); |         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::thumb, (*act).actorThumb.path.c_str()); | ||||||
|         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::thumbwidth, *cString::sprintf("%d", (*act).actorThumb.width)); |         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::thumbwidth, *cString::sprintf("%d", (*act).actorThumb.width)); | ||||||
|         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::thumbheight, *cString::sprintf("%d", (*act).actorThumb.height)); |         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::thumbheight, *cString::sprintf("%d", (*act).actorThumb.height)); | ||||||
|         i++; |         i++; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cScrapManager::SetSeries(skindesignerapi::cTokenContainer *tk, int actorsIndex) { | void cScrapManager::SetSeries(skindesignerapi::cTokenContainer *tk, int actorsIndex) { | ||||||
|     //Series Basics |     //Series Basics | ||||||
|     tk->AddStringToken((int)eScraperST::seriesname, series->name.c_str()); |     tk->AddStringToken((int)eScraperST::seriesname, series->name.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::seriesoverview, series->overview.c_str()); |     tk->AddStringToken((int)eScraperST::seriesoverview, series->overview.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::seriesfirstaired, series->firstAired.c_str()); |     tk->AddStringToken((int)eScraperST::seriesfirstaired, series->firstAired.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::seriesnetwork, series->network.c_str()); |     tk->AddStringToken((int)eScraperST::seriesnetwork, series->network.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::seriesgenre, series->genre.c_str()); |     tk->AddStringToken((int)eScraperST::seriesgenre, series->genre.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::seriesrating, *cString::sprintf("%f", series->rating)); |     tk->AddStringToken((int)eScraperST::seriesrating, *cString::sprintf("%f", series->rating)); | ||||||
|     tk->AddStringToken((int)eScraperST::seriesstatus, series->status.c_str()); |     tk->AddStringToken((int)eScraperST::seriesstatus, series->status.c_str()); | ||||||
|     //Episode Information |     //Episode Information | ||||||
|     tk->AddIntToken((int)eScraperIT::episodenumber, series->episode.number); |     tk->AddIntToken((int)eScraperIT::episodenumber, series->episode.number); | ||||||
|     tk->AddIntToken((int)eScraperIT::episodeseason, series->episode.season); |     tk->AddIntToken((int)eScraperIT::episodeseason, series->episode.season); | ||||||
|     tk->AddStringToken((int)eScraperST::episodetitle, series->episode.name.c_str()); |     tk->AddStringToken((int)eScraperST::episodetitle, series->episode.name.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::episodefirstaired, series->episode.firstAired.c_str()); |     tk->AddStringToken((int)eScraperST::episodefirstaired, series->episode.firstAired.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::episodegueststars, series->episode.guestStars.c_str()); |     tk->AddStringToken((int)eScraperST::episodegueststars, series->episode.guestStars.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::episodeoverview, series->episode.overview.c_str()); |     tk->AddStringToken((int)eScraperST::episodeoverview, series->episode.overview.c_str()); | ||||||
|     tk->AddStringToken((int)eScraperST::episoderating, *cString::sprintf("%f", series->episode.rating)); |     tk->AddStringToken((int)eScraperST::episoderating, *cString::sprintf("%f", series->episode.rating)); | ||||||
|     tk->AddIntToken((int)eScraperIT::episodeimagewidth, series->episode.episodeImage.width); |     tk->AddIntToken((int)eScraperIT::episodeimagewidth, series->episode.episodeImage.width); | ||||||
|     tk->AddIntToken((int)eScraperIT::episodeimageheight, series->episode.episodeImage.height); |     tk->AddIntToken((int)eScraperIT::episodeimageheight, series->episode.episodeImage.height); | ||||||
|     tk->AddStringToken((int)eScraperST::episodeimagepath, series->episode.episodeImage.path.c_str()); |     tk->AddStringToken((int)eScraperST::episodeimagepath, series->episode.episodeImage.path.c_str()); | ||||||
|     //Seasonposter |     //Seasonposter | ||||||
|     tk->AddIntToken((int)eScraperIT::seasonposterwidth, series->seasonPoster.width); |     tk->AddIntToken((int)eScraperIT::seasonposterwidth, series->seasonPoster.width); | ||||||
|     tk->AddIntToken((int)eScraperIT::seasonposterheight, series->seasonPoster.height); |     tk->AddIntToken((int)eScraperIT::seasonposterheight, series->seasonPoster.height); | ||||||
|     tk->AddStringToken((int)eScraperST::seasonposterpath, series->seasonPoster.path.c_str()); |     tk->AddStringToken((int)eScraperST::seasonposterpath, series->seasonPoster.path.c_str()); | ||||||
|     //Posters |     //Posters | ||||||
|     int indexInt = (int)eScraperIT::seriesposter1width; |     int indexInt = (int)eScraperIT::seriesposter1width; | ||||||
|     int indexStr = (int)eScraperST::seriesposter1path; |     int indexStr = (int)eScraperST::seriesposter1path; | ||||||
|     for(vector<cTvMedia>::iterator poster = series->posters.begin(); poster != series->posters.end(); poster++) { |     for(vector<cTvMedia>::iterator poster = series->posters.begin(); poster != series->posters.end(); poster++) { | ||||||
|         tk->AddIntToken(indexInt, (*poster).width); |         tk->AddIntToken(indexInt, (*poster).width); | ||||||
|         tk->AddIntToken(indexInt+1, (*poster).height); |         tk->AddIntToken(indexInt+1, (*poster).height); | ||||||
|         tk->AddStringToken(indexStr, (*poster).path.c_str()); |         tk->AddStringToken(indexStr, (*poster).path.c_str()); | ||||||
|         indexInt += 2; |         indexInt += 2; | ||||||
|         indexStr++; |         indexStr++; | ||||||
|     } |     } | ||||||
|     //Banners |     //Banners | ||||||
|     indexInt = (int)eScraperIT::seriesbanner1width; |     indexInt = (int)eScraperIT::seriesbanner1width; | ||||||
|     indexStr = (int)eScraperST::seriesbanner1path; |     indexStr = (int)eScraperST::seriesbanner1path; | ||||||
|     for(vector<cTvMedia>::iterator banner = series->banners.begin(); banner != series->banners.end(); banner++) { |     for(vector<cTvMedia>::iterator banner = series->banners.begin(); banner != series->banners.end(); banner++) { | ||||||
|         tk->AddIntToken(indexInt, (*banner).width); |         tk->AddIntToken(indexInt, (*banner).width); | ||||||
|         tk->AddIntToken(indexInt+1, (*banner).height); |         tk->AddIntToken(indexInt+1, (*banner).height); | ||||||
|         tk->AddStringToken(indexStr, (*banner).path.c_str()); |         tk->AddStringToken(indexStr, (*banner).path.c_str()); | ||||||
|         indexInt += 2; |         indexInt += 2; | ||||||
|         indexStr++; |         indexStr++; | ||||||
|     } |     } | ||||||
|     //Fanarts |     //Fanarts | ||||||
|     indexInt = (int)eScraperIT::seriesfanart1width; |     indexInt = (int)eScraperIT::seriesfanart1width; | ||||||
|     indexStr = (int)eScraperST::seriesfanart1path; |     indexStr = (int)eScraperST::seriesfanart1path; | ||||||
|     for(vector<cTvMedia>::iterator fanart = series->fanarts.begin(); fanart != series->fanarts.end(); fanart++) { |     for(vector<cTvMedia>::iterator fanart = series->fanarts.begin(); fanart != series->fanarts.end(); fanart++) { | ||||||
|         tk->AddIntToken(indexInt, (*fanart).width); |         tk->AddIntToken(indexInt, (*fanart).width); | ||||||
|         tk->AddIntToken(indexInt+1, (*fanart).height); |         tk->AddIntToken(indexInt+1, (*fanart).height); | ||||||
|         tk->AddStringToken(indexStr, (*fanart).path.c_str()); |         tk->AddStringToken(indexStr, (*fanart).path.c_str()); | ||||||
|         indexInt += 2; |         indexInt += 2; | ||||||
|         indexStr++; |         indexStr++; | ||||||
|     } |     } | ||||||
|     //Actors |     //Actors | ||||||
|     int i=0; |     int i=0; | ||||||
|     for (vector<cActor>::iterator act = series->actors.begin(); act != series->actors.end(); act++) { |     for (vector<cActor>::iterator act = series->actors.begin(); act != series->actors.end(); act++) { | ||||||
|         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::name, (*act).name.c_str()); |         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::name, (*act).name.c_str()); | ||||||
|         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::role, (*act).role.c_str()); |         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::role, (*act).role.c_str()); | ||||||
|         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::thumb, (*act).actorThumb.path.c_str()); |         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::thumb, (*act).actorThumb.path.c_str()); | ||||||
|         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::thumbwidth, *cString::sprintf("%d", (*act).actorThumb.width)); |         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::thumbwidth, *cString::sprintf("%d", (*act).actorThumb.width)); | ||||||
|         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::thumbheight, *cString::sprintf("%d", (*act).actorThumb.height)); |         tk->AddLoopToken(actorsIndex, i, (int)eScraperLT::thumbheight, *cString::sprintf("%d", (*act).actorThumb.height)); | ||||||
|         i++; |         i++; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cScrapManager::RecPoster(const cRecording *rec, int &posterWidth, int &posterHeight, string &path, bool &hasPoster) { | void cScrapManager::RecPoster(const cRecording *rec, int &posterWidth, int &posterHeight, string &path, bool &hasPoster) { | ||||||
|     if (!pScraper) { |     if (!pScraper) { | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     ScraperGetPoster callPoster; |     ScraperGetPoster callPoster; | ||||||
|     callPoster.event = NULL; |     callPoster.event = NULL; | ||||||
|     callPoster.recording = rec; |     callPoster.recording = rec; | ||||||
|     if (pScraper->Service("GetPoster", &callPoster)) { |     if (pScraper->Service("GetPoster", &callPoster)) { | ||||||
|         posterWidth = callPoster.poster.width; |         posterWidth = callPoster.poster.width; | ||||||
|         posterHeight = callPoster.poster.height; |         posterHeight = callPoster.poster.height; | ||||||
|         path = callPoster.poster.path; |         path = callPoster.poster.path; | ||||||
|         if (path.size() > 0) |         if (path.size() > 0) | ||||||
|             hasPoster = true; |             hasPoster = true; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void cScrapManager::SetPosterBanner(skindesignerapi::cTokenContainer *tk, const cEvent *event, const cRecording *recording) { | void cScrapManager::SetPosterBanner(skindesignerapi::cTokenContainer *tk, const cEvent *event, const cRecording *recording) { | ||||||
|     if (!pScraper) { |     if (!pScraper) { | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     int mediaWidth = 0; |     int mediaWidth = 0; | ||||||
|     int mediaHeight = 0; |     int mediaHeight = 0; | ||||||
|     string mediaPath = ""; |     string mediaPath = ""; | ||||||
|     bool isBanner = false; |     bool isBanner = false; | ||||||
|     int posterWidth = 0; |     int posterWidth = 0; | ||||||
|     int posterHeight = 0; |     int posterHeight = 0; | ||||||
|     string posterPath = ""; |     string posterPath = ""; | ||||||
|     bool hasPoster = false; |     bool hasPoster = false; | ||||||
|     int bannerWidth = 0; |     int bannerWidth = 0; | ||||||
|     int bannerHeight = 0; |     int bannerHeight = 0; | ||||||
|     string bannerPath = ""; |     string bannerPath = ""; | ||||||
|     bool hasBanner = false; |     bool hasBanner = false; | ||||||
|  |  | ||||||
|     ScraperGetPosterBannerV2 call; |     ScraperGetPosterBannerV2 call; | ||||||
|     call.event = event; |     call.event = event; | ||||||
|     call.recording = recording; |     call.recording = recording; | ||||||
|     if (pScraper->Service("GetPosterBannerV2", &call)) { |     if (pScraper->Service("GetPosterBannerV2", &call)) { | ||||||
|         if ((call.type == tSeries) && call.banner.path.size() > 0) { |         if ((call.type == tSeries) && call.banner.path.size() > 0) { | ||||||
|             mediaWidth = call.banner.width; |             mediaWidth = call.banner.width; | ||||||
|             mediaHeight = call.banner.height; |             mediaHeight = call.banner.height; | ||||||
|             mediaPath = call.banner.path; |             mediaPath = call.banner.path; | ||||||
|             isBanner = true; |             isBanner = true; | ||||||
|             bannerWidth = mediaWidth; |             bannerWidth = mediaWidth; | ||||||
|             bannerHeight = mediaHeight; |             bannerHeight = mediaHeight; | ||||||
|             bannerPath = mediaPath; |             bannerPath = mediaPath; | ||||||
|             hasBanner = true; |             hasBanner = true; | ||||||
|             ScraperGetPoster callPoster; |             ScraperGetPoster callPoster; | ||||||
|             callPoster.event = event; |             callPoster.event = event; | ||||||
|             callPoster.recording = recording; |             callPoster.recording = recording; | ||||||
|             if (pScraper->Service("GetPoster", &callPoster)) { |             if (pScraper->Service("GetPoster", &callPoster)) { | ||||||
|                 posterWidth = callPoster.poster.width; |                 posterWidth = callPoster.poster.width; | ||||||
|                 posterHeight = callPoster.poster.height; |                 posterHeight = callPoster.poster.height; | ||||||
|                 posterPath = callPoster.poster.path; |                 posterPath = callPoster.poster.path; | ||||||
|                 hasPoster = true; |                 hasPoster = true; | ||||||
|             } |             } | ||||||
|         } else if (call.type == tMovie && call.poster.path.size() > 0 && call.poster.height > 0) { |         } else if (call.type == tMovie && call.poster.path.size() > 0 && call.poster.height > 0) { | ||||||
|             mediaWidth = call.poster.width; |             mediaWidth = call.poster.width; | ||||||
|             mediaHeight = call.poster.height; |             mediaHeight = call.poster.height; | ||||||
|             mediaPath = call.poster.path; |             mediaPath = call.poster.path; | ||||||
|             posterWidth = call.poster.width; |             posterWidth = call.poster.width; | ||||||
|             posterHeight = call.poster.height; |             posterHeight = call.poster.height; | ||||||
|             posterPath = call.poster.path; |             posterPath = call.poster.path; | ||||||
|             hasPoster = true; |             hasPoster = true; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     tk->AddIntToken((int)eScraperPosterBannerIT::mediawidth, mediaWidth); |     tk->AddIntToken((int)eScraperPosterBannerIT::mediawidth, mediaWidth); | ||||||
|     tk->AddIntToken((int)eScraperPosterBannerIT::mediaheight, mediaHeight); |     tk->AddIntToken((int)eScraperPosterBannerIT::mediaheight, mediaHeight); | ||||||
|     tk->AddIntToken((int)eScraperPosterBannerIT::isbanner, isBanner); |     tk->AddIntToken((int)eScraperPosterBannerIT::isbanner, isBanner); | ||||||
|     tk->AddStringToken((int)eScraperPosterBannerST::mediapath, mediaPath.c_str()); |     tk->AddStringToken((int)eScraperPosterBannerST::mediapath, mediaPath.c_str()); | ||||||
|     tk->AddIntToken((int)eScraperPosterBannerIT::posterwidth, posterWidth); |     tk->AddIntToken((int)eScraperPosterBannerIT::posterwidth, posterWidth); | ||||||
|     tk->AddIntToken((int)eScraperPosterBannerIT::posterheight, posterHeight); |     tk->AddIntToken((int)eScraperPosterBannerIT::posterheight, posterHeight); | ||||||
|     tk->AddStringToken((int)eScraperPosterBannerST::posterpath, posterPath.c_str()); |     tk->AddStringToken((int)eScraperPosterBannerST::posterpath, posterPath.c_str()); | ||||||
|     tk->AddIntToken((int)eScraperPosterBannerIT::hasposter, hasPoster); |     tk->AddIntToken((int)eScraperPosterBannerIT::hasposter, hasPoster); | ||||||
|     tk->AddIntToken((int)eScraperPosterBannerIT::bannerwidth, bannerWidth); |     tk->AddIntToken((int)eScraperPosterBannerIT::bannerwidth, bannerWidth); | ||||||
|     tk->AddIntToken((int)eScraperPosterBannerIT::bannerheight, bannerHeight); |     tk->AddIntToken((int)eScraperPosterBannerIT::bannerheight, bannerHeight); | ||||||
|     tk->AddStringToken((int)eScraperPosterBannerST::bannerpath, bannerPath.c_str()); |     tk->AddStringToken((int)eScraperPosterBannerST::bannerpath, bannerPath.c_str()); | ||||||
|     tk->AddIntToken((int)eScraperPosterBannerIT::hasbanner, hasBanner); |     tk->AddIntToken((int)eScraperPosterBannerIT::hasbanner, hasBanner); | ||||||
| } | } | ||||||
| @@ -1,28 +1,28 @@ | |||||||
| #ifndef __SCRAPMANAGER_H | #ifndef __SCRAPMANAGER_H | ||||||
| #define __SCRAPMANAGER_H | #define __SCRAPMANAGER_H | ||||||
|  |  | ||||||
| #include "../services/scraper2vdr.h" | #include "../services/scraper2vdr.h" | ||||||
| #include "../libskindesignerapi/tokencontainer.h" | #include "../libskindesignerapi/tokencontainer.h" | ||||||
|  |  | ||||||
| class cScrapManager { | class cScrapManager { | ||||||
| private: | private: | ||||||
|     static cPlugin *pScraper; |     static cPlugin *pScraper; | ||||||
|     cMovie *movie; |     cMovie *movie; | ||||||
|     cSeries *series; |     cSeries *series; | ||||||
|     cPlugin *GetScraperPlugin(void); |     cPlugin *GetScraperPlugin(void); | ||||||
|     void SetMovie(skindesignerapi::cTokenContainer *tk, int actorsIndex); |     void SetMovie(skindesignerapi::cTokenContainer *tk, int actorsIndex); | ||||||
|     void SetSeries(skindesignerapi::cTokenContainer *tk, int actorsIndex); |     void SetSeries(skindesignerapi::cTokenContainer *tk, int actorsIndex); | ||||||
| protected: | protected: | ||||||
|     bool LoadFullScrapInfo(const cEvent *event, const cRecording *recording); |     bool LoadFullScrapInfo(const cEvent *event, const cRecording *recording); | ||||||
|     void SetFullScrapInfo(skindesignerapi::cTokenContainer *tk, int actorsIndex); |     void SetFullScrapInfo(skindesignerapi::cTokenContainer *tk, int actorsIndex); | ||||||
|     int NumActors(void); |     int NumActors(void); | ||||||
|     void SetHeaderScrapInfo(skindesignerapi::cTokenContainer *tk); |     void SetHeaderScrapInfo(skindesignerapi::cTokenContainer *tk); | ||||||
|     void SetScraperPosterBanner(skindesignerapi::cTokenContainer *tk); |     void SetScraperPosterBanner(skindesignerapi::cTokenContainer *tk); | ||||||
|     void SetScraperRecordingPoster(skindesignerapi::cTokenContainer *tk, const cRecording *recording, bool isListElement); |     void SetScraperRecordingPoster(skindesignerapi::cTokenContainer *tk, const cRecording *recording, bool isListElement); | ||||||
|     void RecPoster(const cRecording *rec, int &posterWidth, int &posterHeight, string &path, bool &hasPoster); |     void RecPoster(const cRecording *rec, int &posterWidth, int &posterHeight, string &path, bool &hasPoster); | ||||||
|     void SetPosterBanner(skindesignerapi::cTokenContainer *tk, const cEvent *event, const cRecording *recording); |     void SetPosterBanner(skindesignerapi::cTokenContainer *tk, const cEvent *event, const cRecording *recording); | ||||||
| public: | public: | ||||||
|     cScrapManager(void); |     cScrapManager(void); | ||||||
|     virtual ~cScrapManager(void); |     virtual ~cScrapManager(void); | ||||||
| }; | }; | ||||||
| #endif //__SCRAPMANAGER_H | #endif //__SCRAPMANAGER_H | ||||||
| @@ -1,92 +1,92 @@ | |||||||
| #include "pluginstructure.h" | #include "pluginstructure.h" | ||||||
|  |  | ||||||
| skindesignerapi::cPluginStructure::cPluginStructure(void) { | skindesignerapi::cPluginStructure::cPluginStructure(void) { | ||||||
|     name = ""; |     name = ""; | ||||||
|     libskindesignerAPIVersion = "undefined"; |     libskindesignerAPIVersion = "undefined"; | ||||||
|     id = -1; |     id = -1; | ||||||
|     rootview = ""; |     rootview = ""; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| skindesignerapi::cPluginStructure::~cPluginStructure(void) { | skindesignerapi::cPluginStructure::~cPluginStructure(void) { | ||||||
|     for (map<int,sPlugMenu>::iterator it = menus.begin(); it != menus.end(); it++) { |     for (map<int,sPlugMenu>::iterator it = menus.begin(); it != menus.end(); it++) { | ||||||
|         delete (it->second).tokenContainer; |         delete (it->second).tokenContainer; | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
|  |  | ||||||
| void skindesignerapi::cPluginStructure::RegisterMenu(int key, int type, string tpl, skindesignerapi::cTokenContainer *tk) { | void skindesignerapi::cPluginStructure::RegisterMenu(int key, int type, string tpl, skindesignerapi::cTokenContainer *tk) { | ||||||
|     tk->CreateContainers(); |     tk->CreateContainers(); | ||||||
|     sPlugMenu s; |     sPlugMenu s; | ||||||
|     s.type = type; |     s.type = type; | ||||||
|     s.tplname = tpl; |     s.tplname = tpl; | ||||||
|     s.tokenContainer = tk; |     s.tokenContainer = tk; | ||||||
|     menus.insert(pair<int, sPlugMenu>(key, s)); |     menus.insert(pair<int, sPlugMenu>(key, s)); | ||||||
| } | } | ||||||
|  |  | ||||||
| skindesignerapi::cTokenContainer *skindesignerapi::cPluginStructure::GetMenuTokenContainer(int key) { | skindesignerapi::cTokenContainer *skindesignerapi::cPluginStructure::GetMenuTokenContainer(int key) { | ||||||
|     map<int, sPlugMenu>::iterator hit = menus.find(key); |     map<int, sPlugMenu>::iterator hit = menus.find(key); | ||||||
|     if (hit == menus.end()) |     if (hit == menus.end()) | ||||||
|         return NULL; |         return NULL; | ||||||
|     return hit->second.tokenContainer; |     return hit->second.tokenContainer; | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cPluginStructure::RegisterRootView(string templateName) { | void skindesignerapi::cPluginStructure::RegisterRootView(string templateName) { | ||||||
|     rootview = templateName; |     rootview = templateName; | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cPluginStructure::RegisterSubView(int subView, string templateName) { | void skindesignerapi::cPluginStructure::RegisterSubView(int subView, string templateName) { | ||||||
|     subviews.insert(pair<int, string>(subView, templateName)); |     subviews.insert(pair<int, string>(subView, templateName)); | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cPluginStructure::RegisterViewElement(int view, int viewElement, string name, skindesignerapi::cTokenContainer *tk) { | void skindesignerapi::cPluginStructure::RegisterViewElement(int view, int viewElement, string name, skindesignerapi::cTokenContainer *tk) { | ||||||
|     tk->CreateContainers(); |     tk->CreateContainers(); | ||||||
|     sPlugViewElement ve; |     sPlugViewElement ve; | ||||||
|     ve.id = viewElement; |     ve.id = viewElement; | ||||||
|     ve.viewId = view; |     ve.viewId = view; | ||||||
|     ve.name = name; |     ve.name = name; | ||||||
|     ve.tokenContainer = tk; |     ve.tokenContainer = tk; | ||||||
|     viewelements.insert(pair<int, sPlugViewElement>(view, ve)); |     viewelements.insert(pair<int, sPlugViewElement>(view, ve)); | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cPluginStructure::RegisterViewGrid(int view, int viewGrid, string name, skindesignerapi::cTokenContainer *tk) { | void skindesignerapi::cPluginStructure::RegisterViewGrid(int view, int viewGrid, string name, skindesignerapi::cTokenContainer *tk) { | ||||||
|     tk->CreateContainers(); |     tk->CreateContainers(); | ||||||
|     sPlugViewGrid vg; |     sPlugViewGrid vg; | ||||||
|     vg.id = viewGrid; |     vg.id = viewGrid; | ||||||
|     vg.viewId = view; |     vg.viewId = view; | ||||||
|     vg.name = name; |     vg.name = name; | ||||||
|     vg.tokenContainer = tk; |     vg.tokenContainer = tk; | ||||||
|     viewgrids.insert(pair<int, sPlugViewGrid>(view, vg)); |     viewgrids.insert(pair<int, sPlugViewGrid>(view, vg)); | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cPluginStructure::RegisterViewTab(int view, skindesignerapi::cTokenContainer *tk) { | void skindesignerapi::cPluginStructure::RegisterViewTab(int view, skindesignerapi::cTokenContainer *tk) { | ||||||
|     tk->CreateContainers(); |     tk->CreateContainers(); | ||||||
|     viewtabs.insert(pair<int, skindesignerapi::cTokenContainer*>(view, tk)); |     viewtabs.insert(pair<int, skindesignerapi::cTokenContainer*>(view, tk)); | ||||||
| } | } | ||||||
|  |  | ||||||
| skindesignerapi::cTokenContainer *skindesignerapi::cPluginStructure::GetTokenContainerVE(int viewId, int veId) { | skindesignerapi::cTokenContainer *skindesignerapi::cPluginStructure::GetTokenContainerVE(int viewId, int veId) { | ||||||
|     pair<multimap<int, sPlugViewElement>::iterator, multimap<int, sPlugViewElement>::iterator> range; |     pair<multimap<int, sPlugViewElement>::iterator, multimap<int, sPlugViewElement>::iterator> range; | ||||||
|     range = viewelements.equal_range(viewId); |     range = viewelements.equal_range(viewId); | ||||||
|     for (multimap<int, sPlugViewElement>::iterator it=range.first; it!=range.second; ++it) { |     for (multimap<int, sPlugViewElement>::iterator it=range.first; it!=range.second; ++it) { | ||||||
|         sPlugViewElement *ve = &it->second; |         sPlugViewElement *ve = &it->second; | ||||||
|         if (ve->id == veId) |         if (ve->id == veId) | ||||||
|             return ve->tokenContainer; |             return ve->tokenContainer; | ||||||
|     } |     } | ||||||
|     return NULL; |     return NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| skindesignerapi::cTokenContainer *skindesignerapi::cPluginStructure::GetTokenContainerGE(int viewId, int geId) { | skindesignerapi::cTokenContainer *skindesignerapi::cPluginStructure::GetTokenContainerGE(int viewId, int geId) { | ||||||
|     pair<multimap<int, sPlugViewGrid>::iterator, multimap<int, sPlugViewGrid>::iterator> range; |     pair<multimap<int, sPlugViewGrid>::iterator, multimap<int, sPlugViewGrid>::iterator> range; | ||||||
|     range = viewgrids.equal_range(viewId); |     range = viewgrids.equal_range(viewId); | ||||||
|     for (multimap<int, sPlugViewGrid>::iterator it=range.first; it!=range.second; ++it) { |     for (multimap<int, sPlugViewGrid>::iterator it=range.first; it!=range.second; ++it) { | ||||||
|         sPlugViewGrid *ge = &it->second; |         sPlugViewGrid *ge = &it->second; | ||||||
|         if (ge->id == geId) |         if (ge->id == geId) | ||||||
|             return ge->tokenContainer; |             return ge->tokenContainer; | ||||||
|     } |     } | ||||||
|     return NULL; |     return NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| skindesignerapi::cTokenContainer *skindesignerapi::cPluginStructure::GetTokenContainerTab(int viewId) { | skindesignerapi::cTokenContainer *skindesignerapi::cPluginStructure::GetTokenContainerTab(int viewId) { | ||||||
|     map<int,skindesignerapi::cTokenContainer*>::iterator hit = viewtabs.find(viewId); |     map<int,skindesignerapi::cTokenContainer*>::iterator hit = viewtabs.find(viewId); | ||||||
|     if (hit == viewtabs.end()) |     if (hit == viewtabs.end()) | ||||||
|         return NULL; |         return NULL; | ||||||
|     return hit->second; |     return hit->second; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,57 +1,57 @@ | |||||||
| #ifndef __PLUGINSTRUCTURE_H | #ifndef __PLUGINSTRUCTURE_H | ||||||
| #define __PLUGINSTRUCTURE_H | #define __PLUGINSTRUCTURE_H | ||||||
|  |  | ||||||
| #include "tokencontainer.h" | #include "tokencontainer.h" | ||||||
|  |  | ||||||
| namespace skindesignerapi { | namespace skindesignerapi { | ||||||
|  |  | ||||||
| struct sPlugMenu { | struct sPlugMenu { | ||||||
|     int type; |     int type; | ||||||
|     string tplname; |     string tplname; | ||||||
|     cTokenContainer *tokenContainer; |     cTokenContainer *tokenContainer; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| struct sPlugViewElement { | struct sPlugViewElement { | ||||||
|     int id; |     int id; | ||||||
|     int viewId; |     int viewId; | ||||||
|     string name; |     string name; | ||||||
|     cTokenContainer *tokenContainer; |     cTokenContainer *tokenContainer; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| struct sPlugViewGrid { | struct sPlugViewGrid { | ||||||
|     int id; |     int id; | ||||||
|     int viewId; |     int viewId; | ||||||
|     string name; |     string name; | ||||||
|     cTokenContainer *tokenContainer; |     cTokenContainer *tokenContainer; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class cPluginStructure { | class cPluginStructure { | ||||||
| public: | public: | ||||||
|     cPluginStructure(void); |     cPluginStructure(void); | ||||||
|     ~cPluginStructure(void); |     ~cPluginStructure(void); | ||||||
|     void RegisterMenu(int key, int type, string tpl, cTokenContainer *tk); |     void RegisterMenu(int key, int type, string tpl, cTokenContainer *tk); | ||||||
|     cTokenContainer *GetMenuTokenContainer(int key);     |     cTokenContainer *GetMenuTokenContainer(int key);     | ||||||
|     void RegisterRootView(string templateName); |     void RegisterRootView(string templateName); | ||||||
|     void RegisterSubView(int subView, string templateName); |     void RegisterSubView(int subView, string templateName); | ||||||
|     void RegisterViewElement(int view, int viewElement, string name, cTokenContainer *tk); |     void RegisterViewElement(int view, int viewElement, string name, cTokenContainer *tk); | ||||||
|     void RegisterViewGrid(int view, int viewGrid, string name, cTokenContainer *tk); |     void RegisterViewGrid(int view, int viewGrid, string name, cTokenContainer *tk); | ||||||
|     void RegisterViewTab(int view, cTokenContainer *tk); |     void RegisterViewTab(int view, cTokenContainer *tk); | ||||||
|     cTokenContainer *GetTokenContainerVE(int viewId, int veId); |     cTokenContainer *GetTokenContainerVE(int viewId, int veId); | ||||||
|     cTokenContainer *GetTokenContainerGE(int viewId, int geId); |     cTokenContainer *GetTokenContainerGE(int viewId, int geId); | ||||||
|     cTokenContainer *GetTokenContainerTab(int viewId); |     cTokenContainer *GetTokenContainerTab(int viewId); | ||||||
|     string name;                                     //name of plugin |     string name;                                     //name of plugin | ||||||
|     string libskindesignerAPIVersion;                //skindesigner API Version plugin is using |     string libskindesignerAPIVersion;                //skindesigner API Version plugin is using | ||||||
|     int id;                                          //id of plugin in skindesigner |     int id;                                          //id of plugin in skindesigner | ||||||
|     //basic plugin interface |     //basic plugin interface | ||||||
|     map< int, sPlugMenu > menus;                     //menus as key -> sPlugMenu struct hashmap  |     map< int, sPlugMenu > menus;                     //menus as key -> sPlugMenu struct hashmap  | ||||||
|     //advanced plugin interface |     //advanced plugin interface | ||||||
|     string rootview;                                 //template name of root view |     string rootview;                                 //template name of root view | ||||||
|     map< int, string > subviews;                     //subviews as subviewid -> template name map  |     map< int, string > subviews;                     //subviews as subviewid -> template name map  | ||||||
|     multimap< int, sPlugViewElement > viewelements;  //viewelements as viewid -> sPlugViewElement struct multimap  |     multimap< int, sPlugViewElement > viewelements;  //viewelements as viewid -> sPlugViewElement struct multimap  | ||||||
|     multimap< int, sPlugViewGrid > viewgrids;        //viewgrids as viewid -> sPlugViewGrid struct hashmap |     multimap< int, sPlugViewGrid > viewgrids;        //viewgrids as viewid -> sPlugViewGrid struct hashmap | ||||||
|     map< int, cTokenContainer* > viewtabs;           //viewtabs as viewid -> tokencontainer hashmap |     map< int, cTokenContainer* > viewtabs;           //viewtabs as viewid -> tokencontainer hashmap | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
| #endif //__PLUGINSTRUCTURE_H | #endif //__PLUGINSTRUCTURE_H | ||||||
| @@ -1,305 +1,305 @@ | |||||||
| #include "tokencontainer.h" | #include "tokencontainer.h" | ||||||
|  |  | ||||||
| skindesignerapi::cTokenContainer::cTokenContainer(void) { | skindesignerapi::cTokenContainer::cTokenContainer(void) { | ||||||
|     numIntTokens = 0; |     numIntTokens = 0; | ||||||
|     numStringTokens = 0; |     numStringTokens = 0; | ||||||
|     stringTokens = NULL; |     stringTokens = NULL; | ||||||
|     intTokens = NULL; |     intTokens = NULL; | ||||||
|     stNames = NULL; |     stNames = NULL; | ||||||
|     itNames = NULL; |     itNames = NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| skindesignerapi::cTokenContainer::cTokenContainer(const cTokenContainer &other) { | skindesignerapi::cTokenContainer::cTokenContainer(const cTokenContainer &other) { | ||||||
|     numIntTokens = 0; |     numIntTokens = 0; | ||||||
|     numStringTokens = 0; |     numStringTokens = 0; | ||||||
|     stringTokens = NULL; |     stringTokens = NULL; | ||||||
|     intTokens = NULL; |     intTokens = NULL; | ||||||
|     stNames = NULL; |     stNames = NULL; | ||||||
|     itNames = NULL; |     itNames = NULL; | ||||||
|     stringTokenNames = other.stringTokenNames; |     stringTokenNames = other.stringTokenNames; | ||||||
|     intTokenNames = other.intTokenNames; |     intTokenNames = other.intTokenNames; | ||||||
|     loopTokenNames = other.loopTokenNames; |     loopTokenNames = other.loopTokenNames; | ||||||
|     loopNameMapping = other.loopNameMapping; |     loopNameMapping = other.loopNameMapping; | ||||||
| } | } | ||||||
|  |  | ||||||
| skindesignerapi::cTokenContainer::~cTokenContainer(void) { | skindesignerapi::cTokenContainer::~cTokenContainer(void) { | ||||||
|     Clear(); |     Clear(); | ||||||
|     delete[] intTokens; |     delete[] intTokens; | ||||||
|     delete[] stringTokens; |     delete[] stringTokens; | ||||||
|     delete[] stNames; |     delete[] stNames; | ||||||
|     delete[] itNames; |     delete[] itNames; | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cTokenContainer::CreateContainers(void) { | void skindesignerapi::cTokenContainer::CreateContainers(void) { | ||||||
|     numIntTokens = intTokenNames.size(); |     numIntTokens = intTokenNames.size(); | ||||||
|     if (numIntTokens) { |     if (numIntTokens) { | ||||||
|         intTokens = new int[numIntTokens]; |         intTokens = new int[numIntTokens]; | ||||||
|         itNames = new string[numIntTokens]; |         itNames = new string[numIntTokens]; | ||||||
|         for (int i=0; i < numIntTokens; i++) { |         for (int i=0; i < numIntTokens; i++) { | ||||||
|             intTokens[i] = -1; |             intTokens[i] = -1; | ||||||
|             itNames[i] = GetIntTokenName(i); |             itNames[i] = GetIntTokenName(i); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     numStringTokens = stringTokenNames.size(); |     numStringTokens = stringTokenNames.size(); | ||||||
|     if (numStringTokens) { |     if (numStringTokens) { | ||||||
|         stringTokens = new char*[numStringTokens]; |         stringTokens = new char*[numStringTokens]; | ||||||
|         stNames = new string[numStringTokens]; |         stNames = new string[numStringTokens]; | ||||||
|         for (int i=0; i < numStringTokens; i++) { |         for (int i=0; i < numStringTokens; i++) { | ||||||
|             stringTokens[i] = NULL; |             stringTokens[i] = NULL; | ||||||
|             stNames[i] = GetStringTokenName(i); |             stNames[i] = GetStringTokenName(i); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     int numLoops = loopTokenNames.size(); |     int numLoops = loopTokenNames.size(); | ||||||
|     for (int i = 0; i < numLoops; ++i) { |     for (int i = 0; i < numLoops; ++i) { | ||||||
|         vector<string> loopToken; |         vector<string> loopToken; | ||||||
|         int numLoopTokens = loopTokenNames[i].size(); |         int numLoopTokens = loopTokenNames[i].size(); | ||||||
|         for (int j = 0; j < numLoopTokens; ++j) { |         for (int j = 0; j < numLoopTokens; ++j) { | ||||||
|             string tokenName = GetLoopTokenName(i, j); |             string tokenName = GetLoopTokenName(i, j); | ||||||
|             loopToken.push_back(tokenName); |             loopToken.push_back(tokenName); | ||||||
|         } |         } | ||||||
|         ltNames.push_back(loopToken); |         ltNames.push_back(loopToken); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cTokenContainer::CreateLoopTokenContainer(vector<int> *loopInfo) { | void skindesignerapi::cTokenContainer::CreateLoopTokenContainer(vector<int> *loopInfo) { | ||||||
|     int numLoops = loopInfo->size(); |     int numLoops = loopInfo->size(); | ||||||
|     for (int i = 0; i < numLoops; ++i) { |     for (int i = 0; i < numLoops; ++i) { | ||||||
|         numLoopTokens.push_back(loopInfo->at(i)); |         numLoopTokens.push_back(loopInfo->at(i)); | ||||||
|         int rows = loopInfo->at(i); |         int rows = loopInfo->at(i); | ||||||
|         char*** loopToks = new char**[rows]; |         char*** loopToks = new char**[rows]; | ||||||
|         for (int j = 0; j < rows ; ++j) { |         for (int j = 0; j < rows ; ++j) { | ||||||
|             int numLoopTokens = loopTokenNames[i].size(); |             int numLoopTokens = loopTokenNames[i].size(); | ||||||
|             loopToks[j] = new char*[numLoopTokens]; |             loopToks[j] = new char*[numLoopTokens]; | ||||||
|             for (int k = 0; k < numLoopTokens; ++k) { |             for (int k = 0; k < numLoopTokens; ++k) { | ||||||
|                 loopToks[j][k] = NULL; |                 loopToks[j][k] = NULL; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         loopTokens.push_back(loopToks); |         loopTokens.push_back(loopToks); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cTokenContainer::DeleteLoopTokenContainer(void) { | void skindesignerapi::cTokenContainer::DeleteLoopTokenContainer(void) { | ||||||
|     int i = 0; |     int i = 0; | ||||||
|     for (vector<char***>::iterator it = loopTokens.begin(); it != loopTokens.end(); it++) { |     for (vector<char***>::iterator it = loopTokens.begin(); it != loopTokens.end(); it++) { | ||||||
|         char*** loopToks = *it; |         char*** loopToks = *it; | ||||||
|         for (int j = 0; j < numLoopTokens[i] ; j++) { |         for (int j = 0; j < numLoopTokens[i] ; j++) { | ||||||
|             int numToks = loopTokenNames[i].size(); |             int numToks = loopTokenNames[i].size(); | ||||||
|             for (int k = 0; k < numToks; ++k) { |             for (int k = 0; k < numToks; ++k) { | ||||||
|                 free(loopToks[j][k]); |                 free(loopToks[j][k]); | ||||||
|             } |             } | ||||||
|             delete[] loopToks[j]; |             delete[] loopToks[j]; | ||||||
|         } |         } | ||||||
|         delete[] loopToks; |         delete[] loopToks; | ||||||
|         ++i; |         ++i; | ||||||
|     } |     } | ||||||
|     loopTokens.clear(); |     loopTokens.clear(); | ||||||
|     numLoopTokens.clear(); |     numLoopTokens.clear(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cTokenContainer::DefineStringToken(string name, int index) { | void skindesignerapi::cTokenContainer::DefineStringToken(string name, int index) { | ||||||
|     stringTokenNames.insert(pair<string, int>(name, index)); |     stringTokenNames.insert(pair<string, int>(name, index)); | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cTokenContainer::DefineIntToken(string name, int index) { | void skindesignerapi::cTokenContainer::DefineIntToken(string name, int index) { | ||||||
|     intTokenNames.insert(pair<string, int>(name, index)); |     intTokenNames.insert(pair<string, int>(name, index)); | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cTokenContainer::DefineLoopToken(string name, int index) { | void skindesignerapi::cTokenContainer::DefineLoopToken(string name, int index) { | ||||||
|     string loopName = LoopName(name); |     string loopName = LoopName(name); | ||||||
|     int loopIndex = LoopIndex(loopName, true); |     int loopIndex = LoopIndex(loopName, true); | ||||||
|     if ((int)loopTokenNames.size() < loopIndex+1) { |     if ((int)loopTokenNames.size() < loopIndex+1) { | ||||||
|         map<string, int> newloop; |         map<string, int> newloop; | ||||||
|         newloop.insert(pair<string, int>(name, index)); |         newloop.insert(pair<string, int>(name, index)); | ||||||
|         loopTokenNames.push_back(newloop); |         loopTokenNames.push_back(newloop); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     loopTokenNames[loopIndex].insert(pair<string, int>(name, index)); |     loopTokenNames[loopIndex].insert(pair<string, int>(name, index)); | ||||||
| } | } | ||||||
|  |  | ||||||
| int skindesignerapi::cTokenContainer::GetNumDefinedIntTokens(void) { | int skindesignerapi::cTokenContainer::GetNumDefinedIntTokens(void) { | ||||||
|     return intTokenNames.size(); |     return intTokenNames.size(); | ||||||
| } | } | ||||||
|  |  | ||||||
| int skindesignerapi::cTokenContainer::LoopIndex(string name, bool createNew) { | int skindesignerapi::cTokenContainer::LoopIndex(string name, bool createNew) { | ||||||
|     map<string, int>::iterator hit = loopNameMapping.find(name); |     map<string, int>::iterator hit = loopNameMapping.find(name); | ||||||
|     if (hit != loopNameMapping.end()) |     if (hit != loopNameMapping.end()) | ||||||
|         return hit->second; |         return hit->second; | ||||||
|     if (!createNew) |     if (!createNew) | ||||||
|         return -1; |         return -1; | ||||||
|     int index = loopNameMapping.size(); |     int index = loopNameMapping.size(); | ||||||
|     loopNameMapping.insert(pair<string, int>(name, index)); |     loopNameMapping.insert(pair<string, int>(name, index)); | ||||||
|     return index; |     return index; | ||||||
| } | } | ||||||
|  |  | ||||||
| int skindesignerapi::cTokenContainer::StringTokenIndex(string name) { | int skindesignerapi::cTokenContainer::StringTokenIndex(string name) { | ||||||
|     map<string, int>::iterator hit = stringTokenNames.find(name); |     map<string, int>::iterator hit = stringTokenNames.find(name); | ||||||
|     if (hit == stringTokenNames.end()) |     if (hit == stringTokenNames.end()) | ||||||
|         return -1; |         return -1; | ||||||
|     return hit->second; |     return hit->second; | ||||||
| } | } | ||||||
|  |  | ||||||
| int skindesignerapi::cTokenContainer::IntTokenIndex(string name) { | int skindesignerapi::cTokenContainer::IntTokenIndex(string name) { | ||||||
|     map<string, int>::iterator hit = intTokenNames.find(name); |     map<string, int>::iterator hit = intTokenNames.find(name); | ||||||
|     if (hit == intTokenNames.end()) |     if (hit == intTokenNames.end()) | ||||||
|         return -1; |         return -1; | ||||||
|     return hit->second; |     return hit->second; | ||||||
| } | } | ||||||
|  |  | ||||||
| int skindesignerapi::cTokenContainer::LoopTokenIndex(string name) { | int skindesignerapi::cTokenContainer::LoopTokenIndex(string name) { | ||||||
|     string loopName = LoopName(name); |     string loopName = LoopName(name); | ||||||
|     int loopIndex = LoopIndex(loopName); |     int loopIndex = LoopIndex(loopName); | ||||||
|     if (loopIndex > -1 && loopIndex < (int)loopTokenNames.size()) { |     if (loopIndex > -1 && loopIndex < (int)loopTokenNames.size()) { | ||||||
|         map<string, int>::iterator hit = loopTokenNames[loopIndex].find(name); |         map<string, int>::iterator hit = loopTokenNames[loopIndex].find(name); | ||||||
|         if (hit == loopTokenNames[loopIndex].end()) |         if (hit == loopTokenNames[loopIndex].end()) | ||||||
|             return -1; |             return -1; | ||||||
|         return hit->second; |         return hit->second; | ||||||
|     } |     } | ||||||
|     return -1; |     return -1; | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cTokenContainer::AddIntToken(int index, int value) { | void skindesignerapi::cTokenContainer::AddIntToken(int index, int value) { | ||||||
|     intTokens[index] = value; |     intTokens[index] = value; | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cTokenContainer::AddStringToken(int index, const char *value) { | void skindesignerapi::cTokenContainer::AddStringToken(int index, const char *value) { | ||||||
|     if (value) |     if (value) | ||||||
|         stringTokens[index] = strdup(value); |         stringTokens[index] = strdup(value); | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cTokenContainer::AddLoopToken(int loopIndex, int row, int index, const char *value) { | void skindesignerapi::cTokenContainer::AddLoopToken(int loopIndex, int row, int index, const char *value) { | ||||||
|     if (value) { |     if (value) { | ||||||
|         loopTokens[loopIndex][row][index] = strdup(value); |         loopTokens[loopIndex][row][index] = strdup(value); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| int skindesignerapi::cTokenContainer::NumLoops(int loopIndex) {  | int skindesignerapi::cTokenContainer::NumLoops(int loopIndex) {  | ||||||
|     int numLT = numLoopTokens.size(); |     int numLT = numLoopTokens.size(); | ||||||
|     if (loopIndex >= 0 && loopIndex < numLT) |     if (loopIndex >= 0 && loopIndex < numLT) | ||||||
|         return numLoopTokens[loopIndex]; |         return numLoopTokens[loopIndex]; | ||||||
|     return 0;  |     return 0;  | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cTokenContainer::SetTokens(cTokenContainer *other) { | void skindesignerapi::cTokenContainer::SetTokens(cTokenContainer *other) { | ||||||
|     //Set Int and String Tokens |     //Set Int and String Tokens | ||||||
|     if (numIntTokens) { |     if (numIntTokens) { | ||||||
|         for (int i=0; i < numIntTokens; i++) { |         for (int i=0; i < numIntTokens; i++) { | ||||||
|             AddIntToken(i, other->IntToken(i)); |             AddIntToken(i, other->IntToken(i)); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     if (numStringTokens) { |     if (numStringTokens) { | ||||||
|         for (int i=0; i < numStringTokens; i++) { |         for (int i=0; i < numStringTokens; i++) { | ||||||
|             AddStringToken(i, other->StringToken(i)); |             AddStringToken(i, other->StringToken(i)); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     //Set Looptoken Container |     //Set Looptoken Container | ||||||
|     set<int> loopIndices; |     set<int> loopIndices; | ||||||
|     for (map<string, int>::iterator it = loopNameMapping.begin(); it != loopNameMapping.end(); it++) { |     for (map<string, int>::iterator it = loopNameMapping.begin(); it != loopNameMapping.end(); it++) { | ||||||
|         loopIndices.insert(it->second); |         loopIndices.insert(it->second); | ||||||
|     } |     } | ||||||
|     vector<int> loopInfo; |     vector<int> loopInfo; | ||||||
|     for (set<int>::iterator it = loopIndices.begin(); it != loopIndices.end(); it++) { |     for (set<int>::iterator it = loopIndices.begin(); it != loopIndices.end(); it++) { | ||||||
|         loopInfo.push_back(other->NumLoops(*it)); |         loopInfo.push_back(other->NumLoops(*it)); | ||||||
|     } |     } | ||||||
|     CreateLoopTokenContainer(&loopInfo); |     CreateLoopTokenContainer(&loopInfo); | ||||||
|     //Set Loop Tokens |     //Set Loop Tokens | ||||||
|     int i = 0; |     int i = 0; | ||||||
|     for (vector<int>::iterator it = loopInfo.begin(); it != loopInfo.end(); it++) { |     for (vector<int>::iterator it = loopInfo.begin(); it != loopInfo.end(); it++) { | ||||||
|         int numRows = *it; |         int numRows = *it; | ||||||
|         int numCols = loopTokenNames[i].size(); |         int numCols = loopTokenNames[i].size(); | ||||||
|         for (int j = 0; j < numRows; j++) { |         for (int j = 0; j < numRows; j++) { | ||||||
|             for (int k = 0; k < numCols; k++) { |             for (int k = 0; k < numCols; k++) { | ||||||
|                 AddLoopToken(i, j, k, other->LoopToken(i, j, k)); |                 AddLoopToken(i, j, k, other->LoopToken(i, j, k)); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         i++; |         i++; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cTokenContainer::Clear(void) { | void skindesignerapi::cTokenContainer::Clear(void) { | ||||||
|     if (numIntTokens) { |     if (numIntTokens) { | ||||||
|         for (int i=0; i < numIntTokens; i++) { |         for (int i=0; i < numIntTokens; i++) { | ||||||
|             intTokens[i] = -1; |             intTokens[i] = -1; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     if (numStringTokens) { |     if (numStringTokens) { | ||||||
|         for (int i=0; i < numStringTokens; i++) { |         for (int i=0; i < numStringTokens; i++) { | ||||||
|             free(stringTokens[i]); |             free(stringTokens[i]); | ||||||
|             stringTokens[i] = NULL; |             stringTokens[i] = NULL; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     DeleteLoopTokenContainer(); |     DeleteLoopTokenContainer(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void skindesignerapi::cTokenContainer::Debug(void) { | void skindesignerapi::cTokenContainer::Debug(void) { | ||||||
|     /* |     /* | ||||||
|     esyslog("skindesigner: TokenContainer defined string tokens"); |     esyslog("skindesigner: TokenContainer defined string tokens"); | ||||||
|     for (map<string, int>::iterator it = stringTokenNames.begin(); it != stringTokenNames.end(); it++) { |     for (map<string, int>::iterator it = stringTokenNames.begin(); it != stringTokenNames.end(); it++) { | ||||||
|         esyslog("skindesigner: name %s id %d", (it->first).c_str(), it->second); |         esyslog("skindesigner: name %s id %d", (it->first).c_str(), it->second); | ||||||
|     } |     } | ||||||
|     esyslog("skindesigner: TokenContainer defined int tokens"); |     esyslog("skindesigner: TokenContainer defined int tokens"); | ||||||
|     for (map<string, int>::iterator it = intTokenNames.begin(); it != intTokenNames.end(); it++) { |     for (map<string, int>::iterator it = intTokenNames.begin(); it != intTokenNames.end(); it++) { | ||||||
|         esyslog("skindesigner: name %s id %d", (it->first).c_str(), it->second); |         esyslog("skindesigner: name %s id %d", (it->first).c_str(), it->second); | ||||||
|     } |     } | ||||||
|     */ |     */ | ||||||
|     esyslog("skindesigner: TokenContainer content"); |     esyslog("skindesigner: TokenContainer content"); | ||||||
|     for (int i=0; i < numStringTokens; i++) { |     for (int i=0; i < numStringTokens; i++) { | ||||||
|         if (stringTokens[i]) |         if (stringTokens[i]) | ||||||
|             esyslog("skindesigner: stringtoken %d. %s: \"%s\"", i, stNames[i].c_str(), stringTokens[i]); |             esyslog("skindesigner: stringtoken %d. %s: \"%s\"", i, stNames[i].c_str(), stringTokens[i]); | ||||||
|         else |         else | ||||||
|             esyslog("skindesigner: stringtoken %d. %s: empty", i, stNames[i].c_str()); |             esyslog("skindesigner: stringtoken %d. %s: empty", i, stNames[i].c_str()); | ||||||
|     } |     } | ||||||
|     for (int i=0; i < numIntTokens; i++) { |     for (int i=0; i < numIntTokens; i++) { | ||||||
|         if (intTokens[i] >= 0) |         if (intTokens[i] >= 0) | ||||||
|             esyslog("skindesigner: inttoken %d. %s: %d", i, itNames[i].c_str(), intTokens[i]); |             esyslog("skindesigner: inttoken %d. %s: %d", i, itNames[i].c_str(), intTokens[i]); | ||||||
|         else |         else | ||||||
|             esyslog("skindesigner: inttoken %d. %s: empty", i, itNames[i].c_str()); |             esyslog("skindesigner: inttoken %d. %s: empty", i, itNames[i].c_str()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     for (size_t i=0; i < loopTokens.size(); i++) { |     for (size_t i=0; i < loopTokens.size(); i++) { | ||||||
|         for (int j = 0; j < numLoopTokens[i]; j++) { |         for (int j = 0; j < numLoopTokens[i]; j++) { | ||||||
|             esyslog("skindesigner: row %d", j); |             esyslog("skindesigner: row %d", j); | ||||||
|             for (size_t k = 0; k < loopTokenNames[i].size(); k++) { |             for (size_t k = 0; k < loopTokenNames[i].size(); k++) { | ||||||
|                 if (loopTokens[i][j][k]) |                 if (loopTokens[i][j][k]) | ||||||
|                     esyslog("skindesigner: looptoken %d. %s: \"%s\"", (int)k, ltNames[i][k].c_str(), loopTokens[i][j][k]); |                     esyslog("skindesigner: looptoken %d. %s: \"%s\"", (int)k, ltNames[i][k].c_str(), loopTokens[i][j][k]); | ||||||
|                 else |                 else | ||||||
|                     esyslog("skindesigner: looptoken %d. %s: empty", (int)k, ltNames[i][k].c_str()); |                     esyslog("skindesigner: looptoken %d. %s: empty", (int)k, ltNames[i][k].c_str()); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| string skindesignerapi::cTokenContainer::GetStringTokenName(int id) { | string skindesignerapi::cTokenContainer::GetStringTokenName(int id) { | ||||||
|     for (map<string, int>::iterator it = stringTokenNames.begin(); it != stringTokenNames.end(); it++) { |     for (map<string, int>::iterator it = stringTokenNames.begin(); it != stringTokenNames.end(); it++) { | ||||||
|         if (it->second == id) |         if (it->second == id) | ||||||
|             return it->first; |             return it->first; | ||||||
|     } |     } | ||||||
|     return ""; |     return ""; | ||||||
| } | } | ||||||
| string skindesignerapi::cTokenContainer::GetIntTokenName(int id) { | string skindesignerapi::cTokenContainer::GetIntTokenName(int id) { | ||||||
|     for (map<string, int>::iterator it = intTokenNames.begin(); it != intTokenNames.end(); it++) { |     for (map<string, int>::iterator it = intTokenNames.begin(); it != intTokenNames.end(); it++) { | ||||||
|         if (it->second == id) |         if (it->second == id) | ||||||
|             return it->first; |             return it->first; | ||||||
|     } |     } | ||||||
|     return ""; |     return ""; | ||||||
| } | } | ||||||
|  |  | ||||||
| string skindesignerapi::cTokenContainer::GetLoopTokenName(int loop, int id) { | string skindesignerapi::cTokenContainer::GetLoopTokenName(int loop, int id) { | ||||||
|     for (map<string, int>::iterator it = loopTokenNames[loop].begin(); it != loopTokenNames[loop].end(); it++) { |     for (map<string, int>::iterator it = loopTokenNames[loop].begin(); it != loopTokenNames[loop].end(); it++) { | ||||||
|         if (it->second == id) |         if (it->second == id) | ||||||
|             return it->first; |             return it->first; | ||||||
|     } |     } | ||||||
|     return "";     |     return "";     | ||||||
| } | } | ||||||
|  |  | ||||||
| //Get name of loop from a loop token name | //Get name of loop from a loop token name | ||||||
| string skindesignerapi::cTokenContainer::LoopName(string &loopToken) { | string skindesignerapi::cTokenContainer::LoopName(string &loopToken) { | ||||||
|     size_t hit = loopToken.find('{'); |     size_t hit = loopToken.find('{'); | ||||||
|     if (hit != 0) |     if (hit != 0) | ||||||
|         return ""; |         return ""; | ||||||
|     hit = loopToken.find('['); |     hit = loopToken.find('['); | ||||||
|     if (hit == string::npos) |     if (hit == string::npos) | ||||||
|         return ""; |         return ""; | ||||||
|     return loopToken.substr(1, hit-1); |     return loopToken.substr(1, hit-1); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,69 +1,69 @@ | |||||||
| #ifndef __TOKENCONTAINER_H | #ifndef __TOKENCONTAINER_H | ||||||
| #define __TOKENCONTAINER_H | #define __TOKENCONTAINER_H | ||||||
|  |  | ||||||
| #include <iostream> | #include <iostream> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include <string> | #include <string> | ||||||
| #include <vector> | #include <vector> | ||||||
| #include <map> | #include <map> | ||||||
| #include <set> | #include <set> | ||||||
| #include <vdr/plugin.h> | #include <vdr/plugin.h> | ||||||
|  |  | ||||||
| using namespace std; | using namespace std; | ||||||
|  |  | ||||||
| namespace skindesignerapi { | namespace skindesignerapi { | ||||||
|  |  | ||||||
| class cTokenContainer { | class cTokenContainer { | ||||||
| private: | private: | ||||||
|     int numIntTokens; |     int numIntTokens; | ||||||
|     int numStringTokens; |     int numStringTokens; | ||||||
|     vector<int> numLoopTokens; |     vector<int> numLoopTokens; | ||||||
|     //token containers |     //token containers | ||||||
|     char **stringTokens; |     char **stringTokens; | ||||||
|     int *intTokens; |     int *intTokens; | ||||||
|     vector<char***>loopTokens; |     vector<char***>loopTokens; | ||||||
|     //mapping id --> name |     //mapping id --> name | ||||||
|     string *stNames; |     string *stNames; | ||||||
|     string *itNames; |     string *itNames; | ||||||
|     vector< vector<string> > ltNames; |     vector< vector<string> > ltNames; | ||||||
|     //mapping name --> id |     //mapping name --> id | ||||||
|     map<string, int> stringTokenNames; |     map<string, int> stringTokenNames; | ||||||
|     map<string, int> intTokenNames; |     map<string, int> intTokenNames; | ||||||
|     vector< map<string, int> > loopTokenNames; |     vector< map<string, int> > loopTokenNames; | ||||||
|     //get token name from id |     //get token name from id | ||||||
|     string GetStringTokenName(int id); |     string GetStringTokenName(int id); | ||||||
|     string GetIntTokenName(int id); |     string GetIntTokenName(int id); | ||||||
|     string GetLoopTokenName(int loop, int id); |     string GetLoopTokenName(int loop, int id); | ||||||
|     //looptoken management |     //looptoken management | ||||||
|     string LoopName(string &loopToken); |     string LoopName(string &loopToken); | ||||||
|     map<string, int> loopNameMapping; |     map<string, int> loopNameMapping; | ||||||
|     void DeleteLoopTokenContainer(void); |     void DeleteLoopTokenContainer(void); | ||||||
| public: | public: | ||||||
|     cTokenContainer(void); |     cTokenContainer(void); | ||||||
|     cTokenContainer(const cTokenContainer &other); |     cTokenContainer(const cTokenContainer &other); | ||||||
|     ~cTokenContainer(void); |     ~cTokenContainer(void); | ||||||
|     void CreateContainers(void); |     void CreateContainers(void); | ||||||
|     void CreateLoopTokenContainer(vector<int> *loopInfo); |     void CreateLoopTokenContainer(vector<int> *loopInfo); | ||||||
|     void DefineStringToken  (string name, int index); |     void DefineStringToken  (string name, int index); | ||||||
|     void DefineIntToken     (string name, int index); |     void DefineIntToken     (string name, int index); | ||||||
|     void DefineLoopToken    (string name, int index); |     void DefineLoopToken    (string name, int index); | ||||||
|     int GetNumDefinedIntTokens(void); |     int GetNumDefinedIntTokens(void); | ||||||
|     int  LoopIndex          (string name, bool createNew = false); |     int  LoopIndex          (string name, bool createNew = false); | ||||||
|     int  StringTokenIndex   (string name); |     int  StringTokenIndex   (string name); | ||||||
|     int  IntTokenIndex      (string name); |     int  IntTokenIndex      (string name); | ||||||
|     int  LoopTokenIndex     (string name); |     int  LoopTokenIndex     (string name); | ||||||
|     void AddIntToken        (int index, int value); |     void AddIntToken        (int index, int value); | ||||||
|     void AddStringToken     (int index, const char *value); |     void AddStringToken     (int index, const char *value); | ||||||
|     void AddLoopToken       (int loopIndex, int row, int index, const char *value); |     void AddLoopToken       (int loopIndex, int row, int index, const char *value); | ||||||
|     char *StringToken       (int index) { return stringTokens[index]; }; |     char *StringToken       (int index) { return stringTokens[index]; }; | ||||||
|     int  IntToken           (int index) { return intTokens[index];    }; |     int  IntToken           (int index) { return intTokens[index];    }; | ||||||
|     char *LoopToken         (int i, int j, int k) { return loopTokens[i][j][k]; }; |     char *LoopToken         (int i, int j, int k) { return loopTokens[i][j][k]; }; | ||||||
|     int  NumLoops           (int loopIndex); |     int  NumLoops           (int loopIndex); | ||||||
|     void SetTokens          (cTokenContainer *other); |     void SetTokens          (cTokenContainer *other); | ||||||
|     void Clear(void); |     void Clear(void); | ||||||
|     void Debug(void); |     void Debug(void); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| } | } | ||||||
| #endif //__TOKENCONTAINER_H | #endif //__TOKENCONTAINER_H | ||||||
		Reference in New Issue
	
	Block a user