Esempio n. 1
0
void DateTime::format(std::string& str, const std::string& fmt, int timeZoneDifferential)
{
    std::string::const_iterator it  = fmt.begin();
    std::string::const_iterator end = fmt.end();
    while (it != end)
    {
        if (*it == '%')
        {
            if (++it != end)
            {
                switch (*it)
                {
                case 'w': str.append(WEEKDAY_NAMES[dayOfWeek()], 0, 3); break;
                case 'W': str.append(WEEKDAY_NAMES[dayOfWeek()]); break;
                case 'b': str.append(MONTH_NAMES[month() - 1], 0, 3); break;
                case 'B': str.append(MONTH_NAMES[month() - 1]); break;
                case 'd': NumberFormatter::append0(str, (int32_t)day(), 2); break;
                case 'e': NumberFormatter::append(str, (int32_t)day()); break;
                case 'f': NumberFormatter::append(str, (int32_t)day(), 2); break;
                case 'm': NumberFormatter::append0(str, (int32_t)month(), 2); break;
                case 'n': NumberFormatter::append(str, (int32_t)month()); break;
                case 'o': NumberFormatter::append(str, (int32_t)month(), 2); break;
                case 'y': NumberFormatter::append0(str, (int32_t)year() % 100, 2); break;
                case 'Y': NumberFormatter::append0(str, (int32_t)year(), 4); break;
                case 'H': NumberFormatter::append0(str, (int32_t)hour(), 2); break;
                case 'h': NumberFormatter::append0(str, (int32_t)hourAMPM(), 2); break;
                case 'a': str.append(isAM() ? "am" : "pm"); break;
                case 'A': str.append(isAM() ? "AM" : "PM"); break;
                case 'M': NumberFormatter::append0(str, (int32_t)minute(), 2); break;
                case 'S': NumberFormatter::append0(str, (int32_t)second(), 2); break;
                case 'i': NumberFormatter::append0(str, (int32_t)millisecond(), 3); break;
                case 'c': NumberFormatter::append(str, (int32_t)millisecond()/100); break;
                case 'F': NumberFormatter::append0(str, (int32_t)millisecond()*1000 + microsecond(), 6); break;
                case 'z': tzdISO(str, timeZoneDifferential); break;
                case 'Z': tzdRFC(str, timeZoneDifferential); break;
                default:  str += *it;
                }
                ++it;
            }
        }
        else str += *it++;
    }
}
Esempio n. 2
0
void si4754Radio::slotSearchChannel(void)
{
    int res = -1;
    if(m_isSearching)
    {
        if(m_radioMode == RM_FREQ_SECTION_FM)
        {
            res =  seekFM();
            if(!res)//为0表示收到台
            {
                int channel = si475xFMRX_get_frequency();
                if(isFM(channel*10))//在FM范围内,超范围的台丢弃
                {
                    emit searchedOneChannel(channel*10);
                    QTimer::singleShot(100,this,SLOT(slotSearchChannel()));
                }
                else
                {
                    emit searchEnd(RM_SEARCH_R_OK);
                }
            }
            else//收不到台表示收台完成
            {
                emit searchEnd(RM_SEARCH_R_OK);
            }
        }
        else
        {
            res =  seekAM();
            if(!res)//为0表示收到台
            {
                int channel = si475xAMRX_get_frequency();
                if(isAM(channel))//在AM范围内,超范围的台丢弃
                {
                    emit searchedOneChannel(channel);
                    QTimer::singleShot(100,this,SLOT(slotSearchChannel()));
                }
                else
                {
                    emit searchEnd(RM_SEARCH_R_OK);
                }
            }
            else//收不到台表示收台完成
            {
                emit searchEnd(RM_SEARCH_R_OK);
            }
        }
    }
    else
    {
        emit searchEnd(RM_SEARCH_R_CANCEL);
    }
}
Esempio n. 3
0
int si4754Radio::changeChannel(int channel)
{
    if(isFM(channel))//FM的台
    {
        if(m_radioMode == RM_FREQ_SECTION_AM)//当前是AM模式
        {
            closeAM();//关闭AM才能初始化FM
            InitFM();
        }
        else if(m_radioMode== RM_FREQ_SECTION_NULL)//当前没有设置模式
        {
            closeAM();//关闭FM才能初始化AM
            InitFM();
        }
        m_radioMode = RM_FREQ_SECTION_FM;
        changeFM(channel);

    }
    else if(isAM(channel))//AM的台
    {
        if(m_radioMode == RM_FREQ_SECTION_FM)//当前是FM模式
        {
            closeFM();//关闭FM才能初始化AM
            InitAM();
        }
        else if(m_radioMode == RM_FREQ_SECTION_NULL)//当前没有设置模式
        {
            closeFM();//关闭FM才能初始化AM
            InitAM();
        }
        m_radioMode = RM_FREQ_SECTION_AM;
        changeAM(channel);

    }
    return 1;
}