using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Xamarin.Forms;

namespace InABox.Mobile
{
    public class MobileModuleItems : IEnumerable<IModuleMenuItem>
    {

        private ListView _parent;
        private List<IModuleMenuItem> _modules;
        private bool _updating;

        public IModuleMenuItem this[int index] => _modules[index];
        
        public MobileModuleItems(ListView parent)
        {
            _parent = parent;
            _modules = new List<IModuleMenuItem>();
        }

        private void Update()
        {
            if (_updating)
                return;
            _parent.ItemsSource = _modules.Where(x=>x.IsVisible);
        }

        // public ModuleMenuItems BeginUpdate()
        // {
        //     _updating = true;
        //     return this;
        // }
        //
        // public ModuleMenuItems EndUpdate()
        // {
        //     _updating = false;
        //     Update();
        //     return this;
        // }
        //
        // public ModuleMenuItems Clear()
        // {
        //     _modules.Clear();
        //     Update();
        //     return this;
        // }

        // public ModuleMenuItems Add(IModuleMenuItem module)
        // {
        //     _modules.Add(module);
        //     Update();
        //     return this;
        // }

        public IEnumerator<IModuleMenuItem> GetEnumerator() => _modules.GetEnumerator();

        IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
    }
}