using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using ModuleDataLib;

namespace Setup
{
    /// <summary>
    /// Třída pro panel nastavení zdroje dat
    /// </summary>
    public partial class CtrlPanelSrc : CtrlPanel
    {
        /// <summary>
        /// Vytvoření instance panelu
        /// </summary>
        public CtrlPanelSrc()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Zajistí stažení dat z modulu
        /// </summary>
        public override void DownloadData()
        {
            base.DownloadData();
        }

        /// <summary>
        /// Provede stažení dat v případě, že dosud nebylo provedeno a jejich zobrazení
        /// </summary>
        public override void ShowData()
        {
            base.ShowData();

            if (DataObject.Retrieved)
            {
                DataSource data = (DataObject as DataSource);
                tbIPsens.Text = data.SensorIP.ToString();
                cbActive.Checked = (data.RequestInterval > 0);
                if (cbActive.Checked)
                    tbRqstInt.Text = data.RequestInterval.ToString();
            }
        }

        /// <summary>
        /// Validace dat zadaných uživatelem ve formuláři
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        public override bool ValidateData(StringBuilder message)
        {
            if (message == null)
                message = new StringBuilder();

            DataSource data = (DataObject as DataSource);

            data.SensorIP = IPAddress.Parse(tbIPsens.Text.Trim());
            if (data.SensorIP == null)
                message.AppendFormat("{0} není platná IP adresa {1}", tbIPsens.Text, Environment.NewLine);

            if (!cbActive.Checked)
            {
                // v případě, že není povoleno aktivní stahování dat, nastavit 0
                data.RequestInterval = 0;
            }
            else
            {
                byte x = 0;
                Byte.TryParse(tbRqstInt.Text, out x);

                if (x < 5)
                    message.AppendFormat("{0} není platná hodnota, povolený rozsah je 5..255 {1}", tbRqstInt.Text, Environment.NewLine);
                else
                    data.RequestInterval = x;
            }

            return base.ValidateData(message);
        }

        /// <summary>
        /// Uložení dat do modulu
        /// </summary>
        /// <returns></returns>
        public override bool UploadData()
        {
            return base.UploadData();
        }

        /// <summary>
        /// Obsluha checkbosu pro aktivní stahování dat
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cbActive_CheckedChanged(object sender, EventArgs e)
        {
            tbRqstInt.Enabled = cbActive.Checked;
            if (cbActive.Checked)
                tbRqstInt.Text = "60";
            else
                tbRqstInt.Text = String.Empty;
        }

    }
}
