<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns="http://www.holeschak.de/BmwDeepObd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.holeschak.de/BmwDeepObd BmwDeepObd.xsd">
  <page name="SIA" display-mode="list" fontsize="medium" gauges-portrait="2" gauges-landscape="4" logfile="KOMBI46R_SIA.log">
    <strings lang="de">
      <string name="SIA">SIA</string>
      <string name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_SERVICE_TEXT"> letzter Service war</string>
      <string name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_INSPEKTIONSGRENZE_WERT"> Inspektionsgrenze Kraftstoff [l]</string>
      <string name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_KRAFTSTOFFMENGE_WERT"> Kraftstoffmenge seit letztem Service [l]</string>
      <string name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_ZEIT_INSP_ZAEHLER_WERT"> Zeitinspektionszähler [Tage]</string>
      <string name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_ZEITGRENZE_WERT"> Zeitgrenze [Tage]</string>
      <string name="!JOB#ZEITINPEKTIONSDATUM_LESEN#ZEITINSPEKTION_MONAT"> nächste Zeitinspektion [Monat]</string>
      <string name="!JOB#ZEITINPEKTIONSDATUM_LESEN#ZEITINSPEKTION_JAHR"> nächste Zeitinspektion [Jahr]</string>
    </strings>
	<strings>
      <string name="SIA">SIA</string>
      <string name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_SERVICE_TEXT"> last service was</string>
      <string name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_INSPEKTIONSGRENZE_WERT"> inspection limit fuel [l]</string>
      <string name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_KRAFTSTOFFMENGE_WERT"> fuel since last service [l]</string>
      <string name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_ZEIT_INSP_ZAEHLER_WERT"> inspection time counter [days]</string>
      <string name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_ZEITGRENZE_WERT"> time limit [days]</string>
      <string name="!JOB#ZEITINPEKTIONSDATUM_LESEN#ZEITINSPEKTION_MONAT"> next time inspection [month]</string>
      <string name="!JOB#ZEITINPEKTIONSDATUM_LESEN#ZEITINSPEKTION_JAHR"> next time inspection [year]</string>
    </strings>
    <display name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_SERVICE_TEXT" result="STAT_SERVICE_TEXT" format="T" log_tag="STAT_SERVICE_TEXT" />
    <display name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_INSPEKTIONSGRENZE_WERT" result="STAT_INSPEKTIONSGRENZE_WERT" format="L" log_tag="STAT_INSPEKTIONSGRENZE_WERT" />
    <display name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_KRAFTSTOFFMENGE_WERT" result="STAT_KRAFTSTOFFMENGE_WERT" format="L" log_tag="STAT_KRAFTSTOFFMENGE_WERT" />
    <display name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_ZEIT_INSP_ZAEHLER_WERT" result="STAT_ZEIT_INSP_ZAEHLER_WERT" format="L" log_tag="STAT_ZEIT_INSP_ZAEHLER_WERT" />
    <display name="!JOB#STATUS_AIF_SIA_DATEN_LESEN#STAT_ZEITGRENZE_WERT" result="STAT_ZEITGRENZE_WERT" format="L" log_tag="STAT_ZEITGRENZE_WERT" />
    <display name="!JOB#ZEITINPEKTIONSDATUM_LESEN#ZEITINSPEKTION_MONAT" result="ZEITINSPEKTION_MONAT" format="L" log_tag="ZEITINSPEKTION_MONAT" />
    <display name="!JOB#ZEITINPEKTIONSDATUM_LESEN#ZEITINSPEKTION_JAHR" result="ZEITINSPEKTION_JAHR" format="L" log_tag="ZEITINSPEKTION_JAHR" />
    
    <jobs sgbd="kombi46r" />
    
    <code show_warnings="true">
    <![CDATA[
    class PageClass
    {
        private Button buttonSIAWegReset;
        //private Button buttonSIAOelReset;
        private Button buttonSIAZeitReset;
        private Button buttonSIAKorrektur;
        private bool doSIAWegReset = false;
        //private bool doSIAOelReset = false;
        private bool doSIAZeitReset = false;
        private bool doSIAKorrektur = false;
        
        private int serviceArt;
        
        public void CreateLayout(ActivityMain activity, JobReader.PageInfo pageInfo, LinearLayout pageLayout)
        {
            LinearLayout buttonLayout = new LinearLayout(activity);
            buttonLayout.Orientation = Orientation.Horizontal;

            LinearLayout.LayoutParams buttonLayoutParams = new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.MatchParent,
                ViewGroup.LayoutParams.WrapContent);
            buttonLayoutParams.Weight = 1;
            
            // Button 1
            buttonSIAWegReset = new Button(activity);
            buttonSIAWegReset.Text = "RESET INSPEKTION / ÖLSERVICE";
            buttonSIAWegReset.Click += delegate
            {
                // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
                doSIAWegReset = true;  
                
                // Benachrichtung anzeigen wenn man will
                ActivityMain.ShowNotification(activity, 0, 2,
                    "SIA RESET",
                    "Weginspektion wird zurückgesetzt...");
            };
            buttonLayout.AddView(buttonSIAWegReset, buttonLayoutParams);
            
            //// Button 2
            //buttonSIAOelReset = new Button(activity);
            //buttonSIAOelReset.Text = "RESET ÖLSERVICE";
            //buttonSIAOelReset.Click += delegate
            //{
            //    // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
            //    doSIAOelReset = true;  
            //    
            //    // Benachrichtung anzeigen wenn man will
            //    ActivityMain.ShowNotification(activity, 0, 2,
            //        "SIA RESET",
            //        "Ölservice wird zurückgesetzt...");
            //};
            //buttonLayout.AddView(buttonSIAOelReset, buttonLayoutParams);
            
            // Button 3
            buttonSIAZeitReset = new Button(activity);
            buttonSIAZeitReset.Text = "RESET ZEIT- INSPEKTION";
            buttonSIAZeitReset.Click += delegate
            {
                // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
                doSIAZeitReset = true;  
                
                // Benachrichtung anzeigen wenn man will
                ActivityMain.ShowNotification(activity, 0, 2,
                    "SIA RESET",
                    "Zeitinspektion wird zurückgesetzt...");
            };
            buttonLayout.AddView(buttonSIAZeitReset, buttonLayoutParams);
            
            // Button 4
            buttonSIAKorrektur = new Button(activity);
            buttonSIAKorrektur.Text = "KORREKTUR WECHSEL INSPEKTION <> ÖLSERVICE";
            buttonSIAKorrektur.Click += delegate
            {
                // button setzt klassenweite variable auf true, diese wird beim durchlauf von ExecuteJob ausgewertet
                doSIAKorrektur = true;  
                
                // Benachrichtung anzeigen wenn man will
                ActivityMain.ShowNotification(activity, 0, 2,
                    "SIA",
                    "Wechsel zwischen Inspektion <> Ölservice wird durchgeführt...");
            };
            buttonLayout.AddView(buttonSIAKorrektur, buttonLayoutParams);

            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.MatchParent,
                ViewGroup.LayoutParams.WrapContent);
            pageLayout.AddView(buttonLayout, layoutParams);
        }

        public void DestroyLayout(JobReader.PageInfo pageInfo)
        {
            buttonSIAWegReset = null;
            //buttonSIAOelReset = null;
            buttonSIAZeitReset = null;
            buttonSIAKorrektur = null;
        }

        public void ExecuteJob(EdiabasNet ediabas, ref MultiMap<string, EdiabasNet.ResultData> resultDict, bool firstCall)
        {
            List<Dictionary<string, EdiabasNet.ResultData>> resultSets;
            
            // Job 1
            ediabas.ArgString = string.Empty;
            ediabas.ArgBinaryStd = null;
            ediabas.ResultsRequests = string.Empty;
            
            ediabas.ExecuteJob("STATUS_AIF_SIA_DATEN_LESEN");
            
            resultSets = ediabas.ResultSets;
            if (resultSets != null && resultSets.Count >= 2)
            {
                EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
            }
            
            EdiabasNet.ResultData resultData;
            if (resultSets[1].TryGetValue("STAT_SERVICE_ART", out resultData))
                {
                    if (resultData.OpData is Int64)
                    {
                        serviceArt = (int)((Int64)resultData.OpData);
                    }
                }
            
            
            // Job 2
            ediabas.ArgString = string.Empty;
            ediabas.ArgBinaryStd = null;
            ediabas.ResultsRequests = string.Empty;
            
            ediabas.ExecuteJob("ZEITINSPEKTIONSDATUM_LESEN");
            
            resultSets = ediabas.ResultSets;
            if (resultSets != null && resultSets.Count >= 2)
            {
               EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
            }
            
            
            // Button Jobs
            
            // Button 1 - SIA RESET Weginspektion/Oelservice
            if (doSIAWegReset) {
                
                if(serviceArt == 0) ediabas.ArgString = "Oel_Reset";
                if(serviceArt == 1) ediabas.ArgString = "Weg_Reset";
                
                ediabas.ArgBinaryStd = null;
                ediabas.ResultsRequests = "JOB_STATUS";
                
                ediabas.ExecuteJob("SIA_RESET");
                
                //resultSets = ediabas.ResultSets;
                //if (resultSets != null && resultSets.Count >= 2)
                //{
                //  EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
                //}
                
                // ablaufvariable wieder zurücksetzen, sonst würde diese funktion nun bei jedem folgenden durchlauf ausgeführt werden...
                doSIAWegReset = false;
            }
            
            //// Button 2 - SIA RESET Ölservice
            //if (doSIAOelReset) {
            //    ediabas.ArgString = "Oel_Reset";
            //    ediabas.ArgBinaryStd = null;
            //    ediabas.ResultsRequests = "JOB_STATUS";
            //    
            //    ediabas.ExecuteJob("SIA_RESET");
            //    
            //    //resultSets = ediabas.ResultSets;
            //    //if (resultSets != null && resultSets.Count >= 2)
            //    //{
            //    //  EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
            //    //}
            //    
            //    // ablaufvariable wieder zurücksetzen, sonst würde diese funktion nun bei jedem folgenden durchlauf ausgeführt werden...
            //    doSIAOelReset = false;
            //}
            
            // Button 3 - SIA RESET Zeitinspektion
            if (doSIAZeitReset) {
                ediabas.ArgString = "Zeit_Reset";
                ediabas.ArgBinaryStd = null;
                ediabas.ResultsRequests = "JOB_STATUS";
                
                ediabas.ExecuteJob("SIA_RESET");
                
                //resultSets = ediabas.ResultSets;
                //if (resultSets != null && resultSets.Count >= 2)
                //{
                //  EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
                //}
                
                // ablaufvariable wieder zurücksetzen, sonst würde diese funktion nun bei jedem folgenden durchlauf ausgeführt werden...
                doSIAZeitReset = false;
            }
            
            // Button 4 - SIA Korrektur
            if (doSIAKorrektur) {
                ediabas.ArgString = string.Empty;
                ediabas.ArgBinaryStd = null;
                ediabas.ResultsRequests = "JOB_STATUS";
                
                ediabas.ExecuteJob("SIA_KORREKTUR_SCHREIBEN");
                
                //resultSets = ediabas.ResultSets;
                //if (resultSets != null && resultSets.Count >= 2)
                //{
                //  EdiabasThread.MergeResultDictionarys(ref resultDict, resultSets[1]);
                //}
                
                // ablaufvariable wieder zurücksetzen, sonst würde diese funktion nun bei jedem folgenden durchlauf ausgeführt werden...
                doSIAKorrektur = false;
            }
        }
    }
    ]]>
    </code>
  </page>
</fragment>