static void fill_settings( MythSettingList &settings, MSqlQuery &query, MythSetting::SettingType stype) { QMap<QString,QString> map; while (query.next()) map[query.value(0).toString()] = query.value(1).toString(); MythSettingList::const_iterator it = settings.begin(); for (; it != settings.end(); ++it) fill_setting(*it, map, stype); }
bool load_settings(MythSettingList &settings, const QString &hostname) { MSqlQuery query(MSqlQuery::InitCon()); QString list = extract_query_list(settings, MythSetting::kFile); if (!list.isEmpty()) { QMap<QString,QString> map = GetConfigFileSettingValues(); if (map.isEmpty()) return false; MythSettingList::const_iterator it = settings.begin(); for (; it != settings.end(); ++it) fill_setting(*it, map, MythSetting::kFile); } list = extract_query_list(settings, MythSetting::kHost); QString qstr = "SELECT value, data " "FROM settings " "WHERE hostname = '" + hostname + "' AND " " value in (" + list + ")"; if (!list.isEmpty()) { if (!query.exec(qstr)) { MythDB::DBError("HttpConfig::LoadMythSettings() 1", query); return false; } fill_settings(settings, query, MythSetting::kHost); } list = extract_query_list(settings, MythSetting::kGlobal); qstr = "SELECT value, data " "FROM settings " "WHERE hostname IS NULL AND " " value in (" + list + ")"; if (!list.isEmpty()) { if (!query.exec(qstr)) { MythDB::DBError("HttpConfig::LoadMythSettings() 2", query); return false; } fill_settings(settings, query, MythSetting::kGlobal); } return true; }
static void fill_setting( MythSettingBase *sb, const QMap<QString,QString> &map, MythSetting::SettingType stype) { const MythSettingGroup *group = dynamic_cast<const MythSettingGroup*>(sb); if (group) { MythSettingList::const_iterator it = group->m_settings.begin(); for (; it != group->m_settings.end(); ++it) fill_setting(*it, map, stype); return; } MythSetting *setting = dynamic_cast<MythSetting*>(sb); if (setting && (setting->m_stype == stype)) { QMap<QString,QString>::const_iterator it = map.find(setting->m_value); if (it != map.end()) setting->m_data = *it; bool do_option_check = false; if (MythSetting::kLocalIPAddress == setting->m_dtype) { setting->m_data_list = GetSettingValueList("LocalIPAddress"); setting->m_display_list = setting->m_data_list; do_option_check = true; } else if (MythSetting::kSelect == setting->m_dtype) { do_option_check = true; } else if (MythSetting::kTVFormat == setting->m_dtype) { setting->m_data_list = setting->m_display_list = ChannelTVFormat::GetFormats(); do_option_check = true; } else if (MythSetting::kFrequencyTable == setting->m_dtype) { setting->m_data_list.clear(); for (uint i = 0; chanlists[i].name; i++) setting->m_data_list.push_back(chanlists[i].name); setting->m_display_list = setting->m_data_list; do_option_check = true; } if (do_option_check) { if (!setting->m_data_list.empty() && !setting->m_data_list.contains(setting->m_data.toLower(), Qt::CaseInsensitive)) { bool ok; long long idata = setting->m_data.toLongLong(&ok); if (ok) { uint sel = 0; for (int i = setting->m_data_list.size() - 1; i >= 0; i--) { if (idata < setting->m_data_list[i].toLongLong()) break; sel = i; } setting->m_data = setting->m_data_list[sel]; } else { setting->m_data = (setting->m_data_list.contains( setting->m_default_data, Qt::CaseInsensitive)) ? setting->m_default_data : setting->m_data_list[0]; } } } } }