public SiriShortcutsSelectReportPeriodViewModel( ITogglDataSource dataSource, IInteractorFactory interactorFactory, IRxActionFactory rxActionFactory, ISchedulerProvider schedulerProvider, INavigationService navigationService) : base(navigationService) { Ensure.Argument.IsNotNull(dataSource, nameof(dataSource)); Ensure.Argument.IsNotNull(interactorFactory, nameof(interactorFactory)); Ensure.Argument.IsNotNull(rxActionFactory, nameof(rxActionFactory)); Ensure.Argument.IsNotNull(schedulerProvider, nameof(schedulerProvider)); this.interactorFactory = interactorFactory; PickWorkspace = rxActionFactory.FromAsync(pickWorkspace); var reportPeriods = Enum.GetValues(typeof(ReportPeriod)) .Cast <ReportPeriod>() .Where(p => p != ReportPeriod.Unknown) .ToImmutableList(); ReportPeriods = SelectReportPeriod .Select(selectedPeriod => reportPeriods.Select(p => new SelectableReportPeriodViewModel(p, p == selectedPeriod)).ToImmutableList()) .AsDriver(ImmutableList <SelectableReportPeriodViewModel> .Empty, schedulerProvider); WorkspaceName = SelectedWorkspace .Where(ws => ws != null) .Select(workspace => workspace.Name) .AsDriver(schedulerProvider); }
public override async Task Initialize() { await base.Initialize(); var defaultWorkspace = await interactorFactory.GetDefaultWorkspace().Execute(); SelectedWorkspace.Accept(defaultWorkspace); }
public bool IsGitSourceControlled(string localItemPath) { try { if (SelectedWorkspace == null || string.IsNullOrEmpty(SelectedWorkspace.TryGetServerItemForLocalItem(localItemPath))) { return(ServiceProvider.Get <DTE2>().SourceControl.IsItemUnderSCC(localItemPath) || GitHelper.IsGitControlled(localItemPath)); } return(false); } catch (Exception) { return(false); } }
private async Task pickWorkspace() { var defaultWorkspace = await interactorFactory.GetDefaultWorkspace() .TrackException <InvalidOperationException, IThreadSafeWorkspace>( "SiriShortcutsSelectReportPeriodViewModel.PickWorkspace") .Execute(); var selectWorkspaceParams = new SelectWorkspaceParameters(Resources.SelectWorkspace, SelectedWorkspace.Value?.Id ?? defaultWorkspace.Id); var selectedWorkspaceId = await Navigate <SelectWorkspaceViewModel, SelectWorkspaceParameters, long>(selectWorkspaceParams); var workspace = await interactorFactory.GetWorkspaceById(selectedWorkspaceId).Execute(); SelectedWorkspace.Accept(workspace); }
private async void SelectWorkspace() { await Task.Run(() => { if (SelectedWorkspaceIndex > Workspaces.Count - 1) { return; } SelectedWorkspace = Workspaces[SelectedWorkspaceIndex]; if (!Directory.Exists(SelectedWorkspace.Workspace.Path)) { Messenger.Default.Send(new ShowMessageDialogMessage("Workspace folder not available", "The workspace folder seems to be deleted.")); return; } SelectedWorkspace.Init(); SelectedTabIndex = 1; Logger.Debug("Selected workspace {0}", SelectedWorkspace.Workspace.Name); }); }
private async Task pickWorkspace() { var defaultWorkspaceId = SelectedWorkspace.Value?.Id ?? (await interactorFactory.GetDefaultWorkspace() .TrackException <InvalidOperationException, IThreadSafeWorkspace>( "SiriShortcutsSelectReportPeriodViewModel.PickWorkspace") .Execute()).Id; var allWorkspaces = await interactorFactory.GetAllWorkspaces().Execute(); var selectWorkspaces = allWorkspaces.Select(selectOptionFromWorkspace); var selectedWorkspaceIndex = allWorkspaces.IndexOf(ws => ws.Id == defaultWorkspaceId); var selectedWorkspace = await View.Select(Resources.Workspace, selectWorkspaces, selectedWorkspaceIndex); if (SelectedWorkspace.Value?.Id == selectedWorkspace.Id) { return; } SelectedWorkspace.Accept(selectedWorkspace); SelectOption <IThreadSafeWorkspace> selectOptionFromWorkspace(IThreadSafeWorkspace ws) => new SelectOption <IThreadSafeWorkspace>(ws, ws.Name); }