if(roll_falg<=0)
{
if(CalculatorView::GetInstance())
- CalculatorView::GetInstance()->show_hint_label(false);
+ {
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(&CalculatorView::show_hint_label, CalculatorView::GetInstance(),false));
+ }
+
if(g_pMainView->call_roll_timer)
{
if(roll_falg_2<=0)
{
if(CalculatorView::GetInstance())
- CalculatorView::GetInstance()->show_long_label();
+ {
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(&CalculatorView::show_long_label, CalculatorView::GetInstance()));
+ }
if(g_pMainView->call_roll_timer_move)
{
void CalculatorView::show_hint_label(bool data)
{
- hint->SetVisible(data);
- RootView::GetInstance()->Invalidate();
+ hint->SetVisible(data);
+ Invalidate();
}
void CalculatorView::show_long_label(void)
{
- number->SetText(number_string.c_str());
+ number->SetText(number_string.c_str());
number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
- RootView::GetInstance()->Invalidate();
+ Invalidate();
}
void CalculatorView::start_call_roll_timer()
osStatus_t retTimer;
if(call_roll_timer_move)
{
- roll_falg_2=10;
+ roll_falg_2=15;
}
else
{
- roll_falg_2=10;
+ roll_falg_2=15;
- call_roll_timer_move = osTimerNew((osTimerFunc_t)label_Timer_CallBack, osTimerPeriodic, NULL, NULL);
+ call_roll_timer_move = osTimerNew((osTimerFunc_t)label_Timer_CallBack_move, osTimerPeriodic, NULL, NULL);
tick =100;// osMs2Tick(1000);
retTimer = osTimerStart(call_roll_timer_move, tick);
if (retTimer != osOK && call_roll_timer_move != NULL) {
}
- if(number_string.length()>20)
+ if(number_string.length()>15)
{
//超出长度限制
start_call_roll_timer();
number_string=number_string+buf;
- if(number_string.length()>12)
- {
- number->SetText(number_string.c_str()+number_string.length()-12);
- number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
- number_falg=1;
- RootView::GetInstance()->Invalidate();
- return;
- }
+ // if(number_string.length()>12)
+ // {
+ // number->SetText(number_string.c_str()+number_string.length()-12);
+ // number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
+ // number_falg=1;
+ // start_call_roll_timer_move();
+ // Invalidate();
+ // return;
+ // }
number->SetText(number_string.c_str());
- number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
+ number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
number_falg=1;
- RootView::GetInstance()->Invalidate();
+ Invalidate();
return;
}
}
char new_buf[64]={0};
- const char*text_buf=number_string.c_str();
+
+ std::string text_buf=number_string;
if(number_falg==0)
{
if(strcmp(buf,"÷")==0)
number_string=new_buf;
number->SetText(buf);
- number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
+ number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
- RootView::GetInstance()->Invalidate();
+ Invalidate();
return;
}
- double number_float=strtod(text_buf,NULL);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%lf %s",number_float,text_buf);
+ double number_float=strtod(text_buf.c_str(),NULL);
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%lf %s",number_float,text_buf.c_str());
char new_buf_[64]={0};
sprintf_s(new_buf_,64,"%.010lf",number_float);
{
number_float =CalculatorModel::GetInstance()->calculate_stack();
CalculatorModel::GetInstance()->number_push_stack(number_float);
- RootView::GetInstance()->Invalidate();
+ Invalidate();
}
number_string=new_buf;
number->SetText(new_buf);
- number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
+ number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
- RootView::GetInstance()->Invalidate();
+ Invalidate();
if(strcmp(buf,"÷")==0)
CalculatorModel::GetInstance()->symbol_push_stack('/');
char new_buf[64]={0};
- char*text_buf=(char *)number_string.c_str();
+ std::string text_buf=number_string;
- double number_float=strtod(text_buf,NULL);
+ double number_float=strtod(text_buf.c_str(),NULL);
if(buf[0]=='C')
{
CalculatorModel::GetInstance()->clean_stack();
number->SetText("");
number_string="";
- RootView::GetInstance()->Invalidate();
+ Invalidate();
}
else if (buf[0]=='%')
{
decimal_places++;
}
- printf("该浮点数的小数部分有 %d %lf 位。\n", decimal_places,number_float);
+ // printf("该浮点数的小数部分有 %d %lf 位。\n", decimal_places,number_float);
switch (decimal_places)
{
case 0:
}
number_string=new_buf;
number->SetText(new_buf);
- number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
- RootView::GetInstance()->Invalidate();
+ number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
+ Invalidate();
}
else if (buf[0]=='D')
{
- // number_float=0;
- // sprintf_s(new_buf,16,"%.00lf",number_float);
- text_buf[number_string.length()-1]='\0';
- number_string=text_buf;
- number->SetText(text_buf);
- number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
+ number_string.pop_back();
+ number->SetText(number_string.c_str());
+ number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
if(number_falg==0)
{
CalculatorModel::GetInstance()->symbol_stack_pop();
}
- RootView::GetInstance()->Invalidate();
+ Invalidate();
}
return;
}
char new_buf[64]={0};
- const char*text_buf=number_string.c_str();
+ std::string text_buf=number_string;
double number_float=0;
if(text_buf[0]>='0' && text_buf[0]<='9')
{
- number_float=strtod(text_buf,NULL);
+ number_float=strtod(text_buf.c_str(),NULL);
char new_buf_[64]={0};
sprintf_s(new_buf_,64,"%.010lf",number_float);
number_float=strtod(new_buf_,NULL);
{
decimal_places++;
}
-
- printf("该浮点数的小数部分有 %d %lf 位。\n", decimal_places,number_float);
switch (decimal_places)
{
case 0:
number_string=new_buf;
number->SetText(new_buf);
- number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
- RootView::GetInstance()->Invalidate();
+ number->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);
+ Invalidate();
// number->SetText("");