/// <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));
     }
 }
Exemple #3
0
        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);
        }
Exemple #6
0
        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>();
        }
Exemple #7
0
        /// <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;
 }