Ejemplo n.º 1
0
        public override Brush OnSubItemBrush(DrawListViewSubItemEventArgs e)
        {
            Controls.ListViewItemServer listItemServer = e.Item as Controls.ListViewItemServer;

            if (listItemServer.Info.CanConnect() == false)
            {
                return(Form.Skin.ListViewDisabledBackBrush);
            }

            return(null);
        }
Ejemplo n.º 2
0
        public void UpdateList()
        {
            lock (this)
            {
                //SuspendLayout();

                List <ConnectionInfo> serversList;
                lock (Engine.Instance.Connections)
                {
                    serversList = Engine.Instance.GetConnections(ShowAll);
                }

                Dictionary <string, ConnectionInfo> servers = new Dictionary <string, ConnectionInfo>();
                foreach (ConnectionInfo infoServer in serversList)
                {
                    servers[infoServer.Code] = infoServer;
                }

                foreach (ConnectionInfo infoServer in servers.Values)
                {
                    if (ItemsServers.ContainsKey(infoServer.Code) == false)
                    {
                        Controls.ListViewItemServer listItemServer = new Controls.ListViewItemServer();
                        listItemServer.Info = infoServer;
                        listItemServer.Update();
                        ItemsServers.Add(infoServer.Code, listItemServer);
                        Items.Add(listItemServer); // TOFIX: Mono impressive slow. 'Show all' took around 5 seconds to add 150 items.
                    }
                    else
                    {
                        Controls.ListViewItemServer listItemServer = ItemsServers[infoServer.Code] as ListViewItemServer;
                        listItemServer.Update();
                    }
                }

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

                foreach (ListViewItemServer viewItem in ItemsServers.Values)
                {
                    if (servers.ContainsKey(viewItem.Info.Code) == false)
                    {
                        itemsToRemove.Add(viewItem);
                    }
                }

                if (itemsToRemove.Count > 0)
                {
                    if (Platform.IsWindows())
                    {
                        foreach (ListViewItemServer viewItem in itemsToRemove)
                        {
                            Items.Remove(viewItem);
                            ItemsServers.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 <ListViewItemServer> items = new List <ListViewItemServer>();
                        foreach (ListViewItemServer itemCurrent in Items)
                        {
                            if (itemsToRemove.Contains(itemCurrent) == false)
                            {
                                items.Add(itemCurrent);
                            }
                        }
                        Items.Clear();
                        ItemsServers.Clear();
                        foreach (ListViewItemServer itemCurrent in items)
                        {
                            ItemsServers.Add(itemCurrent.Info.Code, itemCurrent);
                            Items.Add(itemCurrent);
                        }
                    }
                }

                Sort();

                //ResumeLayout();
            }
        }
Ejemplo n.º 3
0
        public override void OnListViewDrawSubItem(object sender, DrawListViewSubItemEventArgs e)
        {
            base.OnListViewDrawSubItem(sender, e);

            if (Visible == false)
            {
                return;
            }

            if (e.ColumnIndex == 1)
            {
                Controls.ListViewItemServer listItemServer = e.Item as Controls.ListViewItemServer;

                float part = listItemServer.Info.ScorePerc();

                Image imageN = GuiUtils.GetResourceImage("stars_n");
                Image imageH = GuiUtils.GetResourceImage("stars_h");

                Rectangle sourceH = new Rectangle(0, 0, Convert.ToInt32(Convert.ToDouble(imageH.Width) * part), imageH.Height);

                Form.DrawImageContain(e.Graphics, imageN, e.Bounds, 0);
                Form.DrawImageContain(e.Graphics, imageH, e.Bounds, 0, sourceH);
            }
            else if (e.ColumnIndex == 4)
            {
                Controls.ListViewItemServer listItemServer = e.Item as Controls.ListViewItemServer;

                Rectangle R1 = e.Bounds;
                R1.Inflate(-2, -2);

                /*
                 * Int64 bwCur = 2*(listItemServer.Info.Bandwidth*8)/(1000*1000); // to Mbit/s
                 * Int64 bwMax = listItemServer.Info.BandwidthMax;
                 *
                 * float p = (float)bwCur / (float)bwMax;
                 */

                String label = listItemServer.Info.GetLoadForList();
                float  p     = listItemServer.Info.GetLoadPercForList();

                string color = listItemServer.Info.GetLoadColorForList();
                Brush  b     = Brushes.LightGreen;
                if (color == "red")
                {
                    b = Brushes.LightPink;
                }
                else if (color == "yellow")
                {
                    b = Brushes.LightYellow;
                }
                else
                {
                    b = Brushes.LightGreen;
                }



                int W = Convert.ToInt32(p * R1.Width);
                if (W > R1.Width)
                {
                    W = R1.Width;
                }
                //e.Graphics.FillRectangle(Form.Skin.BarBrush, new Rectangle(R1.Left, R1.Top, W, R1.Height));
                Form.FillRectangle(e.Graphics, b, new Rectangle(R1.Left, R1.Top, W, R1.Height));

                R1.Height -= 1;
                //e.Graphics.DrawRectangle(m_loadPen, R1);
                Form.DrawString(e.Graphics, label, e.Item.Font, Form.Skin.ForeBrush, R1, GuiUtils.StringFormatCenterMiddle);
            }
        }
Ejemplo n.º 4
0
        public void UpdateList()
        {
            lock (this)
            {
                //SuspendLayout();

                List <ServerInfo> servers;
                lock (Engine.Instance.Servers)
                {
                    servers = Engine.Instance.GetServers(ShowAll);
                }

                foreach (ServerInfo infoServer in servers)
                {
                    if (ItemsServers.ContainsKey(infoServer.Name) == false)
                    {
                        Controls.ListViewItemServer listItemServer = new Controls.ListViewItemServer();
                        listItemServer.Name = infoServer.Name;
                        listItemServer.Info = infoServer;
                        listItemServer.Update();
                        ItemsServers.Add(infoServer.Name, listItemServer);
                        Items.Add(listItemServer);
                    }
                    else
                    {
                        Controls.ListViewItemServer listItemServer = ItemsServers[infoServer.Name] as ListViewItemServer;
                        listItemServer.Update();
                    }
                }

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

                foreach (ListViewItemServer viewItem in ItemsServers.Values)
                {
                    if (servers.Contains(viewItem.Info) == false)
                    {
                        itemsToRemove.Add(viewItem);
                    }
                }

                if (Platform.IsWindows())
                {
                    foreach (ListViewItemServer viewItem in itemsToRemove)
                    {
                        Items.Remove(viewItem);
                        ItemsServers.Remove(viewItem.Info.Name);
                    }
                }
                else
                {
                    // Mono workaround to avoid a crash, like this: http://sourceforge.net/p/keepass/bugs/1314/
                    List <ListViewItemServer> items = new List <ListViewItemServer>();
                    foreach (ListViewItemServer itemCurrent in Items)
                    {
                        if (itemsToRemove.Contains(itemCurrent) == false)
                        {
                            items.Add(itemCurrent);
                        }
                    }
                    Items.Clear();
                    ItemsServers.Clear();
                    foreach (ListViewItemServer itemCurrent in items)
                    {
                        ItemsServers.Add(itemCurrent.Info.Name, itemCurrent);
                        Items.Add(itemCurrent);
                    }
                }

                Sort();

                //ResumeLayout();
            }
        }
Ejemplo n.º 5
0
        public override void OnListViewDrawSubItem(object sender, DrawListViewSubItemEventArgs e)
        {
            if (e.ColumnIndex == 1)
            {
                e.DrawDefault = false;
                DrawSubItemBackground(sender, e);

                Controls.ListViewItemServer listItemServer = e.Item as Controls.ListViewItemServer;

                //int score = Convert.ToInt32(e.SubItem.Text);
                float part = listItemServer.Info.ScorePerc();


                Image imageN = GuiUtils.GetResourceImage("stars_n");
                Image imageH = GuiUtils.GetResourceImage("stars_h");

                //Rectangle sourceN = new Rectangle(0, 0, imageN.Width, imageN.Height); // TOCLEAN
                Rectangle sourceH = new Rectangle(0, 0, Convert.ToInt32(Convert.ToDouble(imageH.Width) * part), imageH.Height);

                int ODX = imageN.Width;
                if (e.Bounds.Width < ODX)
                {
                    ODX = e.Bounds.Width;
                }
                int ODY = imageN.Height;

                int HDX = Convert.ToInt32(Convert.ToDouble(ODX) * part);

                Rectangle destN = new Rectangle(0, 0, ODX, ODY);
                destN.Offset(e.Bounds.Width / 2, e.Bounds.Height / 2);
                destN.Offset(e.Bounds.Left, e.Bounds.Top);
                destN.Offset(-ODX / 2, -ODY / 2);

                Rectangle destH = new Rectangle(0, 0, HDX, ODY);
                destH.Offset(e.Bounds.Width / 2, e.Bounds.Height / 2);
                destH.Offset(e.Bounds.Left, e.Bounds.Top);
                destH.Offset(-ODX / 2, -ODY / 2);

                e.Graphics.DrawImage(imageN, destN);
                e.Graphics.DrawImage(imageH, destH, sourceH, GraphicsUnit.Pixel);
            }
            else if (e.ColumnIndex == 4)
            {
                e.DrawDefault = false;
                DrawSubItemBackground(sender, e);

                Controls.ListViewItemServer listItemServer = e.Item as Controls.ListViewItemServer;

                Rectangle R1 = e.Bounds;
                R1.Inflate(-2, -2);

                /*
                 * Int64 bwCur = 2*(listItemServer.Info.Bandwidth*8)/(1000*1000); // to Mbit/s
                 * Int64 bwMax = listItemServer.Info.BandwidthMax;
                 *
                 * float p = (float)bwCur / (float)bwMax;
                 */

                String label = listItemServer.Info.GetLoadForList();
                float  p     = listItemServer.Info.GetLoadPercForList();

                string color = listItemServer.Info.GetLoadColorForList();
                Brush  b     = Brushes.LightGreen;
                if (color == "red")
                {
                    b = Brushes.LightPink;
                }
                else if (color == "yellow")
                {
                    b = Brushes.LightYellow;
                }
                else
                {
                    b = Brushes.LightGreen;
                }



                int W = Convert.ToInt32(p * R1.Width);
                if (W > R1.Width)
                {
                    W = R1.Width;
                }
                //e.Graphics.FillRectangle(Form.Skin.BarBrush, new Rectangle(R1.Left, R1.Top, W, R1.Height));
                e.Graphics.FillRectangle(b, new Rectangle(R1.Left, R1.Top, W, R1.Height));



                R1.Height -= 1;
                //e.Graphics.DrawRectangle(m_loadPen, R1);
                e.Graphics.DrawString(label, e.Item.Font, Form.Skin.ForeBrush, R1, GuiUtils.StringFormatCenterMiddle);
            }
            else
            {
                base.OnListViewDrawSubItem(sender, e);
            }
        }
Ejemplo n.º 6
0
		public void UpdateList()
		{
			lock (this)
			{
				//SuspendLayout();

				List<ServerInfo> servers;
				lock (Engine.Instance.Servers)
				{
					servers = Engine.Instance.GetServers(ShowAll);
				}

				foreach (ServerInfo infoServer in servers)
				{
					if (ItemsServers.ContainsKey(infoServer.Name) == false)
					{
						Controls.ListViewItemServer listItemServer = new Controls.ListViewItemServer();
						listItemServer.Name = infoServer.Name;
						listItemServer.Info = infoServer;
						listItemServer.Update();
						ItemsServers.Add(infoServer.Name, listItemServer);
						Items.Add(listItemServer);
					}
					else
					{
						Controls.ListViewItemServer listItemServer = ItemsServers[infoServer.Name] as ListViewItemServer;
						listItemServer.Update();
					}
				}

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

				foreach (ListViewItemServer viewItem in ItemsServers.Values)
				{
					if (servers.Contains(viewItem.Info) == false)
					{
						itemsToRemove.Add(viewItem);
					}
				}

				if (Platform.IsWindows())
				{
					foreach (ListViewItemServer viewItem in itemsToRemove)
					{
						Items.Remove(viewItem);
						ItemsServers.Remove(viewItem.Info.Name);
					}
				}
				else
				{
					// Mono workaround to avoid a crash, like this: http://sourceforge.net/p/keepass/bugs/1314/
					List<ListViewItemServer> items = new List<ListViewItemServer>();
					foreach (ListViewItemServer itemCurrent in Items)
					{
						if (itemsToRemove.Contains(itemCurrent) == false)
							items.Add(itemCurrent);
					}
					Items.Clear();
					ItemsServers.Clear();
					foreach (ListViewItemServer itemCurrent in items)
					{
						ItemsServers.Add(itemCurrent.Info.Name, itemCurrent);
						Items.Add(itemCurrent);
					}
				}

				Sort();

				//ResumeLayout();
			}
		}
Ejemplo n.º 7
0
        public void UpdateList()
        {
            lock (this)
            {
                //SuspendLayout();

                List<ServerInfo> serversList;
                lock (Engine.Instance.Servers)
                {
                    serversList = Engine.Instance.GetServers(ShowAll);
                }

                Dictionary<string, ServerInfo> servers = new Dictionary<string, ServerInfo>();
                foreach (ServerInfo infoServer in serversList)
                {
                    servers[infoServer.Code] = infoServer;
                }

                foreach (ServerInfo infoServer in servers.Values)
                {
                    if (ItemsServers.ContainsKey(infoServer.Code) == false)
                    {
                        Controls.ListViewItemServer listItemServer = new Controls.ListViewItemServer();
                        listItemServer.Info = infoServer;
                        listItemServer.Update();
                        ItemsServers.Add(infoServer.Code, listItemServer);
                        Items.Add(listItemServer); // TOFIX: Mono impressive slow. 'Show all' took around 5 seconds to add 150 items.
                    }
                    else
                    {
                        Controls.ListViewItemServer listItemServer = ItemsServers[infoServer.Code] as ListViewItemServer;
                        listItemServer.Update();
                    }
                }

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

                foreach (ListViewItemServer viewItem in ItemsServers.Values)
                {
                    if (servers.ContainsKey(viewItem.Info.Code) == false)
                    {
                        itemsToRemove.Add(viewItem);
                    }
                }

                if (itemsToRemove.Count > 0)
                {
                    if (Platform.IsWindows())
                    {
                        foreach (ListViewItemServer viewItem in itemsToRemove)
                        {
                            Items.Remove(viewItem);
                            ItemsServers.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<ListViewItemServer> items = new List<ListViewItemServer>();
                        foreach (ListViewItemServer itemCurrent in Items)
                        {
                            if (itemsToRemove.Contains(itemCurrent) == false)
                                items.Add(itemCurrent);
                        }
                        Items.Clear();
                        ItemsServers.Clear();
                        foreach (ListViewItemServer itemCurrent in items)
                        {
                            ItemsServers.Add(itemCurrent.Info.Code, itemCurrent);
                            Items.Add(itemCurrent);
                        }
                    }
                }

                Sort();

                //ResumeLayout();
            }
        }