using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Eugen.ESystem.Windows.Forms;

namespace HE_Test_Dll
{
    public partial class Form1 : Form
    {
        #region Version und Copyright
        // Keys und Copyright
        string programName = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); //Den Programmnamen auslesen
        string programVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
        static object[] attributes = System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
        string copyright = GenerateCopyright();
        string icon = Application.StartupPath + "\\Info.bmp";
        //Assembly Datum und Zeit
        static DateTime value = AssemblyDateTime();
        string date = value.ToShortDateString();
        string time = value.ToLongTimeString();
        private static DateTime AssemblyDateTime()
        {
            var version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
            var buildDateTime = new DateTime(2000, 1, 1).Add(new TimeSpan(TimeSpan.TicksPerDay * version.Build + TimeSpan.TicksPerSecond * 2 * version.Revision));
            //Tage seit dem 1. Januar 2000 und Sekunden seit Mitternacht, (multiplizier mit 2 ergibt das Original)
            return buildDateTime;
        }

        private static string CurrentYear()
        {
            DateTime dtn = DateTime.Now;
            return dtn.Year.ToString();
        }

        private static string StartYear()
        {
            //string startYear = ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
            //return startYear.Remove(0, startYear.LastIndexOf(" ") + 1);
            string startYear = "";
            if (((AssemblyCopyrightAttribute)attributes[0]).Copyright.Contains("Copyright © "))
            {
                startYear = ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace("Copyright © ", "");
                while (startYear.StartsWith(" "))
                {
                    startYear = startYear.Remove(0, 1);
                }
                startYear = startYear.Remove(startYear.IndexOf(" "));
                return startYear;
            }
            else
            {
                DateTime dtn = DateTime.Now;
                return dtn.Year.ToString();
            }
        }

        private static string GenerateCopyright()
        {
            string startYear = StartYear();
            string currentYear = CurrentYear();

            if (startYear == currentYear)
            {
                return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
            }
            else
            {
                //return String.Concat(((AssemblyCopyrightAttribute)attributes[0]).Copyright, "-", currentYear);
                return ((AssemblyCopyrightAttribute)attributes[0]).Copyright.Replace(startYear, String.Concat(startYear, "-", currentYear));
            }
        }
        #endregion

        #region Programm-Info
        /// <summary>
        /// Contains the name of the program file
        /// </summary>
        public static string ProgramName { set; get; }

        /// <summary>
        /// Contains the version of the program file
        /// </summary>
        public static string ProgramVersion { set; get; }

        /// <summary>
        /// Contains the copyright notice
        /// </summary>
        public static string Copyright { set; get; }

        private void SetProgramInfo()
        {
            //Name, Keys und Copyright setzen
            ProgramName = programName;
            ProgramVersion = programVersion;
            Copyright = copyright;
        }
        #endregion

        public Form1()
        {
            SetProgramInfo();
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            labelProgramInfo.Text = String.Concat(ProgramName, "\r\n", ProgramVersion, "\r\n", Copyright); // Zeigt die Programm-Information an

            labelDLLInfo.Text = String.Concat(TripleValueControl.DllName, "\r\n", TripleValueControl.DllVersion, "\r\n", TripleValueControl.Copyright); // Zeigt die DLL-Information an

            ExecuteControl();
        }

        private void ExecuteControl()
        {
            tripleValueControl.Password = "Test";
            tripleValueControl.InitialDirectory = @"C:\Temp\Test";
            tripleValueControl.XMLfileName = @"C:\CAD\Git-WorkRepository\VisualStudio\_USER CONTROL\TripleValueControlGrafic.git\Daten\Test1.xml";
            tripleValueControl.ValueControlName = "My XML Control";
            tripleValueControl.Topic = "NX-Portal";
            tripleValueControl.GroupName = "MyGroup";
            //tripleValueControl.Group = "NX_2212"; //Belegt die Gruppe vor. Darf kein Leerzeichen enthalten
            tripleValueControl.TableKeyName = "MyVarName";
            tripleValueControl.TableValueName = "MyValue";
            tripleValueControl.TableAttributeName = "MyAttribut";
            //tripleValueControl.AlwaysEncrypted = true; //Alle Werte werden immer Verschlüsselt
            tripleValueControl.SetDialogWidth(600); //Der Dialog kann zwischen 316 und 800 breit sein
            tripleValueControl.DialogHeight = 300; //Der Dialog kann zwischen 227 und 600 hoch sein
            tripleValueControl.SetBasicValues(); //Die übergebenen Werte anzeigen
        }
    }
}
