/// <summary> /// Sets or clears feature bits for a specific category of features. /// </summary> /// <param name="category">The feature category whose feature bits are to be updated.</param> /// <param name="features">The bits to be set or cleared. See Remarks.</param> /// <param name="addFeatures">If <c>true</c>, the given features are ORed into the exiting ones (see Remarks). If <c>false</c>, /// the given bits will be cleared.</param> /// <remarks>If adding NO bits (i.e. features == 0), then all feature bits are cleared, or none, depending on the category. See implementation.</remarks> public void UpdateFeatureBits(FeatureCategory category, uint features, bool addFeatures) { if (addFeatures) { if (features == 0) { switch (category) { case FeatureCategory.General: case FeatureCategory.Jlp: // applies only to accelerator features case FeatureCategory.LtoFlash: // applies only to accelerator features case FeatureCategory.Bee3: // applies only to accelerator features case FeatureCategory.Hive: // applies only to accelerator features break; default: // A value of zero means INCOMPATIBLE WITH ALL FEATURES, so clear ALL the bits in such a case. CheckAccessSetFeatureBits(category, 0); break; } } else { // BUG ? For video (PAL/NTSC) we usually coerce to prevent "requires" value. CheckAccessSetFeatureBits(category, _features[category] | features); } } else { CheckAccessSetFeatureBits(category, _features[category] & ~features); } }
/// <summary> /// Initializes a new instance of the ProgramFeatureImageViewModel class. /// </summary> /// <param name="name">Display name of the feature.</param> /// <param name="image">Icon representing the feature. May be <c>null</c>.</param> /// <param name="toolTip">Tool tip for the feature, displayed when hovering over icon.</param> /// <param name="category">The category of features to which the specific feature belongs.</param> /// <param name="flags">The flag describing the specific feature.</param> public ProgramFeatureImageViewModel(string name, OSImage image, string toolTip, FeatureCategory category, uint flags) { Name = name; Image = image; ToolTip = toolTip; Category = category; Flags = flags; }
private void CheckAccessSetFeatureBits(FeatureCategory category, uint bits) { if (IsReadOnly) { throw new InvalidOperationException(category.ToString()); } _features[category] = bits; }
public object Delete([FromBody] FeatureCategory model) { try { featureCategoryService.Delete(model); return(true); } catch (Exception ex) { return(errorLogService.InsertToErrorLog(ex, MethodBase.GetCurrentMethod().Name, Request.Headers["UserInfo"].ToString())); } }
private (IEnumerable <FeatureCode> codes, IEnumerable <FeatureCategory> categories) ReadFeatureData(string file) { var categories = new List <FeatureCategory>(); var codes = new List <FeatureCode>(); using (var reader = new StreamReader(file)) { FeatureCategory curCategory = null; string line; while (!string.IsNullOrEmpty(line = reader.ReadLine())) { var parts = line.Split(Constants.Separator.Tab); switch (parts.Length) { //Feature Category case 1: parts = parts[0].Split(new char[] { ' ' }, 2); if (parts.Length != 2 || parts[0].Length != 1) { throw new InvalidDataException("the feature category data does not have the correct format"); } curCategory = new FeatureCategory { Code = parts[0], Name = parts[1] }; categories.Add(curCategory); break; case 3: if (curCategory == null) { throw new InvalidDataException("feature category not set"); } codes.Add(new FeatureCode { Code = parts[0], Name = parts[1], Description = parts[2], FeatureCategory = curCategory }); break; default: throw new InvalidDataException("unexpected feature code format"); } } } return(codes : codes, categories : categories); }
/// <summary> /// Initializes a new instance of ProgramFeatureSet. /// </summary> /// <param name="category">The category of features being described.</param> protected ProgramFeatureSet(FeatureCategory category) { _keyPrefix = string.Empty; if ((typeof(T) == typeof(FeatureCompatibility)) || (typeof(T) == typeof(IntellicartCC3Features))) { _keyPrefix = category.ToString(); } var resourceKey = _keyPrefix + typeof(T).Name + "_Name"; Name = typeof(IProgramFeatureSet).GetResourceString(resourceKey); Category = category; }
public void GetFeatureCategories_PassedAValidFeatureCategoryId_ReturnsValidResponse() { //Arrange requestURL = serverURL + featureCategoryControllerSegment + @"/" + expectedFeatureCategoryId; //Act string response = client.GetAsync(requestURL).Result.Content.ReadAsStringAsync().Result; FeatureCategory result = JsonConvert.DeserializeObject <FeatureCategory>(response); string actualFeatureCategoryId = result.FeatureCategoryId; //Assert Assert.AreEqual <string>(expectedFeatureCategoryId, actualFeatureCategoryId); }
public IActionResult UpdateSingleFeatureCategory(Upd_VM.FeatureCategory featureCategory) { try { if (ModelState.IsValid) { List <Upd_VM.FeatureCategory> inputFeatureCategories = new List <Upd_VM.FeatureCategory>(); inputFeatureCategories.Add(featureCategory); IEnumerable <FeatureCategory> result = repository.UpdateFeatureCategories(inputFeatureCategories); if (result != null && result.Count() > 0) { var primaryKey = featureCategory.FeatureCategoryId; byte[] inputRowId = featureCategory.RowId; byte[] outputRowId = result .Where(outputFeatureCategory => outputFeatureCategory.FeatureCategoryId == primaryKey) .Select(outputFeatureCategory => outputFeatureCategory.RowId) .FirstOrDefault(); bool rowIdsAreEqual = inputRowId.SequenceEqual(outputRowId); if (rowIdsAreEqual) { return(BadRequest(ErrMsgs.ErrorMessages_US_en.NotUpdated_SingleEntry)); } else { FeatureCategory outputFeatureCategory = new FeatureCategory(); outputFeatureCategory = result.FirstOrDefault(); return(Ok(outputFeatureCategory)); } } else { return(StatusCode(500)); } } else { return(BadRequest(ModelState)); } } catch (Exception ex) { Debug.WriteLine(ex); throw; } }
public object Save([FromBody] FeatureCategory model) { try { if (model.Id != 0) { return(featureCategoryService.Update(model)); } else { return(featureCategoryService.Add(model)); } } catch (Exception ex) { return(errorLogService.InsertToErrorLog(ex, MethodBase.GetCurrentMethod().Name, Request.Headers["UserInfo"].ToString())); } }
private static bool FeaturesChanged(ServicePlan deltaServicePlan, FeatureCategory featureCategory) { foreach (object obj in ((IEnumerable)deltaServicePlan.Organization.Schema)) { FeatureDefinition featureDefinition = (FeatureDefinition)obj; if (featureDefinition.Categories.Contains(featureCategory) && deltaServicePlan.Organization.PropertyBag.IsModified(featureDefinition)) { return(true); } } for (int i = 0; i < deltaServicePlan.MailboxPlans.Count; i++) { foreach (object obj2 in ((IEnumerable)deltaServicePlan.MailboxPlans[i].Schema)) { FeatureDefinition featureDefinition2 = (FeatureDefinition)obj2; if (featureDefinition2.Categories.Contains(featureCategory) && deltaServicePlan.MailboxPlans[i].PropertyBag.IsModified(featureDefinition2)) { return(true); } } } return(false); }
public FeatureDefinition(string name, FeatureCategory category, Type type, ServicePlanSkus servicePlanSkus) : this(name, type, servicePlanSkus, new FeatureCategory[] { category }) { }
public void FeatureCompatibility_UnsupportedFeatureCategoryToLuigiFeatureFlags_ThrowsInvalidOperationException(FeatureCategory category) { var featureCompatibility = FeatureCompatibility.Incompatible; Assert.Throws <InvalidOperationException>(() => featureCompatibility.ToLuigiFeatureFlags(category)); }
/// <summary> /// Converts a CFGVAR ID tag to a tuple of of LUIGI and other metadata identifiers. /// </summary> /// <param name="tag">The CFGVAR ID to convert.\.</param> /// <param name="feature">If <paramref name="tag"/> indicates a program feature, receives which type of feature.</param> /// <param name="cfgVarTag">If <paramref name="tag"/> indicates a value not directly part of LUIGI's metadata, nor its feature support.</param> /// <returns>The LUIGI metadata identifier tag.</returns> /// <remarks>All feature-related data is directly supported by the LUIGI format. Therefore, a CFG metadata tag /// that describes a feature will cause this function to return <see cref="LuigiMetadataIdTag.Miscellaneous"/> /// and set the specific feature in the <paramref name="feature"/> output. CFGVAR metadata that is not directly represented /// by the LUIGI format, nor its defined metadata tags, will cause this function to return <see cref="LuigiMetadataIdTag.Miscellaneous"/> /// and the original value of the <paramref name="tag"/> argument will be returned via <paramref name="cfgVarTag"/>.</remarks> public static LuigiMetadataIdTag ToLuigiMetadataIdTag(this CfgVarMetadataIdTag tag, out FeatureCategory feature, out CfgVarMetadataIdTag cfgVarTag) { cfgVarTag = CfgVarMetadataIdTag.Invalid; feature = FeatureCategory.None; var luigiTag = LuigiMetadataIdTag.Unknown; switch (tag) { case CfgVarMetadataIdTag.Name: luigiTag = LuigiMetadataIdTag.Name; break; case CfgVarMetadataIdTag.ShortName: luigiTag = LuigiMetadataIdTag.ShortName; break; case CfgVarMetadataIdTag.Author: luigiTag = LuigiMetadataIdTag.Author; break; case CfgVarMetadataIdTag.GameArt: luigiTag = LuigiMetadataIdTag.Graphics; break; case CfgVarMetadataIdTag.Music: luigiTag = LuigiMetadataIdTag.Music; break; case CfgVarMetadataIdTag.SoundEffects: luigiTag = LuigiMetadataIdTag.SoundEffects; break; case CfgVarMetadataIdTag.VoiceActing: luigiTag = LuigiMetadataIdTag.VoiceActing; break; case CfgVarMetadataIdTag.Documentation: luigiTag = LuigiMetadataIdTag.Documentation; break; case CfgVarMetadataIdTag.BoxOrOtherArtwork: luigiTag = LuigiMetadataIdTag.BoxOrOtherArtwork; break; case CfgVarMetadataIdTag.ConceptDesign: luigiTag = LuigiMetadataIdTag.ConceptDesign; break; case CfgVarMetadataIdTag.MoreInfo: luigiTag = LuigiMetadataIdTag.UrlContactInfo; break; case CfgVarMetadataIdTag.Publisher: luigiTag = LuigiMetadataIdTag.Publisher; break; case CfgVarMetadataIdTag.License: luigiTag = LuigiMetadataIdTag.License; break; case CfgVarMetadataIdTag.Description: luigiTag = LuigiMetadataIdTag.Description; break; case CfgVarMetadataIdTag.ReleaseDate: case CfgVarMetadataIdTag.Year: luigiTag = LuigiMetadataIdTag.Date; break; case CfgVarMetadataIdTag.BuildDate: cfgVarTag = tag; luigiTag = LuigiMetadataIdTag.Miscellaneous; break; case CfgVarMetadataIdTag.Version: cfgVarTag = tag; luigiTag = LuigiMetadataIdTag.Miscellaneous; break; case CfgVarMetadataIdTag.EcsCompatibility: feature = FeatureCategory.Ecs; break; case CfgVarMetadataIdTag.IntellivoiceCompatibility: feature = FeatureCategory.Intellivoice; break; case CfgVarMetadataIdTag.IntellivisionIICompatibility: feature = FeatureCategory.IntellivisionII; break; case CfgVarMetadataIdTag.KeyboardComponentCompatibility: feature = FeatureCategory.KeyboardComponent; break; case CfgVarMetadataIdTag.TutorvisionCompatibility: feature = FeatureCategory.Tutorvision; break; case CfgVarMetadataIdTag.Ecs: feature = FeatureCategory.EcsLegacy; break; case CfgVarMetadataIdTag.Voice: feature = FeatureCategory.IntellivoiceLegacy; luigiTag = LuigiMetadataIdTag.Miscellaneous; break; case CfgVarMetadataIdTag.IntellivisionII: feature = FeatureCategory.IntellivisionIILegacy; luigiTag = LuigiMetadataIdTag.Miscellaneous; break; case CfgVarMetadataIdTag.LtoFlashMapper: feature = FeatureCategory.LtoFlash; break; case CfgVarMetadataIdTag.JlpAccelerators: case CfgVarMetadataIdTag.Jlp: feature = FeatureCategory.Jlp; break; case CfgVarMetadataIdTag.JlpFlash: feature = FeatureCategory.JlpFlashCapacity; break; case CfgVarMetadataIdTag.Invalid: break; default: throw new InvalidOperationException(Resources.Strings.CfgVarMetadata_ToLuigiError); } return(luigiTag); }
// Note: this type is marked as 'beforefieldinit'. static OrganizationSettingsSchema() { string name = "ManagedFoldersPermissions"; Type typeFromHandle = typeof(bool); ServicePlanSkus servicePlanSkus = ServicePlanSkus.Datacenter; FeatureCategory[] array = new FeatureCategory[2]; array[0] = FeatureCategory.AdminPermissions; OrganizationSettingsSchema.ManagedFoldersPermissions = new FeatureDefinition(name, typeFromHandle, servicePlanSkus, array); OrganizationSettingsSchema.SearchMessagePermissions = new FeatureDefinition("SearchMessagePermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.AdminPermissions, FeatureCategory.RoleGroupRoleAssignment }); OrganizationSettingsSchema.ProfileUpdatePermissions = new FeatureDefinition("ProfileUpdatePermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.OpenDomainProfileUpdatePermissions = new FeatureDefinition("OpenDomainProfileUpdatePermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.JournalingRulesPermissions = new FeatureDefinition("JournalingRulesPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.AdminPermissions, FeatureCategory.RoleGroupRoleAssignment }); OrganizationSettingsSchema.ModeratedRecipientsPermissions = new FeatureDefinition("ModeratedRecipientsPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); string name2 = "TransportRulesPermissions"; Type typeFromHandle2 = typeof(bool); ServicePlanSkus servicePlanSkus2 = ServicePlanSkus.All; FeatureCategory[] array2 = new FeatureCategory[2]; array2[0] = FeatureCategory.AdminPermissions; OrganizationSettingsSchema.TransportRulesPermissions = new FeatureDefinition(name2, typeFromHandle2, servicePlanSkus2, array2); OrganizationSettingsSchema.UMAutoAttendantPermissions = new FeatureDefinition("UMAutoAttendantPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.ChangeMailboxPlanAssignmentPermissions = new FeatureDefinition("ChangeMailboxPlanAssignmentPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.TeamMailboxPermissions = new FeatureDefinition("TeamMailboxPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.AdminPermissions, FeatureCategory.RoleGroupRoleAssignment }); OrganizationSettingsSchema.ConfigCustomizationsPermissions = new FeatureDefinition("ConfigCustomizationsPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.UMSMSMsgWaitingPermissions = new FeatureDefinition("UMSMSMsgWaitingPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.UMPBXPermissions = new FeatureDefinition("UMPBXPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.UMCloudServicePermissions = new FeatureDefinition("UMCloudServicePermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.OutlookAnywherePermissions = new FeatureDefinition("OutlookAnywherePermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.PopPermissions = new FeatureDefinition("PopPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.ImapPermissions = new FeatureDefinition("ImapPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.ActiveSyncPermissions = new FeatureDefinition("ActiveSyncPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.DeviceFiltersSetupEnabled = new FeatureDefinition("DeviceFiltersSetupEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.EwsPermissions = new FeatureDefinition("EwsPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); string name3 = "UMPermissions"; Type typeFromHandle3 = typeof(bool); ServicePlanSkus servicePlanSkus3 = ServicePlanSkus.Datacenter; FeatureCategory[] array3 = new FeatureCategory[3]; array3[0] = FeatureCategory.AdminPermissions; array3[1] = FeatureCategory.RoleGroupRoleAssignment; OrganizationSettingsSchema.UMPermissions = new FeatureDefinition(name3, typeFromHandle3, servicePlanSkus3, array3); OrganizationSettingsSchema.UMFaxPermissions = new FeatureDefinition("UMFaxPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.UMOutDialingPermissions = new FeatureDefinition("UMOutDialingPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.UMPersonalAutoAttendantPermissions = new FeatureDefinition("UMPersonalAutoAttendantPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.MailTipsPermissions = new FeatureDefinition("MailTipsPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.AdminPermissions, FeatureCategory.RoleGroupRoleAssignment }); OrganizationSettingsSchema.OWAPermissions = new FeatureDefinition("OWAPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.SMSPermissions = new FeatureDefinition("SMSPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.SetHiddenFromAddressListPermissions = new FeatureDefinition("SetHiddenFromAddressListPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.NewUserPasswordManagementPermissions = new FeatureDefinition("NewUserPasswordManagementPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.NewUserResetPasswordOnNextLogonPermissions = new FeatureDefinition("NewUserResetPasswordOnNextLogonPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.UserLiveIdManagementPermissions = new FeatureDefinition("UserLiveIdManagementPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.MSOIdPermissions = new FeatureDefinition("MSOIdPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.ResetUserPasswordManagementPermissions = new FeatureDefinition("ResetUserPasswordManagementPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.UserMailboxAccessPermissions = new FeatureDefinition("UserMailboxAccessPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.MailboxRecoveryPermissions = new FeatureDefinition("MailboxRecoveryPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.PopSyncPermissions = new FeatureDefinition("PopSyncPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.AddSecondaryDomainPermissions = new FeatureDefinition("AddSecondaryDomainPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.HotmailSyncPermissions = new FeatureDefinition("HotmailSyncPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.ImapSyncPermissions = new FeatureDefinition("ImapSyncPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.OrganizationalAffinityPermissions = new FeatureDefinition("OrganizationalAffinityPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.MessageTrackingPermissions = new FeatureDefinition("MessageTrackingPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.AdminPermissions, FeatureCategory.RoleGroupRoleAssignment }); OrganizationSettingsSchema.ActiveSyncDeviceDataAccessPermissions = new FeatureDefinition("ActiveSyncDeviceDataAccessPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.MOWADeviceDataAccessPermissions = new FeatureDefinition("MOWADeviceDataAccessPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.GroupAsGroupSyncPermissions = new FeatureDefinition("GroupAsGroupSyncPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.LitigationHoldPermissions = new FeatureDefinition("LitigationHoldPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.ArchivePermissions = new FeatureDefinition("ArchivePermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.PermissionManagementEnabled = new FeatureDefinition("PermissionManagementEnabled", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.RoleGroupRoleAssignment }); string name4 = "PrivacyLink"; Type typeFromHandle4 = typeof(string); ServicePlanSkus servicePlanSkus4 = ServicePlanSkus.Datacenter; FeatureCategory[] categories = new FeatureCategory[1]; OrganizationSettingsSchema.PrivacyLink = new FeatureDefinition(name4, typeFromHandle4, servicePlanSkus4, categories); OrganizationSettingsSchema.ApplicationImpersonationEnabled = new FeatureDefinition("ApplicationImpersonationEnabled", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.RoleGroupRoleAssignment }); OrganizationSettingsSchema.MailTipsEnabled = new FeatureDefinition("MailTipsEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.AddressListsEnabled = new FeatureDefinition("AddressListsEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.FastRecipientCountingDisabled = new FeatureDefinition("FastRecipientCountingDisabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.OfflineAddressBookEnabled = new FeatureDefinition("OfflineAddressBookEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.OpenDomainRoutingEnabled = new FeatureDefinition("OpenDomainRoutingEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.AddOutlookAcceptedDomains = new FeatureDefinition("AddOutlookAcceptedDomains", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.GALSyncEnabled = new FeatureDefinition("GALSyncEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.RoleGroupRoleAssignment }); OrganizationSettingsSchema.CommonConfiguration = new FeatureDefinition("CommonConfiguration", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.HideAdminAccessWarningEnabled = new FeatureDefinition("HideAdminAccessWarningEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.SkipToUAndParentalControlCheckEnabled = new FeatureDefinition("SkipToUAndParentalControlCheckEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.SMTPAddressCheckWithAcceptedDomainEnabled = new FeatureDefinition("SMTPAddressCheckWithAcceptedDomainEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.AutoReplyEnabled = new FeatureDefinition("AutoReplyEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.AutoForwardEnabled = new FeatureDefinition("AutoForwardEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.MSOSyncEnabled = new FeatureDefinition("MSOSyncEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.AllowDeleteOfExternalIdentityUponRemove = new FeatureDefinition("AllowDeleteOfExternalIdentityUponRemove", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); string name5 = "SearchMessageEnabled"; Type typeFromHandle5 = typeof(bool); ServicePlanSkus servicePlanSkus5 = ServicePlanSkus.All; FeatureCategory[] categories2 = new FeatureCategory[1]; OrganizationSettingsSchema.SearchMessageEnabled = new FeatureDefinition(name5, typeFromHandle5, servicePlanSkus5, categories2); OrganizationSettingsSchema.OwaInstantMessagingType = new FeatureDefinition("OwaInstantMessagingType", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.RecipientManagementPermissions = new FeatureDefinition("RecipientManagementPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.All); OrganizationSettingsSchema.DistributionListCountQuota = new FeatureDefinition("DistributionListCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All); OrganizationSettingsSchema.MailboxCountQuota = new FeatureDefinition("MailboxCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All); OrganizationSettingsSchema.MailUserCountQuota = new FeatureDefinition("MailUserCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All); OrganizationSettingsSchema.ContactCountQuota = new FeatureDefinition("ContactCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All); OrganizationSettingsSchema.TeamMailboxCountQuota = new FeatureDefinition("TeamMailboxCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All); OrganizationSettingsSchema.PublicFolderMailboxCountQuota = new FeatureDefinition("PublicFolderMailboxCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All); OrganizationSettingsSchema.MailPublicFolderCountQuota = new FeatureDefinition("MailPublicFolderCountQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All); OrganizationSettingsSchema.SupervisionPermissions = new FeatureDefinition("SupervisionPermissions", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[] { FeatureCategory.AdminPermissions, FeatureCategory.RoleGroupRoleAssignment }); OrganizationSettingsSchema.SupervisionEnabled = new FeatureDefinition("SupervisionEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.TemplateTenant = new FeatureDefinition("TemplateTenant", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.TransportRulesCollectionsEnabled = new FeatureDefinition("TransportRulesCollectionsEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); string name6 = "SyncAccountsEnabled"; Type typeFromHandle6 = typeof(bool); ServicePlanSkus servicePlanSkus6 = ServicePlanSkus.Datacenter; FeatureCategory[] categories3 = new FeatureCategory[1]; OrganizationSettingsSchema.SyncAccountsEnabled = new FeatureDefinition(name6, typeFromHandle6, servicePlanSkus6, categories3); OrganizationSettingsSchema.RecipientMailSubmissionRateQuota = new FeatureDefinition("RecipientMailSubmissionRateQuota", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.All); OrganizationSettingsSchema.ImapMigrationPermissions = new FeatureDefinition("ImapMigrationPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.HotmailMigrationPermissions = new FeatureDefinition("HotmailMigrationPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.ExchangeMigrationPermissions = new FeatureDefinition("ExchangeMigrationPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.MultiEngineAVEnabled = new FeatureDefinition("MultiEngineAVEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.CommonHydrateableObjectsSharedEnabled = new FeatureDefinition("CommonHydrateableObjectsSharedEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.AdvancedHydrateableObjectsSharedEnabled = new FeatureDefinition("AdvancedHydrateableObjectsSharedEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.RoleGroupRoleAssignment }); OrganizationSettingsSchema.ShareableConfigurationEnabled = new FeatureDefinition("ShareableConfigurationEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.IRMPremiumFeaturesPermissions = new FeatureDefinition("IRMPremiumFeaturesPermissions", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[] { FeatureCategory.AdminPermissions, FeatureCategory.RoleGroupRoleAssignment }); OrganizationSettingsSchema.RBACManagementPermissions = new FeatureDefinition("RBACManagementPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.PerMBXPlanRoleAssignmentPolicyEnabled = new FeatureDefinition("PerMBXPlanRoleAssignmentPolicyEnabled", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.RoleAssignmentPolicyPermissions = new FeatureDefinition("RoleAssignmentPolicyPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.PerMBXPlanOWAPolicyEnabled = new FeatureDefinition("PerMBXPlanOWAPolicyEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.OWAMailboxPolicyPermissions = new FeatureDefinition("OWAMailboxPolicyPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.AdminPermissions }); string name7 = "PerMBXPlanRetentionPolicyEnabled"; Type typeFromHandle7 = typeof(bool); ServicePlanSkus servicePlanSkus7 = ServicePlanSkus.Datacenter; FeatureCategory[] categories4 = new FeatureCategory[1]; OrganizationSettingsSchema.PerMBXPlanRetentionPolicyEnabled = new FeatureDefinition(name7, typeFromHandle7, servicePlanSkus7, categories4); string name8 = "ReducedOutOfTheBoxMrmTagsEnabled"; Type typeFromHandle8 = typeof(bool); ServicePlanSkus servicePlanSkus8 = ServicePlanSkus.Datacenter; FeatureCategory[] categories5 = new FeatureCategory[1]; OrganizationSettingsSchema.ReducedOutOfTheBoxMrmTagsEnabled = new FeatureDefinition(name8, typeFromHandle8, servicePlanSkus8, categories5); OrganizationSettingsSchema.AddressBookPolicyPermissions = new FeatureDefinition("AddressBookPolicyPermissions", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.LicenseEnforcementEnabled = new FeatureDefinition("LicenseEnforcementEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.PerimeterSafelistingUIMode = new FeatureDefinition("PerimeterSafelistingUIMode", FeatureCategory.OrgWideConfiguration, typeof(string), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.ExchangeHostedFilteringAdminCenterAvailabilityEnabled = new FeatureDefinition("ExchangeHostedFilteringAdminCenterAvailabilityEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.ExchangeHostedFilteringPerimeterEnabled = new FeatureDefinition("ExchangeHostedFilteringPerimeterEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.ApplicationImpersonationRegularRoleAssignmentEnabled = new FeatureDefinition("ApplicationImpersonationRegularRoleAssignmentEnabled", FeatureCategory.RoleGroupRoleAssignment, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.MailboxImportExportRegularRoleAssignmentEnabled = new FeatureDefinition("MailboxImportExportRegularRoleAssignmentEnabled", FeatureCategory.RoleGroupRoleAssignment, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.MailboxQuotaPermissions = new FeatureDefinition("MailboxQuotaPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.MailboxSIRPermissions = new FeatureDefinition("MailboxSIRPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.PublicFoldersEnabled = new FeatureDefinition("PublicFoldersEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.RoleGroupRoleAssignment, FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.QuarantineEnabled = new FeatureDefinition("QuarantineEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.RoleGroupRoleAssignment, FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.UseServicePlanAsCounterInstanceName = new FeatureDefinition("UseServicePlanAsCounterInstanceName", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.RIMRoleGroupEnabled = new FeatureDefinition("RIMRoleGroupEnabled", FeatureCategory.RoleGroupRoleAssignment, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.CalendarVersionStoreEnabled = new FeatureDefinition("CalendarVersionStoreEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.HostedSpamFilteringPolicyCustomizationEnabled = new FeatureDefinition("HostedSpamFilteringPolicyCustomizationEnabled", typeof(bool), ServicePlanSkus.Datacenter, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.MalwareFilteringPolicyCustomizationEnabled = new FeatureDefinition("MalwareFilteringPolicyCustomizationEnabled", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.EXOCoreFeatures = new FeatureDefinition("EXOCoreFeatures", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.RoleGroupRoleAssignment, FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.MessageTrace = new FeatureDefinition("MessageTrace", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.AcceptedDomains = new FeatureDefinition("AcceptedDomains", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.ServiceConnectors = new FeatureDefinition("ServiceConnectors", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.AdminPermissions }); OrganizationSettingsSchema.SoftDeletedFeatureManagementPermissions = new FeatureDefinition("SoftDeletedFeatureManagementPermissions", FeatureCategory.AdminPermissions, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.PilotEnabled = new FeatureDefinition("PilotEnabled", FeatureCategory.OrgWideConfiguration, typeof(bool), ServicePlanSkus.Datacenter); OrganizationSettingsSchema.DataLossPreventionEnabled = new FeatureDefinition("DataLossPreventionEnabled", typeof(bool), ServicePlanSkus.All, new FeatureCategory[] { FeatureCategory.OrgWideConfiguration, FeatureCategory.AdminPermissions }); }
/// <summary> /// Converts standard FeatureCompatibility to LuigiFeatureFlags. /// </summary> /// <param name="compatibility">The compatibility to convert.</param> /// <param name="category">The category of feature represented by the compatibility argument.</param> /// <returns>The compatibility represented as appropriate LuigiFeatureFlags.</returns> public static LuigiFeatureFlags ToLuigiFeatureFlags(this FeatureCompatibility compatibility, FeatureCategory category) { var luigiFeatureFlags = LuigiFeatureFlags.None; var offset = -1; switch (category) { case FeatureCategory.Intellivoice: offset = LuigiFeatureFlagsHelpers.IntellivoiceOffset; break; case FeatureCategory.Ecs: offset = LuigiFeatureFlagsHelpers.EcsOffset; break; case FeatureCategory.IntellivisionII: // Intellivision II doesn't really 'enhance' anything. Ignore that value. if (compatibility != FeatureCompatibility.Enhances) { offset = LuigiFeatureFlagsHelpers.IntellivisionIIOffset; } break; case FeatureCategory.KeyboardComponent: offset = LuigiFeatureFlagsHelpers.KeyboardComponentOffset; break; case FeatureCategory.Tutorvision: // For TutorVision, we need to enable the 'feature compatibility sub-version' as well as the feature itself. // This could be any value from 1..3 (two bits). Just enable minimum necessary version. luigiFeatureFlags |= (LuigiFeatureFlags)(1ul << LuigiFeatureFlagsHelpers.ExtendedPeripheralCompatibiltyVersionOffset); offset = LuigiFeatureFlagsHelpers.TutorVisionOffset; break; case FeatureCategory.Jlp: offset = LuigiFeatureFlagsHelpers.JlpAccelerationOffset; break; case FeatureCategory.LtoFlash: // NOTE: This isn't strictly correct. There isn't really "compatibility" for LTO Flash! -- just features, which are handled separately. break; default: throw new System.InvalidOperationException(string.Format(Resources.Strings.FeatureCategoryNotSupportedByLuigiFormat, category)); } if (offset >= 0) { luigiFeatureFlags |= (LuigiFeatureFlags)((ulong)compatibility << offset); } return(luigiFeatureFlags); }
public void CfgVarMetadataIdTag_ConvertToLuigiMetadataIdTag_ProducesExpectedLuigiMetadataIdTag(CfgVarMetadataIdTag idTag, LuigiMetadataIdTag expectedLuigiMetadataIdTag, FeatureCategory expectedFeatureCategory, CfgVarMetadataIdTag expectedUnsupportedMetadataValue) { CfgVarMetadataIdTag actualUnsupportedMetadataValue; FeatureCategory actualFeatureCategory; var actualRomMetadataIdTag = idTag.ToLuigiMetadataIdTag(out actualFeatureCategory, out actualUnsupportedMetadataValue); Assert.Equal(expectedLuigiMetadataIdTag, actualRomMetadataIdTag); }
/// <summary> /// Converts a CFGVAR ID tag to a tuple of ROM and other metadata identifiers. /// </summary> /// <param name="tag">The CFGVAR ID to convert.</param> /// <param name="feature">If <paramref name="tag"/> indicates a program feature, receives which type of feature.</param> /// <param name="cfgVarTag">If <paramref name="tag"/> indicates a value that does not have a corresponding ROM metadata ID tag, and is not a feature.</param> /// <returns>The ROM metadata identifier tag.</returns> public static RomMetadataIdTag ToRomMetadataIdTag(this CfgVarMetadataIdTag tag, out FeatureCategory feature, out CfgVarMetadataIdTag cfgVarTag) { cfgVarTag = CfgVarMetadataIdTag.Invalid; feature = FeatureCategory.None; var romTag = RomMetadataIdTag.Ignore; switch (tag) { case CfgVarMetadataIdTag.Name: romTag = RomMetadataIdTag.Title; break; case CfgVarMetadataIdTag.ShortName: romTag = RomMetadataIdTag.ShortTitle; break; case CfgVarMetadataIdTag.Author: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.GameArt: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.Music: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.SoundEffects: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.VoiceActing: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.Documentation: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.BoxOrOtherArtwork: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.ConceptDesign: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.MoreInfo: romTag = RomMetadataIdTag.UrlContactInfo; break; case CfgVarMetadataIdTag.Publisher: romTag = RomMetadataIdTag.Publisher; break; case CfgVarMetadataIdTag.License: romTag = RomMetadataIdTag.License; break; case CfgVarMetadataIdTag.Description: romTag = RomMetadataIdTag.Description; break; case CfgVarMetadataIdTag.ReleaseDate: case CfgVarMetadataIdTag.Year: romTag = RomMetadataIdTag.ReleaseDate; break; case CfgVarMetadataIdTag.BuildDate: romTag = RomMetadataIdTag.BuildDate; break; case CfgVarMetadataIdTag.Version: romTag = RomMetadataIdTag.Version; break; case CfgVarMetadataIdTag.EcsCompatibility: feature = FeatureCategory.Ecs; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.IntellivoiceCompatibility: feature = FeatureCategory.Intellivoice; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.IntellivisionIICompatibility: feature = FeatureCategory.IntellivisionII; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.KeyboardComponentCompatibility: feature = FeatureCategory.KeyboardComponent; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.TutorvisionCompatibility: feature = FeatureCategory.Tutorvision; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.Ecs: feature = FeatureCategory.EcsLegacy; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.Voice: feature = FeatureCategory.IntellivoiceLegacy; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.IntellivisionII: feature = FeatureCategory.IntellivisionIILegacy; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.LtoFlashMapper: feature = FeatureCategory.LtoFlash; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.JlpAccelerators: case CfgVarMetadataIdTag.Jlp: feature = FeatureCategory.Jlp; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.JlpFlash: feature = FeatureCategory.JlpFlashCapacity; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.Invalid: break; default: throw new InvalidOperationException(Resources.Strings.CfgVarMetadata_ToRomError); } return(romTag); }