示例#1
0
        public void UpdateList()
        {
            //SuspendLayout();

            List <AreaInfo> areas = new List <AreaInfo>();

            lock (Engine.Instance.Areas)
            {
                foreach (AreaInfo infoArea in Engine.Instance.Areas.Values)
                {
                    areas.Add(infoArea);
                }
            }

            foreach (AreaInfo infoArea in areas)
            {
                if (ItemsAreas.ContainsKey(infoArea.Code) == false)
                {
                    Controls.ListViewItemArea listItemArea = new Controls.ListViewItemArea();
                    listItemArea.Name = infoArea.Code;
                    listItemArea.Info = infoArea;
                    listItemArea.Update();
                    ItemsAreas.Add(infoArea.Code, listItemArea);
                    Items.Add(listItemArea);
                }
                else
                {
                    Controls.ListViewItemArea listItemArea = ItemsAreas[infoArea.Code] as ListViewItemArea;
                    listItemArea.Update();
                }
            }

            foreach (ListViewItemArea viewItem in Items)
            {
                if (areas.Contains(viewItem.Info) == false)
                {
                    Items.Remove(viewItem);
                    ItemsAreas.Remove(viewItem.Info.Code);
                }
            }

            //ResumeLayout();
        }
示例#2
0
		public void UpdateList()
		{
			//SuspendLayout();

			List<AreaInfo> areas = new List<AreaInfo>();
			lock (Engine.Instance.Areas)
			{
				foreach (AreaInfo infoArea in Engine.Instance.Areas.Values)
					areas.Add(infoArea);
			}

			foreach (AreaInfo infoArea in areas)
			{
				if (ItemsAreas.ContainsKey(infoArea.Code) == false)
				{
					Controls.ListViewItemArea listItemArea = new Controls.ListViewItemArea();
					listItemArea.Name = infoArea.Code;
					listItemArea.Info = infoArea;
					listItemArea.Update();
					ItemsAreas.Add(infoArea.Code, listItemArea);
					Items.Add(listItemArea);
				}
				else
				{
					Controls.ListViewItemArea listItemArea = ItemsAreas[infoArea.Code] as ListViewItemArea;
					listItemArea.Update();
				}
			}

			foreach (ListViewItemArea viewItem in Items)
			{
				if (areas.Contains(viewItem.Info) == false)
				{
					Items.Remove(viewItem);
					ItemsAreas.Remove(viewItem.Info.Code);
				}
			}

			//ResumeLayout();
		}
示例#3
0
        public void UpdateList()
        {
            //SuspendLayout();

            Dictionary <string, AreaInfo> areas = new Dictionary <string, AreaInfo>();

            lock (Engine.Instance.Areas)
            {
                foreach (AreaInfo infoArea in Engine.Instance.Areas.Values)
                {
                    areas[infoArea.Code] = infoArea;
                }
            }

            foreach (AreaInfo infoArea in areas.Values)
            {
                if (ItemsAreas.ContainsKey(infoArea.Code) == false)
                {
                    Controls.ListViewItemArea listItemArea = new Controls.ListViewItemArea();
                    listItemArea.Name = infoArea.Code;
                    listItemArea.Info = infoArea;
                    listItemArea.Update();
                    ItemsAreas.Add(infoArea.Code, listItemArea);
                    Items.Add(listItemArea);
                }
                else
                {
                    Controls.ListViewItemArea listItemArea = ItemsAreas[infoArea.Code] as ListViewItemArea;
                    listItemArea.Update();
                }
            }

            List <ListViewItemArea> itemsToRemove = new List <ListViewItemArea>();

            foreach (ListViewItemArea viewItem in ItemsAreas.Values)
            {
                if (areas.ContainsKey(viewItem.Info.Code) == false)
                {
                    itemsToRemove.Add(viewItem);
                }
            }

            if (itemsToRemove.Count > 0)
            {
                if (Platform.IsWindows())
                {
                    foreach (ListViewItemArea viewItem in itemsToRemove)
                    {
                        Items.Remove(viewItem);
                        ItemsAreas.Remove(viewItem.Info.Code);
                    }
                }
                else
                {
                    // Mono workaround to avoid a crash, like this: http://sourceforge.net/p/keepass/bugs/1314/
                    // Reproduce the crash by whitelist some server and switch "Show all" continuosly.
                    List <ListViewItemArea> items = new List <ListViewItemArea>();
                    foreach (ListViewItemArea itemCurrent in Items)
                    {
                        if (itemsToRemove.Contains(itemCurrent) == false)
                        {
                            items.Add(itemCurrent);
                        }
                    }
                    Items.Clear();
                    ItemsAreas.Clear();
                    foreach (ListViewItemArea itemCurrent in items)
                    {
                        ItemsAreas.Add(itemCurrent.Info.Code, itemCurrent);
                        Items.Add(itemCurrent);
                    }
                }
            }

            //ResumeLayout();
        }
示例#4
0
        public void UpdateList()
        {
            //SuspendLayout();

            Dictionary<string, AreaInfo> areas = new Dictionary<string, AreaInfo>();
            lock (Engine.Instance.Areas)
            {
                foreach (AreaInfo infoArea in Engine.Instance.Areas.Values)
                    areas[infoArea.Code] = infoArea;
            }

            foreach (AreaInfo infoArea in areas.Values)
            {
                if (ItemsAreas.ContainsKey(infoArea.Code) == false)
                {
                    Controls.ListViewItemArea listItemArea = new Controls.ListViewItemArea();
                    listItemArea.Name = infoArea.Code;
                    listItemArea.Info = infoArea;
                    listItemArea.Update();
                    ItemsAreas.Add(infoArea.Code, listItemArea);
                    Items.Add(listItemArea);
                }
                else
                {
                    Controls.ListViewItemArea listItemArea = ItemsAreas[infoArea.Code] as ListViewItemArea;
                    listItemArea.Update();
                }
            }

            List<ListViewItemArea> itemsToRemove = new List<ListViewItemArea>();

            foreach (ListViewItemArea viewItem in ItemsAreas.Values)
            {
                if (areas.ContainsKey(viewItem.Info.Code) == false)
                {
                    itemsToRemove.Add(viewItem);
                }
            }

            if (itemsToRemove.Count > 0)
            {
                if (Platform.IsWindows())
                {
                    foreach (ListViewItemArea viewItem in itemsToRemove)
                    {
                        Items.Remove(viewItem);
                        ItemsAreas.Remove(viewItem.Info.Name);
                    }
                }
                else
                {

                    // Mono workaround to avoid a crash, like this: http://sourceforge.net/p/keepass/bugs/1314/
                    // Reproduce the crash by whitelist some server and switch "Show all" continuosly.
                    List<ListViewItemArea> items = new List<ListViewItemArea>();
                    foreach (ListViewItemArea itemCurrent in Items)
                    {
                        if (itemsToRemove.Contains(itemCurrent) == false)
                            items.Add(itemCurrent);
                    }
                    Items.Clear();
                    ItemsAreas.Clear();
                    foreach (ListViewItemArea itemCurrent in items)
                    {
                        ItemsAreas.Add(itemCurrent.Info.Name, itemCurrent);
                        Items.Add(itemCurrent);
                    }
                }
            }

            //ResumeLayout();
        }