private static void AddGRMIndicationForIncompatibleApp( AppIconModel appIcon, MainWindow ParentWindow, GrmRuleSet passedRuleSet) { ParentWindow.Dispatcher.Invoke((Delegate)(() => { switch (EnumHelper.Parse <MessageType>(passedRuleSet.MessageWindow.MessageType, MessageType.None)) { case MessageType.None: appIcon.AppIncompatType = AppIncompatType.Error; GrmHandler.sDictAppRuleSet[ParentWindow.mVmName].Remove(appIcon.PackageName); break; case MessageType.Info: appIcon.AppIncompatType = AppIncompatType.Info; GrmHandler.sDictAppRuleSet[ParentWindow.mVmName][appIcon.PackageName] = passedRuleSet; break; case MessageType.Error: appIcon.AppIncompatType = AppIncompatType.Error; GrmHandler.sDictAppRuleSet[ParentWindow.mVmName][appIcon.PackageName] = passedRuleSet; break; } })); }
internal static void RefreshGrmIndication(string package, string vmName = "Android") { try { List <AppRequirement> requirements = AppRequirementsParser.Instance.Requirements; if (requirements == null) { return; } if (!GrmHandler.sDictAppRuleSet.ContainsKey(vmName)) { GrmHandler.sDictAppRuleSet[vmName] = new Dictionary <string, GrmRuleSet>(); } AppIconModel appIcon = BlueStacksUIUtils.DictWindows[vmName].mWelcomeTab.mHomeAppManager.GetAppIcon(package); if (appIcon == null) { return; } if (appIcon.AppIncompatType != AppIncompatType.None && !requirements.Any <AppRequirement>((Func <AppRequirement, bool>)(_ => string.Equals(_.PackageName, package, StringComparison.OrdinalIgnoreCase)))) { GrmHandler.RemoveAppCompatError(appIcon, BlueStacksUIUtils.DictWindows[vmName]); } AppRequirement appRequirement = requirements.Where <AppRequirement>((Func <AppRequirement, bool>)(_ => string.Compare(_.PackageName, package, StringComparison.OrdinalIgnoreCase) == 0)).FirstOrDefault <AppRequirement>() ?? requirements.Where <AppRequirement>((Func <AppRequirement, bool>)(_ => { if (!_.PackageName.EndsWith("*", StringComparison.InvariantCulture)) { return(false); } return(package.StartsWith(_.PackageName.Trim('*'), StringComparison.InvariantCulture)); })).FirstOrDefault <AppRequirement>(); if (appRequirement == null) { return; } GrmRuleSet requirement = appRequirement.EvaluateRequirement(package, vmName); if (requirement != null) { GrmHandler.AddGRMIndicationForIncompatibleApp(appIcon, BlueStacksUIUtils.DictWindows[vmName], requirement); } else { GrmHandler.RemoveAppCompatError(appIcon, BlueStacksUIUtils.DictWindows[vmName]); } } catch (Exception ex) { Logger.Error("Exception in RefreshGrmIndication. Exception: " + ex?.ToString()); } }