📄 alarmsetup.cpp
字号:
#include "ClockApp.h"
#include "AlarmSetup.h"
#include "Ring.h"
CAlarmSetup::CAlarmSetup() : CXSetup(13)
{
#ifdef WIN32
m_alarm_index = 0;
#endif
memset(&m_alarmBuff, 0, sizeof(m_alarmBuff));
}
CAlarmSetup::~CAlarmSetup()
{
}
//切换到当前显示
void CAlarmSetup::OnSetFocus()
{
CXSetup::OnSetFocus();
m_alarm_index = 0;
LoadOldValue();
display();
}
void CAlarmSetup::SetFlash()
{
UCHAR speed = 1;
memset(&led, 0, sizeof(led));
switch(m_current_setup){
case 1:
led.alarmIndex = 0x7f;
break;
case 2:// ON/OFF
led.mon1 = 0x7f; //O
led.mon2 = 0x7f; //F
led.day1 = 0x7f; //F
break;
case 3:// 小时
led.hour1 = 0x7f;
led.hour2 = 0x7f;
break;
case 4://分十位
led.min1 = 0x7f;
break;
case 5://分个位
led.min2 = 0x7f;
break;
case 6://铃声
led.sec2 = 0x7f;
break;
default://星期
led.weeksel = 1 << (m_current_setup-7);
//已经设置了的星期则快闪
speed = (m_alarmBuff.week & led.weeksel) ? 2 : 1;
break;
}
CClockApp::clockApp->Flash(&led, speed);
if(m_current_setup >= 7) display();
}
void CAlarmSetup::LoadOldValue()
{
CClockApp::clockApp->m_clock.GetAlarm(m_alarmBuff, m_alarm_index);
}
UCHAR CAlarmSetup::OnSet(UCHAR add)
{
UCHAR res = 1;
UCHAR temp;
switch(m_current_setup){
case 1://index
if(m_updated){
SaveSetup();
}
if(add){
if(m_alarm_index >= ALARM_MAX-1) m_alarm_index = 0;
else m_alarm_index++;
}else{
if(!m_alarm_index) m_alarm_index = ALARM_MAX-1;
else m_alarm_index--;
}
LoadOldValue();
res = 0;
break;
case 2:// ON/OFF
m_alarmBuff.enable = !m_alarmBuff.enable;
break;
case 3://小时
if(add){
if(m_alarmBuff.hour >= 23) m_alarmBuff.hour = 0;
else m_alarmBuff.hour++;
}else{
if(!m_alarmBuff.hour) m_alarmBuff.hour = 23;
else m_alarmBuff.hour--;
}
break;
case 4://分钟的十位
temp = m_alarmBuff.min / 10;
m_alarmBuff.min %= 10;
if(add){
if(temp >= 5) temp = 0;
else temp++;
}else{
if(!temp) temp = 5;
else temp--;
}
m_alarmBuff.min += temp * 10;
break;
case 5://分钟的个位
temp = m_alarmBuff.min % 10;
m_alarmBuff.min -= temp;
if(add){
if(temp >= 9) temp = 0;
else temp++;
}else{
if(!temp) temp = 9;
else temp--;
}
m_alarmBuff.min += temp;
break;
case 6://铃声
if(add){
if(m_alarmBuff.ring >= CRing::GetCount()-1){
m_alarmBuff.ring = 0;
}else{
m_alarmBuff.ring++;
}
}else{
if(!m_alarmBuff.ring){
m_alarmBuff.ring = CRing::GetCount()-1;
}else{
m_alarmBuff.ring--;
}
}
break;
default://星期
m_alarmBuff.week ^= 1<<(m_current_setup-7);
break;
}
display();
return res;
}
void CAlarmSetup::SaveSetup()
{
CClockApp::clockApp->m_clock.SetAlarm(m_alarmBuff, m_alarm_index);
}
void CAlarmSetup::display()
{
memset(&led, 0, sizeof(led));
CClock::AlarmbuffToLedbuff(led, m_alarmBuff, m_alarm_index);
if(m_current_setup >= 7) led.weeksel |= 1 << (m_current_setup-7);
led.f_alarm = 1;
led.dot =1;
CClockApp::clockApp->Display(led);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -