Cornelius Bezuidenhout / Mbed OS Heiko

Dependencies:   BSP_DISCO_F746NG F746_GUI LCD_DISCO_F746NG SDFileSystem TS_DISCO_F746NG ResistiveTouchController Map CYS8218Controller MedianFilter

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ChangeValWholeScreen.cpp Source File

ChangeValWholeScreen.cpp

00001 #include "ChangeValWholeScreen.hpp"
00002 
00003 ChangeValWholeScreen::ChangeValWholeScreen(int *nextScreen, int prevScreen, float *valToChange, string title, bool negative, float min) :
00004   Screen(),
00005   _lbTitle( SCREEN_W/2, 0, title, Label::CENTER, Font24),
00006   _btBack( 0, SCREEN_H-30, 100, 30, "Back"),
00007   _btSave( SCREEN_W-100, SCREEN_H-30, 100, 30, "Save"),
00008   _btNeg( 110, SCREEN_H-100, SCREEN_W-220, 30, "-"),
00009   _btPos( 110, SCREEN_H-100, SCREEN_W-220, 30, "+"),
00010   _npValue( 0, 48, SCREEN_W, SCREEN_H-83),
00011   _nlbValue(SCREEN_W/2, 26, "%.0f", *valToChange, Label::CENTER, Font20)
00012 {
00013   _nextScreen = nextScreen;
00014   _prevScreen = prevScreen;
00015   _value = valToChange;
00016   _min = min;
00017   _neg = negative;
00018   _negVal = false;
00019 }
00020 
00021 void ChangeValWholeScreen::Draw()
00022 {
00023   Clear();
00024   _lbTitle.Draw();
00025   _btBack.Draw();
00026   _btSave.Draw();
00027   _npValue.Draw();
00028   _nlbValue.Draw();
00029 
00030   if( _neg )
00031   {
00032     _btNeg.Draw();
00033   }
00034 }
00035 
00036 void ChangeValWholeScreen::Process()
00037 {
00038   if( _btBack.Touched() )
00039     *_nextScreen = _prevScreen;
00040 
00041   if( _btSave.Touched() )
00042   {
00043     *_value = _tempVal;
00044     *_nextScreen = _prevScreen;
00045   }
00046 
00047   if( _npValue.Touched() )
00048   {
00049     Update();
00050     Thread::wait(200);
00051   }
00052 
00053 
00054   if( _neg )
00055   {
00056     if( _btNeg.IsActive() )
00057     {
00058       if( _btNeg.Touched() )
00059       {
00060         _negVal = true;
00061         _btNeg.Inactivate();
00062         _btNeg.Erase();
00063 
00064         _btPos.Activate();
00065         _btPos.Draw();
00066 
00067         Update();
00068         Thread::wait(200);
00069       }
00070     }
00071     else if( _btPos.IsActive() )
00072     {
00073         if( _btPos.Touched() )
00074         {
00075           _negVal = false;
00076           _btPos.Inactivate();
00077           _btPos.Erase();
00078 
00079           _btNeg.Activate();
00080           _btNeg.Draw();
00081 
00082           Update();
00083           Thread::wait(200);
00084         }
00085     }
00086   }
00087 }
00088 
00089 void ChangeValWholeScreen::Update()
00090 {
00091   _tempVal = _npValue.GetFloat();
00092 
00093   if( _negVal )
00094     _tempVal *= -1;
00095 
00096   if( _tempVal < _min)
00097     _tempVal = _min;
00098 
00099   _nlbValue.Draw("%.0f", _tempVal );
00100 }