public ExpandableGroupsListViewModel() { MessagingCenter.Subscribe <GroupViewModel>(this, "UpdateSelectedItemsCountMessage", (e) => { UpdateSelectedItemsCount(); }); Task.Run(async() => { IsBusy = true; var livingItemsDataServicce = new LifeDataService(); var livingItems = (await livingItemsDataServicce.GetItemsAsync()).ToList(); var groups = livingItems.GroupBy(x => x.Category).Select(x => new ObservableGroupCollection <string, LifeOnPlanetModel>(x)).ToList(); IsBusy = false; //This is required to invoke on main thread otherwise it will throw the exception Device.BeginInvokeOnMainThread(() => { foreach (var group in groups) { GroupedItems.Add( new GroupViewModel ( groupTitle: group.Key, groupChildItems: group.Select(i => new GroupItemModel(i.Id, i.Name, i.IsSelected)).ToList() )); } //Show selected items count initialy when page loads UpdateSelectedItemsCount(); }); }); }
private void CreateGroupedItems(TLMessageBase currentItem) { var message73 = currentItem as TLMessage73; if (message73 != null && message73.GroupedId != null) { var firstItem = GroupedItems.FirstOrDefault() as TLMessage73; if (firstItem == null || (firstItem.GroupedId != null && firstItem.GroupedId.Value != message73.GroupedId.Value)) { var items = new List <TLMessageBase>(); for (var i = _items.Count - 1; i >= 0; i--) { var item = _items[i] as TLMessage73; if (item != null && item.GroupedId != null && item.GroupedId.Value == message73.GroupedId.Value) { items.Add(item); } } GroupedItems.IsNotifying = false; GroupedItems.Clear(); if (items.Count > 1) { foreach (var item in items) { GroupedItems.Add(item); } } GroupedItems.IsNotifying = true; GroupedItems.Refresh(); var view = GetView() as ImageViewerView; if (view != null) { view.ScrollTo(currentItem, 0.0); } } else if (firstItem.GroupedId != null && firstItem.GroupedId.Value == message73.GroupedId.Value) { var view = GetView() as ImageViewerView; if (view != null) { view.ScrollTo(currentItem, 0.0); } } else { GroupedItems.Clear(); } } else { GroupedItems.Clear(); } }
/// <summary> /// Load album data from database. /// </summary> /// <param name="cancellationToken">Cancellation token.</param> /// <returns>Processed albums.</returns> private async Task LoadAlbumData(CancellationToken cancellationToken) { if (GlobalLibraryCache.CachedDbAlbum == null) { await GlobalLibraryCache.LoadAlbumAsync(); if (cancellationToken.IsCancellationRequested) { return; } } foreach (var item in GlobalLibraryCache.CachedDbAlbum) { var e = CommonViewItemModel.CreateFromDbAlbumAndCheck(item); GroupedItems.Add(e); } }
public async Task PopulateGroupedItemsFromDB() { // Generates the grouped list of active categories as needed by the Xamarin.Forms ListView, // limited by the user's conversation limit setting because there could be more items in the // database above the limit that we haven't cleaned up yet. GroupedItems.Clear(); var categories = Configuration.GetCategories(CategorySet.Active); IEnumerable <Item> list; foreach (String c in categories) { list = await db.GetItemListForCategoryAsync(c, Configuration.CurrentUser.ConversationLimit); Group group = new Group(0, c, list); GroupedItems.Add(group); } }
/// <summary> /// Load file data from database. /// </summary> /// <param name="cancellationToken">Cancellation token.</param> /// <returns>Processed files.</returns> public async Task <IEnumerable <CommonViewItemModel> > LoadSongData(CancellationToken cancellationToken) { if (GlobalLibraryCache.CachedDbMediaFile == null) { await GlobalLibraryCache.LoadMediaAsync(); } var result = new List <CommonViewItemModel>(GlobalLibraryCache.CachedDbMediaFile.Length); foreach (var item in GlobalLibraryCache.CachedDbMediaFile) { var e = new CommonViewItemModel(item); GroupedItems.Add(e); result.Add(e); } return(result); }
private void MenuItem_OnClicked(object sender, EventArgs e) { UserDialogs.Instance.Prompt(new PromptConfig { Title = "Kategorie erstellen", InputType = InputType.Default, OkText = "Erstellen", CancelText = "Abbrechen", OnAction = result => { if (!result.Ok) { return; } GroupedItems.Add(new MemoryGroup(result.Text)); } }); }