void CPeripheral::AddSetting(const CStdString &strKey, const CSetting *setting) { if (!setting) { CLog::Log(LOGERROR, "%s - invalid setting", __FUNCTION__); return; } if (!HasSetting(strKey)) { switch(setting->GetType()) { case SettingTypeBool: { const CSettingBool *mappedSetting = (const CSettingBool *) setting; CSettingBool *boolSetting = new CSettingBool(strKey, *mappedSetting); if (boolSetting) { boolSetting->SetVisible(mappedSetting->IsVisible()); m_settings.insert(make_pair(strKey, boolSetting)); } } break; case SettingTypeInteger: { const CSettingInt *mappedSetting = (const CSettingInt *) setting; CSettingInt *intSetting = new CSettingInt(strKey, *mappedSetting); if (intSetting) { intSetting->SetVisible(mappedSetting->IsVisible()); m_settings.insert(make_pair(strKey, intSetting)); } } break; case SettingTypeNumber: { const CSettingNumber *mappedSetting = (const CSettingNumber *) setting; CSettingNumber *floatSetting = new CSettingNumber(strKey, *mappedSetting); if (floatSetting) { floatSetting->SetVisible(mappedSetting->IsVisible()); m_settings.insert(make_pair(strKey, floatSetting)); } } break; case SettingTypeString: { const CSettingString *mappedSetting = (const CSettingString *) setting; CSettingString *stringSetting = new CSettingString(strKey, *mappedSetting); if (stringSetting) { stringSetting->SetVisible(mappedSetting->IsVisible()); m_settings.insert(make_pair(strKey, stringSetting)); } } break; default: //TODO add more types if needed break; } } }
void CPeripheral::AddSetting(const std::string &strKey, const CSetting *setting, int order) { if (!setting) { CLog::Log(LOGERROR, "%s - invalid setting", __FUNCTION__); return; } if (!HasSetting(strKey)) { PeripheralDeviceSetting deviceSetting = { NULL, order }; switch(setting->GetType()) { case SettingTypeBool: { const CSettingBool *mappedSetting = (const CSettingBool *) setting; CSettingBool *boolSetting = new CSettingBool(strKey, *mappedSetting); if (boolSetting) { boolSetting->SetVisible(mappedSetting->IsVisible()); deviceSetting.m_setting = boolSetting; } } break; case SettingTypeInteger: { const CSettingInt *mappedSetting = (const CSettingInt *) setting; CSettingInt *intSetting = new CSettingInt(strKey, *mappedSetting); if (intSetting) { intSetting->SetVisible(mappedSetting->IsVisible()); deviceSetting.m_setting = intSetting; } } break; case SettingTypeNumber: { const CSettingNumber *mappedSetting = (const CSettingNumber *) setting; CSettingNumber *floatSetting = new CSettingNumber(strKey, *mappedSetting); if (floatSetting) { floatSetting->SetVisible(mappedSetting->IsVisible()); deviceSetting.m_setting = floatSetting; } } break; case SettingTypeString: { const CSettingString *mappedSetting = (const CSettingString *) setting; CSettingString *stringSetting = new CSettingString(strKey, *mappedSetting); if (stringSetting) { stringSetting->SetVisible(mappedSetting->IsVisible()); deviceSetting.m_setting = stringSetting; } } break; default: //! @todo add more types if needed break; } if (deviceSetting.m_setting != NULL) m_settings.insert(make_pair(strKey, deviceSetting)); } }