void CADatePickerView::didSelectRow(CAPickerView* pickerView, unsigned int row, unsigned int component) { switch (m_eMode) { case CADatePickerModeCountDownTimer: if (component == 0) { // hour m_tTM.tm_hour = row; } else { // min m_tTM.tm_min = row; } break; case CADatePickerModeDate: { if (component == 0) { // years m_tTM.tm_year = row; int tem_day = CACalendar::create()->_dayCountOfMonth(m_tTM.tm_year+1900,m_tTM.tm_mon); if (m_tTM.tm_mday>tem_day) { m_tTM.tm_mday = 1; m_pPickerView->reloadComponent(0,2); }else{ m_pPickerView->reloadComponent(m_tTM.tm_mday-1,2); } } else if (component == 1) { m_tTM.tm_mon = row; int tem_day = CACalendar::create()->_dayCountOfMonth(m_tTM.tm_year+1900,m_tTM.tm_mon); if (m_tTM.tm_mday>tem_day) { m_tTM.tm_mday = 1; m_pPickerView->reloadComponent(0,2); }else{ m_pPickerView->reloadComponent(m_tTM.tm_mday-1,2); } } else { m_tTM.tm_mday = row+1; } break; } case CADatePickerModeDateAndTime: if (component == 0) { // date CACalendar* cal = CACalendar::create(); int month, date; cal->dateByDayOfYear(m_tTM.tm_year, row, month, date); m_tTM.tm_mon = month; m_tTM.tm_mday = date; m_tTM.tm_mon--; } else if (component == 1) { // hour m_tTM.tm_hour = row; } else { // minutes m_tTM.tm_min = row; } break; case CADatePickerModeTime: if (component == 0) { // hour m_tTM.tm_hour = row; } else { // minutes m_tTM.tm_min = row; } break; default: break; } if (m_pDelegate) { m_pDelegate->didSelectRow(m_tTM); } }
void CADatePickerView::didSelectRow(CAPickerView* pickerView, unsigned int row, unsigned int component) { switch (m_eMode) { case CADatePickerModeCountDownTimer: if (component == 0) { // hour m_tTM.tm_hour = row; } else { // min m_tTM.tm_min = row; } break; case CADatePickerModeDate: { if (component == 0) { // years m_tTM.tm_year = row; m_tTM.tm_mon = 0; m_tTM.tm_mday = 1; m_pPickerView->reloadComponent(1); m_pPickerView->reloadComponent(2); } else if (component == 1) { // month m_tTM.tm_mon = row; m_tTM.tm_mday = 1; m_pPickerView->reloadComponent(2); } else { // day m_tTM.tm_mday = row + 1; } // fault tolerant time_t t = mktime(&m_tTM); m_tTM = *localtime(&t); break; } case CADatePickerModeDateAndTime: if (component == 0) { // date CACalendar* cal = CACalendar::create(); int month, date; cal->dateByDayOfYear(m_tTM.tm_year, row + 1, month, date); m_tTM.tm_mon = month; m_tTM.tm_mday = date; time_t t = mktime(&m_tTM); m_tTM = *localtime(&t); } else if (component == 1) { // hour m_tTM.tm_hour = row; } else { // minutes m_tTM.tm_min = row; } break; case CADatePickerModeTime: if (component == 0) { // hour m_tTM.tm_hour = row; } else { // minutes m_tTM.tm_min = row; } break; default: break; } if (m_pDelegate) { m_pDelegate->didSelectRow(m_tTM); } }