protected override void Dispose(bool disposing) { if (disposing) { Util.ScheduledEvents.Unregister(OnScheduledRetry); if (components != null) { components.Dispose(); } if (minimized != null) { minimized.Dispose(); minimized = null; } if (reusable != null) { reusable.Dispose(); reusable = null; } if (dailies != null) { for (var i = dailies.Length - 1; i > 0; i--) { if (dailies[i] != null) { dailies[i].Dispose(); } } dailies = null; } LinkedToParent = false; } base.Dispose(disposing); }
private void SetupControls() { var notes = account.Notes; var count = 0; if (notes != null && notes.Count > 0) { if (reusable == null) { reusable = new Util.ReusableControls(); } else { reusable.ReleaseAll(); } var controls = reusable.CreateOrAll <NoteMessage>(notes.Count, delegate { var c = new NoteMessage() { Width = panelContent.Width, Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right, }; c.DeleteClick += message_DeleteClick; c.EditClick += message_EditClick; return(c); }); var now = DateTime.UtcNow; var x = 0; var y = 0; var expired = selectedTab == buttonExpired; Settings.Notes.Note[] _notes; lock (notes) { var index = notes.IndexOf(now); if (expired) { _notes = new Settings.Notes.Note[index]; } else { _notes = new Settings.Notes.Note[notes.Count - index]; } ExpiredCount = index; MessageCount = notes.Count - index; if (_notes.Length > 0) { notes.CopyTo(expired ? 0 : index, _notes, 0, _notes.Length); } } for (var i = 0; i < _notes.Length; i++) { Settings.Notes.Note n; if (expired) { n = _notes[_notes.Length - i - 1]; } else { n = _notes[i]; } var c = controls.GetNext(); c.Location = new Point(x, y); c.Tag = n; c.Expires = n.Expires; string message; strings.TryGetValue(n.SID, out message); c.Message = message; c.Visible = true; y += c.Height + 1; count++; } if (y > 0) { y--; } panelContent.Height = y; while (controls.HasNext) { controls.GetNext().Visible = false; } if (controls.New != null) { panelContent.Controls.AddRange(controls.New); } } else { ExpiredCount = 0; MessageCount = 0; } if (count > 0) { panelContent.Visible = true; labelMessage.Visible = false; scrollV.Maximum = panelContent.Height - panelContainer.Height; } else { panelContent.Visible = false; labelMessage.Text = "No messages"; labelMessage.MaximumSize = new Size(panelContainer.Width * 3 / 4, panelContainer.Height); labelMessage.Location = new Point(panelContainer.Width / 2 - labelMessage.Width / 2, panelContainer.Height / 2 - labelMessage.Height / 2); labelMessage.Visible = true; } }