private void DeleteImage_Click(object sender, EventArgs e)
        {
            if (tillPopup != null)
            {
                return;
            }

            ImageViewWithPosition image = (ImageViewWithPosition)sender;

            layout.RemoveViewAt(image.Position);
            nameViews.RemoveAt(image.Position);
            priceViews.RemoveAt(image.Position);
            deleteButtons.RemoveAt(image.Position);
            editButtons.RemoveAt(image.Position);

            for (int i = image.Position; i < deleteButtons.Count; ++i)
            {
                ImageViewWithPosition deleteImage = deleteButtons[i];
                --deleteImage.Position;

                ImageViewWithId editImage = editButtons[i];
                --editImage.Position;
            }

            currentOrder.RemoveOrderItem(image.Position);

            SetTotalView(CurrentOrder);
        }
        public void SetOrderItemStarted(int id)
        {
            if (currentOrder.OrderItems.Where(i => i.Id == id).Count() != 0)
            {
                OrderItemModel model = currentOrder.OrderItems.Where(i => i.Id == id).Single();
                model.State = State.Started;

                Resources       res        = container.Context.Resources;
                ImageViewWithId editButton = editButtons.Where(b => b.Id == id).Single();
#pragma warning disable CS0618 // Type or member is obsolete
                editButton.SetImageDrawable(res.GetDrawable(Resource.Drawable.Locked));
#pragma warning restore CS0618 // Type or member is obsolete

                editButton.Click -= EditImage_Click;

                ImageViewWithPosition deleteButton = deleteButtons.Where(b => b.Id == id).Single();
#pragma warning disable CS0618 // Type or member is obsolete
                deleteButton.SetImageDrawable(res.GetDrawable(Resource.Drawable.Locked));
#pragma warning restore CS0618 // Type or member is obsolete

                deleteButton.Click -= DeleteImage_Click;
            }

            SaveOrderItemState(id, State.Started);
        }
        public void AddOrderItem(OrderItemModel model)
        {
            TableRow newRow = new TableRow(container.Context);

            TextView nameView  = new TextView(container.Context);
            TextView priceView = new TextView(container.Context);

            nameView.Text = model.DisplayName;
            nameView.SetPadding(10, 0, 0, 0);
            nameView.SetTextSize(ComplexUnitType.Sp, 20);
            nameView.SetTextColor(Color.Black);

            priceView.Text = model.Price.ToString("#0.00");
            priceView.SetPadding(90, 0, 0, 0);
            priceView.SetTextSize(ComplexUnitType.Sp, 20);
            priceView.SetBackgroundColor(Color.White);
            priceView.SetTextColor(Color.Black);

            newRow.AddView(nameView);
            newRow.AddView(priceView);

            nameViews.Add(nameView);
            priceViews.Add(priceView);

            if (container.Parent.Parent is CurrentOrderLayout)
            {
                ImageViewWithPosition deleteImage = new ImageViewWithPosition(container.Context);

                Resources res = container.Context.Resources;
                if (model.State == State.None)
#pragma warning disable CS0618 // Type or member is obsolete
                {
                    deleteImage.SetImageDrawable(res.GetDrawable(Resource.Drawable.Delete));
                }
#pragma warning restore CS0618 // Type or member is obsolete
                else if (model.State == State.Started)
#pragma warning disable CS0618 // Type or member is obsolete
                {
                    deleteImage.SetImageDrawable(res.GetDrawable(Resource.Drawable.Locked));
                }
#pragma warning restore CS0618 // Type or member is obsolete
                else
#pragma warning disable CS0618 // Type or member is obsolete
                {
                    deleteImage.SetImageDrawable(res.GetDrawable(Resource.Drawable.Completed));
                }
#pragma warning restore CS0618 // Type or member is obsolete

                deleteImage.SetPadding(15, 0, 0, 0);

                if (model.State == State.None)
                {
                    deleteImage.Click += DeleteImage_Click;
                }

                deleteImage.Id       = model.Id;
                deleteImage.Position = deleteButtons.Count;
                deleteButtons.Add(deleteImage);

                newRow.AddView(deleteImage);

                ImageViewWithId editImage = new ImageViewWithId(container.Context);

                if (model.State == State.None)
#pragma warning disable CS0618 // Type or member is obsolete
                {
                    editImage.SetImageDrawable(res.GetDrawable(Resource.Drawable.Pen));
                }
#pragma warning restore CS0618 // Type or member is obsolete
                else if (model.State == State.Started)
#pragma warning disable CS0618 // Type or member is obsolete
                {
                    editImage.SetImageDrawable(res.GetDrawable(Resource.Drawable.Locked));
                }
#pragma warning restore CS0618 // Type or member is obsolete
                else if (model.State == State.Completed)
#pragma warning disable CS0618 // Type or member is obsolete
                {
                    editImage.SetImageDrawable(res.GetDrawable(Resource.Drawable.Completed));
                }
#pragma warning restore CS0618 // Type or member is obsolete

                editImage.SetPadding(15, 0, 0, 0);

                if (model.State == State.None)
                {
                    editImage.Click += EditImage_Click;
                }

                editImage.Id       = model.Id;
                editImage.Position = deleteButtons.Count - 1;
                editButtons.Add(editImage);

                newRow.AddView(editImage);
            }

            layout.AddView(newRow);

            nameView.LayoutParameters.Width = 600;
        }