/// <summary> /// Map to a StartPageModel /// </summary> /// <param name="fromPage">From page.</param> /// <returns></returns> public static StartPageModel MapTo(StartPageViewModel fromPage) { var model = new StartPageModel(); foreach (var group in fromPage.ProjectGroups) { var projectGroupModel = new ProjectGroup { Name = group.Name, Background = group.Background, Foreground = group.Foreground, Index = group.Index, Expanded = group.Expanded, }; foreach (var project in group.Projects) { projectGroupModel.Projects.Add(new Project { Name = project.Name, Location = project.Location, Index = project.Index }); } model.ProjectGroups.Add(projectGroupModel); } return(model); }
/// <summary> /// Map from a StartPageModel /// </summary> /// <param name="fromPage">From page.</param> /// <param name="toPage">To page.</param> public static void MapFrom(StartPageModel fromPage, StartPageViewModel toPage) { toPage.ProjectGroups.Clear(); foreach (var group in fromPage.ProjectGroups) { toPage.ProjectGroups.Add(ProjectGroupViewModelMapper.MapFrom(group)); } }
public IActionResult Index() { var model = new StartPageModel(); model.TrendingCategories = context.Categories.Take(3).Select(c => new StartPageModel.TrendingCategory { Id = c.CategoryId, Name = c.CategoryName } ).ToList(); return(View(model)); }
/// <summary> /// OnAppearing /// </summary> protected override void OnAppearing() { base.OnAppearing(); // Refresh person list and deselect last selected person StartPageModel startPageModel = (StartPageModel)this.BindingContext; MainThread.BeginInvokeOnMainThread(() => { startPageModel.RefreshData(); startPageModel.SelectedPerson = null; }); }
/// <summary> /// Generate a start page from the specified folders using the extensions which are setup in the configuration form /// </summary> /// <param name="folders">The folders.</param> /// <returns></returns> public async Task <StartPageModel> GenerateAsync(string[] folders) { var appSettingsRepository = new AppSettingsRepository(); var data = appSettingsRepository.LoadSettings(); var matches = await Task.Run(() => _fileFinder.Find(folders, appSettingsRepository.SelectedExtensions, data.GroupAtDirectoryLevel)); if (_fileFinder.Cancelled) { return(null); } var model = new StartPageModel(); if (matches.Any()) { int projectGroupIndex = 1; foreach (var match in matches.OrderBy(t => new DirectoryInfo(t.Folder).Name)) { int projectIndex = 1; var projects = match .FileNames .OrderBy(Path.GetFileName) .Select(r => new Project { Name = Path.GetFileName(r), Location = r, Index = projectIndex++ }) .OrderBy(f => f.Location) .ToList(); model.ProjectGroups.Add(new ProjectGroup { Name = new DirectoryInfo(match.Folder).Name, Background = "WhiteSmoke", Foreground = "Black", Projects = projects, Expanded = true, Index = projectGroupIndex }); projectGroupIndex++; } } return(model); }
public StartPageViewModelTests() { var startPageModel = new StartPageModel(); startPageModel.ProjectGroups.Add(new ProjectGroup { Name = "Fake Project Group 1", Index = 1, Background = "groupBackground", Foreground = "groupForeground", Projects = new List <Project> { new Project { Name = "Project 1", Index = 1, Location = @"c:\fake\fake.sln" }, new Project { Name = "Project 2", Index = 2, Location = @"c:\fake\fake2.sln" }, } }); startPageModel.ProjectGroups.Add(new ProjectGroup { Name = "Fake Project Group 2", Background = "color1", Foreground = "color2", Index = 2, Projects = new List <Project> { new Project { Name = "Project 1", Index = 1, Location = @"c:\fake\fake.sln" }, new Project { Name = "Project 2", Index = 2, Location = @"c:\fake\fake2.sln" }, new Project { Name = "Project 3", Index = 3, Location = @"c:\fake\fake2.sln" }, } }); _dialogService = new Mock <IDialogService>(); _fileSystem = new Mock <IFileSystem>(); _fileSystem.Setup(x => x.FileExists(@"c:\fake\fake.json")).Returns(true); _startPageRepository = new Mock <IJsonFileRepository <StartPageModel> >(); _startPageRepository.Setup(x => x.Load(@"c:\fake\fake.json")).Returns(startPageModel); _startPageGenerator = new Mock <IStartPageGenerator>(); }
/// <summary> /// Builds the render models cache /// </summary> /// <param name="startPageModel">The start page model.</param> /// <returns></returns> public List <RenderModel> Build(StartPageModel startPageModel) { var models = new List <RenderModel>(); var brushConverter = new BrushConverter(); foreach (var projectGroup in startPageModel.ProjectGroups.OrderBy(t => t.Index)) { var model = new RenderModel { BackgroundBrush = (SolidColorBrush)(brushConverter.ConvertFrom(projectGroup.Background ?? "white")), ForegroundBrush = (SolidColorBrush)(brushConverter.ConvertFrom(projectGroup.Foreground ?? "black")), Name = projectGroup.Name, Index = projectGroup.Index, Expanded = projectGroup.Expanded, }; foreach (var project in projectGroup.Projects.OrderBy(t => t.Index)) { model.ProjectButtons.Add(new ProjectButton(project)); } models.Add(model); } return(models); }
/// <summary> /// Initializes a new instance of the <see cref="StartPagePreviewForm"/> class. /// </summary> /// <param name="startPageModel">The start page model.</param> public StartPagePreviewForm(StartPageModel startPageModel) : this() { _startPagePreviewViewModel.SelectedModel = startPageModel; }