Example #1
0
        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();
            }
        }
Example #3
0
        /// <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);
            }
        }
Example #4
0
        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);
            }
        }
Example #5
0
        /// <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);
        }
Example #6
0
        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));
                }
            });
        }