From bcf39db39273ad346ca05e1197b74abcb8929b45 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sat, 13 Jun 2009 07:17:53 +0000 Subject: [PATCH] added disabled state for LED bar --- src/multicolorledbar.cpp | 93 +++++++++++++++++++++++----------- src/multicolorledbar.h | 13 ++++- src/res/CLEDDisabledSmall.png | Bin 0 -> 1141 bytes src/res/VLEDDisabledSmall.png | Bin 0 -> 798 bytes 4 files changed, 76 insertions(+), 30 deletions(-) create mode 100755 src/res/CLEDDisabledSmall.png create mode 100755 src/res/VLEDDisabledSmall.png diff --git a/src/multicolorledbar.cpp b/src/multicolorledbar.cpp index 76c0b0ad..c1965ae6 100755 --- a/src/multicolorledbar.cpp +++ b/src/multicolorledbar.cpp @@ -67,47 +67,78 @@ CMultiColorLEDBar::~CMultiColorLEDBar() } } -void CMultiColorLEDBar::setValue ( const int value ) +void CMultiColorLEDBar::changeEvent ( QEvent* curEvent ) { - // update state of all LEDs for current level value + // act on enabled changed state + if ( (*curEvent).type() == QEvent::EnabledChange ) + { + // reset all LEDs + Reset ( this->isEnabled() ); + } +} + +void CMultiColorLEDBar::Reset ( const bool bEnabled ) +{ + // update state of all LEDs for ( int iLEDIdx = 0; iLEDIdx < iNumLEDs; iLEDIdx++ ) { - // set active LED color if value is above current LED index - if ( iLEDIdx < value ) + // different reset behavoiur for enabled and disabled control + if ( bEnabled ) { - // check which color we should use (green, yellow or red) - if ( iLEDIdx < YELLOW_BOUND_INP_LEV_METER ) - { - // green region - vecpLEDs[iLEDIdx]->setColor ( cLED::RL_GREEN ); - } - else - { - if ( iLEDIdx < RED_BOUND_INP_LEV_METER ) - { - // yellow region - vecpLEDs[iLEDIdx]->setColor ( cLED::RL_YELLOW ); - } - else - { - // red region - vecpLEDs[iLEDIdx]->setColor ( cLED::RL_RED ); - } - } + vecpLEDs[iLEDIdx]->setColor ( cLED::RL_GREY ); } else { - // we use grey LED for inactive state - vecpLEDs[iLEDIdx]->setColor ( cLED::RL_GREY ); + vecpLEDs[iLEDIdx]->setColor ( cLED::RL_DISABLED ); + } + } +} + +void CMultiColorLEDBar::setValue ( const int value ) +{ + if ( this->isEnabled() ) + { + // update state of all LEDs for current level value + for ( int iLEDIdx = 0; iLEDIdx < iNumLEDs; iLEDIdx++ ) + { + // set active LED color if value is above current LED index + if ( iLEDIdx < value ) + { + // check which color we should use (green, yellow or red) + if ( iLEDIdx < YELLOW_BOUND_INP_LEV_METER ) + { + // green region + vecpLEDs[iLEDIdx]->setColor ( cLED::RL_GREEN ); + } + else + { + if ( iLEDIdx < RED_BOUND_INP_LEV_METER ) + { + // yellow region + vecpLEDs[iLEDIdx]->setColor ( cLED::RL_YELLOW ); + } + else + { + // red region + vecpLEDs[iLEDIdx]->setColor ( cLED::RL_RED ); + } + } + } + else + { + // we use grey LED for inactive state + vecpLEDs[iLEDIdx]->setColor ( cLED::RL_GREY ); + } } } } CMultiColorLEDBar::cLED::cLED ( QWidget* parent ) : - BitmCubeRoundGrey ( QString::fromUtf8 ( ":/png/LEDs/res/VLEDGreySmall.png" ) ), - BitmCubeRoundGreen ( QString::fromUtf8 ( ":/png/LEDs/res/VLEDGreenSmall.png" ) ), - BitmCubeRoundYellow ( QString::fromUtf8 ( ":/png/LEDs/res/VLEDYellowSmall.png" ) ), - BitmCubeRoundRed ( QString::fromUtf8 ( ":/png/LEDs/res/VLEDRedSmall.png" ) ) + BitmCubeRoundDisabled ( QString::fromUtf8 ( ":/png/LEDs/res/VLEDDisabledSmall.png" ) ), + BitmCubeRoundGrey ( QString::fromUtf8 ( ":/png/LEDs/res/VLEDGreySmall.png" ) ), + BitmCubeRoundGreen ( QString::fromUtf8 ( ":/png/LEDs/res/VLEDGreenSmall.png" ) ), + BitmCubeRoundYellow ( QString::fromUtf8 ( ":/png/LEDs/res/VLEDYellowSmall.png" ) ), + BitmCubeRoundRed ( QString::fromUtf8 ( ":/png/LEDs/res/VLEDRedSmall.png" ) ) { // create LED label pLEDLabel = new QLabel ( "", parent ); @@ -128,6 +159,10 @@ void CMultiColorLEDBar::cLED::setColor ( const ELightColor eNewColor ) { switch ( eNewColor ) { + case RL_DISABLED: + pLEDLabel->setPixmap ( BitmCubeRoundDisabled ); + break; + case RL_GREY: pLEDLabel->setPixmap ( BitmCubeRoundGrey ); break; diff --git a/src/multicolorledbar.h b/src/multicolorledbar.h index 9fb23470..4d9e689e 100755 --- a/src/multicolorledbar.h +++ b/src/multicolorledbar.h @@ -48,13 +48,21 @@ protected: class cLED { public: - enum ELightColor { RL_GREY, RL_GREEN, RL_YELLOW, RL_RED }; + enum ELightColor + { + RL_DISABLED, + RL_GREY, + RL_GREEN, + RL_YELLOW, + RL_RED + }; cLED ( QWidget* parent ); void setColor ( const ELightColor eNewColor ); QLabel* getLabelPointer() { return pLEDLabel; } protected: + QPixmap BitmCubeRoundDisabled; QPixmap BitmCubeRoundGrey; QPixmap BitmCubeRoundGreen; QPixmap BitmCubeRoundYellow; @@ -64,6 +72,9 @@ protected: QLabel* pLEDLabel; }; + void Reset ( const bool bEnabled ); + virtual void changeEvent ( QEvent* curEvent ); + QHBoxLayout* pMainLayout; int iNumLEDs; diff --git a/src/res/CLEDDisabledSmall.png b/src/res/CLEDDisabledSmall.png new file mode 100755 index 0000000000000000000000000000000000000000..bcda7dbfc7a6e0a65eaf0e88c2d464d16ecd60cc GIT binary patch literal 1141 zcmV-*1d98KP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L0HzoK0HzoLes#%>00007bV*G`2iXP< z2M{}YNhitx00Z?&L_t(I%YBvIYg0)Who3of&ap|`Buzh7U1{UiJBgrF>F&iY>w@5C z6Dy5SWh-6?(q2eG{|MO|R|4Wiy-?ULHLVw-7|^|QEv@*0goSF>mXL%^hza(b=8&A( z3r*Hq*@1zXcjou-^1j1w1Ya15M4|;a0YsHj1HhJ#M_D1n0x&Ctn2AQCYoBYy=YczS z?!=T*zW`r1Vy^1~plRBFLLoB1ZQ&RwJzIF}A zaXzd+#sJ=qjq&>EQ7Q`yR4Nq$fdD{Mmr@P@SeAwBx>PC^Qn470AJo}2tmDG$23i{*({c2@p5>W)X2z&N1qxQ;l=Uetgfz- z%jGallX|_5rfKN9zD1K#qU$=QX<`@#j^nVryo_zz)M~X2z*?<_ZQHD@tWc}fFbo63 zFpyFrr9_ufW~G$9?d|QDrU}5>+8Uu7HwY(_8-U?Nf-JDIcQ1xv0O0fa8rrO;>-vJO z>jZ;A8qn__KIFSkV2=+R;KkrzbN|!a90QAsn5K!}@28`qqmki)E~T6Wj(2r+Q7V<_ zo0?+Zg9lCV{K11P9y)}#T&C5w>3{wl>AL)wNFb%8G%`Xk7;H3UR?{?XMoO9S`FsrC zzt6sV_nNT9BS&}^iC~&0weD^nkB*Ywy&C}Oy8JLR!|wTc+S=OCbv+}coDl%&bUG%4 z_^mG#YQmlk4e=}zSyw-$6rOkQ7`%Ct(9@>?RCn$qclR#9$xtXXtpRM`zI|Fs8LwQp z06^~CIf@e#&6+kkX__WRZ!gOiFH#&Hrry(ob?OvS%6KRgnqFsLnM_6#Li{R(IN#{> z`}gm$EQ@Nj3c#jKoA7$Qw6(R-($dnjFQwGP)~#FJFB)t literal 0 HcmV?d00001 diff --git a/src/res/VLEDDisabledSmall.png b/src/res/VLEDDisabledSmall.png new file mode 100755 index 0000000000000000000000000000000000000000..428436c377350457b048bdd353a485fa1fecb5b9 GIT binary patch literal 798 zcmV+(1L6FMP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L08*+W zC=?2$QmMKz=JDFvT8(P8n%{f&tov6cV}ne_{{Hf%Z8n?s=;+9{9zC*SW9-S5EB5C% zZ<^I=H7_Fas`&l;B`*j_2LabUe#CWMyl$7-FJBOA$v2y%8jZ^$@=8>7qrS9sZUsF! zAZj#_PoFU3F#vx%4u|80T_y?%(HJmjLbCw;9~H!T+nb zut4AUr-3Mn=#|S;!12loaU4$rqtS@N)zt~{D4piV-Md6lGzo|ZQ54ZyTqMqB6JVT5 zF_@W|0321taU6QR9+{I9B#tjK2}9yI=JfOw&-11|%zXWdM$ttcVTkwb8(|nudr(!b z@9a#OUfSN~e2NLcaU5nFjVYkCzmMPVPv3C4R>K<%5@D211CR;=uI=t#03tGSU6;kr zpA&KW=1sc)3Gw>Q4zBAWA|p}Ny6^kU?(Zjp#>0mkJ$R7x#d@9Df5WSbs(vVyN~F%- z4#4s9GRMoyguV}eI~+1U9;2!sL_}U^v)RTU&z}QOd-8;s5{u literal 0 HcmV?d00001