Пример #1
0
        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);
        }
Пример #2
0
        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;
            }
        }