private static bool Contains(List <ZoomPolicy> list, ZoomPolicy item) { foreach (ZoomPolicy policy in list) { if (policy.TargetType == item.TargetType) { return(true); } } return(false); }
public ZoomPolicyForm(IZoomPolicyProvider provider, string group, string zoomPolicy) { InitializeComponent(); ZoomPolicy policy1 = provider.GetZoomPolicy(group, zoomPolicy); ZoomPolicy policy2 = provider.GetZoomPolicy(group, zoomPolicy); if (policy1 == null || policy2 == null) { for (int i = 0; i < C1ZoomPanel2.DefaultZoomPolicies.Count; i++) { if (C1ZoomPanel2.DefaultZoomPolicies[i].GetType().Name == zoomPolicy) { policy2 = C1ZoomPanel2.DefaultZoomPolicies[i]; policy2.Enabled = false; break; } } } else { policy2.Enabled = false; C1ZoomPanel1.ZoomPolicies.Add(policy1); C1ZoomPanel2.ZoomPolicies.Add(policy2); } if (policy2 != null) { this.Text = _titleText + policy2.TargetType.Name; Control control = provider.GetControl(group, zoomPolicy, _font, C1ZoomPanel1.ClientSize); if (control == null) { return; } string targetControlName = zoomPolicy; if (targetControlName.EndsWith("Policy", StringComparison.OrdinalIgnoreCase)) { targetControlName = targetControlName.Substring(0, targetControlName.Length - "Policy".Length); } if (targetControlName.EndsWith("Zoom", StringComparison.OrdinalIgnoreCase)) { targetControlName = targetControlName.Substring(0, targetControlName.Length - "Zoom".Length); } if (control.GetType().Name != targetControlName) { Queue <Control> controls = new Queue <Control>(); controls.Enqueue(control); Control tmpControl; while (controls.Count > 0) { tmpControl = controls.Dequeue(); if (tmpControl.GetType().Name == targetControlName) { break; } ZoomPolicy policy3 = provider.GetZoomPolicy(group, tmpControl.GetType().Name + "ZoomPolicy"); ZoomPolicy policy4 = provider.GetZoomPolicy(group, tmpControl.GetType().Name + "ZoomPolicy"); if (policy3 == null) { policy3 = provider.GetZoomPolicy(group, tmpControl.GetType().Name + "Policy"); policy4 = provider.GetZoomPolicy(group, tmpControl.GetType().Name + "Policy"); } if (policy3 != null && !Contains(C1ZoomPanel1.ZoomPolicies, policy3)) { C1ZoomPanel1.ZoomPolicies.Add(policy3); C1ZoomPanel2.ZoomPolicies.Add(policy4); } foreach (Control childControl in tmpControl.Controls) { if (childControl.GetType().Assembly == typeof(Control).Assembly) { continue; } controls.Enqueue(childControl); } } } C1ZoomPanel1.Controls.Add(control); C1ZoomPanel2.Controls.Add(provider.GetControl(group, zoomPolicy, _font, C1ZoomPanel2.ClientSize)); } Size?size = provider.GetDemoSize(group, zoomPolicy); if (size.HasValue) { this.Size = size.Value; } }