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 naměřených hodnot
    /// </summary>
    public partial class CtrlPanelData : CtrlPanel
    {
        /// <summary>
        /// Vyvoří instanci
        /// </summary>
        public CtrlPanelData()
        {
            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()
        {
            const string TIME_FORMAT = "dd.MM.yyyy HH:mm";

            base.ShowData();

            if (DataObject.Retrieved)
            {
                if ((DataObject as DataData).Current.Age != TempRec.UNDEF_TEMP)
                {
                    tbCurrentT.Text = (DataObject as DataData).Current.GetStringValue(DispUnit.Celsius);
                    tbCurrentD.Text = (DataObject as DataData).Current.GetDateTime().ToString(TIME_FORMAT);
                }
                if ((DataObject as DataData).Minimum.Age != TempRec.UNDEF_TEMP)
                {
                    tbMinT.Text = (DataObject as DataData).Minimum.GetStringValue(DispUnit.Celsius);
                    tbMinD.Text = (DataObject as DataData).Minimum.GetDateTime().ToString(TIME_FORMAT);
                }
                if ((DataObject as DataData).Maximum.Age != TempRec.UNDEF_TEMP)
                {
                    tbMaxT.Text = (DataObject as DataData).Maximum.GetStringValue(DispUnit.Celsius);
                    tbMaxD.Text = (DataObject as DataData).Maximum.GetDateTime().ToString(TIME_FORMAT);
                }

            }
        }

        /// <summary>
        /// U tohoto panelu není editace, validace ani upload dat podporován
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        public override bool ValidateData(StringBuilder message)
        {
            throw new NotSupportedException();
        }

        /// <summary>
        /// U tohoto panelu není editace, validace ani upload dat podporován
        /// </summary>
        /// <returns></returns>
        public override bool UploadData()
        {
            throw new NotSupportedException();
        }

        /// <summary>
        /// Obsluha kliknutí na link pro smazání min/max hodnot
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (MessageBox.Show(
                "Opravdu chcete smazat minimální a maximální teplotu uloženou v modulu?",
                "Potvrzení",
                MessageBoxButtons.YesNo,
                MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Yes)
            {
                if ((DataObject as DataData).ClearMinMax())
                {
                    // po úspěchu, znovu načíst a zobrazit
                    DownloadData();
                    ShowData();
                }
                else
                {
                    // po neúspěchu upozornění
                    MessageBox.Show(
                        "Došlo k chybě komunikace s modulem",
                        "Chyba",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Error);
                }
            }
        }
    }
}
