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++; } }
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); } }
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; }