private View CreateYearView(ViewGroup root, ViewItemYear year) { var view = new ListItemYearView(root, year); view.OnAddSemesterRequested += delegate { ViewModel.AddSemester(year.Identifier); }; view.OnOpenSemesterRequested += (s, viewItemSemester) => { ViewModel.OpenSemester(viewItemSemester.Identifier); }; view.OnEditRequested += YearView_OnEditRequested; view.OnEditSemesterRequested += YearView_OnEditSemesterRequested; //RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams( // RelativeLayout.LayoutParams.WrapContent, // RelativeLayout.LayoutParams.WrapContent // ); //var marginLeftRight = ThemeHelper.AsPx(context, 10); //var marginTopBottom = marginLeftRight / 2; //p.SetMargins(marginLeftRight, marginTopBottom, marginLeftRight, marginTopBottom); //view.LayoutParameters = p; return(view); }
public static AddYearViewModel CreateForEdit(BaseViewModel parent, ViewItemYear yearToEdit) { var viewModel = new AddYearViewModel(parent) { State = OperationState.Editing, YearToEdit = yearToEdit, Name = yearToEdit.Name }; viewModel.ListenToItem(yearToEdit.Identifier).Deleted += viewModel.Year_Deleted; return(viewModel); }
public ListItemYearView(ViewGroup root, ViewItemYear year) : base(Resource.Layout.ListItemYear, root) { DataContext = year; Year = year; FindViewById <Button>(Resource.Id.ButtonAddSemester).Click += delegate { OnAddSemesterRequested?.Invoke(this, new EventArgs()); }; FindViewById <View>(Resource.Id.YearName).Click += delegate { OnEditRequested?.Invoke(this, new EventArgs()); }; _itemsWrapperSemester = new ItemsControlWrapper(FindViewById <ViewGroup>(Resource.Id.ViewGroupSemesters)) { ItemsSource = year.Semesters, ItemTemplate = new CustomDataTemplate <ViewItemSemester>(CreateSemester) }; }
public void EditYear(ViewItemYear year) { ShowPopup(AddYearViewModel.CreateForEdit(MainScreenViewModel, year)); }
private void YearView_OnRequestAddSemester(object sender, ViewItemYear e) { ViewModel.AddSemester(e.Identifier); }
private void YearView_OnRequestEditYear(object sender, ViewItemYear e) { ViewModel.EditYear(e); }
public async Task TestAddingYear() { ViewModelYearsAndSemesters viewModel = await ViewModelYearsAndSemesters.LoadAsync(LocalAccountId); var years = viewModel.School.Years; Assert.AreEqual(0, years.Count); DataItemYear year = new DataItemYear() { Identifier = Guid.NewGuid(), Name = "Freshman" }; DataChanges changes = new DataChanges(); changes.Add(year); await DataStore.ProcessLocalChanges(changes); Assert.AreEqual(1, DataStore.TableYears.Count(), "Database count of years incorrect"); Assert.AreEqual(1, years.Count, "View model didn't update"); ViewItemYear viewYear = years.First(); Assert.AreEqual("Freshman", viewYear.Name); Assert.AreEqual(year.Identifier, viewYear.Identifier); Assert.IsTrue((DateTime.UtcNow - viewYear.DateCreated).TotalSeconds < 2); changes = new DataChanges(); changes.Add(new DataItemYear() { Identifier = Guid.NewGuid(), Name = "Sophomore" }); await DataStore.ProcessLocalChanges(changes); Assert.AreEqual(2, DataStore.TableYears.Count(), "Database count of years incorrect"); Assert.AreEqual(2, years.Count); Assert.AreEqual("Sophomore", years.Last().Name); // Sleep so that updated time should be different than created time await Task.Delay(20); DateTime originalDateCreated = years.First().DateCreated; changes = new DataChanges(); changes.Add(new DataItemYear() { Identifier = years.First().Identifier, Name = "Freshman Edited" }); await DataStore.ProcessLocalChanges(changes); Assert.AreEqual(2, DataStore.TableYears.Count()); Assert.AreEqual(2, years.Count); viewYear = years.First(); Assert.AreEqual("Freshman Edited", viewYear.Name); Assert.AreEqual(originalDateCreated, viewYear.DateCreated); Assert.AreNotEqual(viewYear.DateCreated, viewYear.Updated); }