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);
    }
}
示例#2
0
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);
    }
}