Winify – Rev 28

Subversion Repositories:
Rev:
using System;
using System.Linq;
using System.Windows.Forms;
using Announcements;
using Servers;
using Winify.Utilities;

namespace Winify.Settings
{
    public partial class SettingsForm : Form
    {
        #region Public Events & Delegates

        public event EventHandler<SettingsSavedEventArgs> Save;

        #endregion

        #region Private Delegates, Events, Enums, Properties, Indexers and Fields

        private readonly BindingSource _announcementBindingSource;

        private readonly Announcements.Announcements _announcements;

        private readonly BindingSource _serverBindingSource;

        private readonly global::Servers.Servers _servers;

        private Announcement _announcement;

        private Server _server;

        #endregion

        #region Constructors, Destructors and Finalizers

        private SettingsForm()
        {
            InitializeComponent();
        }

        public SettingsForm(global::Servers.Servers servers, Announcements.Announcements announcements) : this()
        {
            _servers = servers;
            _server = _servers.Server.FirstOrDefault() ?? new Server();

            _serverBindingSource = new BindingSource();
            _serverBindingSource.DataSource = _server;

            serverNameTextBox.DataBindings.Add(new Binding("Text", _serverBindingSource, nameof(_server.Name), true,
                DataSourceUpdateMode.OnPropertyChanged));
            serverUrlTextBox.DataBindings.Add(new Binding("Text", _serverBindingSource, nameof(_server.Url), true,
                DataSourceUpdateMode.OnPropertyChanged));
            serverUsernameTextBox.DataBindings.Add(new Binding("Text", _serverBindingSource, nameof(_server.Username),
                true,
                DataSourceUpdateMode.OnPropertyChanged));
            serverPasswordTextBox.DataBindings.Add(new Binding("Text", _serverBindingSource, nameof(_server.Password),
                true,
                DataSourceUpdateMode.OnPropertyChanged));

            listBox1.DataSource = _servers.Server;
            listBox1.DisplayMember = "Name";
            listBox1.DataBindings.Add(new Binding("Text", _servers.Server, "Name", true,
                DataSourceUpdateMode.OnPropertyChanged));

            _announcements = announcements;
            _announcement = _announcements.Announcement.FirstOrDefault() ?? new Announcement();

            _announcementBindingSource = new BindingSource();
            _announcementBindingSource.DataSource = _announcement;

            appIdTextBox.DataBindings.Add(new Binding("Text", _announcementBindingSource, nameof(_announcement.AppId),
                true,
                DataSourceUpdateMode.OnPropertyChanged));
            lingerTimeTextBox.DataBindings.Add(new Binding("Text", _announcementBindingSource,
                nameof(_announcement.LingerTime), true,
                DataSourceUpdateMode.OnPropertyChanged));

            listBox2.DataSource = _announcements.Announcement;
            listBox2.DisplayMember = "Id";
            listBox2.DataBindings.Add(new Binding("Text", _announcements.Announcement, "Id", true,
                DataSourceUpdateMode.OnPropertyChanged));
        }

        #endregion

        #region Event Handlers

        private void CheckBox1_CheckedChanged(object sender, EventArgs e)
        {
            Properties.Settings.Default.LaunchOnBoot = ((CheckBox)sender).Checked;

            Miscellaneous.LaunchOnBootSet(Properties.Settings.Default.LaunchOnBoot);
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            var server = new Server();

            _servers.Server.Add(server);

            listBox1.SelectedItem = server;
        }

        private void Button2_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem is Server server) _servers.Server.Remove(server);
        }

        private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            var listBox = (ListBox)sender;

            if (listBox.SelectedItem is Server server)
            {
                _server = server;

                _serverBindingSource.DataSource = _server;
            }
        }

        private void Button3_Click(object sender, EventArgs e)
        {
            if (listBox2.SelectedItem is Announcement announcement) _announcements.Announcement.Remove(announcement);
        }

        private void Button4_Click(object sender, EventArgs e)
        {
            var announcement = new Announcement();

            _announcements.Announcement.Add(announcement);

            listBox2.SelectedItem = announcement;
        }

        private void ListBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            var listBox = (ListBox)sender;

            if (listBox.SelectedItem is Announcement announcement)
            {
                _announcement = announcement;

                _announcementBindingSource.DataSource = _announcement;
            }
        }

        private void Button6_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void Button5_Click(object sender, EventArgs e)
        {
            Save?.Invoke(this, new SettingsSavedEventArgs(_servers, _announcements));
            Close();
        }

        #endregion
    }
}

Generated by GNU Enscript 1.6.5.90.