Loading INAF.Apps.Uwp.SLabDataManager/App.xaml.cs +1 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,7 @@ namespace INAF.Apps.Uwp.SLabDataManager .AddSingleton<FitMethodsHelper>() .AddSingleton<Logger>(logger) .AddSingleton<RecentFilesHelper>() .AddSingleton<UserControlsHelper>() .AddSingleton<RemoteOperationsRepository>() .AddSingleton<SecondaryWindowHelper>() .AddSingleton<SegmentFitModelsFactory>() Loading INAF.Apps.Uwp.SLabDataManager/Converters/Converters.cs +71 −0 Original line number Diff line number Diff line using INAF.Apps.Uwp.Charts; using INAF.Apps.Uwp.SLabDataManager.Charts.Containers; using INAF.Apps.Uwp.SLabDataManager.Helpers; using INAF.Apps.Uwp.SLabDataManager.Helpers.UI; using INAF.Apps.Uwp.SLabDataManager.Models; using INAF.Apps.Uwp.SLabDataManager.ViewModels; using INAF.Libraries.NetStandard.Extensions; Loading @@ -10,6 +11,7 @@ using System; using System.Collections.Generic; using System.IO; using Telerik.Charting; using Windows.UI.Xaml; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Media; using static INAF.Libraries.NetStandard.SLabCommonModels.Enums.Enums; Loading Loading @@ -125,6 +127,29 @@ namespace INAF.Apps.Uwp.SLabDataManager.Converters } } public sealed class IsUserControlAvailableConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { try { string userControlName = (string)parameter; var rightPanelsTabsHelper = Ioc.Default.GetRequiredService<UserControlsHelper>(); return rightPanelsTabsHelper.containsUserControl(userControlName); } catch (Exception) { return false; } } public object ConvertBack(object value, Type targetType, object parameter, string language) { throw new NotImplementedException(); } } public sealed class HalfWidthConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) Loading Loading @@ -207,6 +232,52 @@ namespace INAF.Apps.Uwp.SLabDataManager.Converters } } public sealed class TabViewItemIsSelectedConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { try { string userControlName = (string)parameter; var rightPanelsTabsHelper = Ioc.Default.GetRequiredService<UserControlsHelper>(); return rightPanelsTabsHelper.RequiredUserControlName.Equals(userControlName); } catch (Exception) { return false; } } public object ConvertBack(object value, Type targetType, object parameter, string language) { throw new NotImplementedException(); } } public sealed class TabViewItemVisibilityConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { try { string userControlName = (string)parameter; var rightPanelsTabsHelper = Ioc.Default.GetRequiredService<UserControlsHelper>(); return rightPanelsTabsHelper.containsUserControl(userControlName) ? Visibility.Visible : Visibility.Collapsed; } catch (Exception) { return Visibility.Collapsed; } } public object ConvertBack(object value, Type targetType, object parameter, string language) { throw new NotImplementedException(); } } public sealed class ThemeBrushConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) Loading INAF.Apps.Uwp.SLabDataManager/Helpers/UI/UserControlsHelper.cs 0 → 100644 +107 −0 Original line number Diff line number Diff line using Microsoft.Toolkit.Mvvm.ComponentModel; using System.Collections.Generic; using System.Linq; using Windows.UI.Xaml.Controls; namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI { public class UserControlsHelper : ObservableObject { public UserControlsHelper() { IsAvailable = false; UserControls = new List<UserControl>(); } #region properties /* this property is used in x:Load attribute to remove usercontrols after they have been closed */ private bool isAnyUserControlAddedOrRemoved; public bool IsAnyUserControlAddedOrRemoved { get { return isAnyUserControlAddedOrRemoved; } set { SetProperty(ref isAnyUserControlAddedOrRemoved, value); } } private bool isAvailable; public bool IsAvailable { get { return isAvailable; } private set { SetProperty(ref isAvailable, value); } } public string RequiredUserControlName { get; set; } public List<UserControl> UserControls { get; private set; } public int UserControlsNum { get { return UserControls.Count; } } #endregion #region methods public void addUserControl(UserControl userControl) { if (containsUserControl(userControl.Name)) return; /* add usercontrol to collection */ UserControls.Add(userControl); /* bring to front */ bringToFrontUserControl(userControl.Name); /* check whether the TabViewItems are visible or not */ checkIsAvailable(); /* set visibility of each tabViewItem */ raiseIsAnyUserControlAddedOrRemoved(); } private void checkIsAvailable() { if (UserControls.Count > 1) IsAvailable = true; else IsAvailable = false; } public bool containsUserControl(string name) { return UserControls.Any(x => x.Name.Equals(name)); } public void bringToFrontUserControl(string name) { foreach (UserControl userControl in UserControls) { if (userControl.Name.Equals(name)) userControl.SetValue(Canvas.ZIndexProperty, 10); else userControl.SetValue(Canvas.ZIndexProperty, 1); } } private void raiseIsAnyUserControlAddedOrRemoved() { IsAnyUserControlAddedOrRemoved = true; isAnyUserControlAddedOrRemoved = false; } public void removeUserControl(UserControl userControl) { if (!UserControls.Any(x => x.Name.Equals(userControl.Name))) return; var foundUserControl = UserControls.FirstOrDefault(x => x.Name.Equals(userControl.Name)); int index = UserControls.IndexOf(foundUserControl); if (index > -1) UserControls.RemoveAt(index); /* check whether the TabViewItems are visible or not */ checkIsAvailable(); /* set visibility of each tabViewItem */ raiseIsAnyUserControlAddedOrRemoved(); } #endregion } } INAF.Apps.Uwp.SLabDataManager/Helpers/UI/XamlHelpers.cs +3 −0 Original line number Diff line number Diff line using INAF.Apps.Uwp.SLabDataManager.Charts.Containers; using INAF.Apps.Uwp.SLabDataManager.Models; using INAF.Apps.Uwp.SLabDataManager.Models.Spectrum; using INAF.Apps.Uwp.SLabDataManager.ViewModels; using INAF.Libraries.NetStandard.ScienceModels.Extensions; using Microsoft.Toolkit.Mvvm.Input; using System; using static INAF.Apps.Uwp.SLabDataManager.Constants.Enums; namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI Loading INAF.Apps.Uwp.SLabDataManager/INAF.Apps.Uwp.SLabDataManager.csproj +1 −0 Original line number Diff line number Diff line Loading @@ -184,6 +184,7 @@ <Compile Include="Helpers\UI\Chart\FitMethodsHelper.cs" /> <Compile Include="Helpers\UI\Chart\SeriesHelper.cs" /> <Compile Include="Helpers\UI\GridLines.cs" /> <Compile Include="Helpers\UI\UserControlsHelper.cs" /> <Compile Include="Helpers\UI\ZoomHelper.cs" /> <Compile Include="Helpers\XmlReaders\ConfigReader.cs" /> <Compile Include="Helpers\CustomPaletteHelper.cs" /> Loading Loading
INAF.Apps.Uwp.SLabDataManager/App.xaml.cs +1 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,7 @@ namespace INAF.Apps.Uwp.SLabDataManager .AddSingleton<FitMethodsHelper>() .AddSingleton<Logger>(logger) .AddSingleton<RecentFilesHelper>() .AddSingleton<UserControlsHelper>() .AddSingleton<RemoteOperationsRepository>() .AddSingleton<SecondaryWindowHelper>() .AddSingleton<SegmentFitModelsFactory>() Loading
INAF.Apps.Uwp.SLabDataManager/Converters/Converters.cs +71 −0 Original line number Diff line number Diff line using INAF.Apps.Uwp.Charts; using INAF.Apps.Uwp.SLabDataManager.Charts.Containers; using INAF.Apps.Uwp.SLabDataManager.Helpers; using INAF.Apps.Uwp.SLabDataManager.Helpers.UI; using INAF.Apps.Uwp.SLabDataManager.Models; using INAF.Apps.Uwp.SLabDataManager.ViewModels; using INAF.Libraries.NetStandard.Extensions; Loading @@ -10,6 +11,7 @@ using System; using System.Collections.Generic; using System.IO; using Telerik.Charting; using Windows.UI.Xaml; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Media; using static INAF.Libraries.NetStandard.SLabCommonModels.Enums.Enums; Loading Loading @@ -125,6 +127,29 @@ namespace INAF.Apps.Uwp.SLabDataManager.Converters } } public sealed class IsUserControlAvailableConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { try { string userControlName = (string)parameter; var rightPanelsTabsHelper = Ioc.Default.GetRequiredService<UserControlsHelper>(); return rightPanelsTabsHelper.containsUserControl(userControlName); } catch (Exception) { return false; } } public object ConvertBack(object value, Type targetType, object parameter, string language) { throw new NotImplementedException(); } } public sealed class HalfWidthConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) Loading Loading @@ -207,6 +232,52 @@ namespace INAF.Apps.Uwp.SLabDataManager.Converters } } public sealed class TabViewItemIsSelectedConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { try { string userControlName = (string)parameter; var rightPanelsTabsHelper = Ioc.Default.GetRequiredService<UserControlsHelper>(); return rightPanelsTabsHelper.RequiredUserControlName.Equals(userControlName); } catch (Exception) { return false; } } public object ConvertBack(object value, Type targetType, object parameter, string language) { throw new NotImplementedException(); } } public sealed class TabViewItemVisibilityConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { try { string userControlName = (string)parameter; var rightPanelsTabsHelper = Ioc.Default.GetRequiredService<UserControlsHelper>(); return rightPanelsTabsHelper.containsUserControl(userControlName) ? Visibility.Visible : Visibility.Collapsed; } catch (Exception) { return Visibility.Collapsed; } } public object ConvertBack(object value, Type targetType, object parameter, string language) { throw new NotImplementedException(); } } public sealed class ThemeBrushConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) Loading
INAF.Apps.Uwp.SLabDataManager/Helpers/UI/UserControlsHelper.cs 0 → 100644 +107 −0 Original line number Diff line number Diff line using Microsoft.Toolkit.Mvvm.ComponentModel; using System.Collections.Generic; using System.Linq; using Windows.UI.Xaml.Controls; namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI { public class UserControlsHelper : ObservableObject { public UserControlsHelper() { IsAvailable = false; UserControls = new List<UserControl>(); } #region properties /* this property is used in x:Load attribute to remove usercontrols after they have been closed */ private bool isAnyUserControlAddedOrRemoved; public bool IsAnyUserControlAddedOrRemoved { get { return isAnyUserControlAddedOrRemoved; } set { SetProperty(ref isAnyUserControlAddedOrRemoved, value); } } private bool isAvailable; public bool IsAvailable { get { return isAvailable; } private set { SetProperty(ref isAvailable, value); } } public string RequiredUserControlName { get; set; } public List<UserControl> UserControls { get; private set; } public int UserControlsNum { get { return UserControls.Count; } } #endregion #region methods public void addUserControl(UserControl userControl) { if (containsUserControl(userControl.Name)) return; /* add usercontrol to collection */ UserControls.Add(userControl); /* bring to front */ bringToFrontUserControl(userControl.Name); /* check whether the TabViewItems are visible or not */ checkIsAvailable(); /* set visibility of each tabViewItem */ raiseIsAnyUserControlAddedOrRemoved(); } private void checkIsAvailable() { if (UserControls.Count > 1) IsAvailable = true; else IsAvailable = false; } public bool containsUserControl(string name) { return UserControls.Any(x => x.Name.Equals(name)); } public void bringToFrontUserControl(string name) { foreach (UserControl userControl in UserControls) { if (userControl.Name.Equals(name)) userControl.SetValue(Canvas.ZIndexProperty, 10); else userControl.SetValue(Canvas.ZIndexProperty, 1); } } private void raiseIsAnyUserControlAddedOrRemoved() { IsAnyUserControlAddedOrRemoved = true; isAnyUserControlAddedOrRemoved = false; } public void removeUserControl(UserControl userControl) { if (!UserControls.Any(x => x.Name.Equals(userControl.Name))) return; var foundUserControl = UserControls.FirstOrDefault(x => x.Name.Equals(userControl.Name)); int index = UserControls.IndexOf(foundUserControl); if (index > -1) UserControls.RemoveAt(index); /* check whether the TabViewItems are visible or not */ checkIsAvailable(); /* set visibility of each tabViewItem */ raiseIsAnyUserControlAddedOrRemoved(); } #endregion } }
INAF.Apps.Uwp.SLabDataManager/Helpers/UI/XamlHelpers.cs +3 −0 Original line number Diff line number Diff line using INAF.Apps.Uwp.SLabDataManager.Charts.Containers; using INAF.Apps.Uwp.SLabDataManager.Models; using INAF.Apps.Uwp.SLabDataManager.Models.Spectrum; using INAF.Apps.Uwp.SLabDataManager.ViewModels; using INAF.Libraries.NetStandard.ScienceModels.Extensions; using Microsoft.Toolkit.Mvvm.Input; using System; using static INAF.Apps.Uwp.SLabDataManager.Constants.Enums; namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI Loading
INAF.Apps.Uwp.SLabDataManager/INAF.Apps.Uwp.SLabDataManager.csproj +1 −0 Original line number Diff line number Diff line Loading @@ -184,6 +184,7 @@ <Compile Include="Helpers\UI\Chart\FitMethodsHelper.cs" /> <Compile Include="Helpers\UI\Chart\SeriesHelper.cs" /> <Compile Include="Helpers\UI\GridLines.cs" /> <Compile Include="Helpers\UI\UserControlsHelper.cs" /> <Compile Include="Helpers\UI\ZoomHelper.cs" /> <Compile Include="Helpers\XmlReaders\ConfigReader.cs" /> <Compile Include="Helpers\CustomPaletteHelper.cs" /> Loading