Wakeup Light with touch user interface, anti-aliased Font, SD card access and RTC usage on STM32F746NG-DISCO board
Dependencies: BSP_DISCO_F746NG_patch_fixed LCD_DISCO_F746NG TS_DISCO_F746NG FATFileSystem TinyJpgDec_interwork mbed-src
UI_Time.cpp
- Committer:
- the_sz
- Date:
- 2016-02-21
- Revision:
- 14:2044ad5cd3fe
- Parent:
- 12:a89096944f20
File content as of revision 14:2044ad5cd3fe:
#include "WakeupLight.h" #include "Images/ic_date_range_white_48dp_1x.h" extern BYTE ic_query_builder_white_48dp_1x[]; UI_STRUCT uiTimeAdjust; bool isDateAdjust; UI_BOX_LIST_ITEM_STRUCT uiTimeItems[]= { { "Date", ic_date_range_white_48dp_1x }, { "Time", ic_query_builder_white_48dp_1x } }; void UI_TimeAdjustHandler(UI_REASON_ENUM reason,int32_t index,UI_STRUCT *ui) { struct tm *tmStruct; switch (reason) { case UR_CLICK: DPrintf_("UI_WakeupAdjustHandler: %u.\r\n",index); if (index==-1) { if (isDateAdjust==true) { RTC_Get(&tmStruct); tmStruct->tm_mday=uiTimeAdjust.data.valueAdjust.values[0]; tmStruct->tm_mon=uiTimeAdjust.data.valueAdjust.values[1]-1; tmStruct->tm_year=uiTimeAdjust.data.valueAdjust.values[2]+2000-1900; RTC_Set(tmStruct); } else { RTC_Get(&tmStruct); tmStruct->tm_hour=uiTimeAdjust.data.valueAdjust.values[0]; tmStruct->tm_min=(uiTimeAdjust.data.valueAdjust.values[1]*10) + (uiTimeAdjust.data.valueAdjust.values[2]); RTC_Set(tmStruct); } UI_TimeShow(); break; } else if (index==0) { uiTimeAdjust.data.valueAdjust.values[0]++; if (isDateAdjust==true) { if (uiTimeAdjust.data.valueAdjust.values[0]>=32) uiTimeAdjust.data.valueAdjust.values[0]=1; } else { if (uiTimeAdjust.data.valueAdjust.values[0]>=23) uiTimeAdjust.data.valueAdjust.values[0]=0; } } else if (index==1) { uiTimeAdjust.data.valueAdjust.values[1]++; if (isDateAdjust==true) { if (uiTimeAdjust.data.valueAdjust.values[1]>=13) uiTimeAdjust.data.valueAdjust.values[1]=1; } else { if (uiTimeAdjust.data.valueAdjust.values[1]>=6) uiTimeAdjust.data.valueAdjust.values[1]=0; } } else if (index==2) { uiTimeAdjust.data.valueAdjust.values[2]++; if (isDateAdjust==true) { if (uiTimeAdjust.data.valueAdjust.values[2]>=31) uiTimeAdjust.data.valueAdjust.values[2]=16; } else { if (uiTimeAdjust.data.valueAdjust.values[2]>=10) uiTimeAdjust.data.valueAdjust.values[2]=0; } } else if (index==3) { uiTimeAdjust.data.valueAdjust.values[0]--; if (isDateAdjust==true) { if (uiTimeAdjust.data.valueAdjust.values[0]<1) uiTimeAdjust.data.valueAdjust.values[0]=31; } else { if (uiTimeAdjust.data.valueAdjust.values[0]<0) uiTimeAdjust.data.valueAdjust.values[0]=23; } } else if (index==4) { uiTimeAdjust.data.valueAdjust.values[1]--; if (isDateAdjust==true) { if (uiTimeAdjust.data.valueAdjust.values[1]<1) uiTimeAdjust.data.valueAdjust.values[1]=12; } else { if (uiTimeAdjust.data.valueAdjust.values[1]<0) uiTimeAdjust.data.valueAdjust.values[1]=5; } } else if (index==5) { uiTimeAdjust.data.valueAdjust.values[2]--; if (isDateAdjust==true) { if (uiTimeAdjust.data.valueAdjust.values[2]<16) uiTimeAdjust.data.valueAdjust.values[2]=30; } else { if (uiTimeAdjust.data.valueAdjust.values[2]<0) uiTimeAdjust.data.valueAdjust.values[2]=9; } } break; case UR_SHOW: break; } } void UI_TimeHandler(UI_REASON_ENUM reason,int32_t index,UI_STRUCT *ui) { struct tm *tmStruct; switch (reason) { case UR_CLICK: if (index==-1) { // back button UI_Show(&uiMain); } else if (index==0) { // date isDateAdjust=true; memset(&uiTimeAdjust,0,sizeof(uiTimeAdjust)); uiTimeAdjust.flags=UI_FLAG_TYPE_VALUE_ADJUST; uiTimeAdjust.handler=UI_TimeAdjustHandler; uiTimeAdjust.data.valueAdjust.count=3; RTC_Get(&tmStruct); uiTimeAdjust.data.valueAdjust.values[0]=tmStruct->tm_mday; uiTimeAdjust.data.valueAdjust.values[1]=tmStruct->tm_mon+1; uiTimeAdjust.data.valueAdjust.values[2]=tmStruct->tm_year+1900-2000; UI_Show(&uiTimeAdjust); } else if (index==1) { // time isDateAdjust=false; memset(&uiTimeAdjust,0,sizeof(uiTimeAdjust)); uiTimeAdjust.flags=UI_FLAG_TYPE_VALUE_ADJUST; uiTimeAdjust.handler=UI_TimeAdjustHandler; uiTimeAdjust.data.valueAdjust.count=3; uiTimeAdjust.data.valueAdjust.isTime=true; RTC_Get(&tmStruct); uiTimeAdjust.data.valueAdjust.values[0]=tmStruct->tm_hour; uiTimeAdjust.data.valueAdjust.values[1]=tmStruct->tm_min / 10; uiTimeAdjust.data.valueAdjust.values[2]=tmStruct->tm_min % 10; UI_Show(&uiTimeAdjust); } break; case UR_TIMER: break; } } void UI_TimeShow(void) { uiWakeup.flags=UI_FLAG_TYPE_BOX_LIST | UI_FLAG_HAS_BACK_BUTTON; uiWakeup.handler=UI_TimeHandler; uiWakeup.data.boxList.items=uiTimeItems; uiWakeup.data.boxList.count=2; UI_Show(&uiWakeup); }