Commit 25513c56 authored by Francesco Carraro's avatar Francesco Carraro
Browse files

refactoring of code in progress with related UI changes

parent eb61e403
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
using INAF.Apps.Uwp.Charts;
using INAF.Apps.Uwp.SLabDataManager.Charts;
using INAF.Apps.Uwp.SLabDataManager.Helpers;
using INAF.Apps.Uwp.SLabDataManager.Helpers.ConfigHelpers;
using INAF.Apps.Uwp.SLabDataManager.Models;
+203 −0
Original line number Diff line number Diff line
using INAF.Apps.Uwp.SLabDataManager.Helpers;
using INAF.Libraries.NetStandard.ScienceModels;
using INAF.Libraries.NetStandard.ScienceModels.Spectra;
using INAF.Libraries.NetStandard.ScienceModels.Spectra.Serializable;
using INAF.Libraries.Uwp.Settings;
using System.Threading.Tasks;
using static INAF.Libraries.NetStandard.ScienceModels.Enums.Enums;

namespace INAF.Apps.Uwp.SLabDataManager.Charts
{
    public sealed class AlignmentConfigModel : ObservableModel
    {
        private readonly SettingsHelper settingsHelper;

        public AlignmentConfigModel(SettingsHelper settingsHelper)
        {
            this.settingsHelper = settingsHelper;

            if (!tryReadAreSeparatorsVisible())
                AreSeparatorsVisible = true;

            tryReadWavelengthModel(0);
            tryReadWavelengthModel(1);
            tryReadWavelengthModel(2);
            tryReadWavelengthModel(3);
        }

        #region properties
        private bool areSeparatorsVisible;
        public bool AreSeparatorsVisible
        {
            get { return areSeparatorsVisible; }
            set { areSeparatorsVisible = value; saveAreSeparatorsVisible(value); RaisePropertyChanged(nameof(AreSeparatorsVisible)); }
        }

        private WavelengthModel separatorWavelength0;
        public WavelengthModel SeparatorWavelength0
        {
            get { return separatorWavelength0; }
            set { separatorWavelength0 = value; RaisePropertyChanged(nameof(SeparatorWavelength0)); }
        }

        private WavelengthModel separatorWavelength1;
        public WavelengthModel SeparatorWavelength1
        {
            get { return separatorWavelength1; }
            set { separatorWavelength1 = value; RaisePropertyChanged(nameof(SeparatorWavelength1)); }
        }

        private WavelengthModel separatorWavelength2;
        public WavelengthModel SeparatorWavelength2
        {
            get { return separatorWavelength2; }
            set { separatorWavelength2 = value; RaisePropertyChanged(nameof(SeparatorWavelength2)); }
        }

        private WavelengthModel separatorWavelength3;
        public WavelengthModel SeparatorWavelength3
        {
            get { return separatorWavelength3; }
            set { separatorWavelength3 = value; RaisePropertyChanged(nameof(SeparatorWavelength3)); }
        }
        #endregion

        #region save/read settings
        private void saveAreSeparatorsVisible(bool areVisible)
        {
            settingsHelper.save(Constants.Constants.ARE_SEPARATORS_VISIBLE, areVisible.ToString());
        }

        private void saveWavelengthModel(int index, double value)
        {
            settingsHelper.save<WavelengthSerializableModel>($"index{index}", new WavelengthSerializableModel(index, value));
        }

        public bool tryReadAreSeparatorsVisible()
        {
            bool isFound = false;

            string value = settingsHelper.get(Constants.Constants.ARE_SEPARATORS_VISIBLE);
            if (!string.IsNullOrEmpty(value))
            {
                AreSeparatorsVisible = bool.Parse(value);
                isFound = true;
            }

            return isFound;
        }

        private void tryReadWavelengthModel(int index)
        {
            if (settingsHelper.contains($"index{index}"))
            {
                WavelengthSerializableModel wavelengthSerializableModel = settingsHelper.get<WavelengthSerializableModel>($"index{index}");
                switch (index)
                {
                    case 0:
                        SeparatorWavelength0 = new WavelengthModel(0, wavelengthSerializableModel.Value, "WavelengthLabel".GetText());
                        break;
                    case 1:
                        SeparatorWavelength1 = new WavelengthModel(1, wavelengthSerializableModel.Value, "WavelengthLabel".GetText());
                        break;
                    case 2:
                        SeparatorWavelength2 = new WavelengthModel(2, wavelengthSerializableModel.Value, "WavelengthLabel".GetText());
                        break;
                    case 3:
                        SeparatorWavelength3 = new WavelengthModel(3, wavelengthSerializableModel.Value, "WavelengthLabel".GetText());
                        break;
                }

                addSeparatorWavelengthEventListener(index);
            }
        }
        #endregion

        public void addSeparatorWavelength(int index, WavelengthModel wavelength)
        {
            switch (index)
            {
                case 0:
                    SeparatorWavelength0 = wavelength;
                    break;
                case 1:
                    SeparatorWavelength1 = wavelength;
                    break;
                case 2:
                    SeparatorWavelength2 = wavelength;
                    break;
                case 3:
                    SeparatorWavelength3 = wavelength;
                    break;
            }

            addSeparatorWavelengthEventListener(index);
        }

        private void addSeparatorWavelengthEventListener(int index)
        {
            switch (index)
            {
                case 0:
                    SeparatorWavelength0.PropertyChanged += (s, e) =>
                    {
                        WavelengthModel wavelengthModel = s as WavelengthModel;
                        saveWavelengthModel(0, wavelengthModel.CurrentValue);
                    };
                    break;
                case 1:
                    SeparatorWavelength1.PropertyChanged += (s, e) =>
                    {
                        WavelengthModel wavelengthModel = s as WavelengthModel;
                        saveWavelengthModel(1, wavelengthModel.CurrentValue);
                    };
                    break;
                case 2:
                    SeparatorWavelength2.PropertyChanged += (s, e) =>
                    {
                        WavelengthModel wavelengthModel = s as WavelengthModel;
                        saveWavelengthModel(2, wavelengthModel.CurrentValue);
                    };
                    break;
                case 3:
                    SeparatorWavelength3.PropertyChanged += (s, e) =>
                    {
                        WavelengthModel wavelengthModel = s as WavelengthModel;
                        saveWavelengthModel(3, wavelengthModel.CurrentValue);
                    };
                    break;
            }  
        }

        public bool contains(int index)
        {
            bool contains = false;

            switch (index)
            {
                case 0:
                    contains = SeparatorWavelength0 != null;
                    break;
                case 1:
                    contains = SeparatorWavelength1 != null;
                    break;
                case 2:
                    contains = SeparatorWavelength2 != null;
                    break;
                case 3:
                    contains = SeparatorWavelength3 != null;
                    break;
            }

            return contains;
        }

        public async Task switchToMeasureUnitAsync(WavelengthMeasureUnit newMeasureUnit)
        {
            await SeparatorWavelength0.switchToMeasureUnitAsync(newMeasureUnit);
            await SeparatorWavelength1.switchToMeasureUnitAsync(newMeasureUnit);
            await SeparatorWavelength2.switchToMeasureUnitAsync(newMeasureUnit);
            await SeparatorWavelength3.switchToMeasureUnitAsync(newMeasureUnit);
        }
    }
}
+1 −74
Original line number Diff line number Diff line
using INAF.Apps.Uwp.SLabDataManager.Constants;
using INAF.Apps.Uwp.SLabDataManager.Helpers;
using INAF.Libraries.NetStandard.ScienceModels;
using INAF.Libraries.NetStandard.ScienceModels.Spectra;
using INAF.Libraries.Uwp.Settings;
using INAF.Libraries.Uwp.TelerikChartsExtensions;
using System;
@@ -39,14 +38,8 @@ namespace INAF.Apps.Uwp.Charts
            ChartZoomModeValues = Enum.GetValues(typeof(ChartPanZoomMode)).Cast<ChartPanZoomMode>().ToList();
            if (!tryReadChartZoomMode())
                SelectedChartZoomMode = ChartPanZoomMode.Both;

            XAxisMajorStepValues = new List<double>(2);
            XAxisMajorStepValues.Add(0.1);
            XAxisMajorStepValues.Add(100);
        }

        public SpectrumModel Spectrum { get; set; }

        public string Filename { get; set; }

        #region MajorLinesVisibility
@@ -194,7 +187,7 @@ namespace INAF.Apps.Uwp.Charts
        public WavelengthMeasureUnit SelectedWavelengthMeasureUnit
        {
            get { return selectedWavelengthMeasureUnit; }
            set { selectedWavelengthMeasureUnit = value; saveWavelengthMeasureUnits(value); switchXAxisValues(); RaisePropertyChanged(nameof(SelectedWavelengthMeasureUnit)); }
            set { selectedWavelengthMeasureUnit = value; saveWavelengthMeasureUnits(value); RaisePropertyChanged(nameof(SelectedWavelengthMeasureUnit)); }
        }

        public List<WavelengthMeasureUnit> WavelengthMeasureUnits { get; private set; }
@@ -218,71 +211,5 @@ namespace INAF.Apps.Uwp.Charts
            settingsHelper.save(Constants.WAVELENGTH_MEASURE_UNITS, wavelengthMeasureUnit.ToString());
        }
        #endregion

        #region major step
        private double selectedXAxisMajorStep;
        public double SelectedXAxisMajorStep
        {
            get { return selectedXAxisMajorStep; }
            private set { selectedXAxisMajorStep = value; RaisePropertyChanged(nameof(SelectedXAxisMajorStep)); }
        }

        public List<double> XAxisMajorStepValues { get; private set; }

        private void setXAxisMajorStep()
        {
            switch (SelectedWavelengthMeasureUnit)
            {
                case WavelengthMeasureUnit.Nanometers:
                    SelectedXAxisMajorStep = XAxisMajorStepValues.FirstOrDefault(x => x == Constants.X_AXIS_MAJOR_STEP_NANOMETERS);
                    break;
                case WavelengthMeasureUnit.Microns:
                    SelectedXAxisMajorStep = XAxisMajorStepValues.FirstOrDefault(x => x == Constants.X_AXIS_MAJOR_STEP_MICRONS);
                    break;
            }
        }
        #endregion

        #region axes boundaries
        public AxisBoundariesModel XAxisBoundaries { get; private set; }

        public AxisBoundariesModel YAxisBoundaries { get; private set; }
        #endregion

        public string XAxisTitle { get; set; }

        public string YAxisTitle { get; set; }

        public void createSummary()
        {
            double xmax = Spectrum.Elements.Max(x => x.X);
            double xmin = Spectrum.Elements.Min(x => x.X);
            XAxisBoundaries = new AxisBoundariesModel("x", xmin, xmax, Spectrum.Elements.FirstOrDefault().MeasureUnit);

            double ymax = Spectrum.Elements.Max(x => x.Y);
            double ymin = Spectrum.Elements.Min(x => x.Y);
            YAxisBoundaries = new AxisBoundariesModel("y", ymin, ymax, Spectrum.Elements.FirstOrDefault().MeasureUnit);
        }

        public void setSpectrum(SpectrumModel spectrum)
        {
            Spectrum = spectrum;

            createSummary();

            setXAxisMajorStep();
        }

        private void switchXAxisValues()
        {
            if (Spectrum != null)
            {
                Spectrum.switchToMeasureUnit(SelectedWavelengthMeasureUnit);

                XAxisBoundaries.switchToMeasureUnit(SelectedWavelengthMeasureUnit);

                setXAxisMajorStep();
            }
        }
    }
}
+1 −2
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@
        public static readonly string PAN_MODE = "panmode";
        public static readonly string ZOOM_MODE = "zoommode";

        public static readonly double X_AXIS_MAJOR_STEP_MICRONS = 0.1;
        public static readonly double X_AXIS_MAJOR_STEP_NANOMETERS = 100;
        public static readonly string ARE_SEPARATORS_VISIBLE = "areseparatorsvisible";
    }
}
+0 −8
Original line number Diff line number Diff line
@@ -10,14 +10,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.Constants
            Txt
        }

        public enum FileType
        {
            [Description("Raw")]
            Raw,
            [Description("Ref")]
            Ref
        }

        public enum Status
        {
            None,
Loading