Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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];
                }
            }
        }
    }
}