Loading INAF.Apps.Uwp.SLabDataManager/Helpers/UI/UserControlsHelper.cs +33 −10 Original line number Diff line number Diff line Loading @@ -31,12 +31,15 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI public string RequiredUserControlName { get; set; } /* those are usercontrols currently opened (items are added in ChartPage.openUserControlAsync) */ public List<UserControl> UserControls { get; private set; } public int UserControlsNum { get { return UserControls.Count; } } /* those are user controls to be closed in ChartPage (items are added when the 'clearChartPageAsync' method is called) */ public List<string> UserControlsToBeClosed { get; private set; } /* those are user controls to be opened when navigating to ChartPage (items are added during 'manageProcessedFileAsync' method, while reading xml files) */ public List<string> UserControlsToBeOpened { get; private set; } #endregion Loading Loading @@ -131,6 +134,12 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI if (UserControlsToBeClosed?.Count() > 0) UserControlsToBeClosed.Clear(); } public bool containsUserControlToBeClosed(string name) { return UserControlsToBeClosed.Any(x => x.Equals(name)); } public void initUserControlsToBeClosed() { if (UserControlsToBeClosed == null) Loading @@ -141,10 +150,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI public void removeUserControlToBeClosed(string userControlName) { if (!containsUserControl(userControlName)) return; if (!UserControlsToBeClosed.Any(x => x.Equals(userControlName))) if (!containsUserControlToBeClosed(userControlName)) return; /* remove usercontrol from collection */ Loading @@ -153,10 +159,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI public void tryAddUserControlToBeClosed(string userControlName) { if (!containsUserControl(userControlName)) return; if (UserControlsToBeClosed.Any(x => x.Equals(userControlName))) if (containsUserControlToBeClosed(userControlName)) return; /* add usercontrol to collection */ Loading @@ -175,7 +178,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI if (UserControlsToBeOpened == null) UserControlsToBeOpened = new List<string>(); else UserControlsToBeClosed.Clear(); UserControlsToBeOpened.Clear(); } public void clearUserControlsToBeOpened() Loading @@ -184,9 +187,23 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI UserControlsToBeOpened.Clear(); } public bool containsUserControlToBeOpened(string name) { return UserControlsToBeOpened.Any(x => x.Equals(name)); } public void removeUserControlToBeOpened(string userControlName) { if (!containsUserControlToBeOpened(userControlName)) return; /* remove usercontrol from collection */ UserControlsToBeOpened.Remove(userControlName); } public void tryAddUserControlToBeOpened(string userControlName) { if (UserControlsToBeOpened.Any(x => x.Equals(userControlName))) if (containsUserControlToBeOpened(userControlName)) return; /* add usercontrol to collection */ Loading @@ -196,6 +213,12 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI public void selectUserControlsToBeClosed() { if (UserControlsToBeClosed == null || !UserControlsToBeClosed.Any()) return; if (UserControlsToBeOpened == null || !UserControlsToBeOpened.Any()) return; var remainingUserControlsToBeClosed = UserControlsToBeClosed.Except(UserControlsToBeOpened); if (remainingUserControlsToBeClosed.Any()) UserControlsToBeClosed = remainingUserControlsToBeClosed.ToList(); Loading INAF.Apps.Uwp.SLabDataManager/ViewModels/BaseViewModel.cs +1 −3 Original line number Diff line number Diff line Loading @@ -179,7 +179,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels #endregion #region clear all protected async Task<ChartViewModel> clearChartPageAsync() protected async Task clearChartPageAsync() { /* retrieve chartViewModel and delete RAW file and derived ones */ var chartViewModel = serviceProvider.GetRequiredService<ChartViewModel>(); Loading @@ -188,8 +188,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels await chartViewModel.deleteProcessedSpectraProcedureAsync(); /* add all sercontrols to the list for being closed */ chartViewModel.closeAllUserControlsProcedure(); return chartViewModel; } private async Task clearFilesAsync() Loading INAF.Apps.Uwp.SLabDataManager/ViewModels/ChartViewModelSegmentsFit.cs +2 −2 Original line number Diff line number Diff line Loading @@ -70,9 +70,9 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels private async Task clearSegmentsFitAsync(bool isAskDeleteContinuumRemovedSpectrumRequired = true) { /* remove all items in left-panel with data about segments fit */ /* remove all items in left-panel with data about segments fit (do it if SegmentsFitViewModel has been initialized) */ SegmentsFitViewModel?.init(); SegmentsFitViewModel.raiseIsPointsRemovalRequired(); SegmentsFitViewModel?.raiseIsPointsRemovalRequired(); /* remove continuum spectrum */ await WorkingItems.SpectraContainer.tryRemoveSpectrumOfTypeAsync(SpectrumType.Continuum); Loading INAF.Apps.Uwp.SLabDataManager/ViewModels/MainViewModel.cs +22 −22 Original line number Diff line number Diff line Loading @@ -148,10 +148,10 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels initUserControlsManagement(); /* read permissions for current user */ await tryReadUserPermissionsAsync(); await tryReadUserPermissionsAsync().ConfigureAwait(true); /* read data for remote operations */ await readRemoteOperationsAsync(); await readRemoteOperationsAsync().ConfigureAwait(true); /* fill list of recent files */ await tryReadRecentFilesProcedureAsync().ConfigureAwait(true); Loading @@ -165,7 +165,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels showDialogMessage("RemoteOperationsNotAvailableErrorMessage".GetText(), DialogMessageType.Warning); } IsLoading = false; UpdateUIHelper.UpdateUIAsync(() => IsLoading = false); } private void initUserControlsManagement() Loading Loading @@ -313,16 +313,16 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels if (spectrumType == SpectrumType.Raw) { /* clearing chart page and processedspectracontainer is not required on 1st file loading */ if (!App.IsFirstRawFileReading) { //if (!App.IsFirstRawFileReading) //{ /* clear chart page, if any chart is available */ await clearChartPageAsync(); /* clear all retrieved processed spectra, if any is available */ tryClearProcessedSpectra(); } //} App.IsFirstRawFileReading = false; //App.IsFirstRawFileReading = false; } /* try reading the file to make spectrum available */ Loading Loading @@ -448,7 +448,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels hideInfoBar(); /* retrieve info about parent file */ await retrieveRelatedFileAsync((int)spectrum.ParentId); await retrieveRelatedFileAsync((int)spectrum.ParentId).ConfigureAwait(true); } else { Loading @@ -467,7 +467,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels DeserializedSpectrum spectrumObj = null; var remoteOperationsManager = serviceProvider.GetRequiredService<RemoteOperationsManager>(); var spectrumFile = await remoteOperationsManager.getParentFileAsync(relatedFileId); var spectrumFile = await remoteOperationsManager.getParentFileAsync(relatedFileId).ConfigureAwait(true); if (spectrumFile != null) { var xmlSerializer = new XmlSerializer(typeof(DeserializedSpectrum)); Loading @@ -489,7 +489,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels await WorkingItems.SpectraContainer.addOrUpdateSpectrumAsync(chartSpectrumModel, updateSpectraSummariesContainer: false); /* try to load settings for current processed file and to load parent files */ await manageProcessedFileAsync(chartSpectrumModel); await manageProcessedFileAsync(chartSpectrumModel).ConfigureAwait(true); } } } Loading @@ -504,7 +504,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels if (!isFromRecentFileSelection) { string token = storageItemsAccessHelper.save(file); addToRecentFilesAsync(file.Path, token, key); addToRecentFilesAsync(file.Path, token, key).ConfigureAwait(true); } /* remember access to file */ Loading @@ -515,13 +515,13 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels WorkingItems.LabSpectraSummaries.resetSummaryOfType(SpectrumType.Ref); /* clear chart for adding newly loaded spectra */ ChartViewModel = await clearChartPageAsync(); await clearChartPageAsync(); /* init container for user controls to be opened after all files have been retrieved */ UserControlsHelper.initUserControlsToBeOpened(); var xmlSpectrumFileReader = serviceProvider.GetRequiredService<XmlSpectrumFileReader>(); (IChartSpectrumModel spectrum, string exMsg) result = await xmlSpectrumFileReader.readFileAsync(key); (IChartSpectrumModel spectrum, string exMsg) result = await xmlSpectrumFileReader.readFileAsync(key).ConfigureAwait(true); if (!string.IsNullOrEmpty(result.exMsg)) { Loading @@ -544,7 +544,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels await WorkingItems.SpectraContainer.addOrUpdateSpectrumAsync(result.spectrum, updateSpectraSummariesContainer: false); /* try to load settings for current processed file and to load parent files */ await manageProcessedFileAsync(result.spectrum); await manageProcessedFileAsync(result.spectrum).ConfigureAwait(true); } IsLoading = false; Loading @@ -558,7 +558,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels IsHideRecentFilesFlyoutRequired = true; isHideRecentFilesFlyoutRequired = false; // reset variable for next notification await readXmlFileAsync(file, isFromRecentFileSelection: true); await readXmlFileAsync(file, isFromRecentFileSelection: true).ConfigureAwait(true); } } Loading INAF.Apps.Uwp.SLabDataManager/Views/ChartPage.xaml.cs +19 −11 Original line number Diff line number Diff line Loading @@ -194,10 +194,10 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views //spectrumChart.Loaded += (s, evt) => //{ /* 1st, close opened user controls after raw file has changed */ tryCloseUserControls(); await tryCloseUserControlsAsync(); /* open required user controls, if necessary */ tryOpenUserControls(); await tryOpenUserControlsAsync(); //}; } break; Loading Loading @@ -695,6 +695,8 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views /* if user control is already open, then execute settings restore... */ var localUserControl = ViewModel.UserControlsHelper.UserControls.FirstOrDefault(x => x.Name.Equals(userControlName)); await ViewModel.tryManageProcessedSpectraSettingsAsync(localUserControl); /* user control is already opened, so let's remove it from list of items to be opened */ ViewModel.UserControlsHelper.removeUserControlToBeOpened(userControlName); return; } Loading Loading @@ -770,32 +772,38 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views hideFlyout(userControlName); } private async Task tryCloseUserControls() private async Task tryCloseUserControlsAsync() { if (!ViewModel.UserControlsHelper.areUserControleToBeClosedAvailable()) return; ViewModel.UserControlsHelper.selectUserControlsToBeClosed(); foreach (var userControlName in ViewModel.UserControlsHelper.UserControlsToBeClosed) int userControlsToBeClosedNum = ViewModel.UserControlsHelper.UserControlsToBeClosed.Count; for (int i = userControlsToBeClosedNum - 1; i >= 0; i--) { System.Diagnostics.Debug.WriteLine($"closing {userControlName}..."); var userControlName = ViewModel.UserControlsHelper.UserControlsToBeClosed[i]; closeUserControl(userControlName); await Task.Delay(TimeSpan.FromMilliseconds((AnimationsHelper.ANIMATION_DURATION_MS + 100))); /* remove item from collection */ /* user control has been opencloseded, so let's remove it from list of items to be closed */ ViewModel.UserControlsHelper.removeUserControlToBeClosed(userControlName); } } private async void tryOpenUserControls() private async Task tryOpenUserControlsAsync() { if (!ViewModel.UserControlsHelper.areUserControleToBeOpenedAvailable()) return; foreach (var userControlName in ViewModel.UserControlsHelper.UserControlsToBeOpened) int userControlsToBeOpenedNum = ViewModel.UserControlsHelper.UserControlsToBeOpened.Count; for (int i = userControlsToBeOpenedNum - 1; i >= 0; i--) { var userControlName = ViewModel.UserControlsHelper.UserControlsToBeOpened[i]; /* open user control */ await openUserControlAsync(userControlName); await Task.Delay(TimeSpan.FromMilliseconds((AnimationsHelper.ANIMATION_DURATION_MS + 100))); /* user control has been opened, so let's remove it from list of items to be opened */ ViewModel.UserControlsHelper.removeUserControlToBeOpened(userControlName); } } #endregion Loading Loading
INAF.Apps.Uwp.SLabDataManager/Helpers/UI/UserControlsHelper.cs +33 −10 Original line number Diff line number Diff line Loading @@ -31,12 +31,15 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI public string RequiredUserControlName { get; set; } /* those are usercontrols currently opened (items are added in ChartPage.openUserControlAsync) */ public List<UserControl> UserControls { get; private set; } public int UserControlsNum { get { return UserControls.Count; } } /* those are user controls to be closed in ChartPage (items are added when the 'clearChartPageAsync' method is called) */ public List<string> UserControlsToBeClosed { get; private set; } /* those are user controls to be opened when navigating to ChartPage (items are added during 'manageProcessedFileAsync' method, while reading xml files) */ public List<string> UserControlsToBeOpened { get; private set; } #endregion Loading Loading @@ -131,6 +134,12 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI if (UserControlsToBeClosed?.Count() > 0) UserControlsToBeClosed.Clear(); } public bool containsUserControlToBeClosed(string name) { return UserControlsToBeClosed.Any(x => x.Equals(name)); } public void initUserControlsToBeClosed() { if (UserControlsToBeClosed == null) Loading @@ -141,10 +150,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI public void removeUserControlToBeClosed(string userControlName) { if (!containsUserControl(userControlName)) return; if (!UserControlsToBeClosed.Any(x => x.Equals(userControlName))) if (!containsUserControlToBeClosed(userControlName)) return; /* remove usercontrol from collection */ Loading @@ -153,10 +159,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI public void tryAddUserControlToBeClosed(string userControlName) { if (!containsUserControl(userControlName)) return; if (UserControlsToBeClosed.Any(x => x.Equals(userControlName))) if (containsUserControlToBeClosed(userControlName)) return; /* add usercontrol to collection */ Loading @@ -175,7 +178,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI if (UserControlsToBeOpened == null) UserControlsToBeOpened = new List<string>(); else UserControlsToBeClosed.Clear(); UserControlsToBeOpened.Clear(); } public void clearUserControlsToBeOpened() Loading @@ -184,9 +187,23 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI UserControlsToBeOpened.Clear(); } public bool containsUserControlToBeOpened(string name) { return UserControlsToBeOpened.Any(x => x.Equals(name)); } public void removeUserControlToBeOpened(string userControlName) { if (!containsUserControlToBeOpened(userControlName)) return; /* remove usercontrol from collection */ UserControlsToBeOpened.Remove(userControlName); } public void tryAddUserControlToBeOpened(string userControlName) { if (UserControlsToBeOpened.Any(x => x.Equals(userControlName))) if (containsUserControlToBeOpened(userControlName)) return; /* add usercontrol to collection */ Loading @@ -196,6 +213,12 @@ namespace INAF.Apps.Uwp.SLabDataManager.Helpers.UI public void selectUserControlsToBeClosed() { if (UserControlsToBeClosed == null || !UserControlsToBeClosed.Any()) return; if (UserControlsToBeOpened == null || !UserControlsToBeOpened.Any()) return; var remainingUserControlsToBeClosed = UserControlsToBeClosed.Except(UserControlsToBeOpened); if (remainingUserControlsToBeClosed.Any()) UserControlsToBeClosed = remainingUserControlsToBeClosed.ToList(); Loading
INAF.Apps.Uwp.SLabDataManager/ViewModels/BaseViewModel.cs +1 −3 Original line number Diff line number Diff line Loading @@ -179,7 +179,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels #endregion #region clear all protected async Task<ChartViewModel> clearChartPageAsync() protected async Task clearChartPageAsync() { /* retrieve chartViewModel and delete RAW file and derived ones */ var chartViewModel = serviceProvider.GetRequiredService<ChartViewModel>(); Loading @@ -188,8 +188,6 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels await chartViewModel.deleteProcessedSpectraProcedureAsync(); /* add all sercontrols to the list for being closed */ chartViewModel.closeAllUserControlsProcedure(); return chartViewModel; } private async Task clearFilesAsync() Loading
INAF.Apps.Uwp.SLabDataManager/ViewModels/ChartViewModelSegmentsFit.cs +2 −2 Original line number Diff line number Diff line Loading @@ -70,9 +70,9 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels private async Task clearSegmentsFitAsync(bool isAskDeleteContinuumRemovedSpectrumRequired = true) { /* remove all items in left-panel with data about segments fit */ /* remove all items in left-panel with data about segments fit (do it if SegmentsFitViewModel has been initialized) */ SegmentsFitViewModel?.init(); SegmentsFitViewModel.raiseIsPointsRemovalRequired(); SegmentsFitViewModel?.raiseIsPointsRemovalRequired(); /* remove continuum spectrum */ await WorkingItems.SpectraContainer.tryRemoveSpectrumOfTypeAsync(SpectrumType.Continuum); Loading
INAF.Apps.Uwp.SLabDataManager/ViewModels/MainViewModel.cs +22 −22 Original line number Diff line number Diff line Loading @@ -148,10 +148,10 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels initUserControlsManagement(); /* read permissions for current user */ await tryReadUserPermissionsAsync(); await tryReadUserPermissionsAsync().ConfigureAwait(true); /* read data for remote operations */ await readRemoteOperationsAsync(); await readRemoteOperationsAsync().ConfigureAwait(true); /* fill list of recent files */ await tryReadRecentFilesProcedureAsync().ConfigureAwait(true); Loading @@ -165,7 +165,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels showDialogMessage("RemoteOperationsNotAvailableErrorMessage".GetText(), DialogMessageType.Warning); } IsLoading = false; UpdateUIHelper.UpdateUIAsync(() => IsLoading = false); } private void initUserControlsManagement() Loading Loading @@ -313,16 +313,16 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels if (spectrumType == SpectrumType.Raw) { /* clearing chart page and processedspectracontainer is not required on 1st file loading */ if (!App.IsFirstRawFileReading) { //if (!App.IsFirstRawFileReading) //{ /* clear chart page, if any chart is available */ await clearChartPageAsync(); /* clear all retrieved processed spectra, if any is available */ tryClearProcessedSpectra(); } //} App.IsFirstRawFileReading = false; //App.IsFirstRawFileReading = false; } /* try reading the file to make spectrum available */ Loading Loading @@ -448,7 +448,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels hideInfoBar(); /* retrieve info about parent file */ await retrieveRelatedFileAsync((int)spectrum.ParentId); await retrieveRelatedFileAsync((int)spectrum.ParentId).ConfigureAwait(true); } else { Loading @@ -467,7 +467,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels DeserializedSpectrum spectrumObj = null; var remoteOperationsManager = serviceProvider.GetRequiredService<RemoteOperationsManager>(); var spectrumFile = await remoteOperationsManager.getParentFileAsync(relatedFileId); var spectrumFile = await remoteOperationsManager.getParentFileAsync(relatedFileId).ConfigureAwait(true); if (spectrumFile != null) { var xmlSerializer = new XmlSerializer(typeof(DeserializedSpectrum)); Loading @@ -489,7 +489,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels await WorkingItems.SpectraContainer.addOrUpdateSpectrumAsync(chartSpectrumModel, updateSpectraSummariesContainer: false); /* try to load settings for current processed file and to load parent files */ await manageProcessedFileAsync(chartSpectrumModel); await manageProcessedFileAsync(chartSpectrumModel).ConfigureAwait(true); } } } Loading @@ -504,7 +504,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels if (!isFromRecentFileSelection) { string token = storageItemsAccessHelper.save(file); addToRecentFilesAsync(file.Path, token, key); addToRecentFilesAsync(file.Path, token, key).ConfigureAwait(true); } /* remember access to file */ Loading @@ -515,13 +515,13 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels WorkingItems.LabSpectraSummaries.resetSummaryOfType(SpectrumType.Ref); /* clear chart for adding newly loaded spectra */ ChartViewModel = await clearChartPageAsync(); await clearChartPageAsync(); /* init container for user controls to be opened after all files have been retrieved */ UserControlsHelper.initUserControlsToBeOpened(); var xmlSpectrumFileReader = serviceProvider.GetRequiredService<XmlSpectrumFileReader>(); (IChartSpectrumModel spectrum, string exMsg) result = await xmlSpectrumFileReader.readFileAsync(key); (IChartSpectrumModel spectrum, string exMsg) result = await xmlSpectrumFileReader.readFileAsync(key).ConfigureAwait(true); if (!string.IsNullOrEmpty(result.exMsg)) { Loading @@ -544,7 +544,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels await WorkingItems.SpectraContainer.addOrUpdateSpectrumAsync(result.spectrum, updateSpectraSummariesContainer: false); /* try to load settings for current processed file and to load parent files */ await manageProcessedFileAsync(result.spectrum); await manageProcessedFileAsync(result.spectrum).ConfigureAwait(true); } IsLoading = false; Loading @@ -558,7 +558,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels IsHideRecentFilesFlyoutRequired = true; isHideRecentFilesFlyoutRequired = false; // reset variable for next notification await readXmlFileAsync(file, isFromRecentFileSelection: true); await readXmlFileAsync(file, isFromRecentFileSelection: true).ConfigureAwait(true); } } Loading
INAF.Apps.Uwp.SLabDataManager/Views/ChartPage.xaml.cs +19 −11 Original line number Diff line number Diff line Loading @@ -194,10 +194,10 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views //spectrumChart.Loaded += (s, evt) => //{ /* 1st, close opened user controls after raw file has changed */ tryCloseUserControls(); await tryCloseUserControlsAsync(); /* open required user controls, if necessary */ tryOpenUserControls(); await tryOpenUserControlsAsync(); //}; } break; Loading Loading @@ -695,6 +695,8 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views /* if user control is already open, then execute settings restore... */ var localUserControl = ViewModel.UserControlsHelper.UserControls.FirstOrDefault(x => x.Name.Equals(userControlName)); await ViewModel.tryManageProcessedSpectraSettingsAsync(localUserControl); /* user control is already opened, so let's remove it from list of items to be opened */ ViewModel.UserControlsHelper.removeUserControlToBeOpened(userControlName); return; } Loading Loading @@ -770,32 +772,38 @@ namespace INAF.Apps.Uwp.SLabDataManager.Views hideFlyout(userControlName); } private async Task tryCloseUserControls() private async Task tryCloseUserControlsAsync() { if (!ViewModel.UserControlsHelper.areUserControleToBeClosedAvailable()) return; ViewModel.UserControlsHelper.selectUserControlsToBeClosed(); foreach (var userControlName in ViewModel.UserControlsHelper.UserControlsToBeClosed) int userControlsToBeClosedNum = ViewModel.UserControlsHelper.UserControlsToBeClosed.Count; for (int i = userControlsToBeClosedNum - 1; i >= 0; i--) { System.Diagnostics.Debug.WriteLine($"closing {userControlName}..."); var userControlName = ViewModel.UserControlsHelper.UserControlsToBeClosed[i]; closeUserControl(userControlName); await Task.Delay(TimeSpan.FromMilliseconds((AnimationsHelper.ANIMATION_DURATION_MS + 100))); /* remove item from collection */ /* user control has been opencloseded, so let's remove it from list of items to be closed */ ViewModel.UserControlsHelper.removeUserControlToBeClosed(userControlName); } } private async void tryOpenUserControls() private async Task tryOpenUserControlsAsync() { if (!ViewModel.UserControlsHelper.areUserControleToBeOpenedAvailable()) return; foreach (var userControlName in ViewModel.UserControlsHelper.UserControlsToBeOpened) int userControlsToBeOpenedNum = ViewModel.UserControlsHelper.UserControlsToBeOpened.Count; for (int i = userControlsToBeOpenedNum - 1; i >= 0; i--) { var userControlName = ViewModel.UserControlsHelper.UserControlsToBeOpened[i]; /* open user control */ await openUserControlAsync(userControlName); await Task.Delay(TimeSpan.FromMilliseconds((AnimationsHelper.ANIMATION_DURATION_MS + 100))); /* user control has been opened, so let's remove it from list of items to be opened */ ViewModel.UserControlsHelper.removeUserControlToBeOpened(userControlName); } } #endregion Loading