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 ModuleDataLib;

namespace Setup
{
    /// <summary>
    /// Třída pro panel nastavení displeje
    /// </summary>
    public partial class CtrlPanelDisp : CtrlPanel
    {
        /// <summary>
        /// Vytvoří instanci panelu
        /// </summary>
        public CtrlPanelDisp()
        {
            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();

            DataDisplay data = (DataObject as DataDisplay);

            if (data.Retrieved)
            {
                cbxUnit.SelectedIndex = (int)data.Mode;
                tbMaxAge.Text = data.MaxAge.ToString();
                trbBright.Value = data.Brightness;
            }

        }

        /// <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();

            DataDisplay data = (DataObject as DataDisplay);

            if (cbxUnit.SelectedIndex < 0)
                message.AppendFormat("Není zvolen režim zobrazování {0}", Environment.NewLine);

            data.Mode = (DispUnit)cbxUnit.SelectedIndex;

            UInt16 x = 0;
            UInt16.TryParse(tbMaxAge.Text, out x);
            if (x > 0)
                data.MaxAge = x;
            else
                message.AppendFormat("{0} není platná hodnota, povolený rozsah je 1..32767 {1}", tbMaxAge.Text, Environment.NewLine);

            data.Brightness = (byte)trbBright.Value;

            return base.ValidateData(message);
        }

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


    }
}
