private CarSetupsDialog([NotNull] CarObject car, CarSetupsRemoteSource forceRemoteSource = CarSetupsRemoteSource.None) { if (car == null) { throw new ArgumentNullException(nameof(car)); } DataContext = new ViewModel(car); DefaultContentSource = Model.ListUri; var linkGroup = new LinkGroupFilterable { DisplayName = AppStrings.Main_Setups, Source = Model.ListUri, AddAllLink = true, FilterHint = FilterHints.CarSetups }; foreach (var link in CarSetupsListPage.GetRemoteLinks(car.Id)) { linkGroup.FixedLinks.Add(link); } if (forceRemoteSource != CarSetupsRemoteSource.None) { ValuesStorage.Set("CarSetupsDialog_link", CarSetupsListPage.GetRemoteSourceUri(car.Id, forceRemoteSource)); } MenuLinkGroups.Add(linkGroup); InitializeComponent(); }
public LinkGroupFilterable OpenSubGroup(string groupKey, string displayName, Uri uri, int limit = 2) { var groupLinks = MenuLinkGroups.OfType <LinkGroupFilterable>().Where(x => x.GroupKey == groupKey).ToList(); var existingLink = groupLinks.FirstOrDefault(x => x.Source == uri); if (existingLink == null) { existingLink = new LinkGroupFilterable { DisplayName = displayName, GroupKey = groupKey, Source = uri }; while (groupLinks.Count >= limit) { MenuLinkGroups.Remove(groupLinks[0]); groupLinks.RemoveAt(0); } groupLinks.Add(existingLink); MenuLinkGroups.Add(existingLink); if (!_subGroupKeys.Contains(groupKey)) { _subGroupKeys.Add(groupKey); ValuesStorage.Set(KeySubGroupKeys, _subGroupKeys); } ValuesStorage.Set(GetSubGroupLinksKey(groupKey), groupLinks.Select(x => Storage.EncodeList(x.DisplayName, x.Source.OriginalString))); } NavigateTo(uri); return(existingLink); }