public async override void OnViewCreated(View view, Bundle savedInstanceState) { base.OnViewCreated(view, savedInstanceState); viewModel = new EditTimeEntryViewModel(TimeEntryIds); viewModel.OnIsLoadingChanged += OnModelLoaded; await viewModel.Init(); }
private void TimeEntryEditStart(TimeEntry timeEntry) { _dataService.GetTimeEntryByTimeEntry(timeEntry).Subscribe(t => { var timeEntryEditViewModel = new EditTimeEntryViewModel(t, t.Task, _dataService); var editView = new EditTimeEntryViewWindow(); editView.ViewModel = (timeEntryEditViewModel); editView.Show(); }); }
public EditGroupedTimeEntryFragment(IList <TimeEntryData> timeEntryList) { var ids = timeEntryList.Select(t => t.Id.ToString()).ToList(); var args = new Bundle(); args.PutStringArrayList(TimeEntriesIdsArgument, ids); Arguments = args; viewModel = new EditTimeEntryViewModel(timeEntryList); }
public async override void OnViewCreated(View view, Bundle savedInstanceState) { base.OnViewCreated(view, savedInstanceState); if (viewModel == null) { var timeEntryList = await EditTimeEntryActivity.GetIntentTimeEntryData(Activity.Intent); viewModel = new EditTimeEntryViewModel(timeEntryList); } viewModel.OnIsLoadingChanged += OnModelLoaded; viewModel.Init(); }
public override void OnDestroyView() { if (viewModel != null) { // TimeEntry property must be nullified to // stop event listeners on BaseEditTimeEntryFragment. editTimeEntryFragment.TimeEntry = null; viewModel.OnProjectListChanged -= OnProjectListChanged; viewModel.OnIsLoadingChanged -= OnModelLoaded; viewModel.Dispose(); viewModel = null; } base.OnDestroyView(); }
private void TimeEntryAddStart(Task obj) { var newTimeEntry = new TimeEntry { TimeEntryID = 0, Task = obj, TaskID = obj.TaskID, UserID = _userSession.CurrentUser.UserID, User = _userSession.CurrentUser, ServiceClient = ServiceClients.AdministrationClient, Price = _userSession.CurrentUser.Price }; _dataService.GetTimeEntryByTimeEntry(newTimeEntry) .Subscribe(t => { var timeEntryEditViewModel = new EditTimeEntryViewModel(t, t.Task, _dataService); var editView = new EditTimeEntryViewWindow { ViewModel = (timeEntryEditViewModel) }; editView.Show(); }); }
public async override void OnViewCreated(View view, Bundle savedInstanceState) { base.OnViewCreated(view, savedInstanceState); ViewModel = await EditTimeEntryViewModel.Init(TimeEntryId); // TODO: in theory, this event could be binded but // the event "CheckedChange" isn't found when // the app is compiled for release. Investigate! BillableCheckBox.CheckedChange += (sender, e) => { ViewModel.ChangeBillable(BillableCheckBox.Checked); }; DescriptionField.TextField.TextChanged += (sender, e) => { ViewModel.ChangeDescription(DescriptionField.TextField.Text); }; DurationTextView.Click += (sender, e) => { // TODO: Don't edit duration if Time entry is running? if (ViewModel.IsRunning) { return; } ChangeTimeEntryDurationDialogFragment.NewInstance(ViewModel.StopDate, ViewModel.StartDate) .SetChangeDurationHandler(this) .Show(FragmentManager, "duration_dialog"); }; StartTimeEditText.Click += (sender, e) => { var title = GetString(Resource.String.ChangeTimeEntryStartTimeDialogTitle); ChangeDateTimeDialogFragment.NewInstance(ViewModel.StartDate, title) .SetOnChangeTimeHandler(this) .Show(FragmentManager, "start_time_dialog"); }; StopTimeEditText.Click += (sender, e) => { var title = GetString(Resource.String.ChangeTimeEntryStopTimeDialogTitle); ChangeDateTimeDialogFragment.NewInstance(ViewModel.StopDate, title) .SetOnChangeTimeHandler(this) .Show(FragmentManager, "stop_time_dialog"); }; ProjectField.TextField.Click += (sender, e) => OpenProjectListActivity(); ProjectField.Click += (sender, e) => OpenProjectListActivity(); TagsField.OnPressTagField += OnTagsEditTextClick; durationBinding = this.SetBinding(() => ViewModel.Duration, () => DurationTextView.Text); startTimeBinding = this.SetBinding(() => ViewModel.StartDate, () => StartTimeEditText.Text) .ConvertSourceToTarget(dateTime => dateTime.ToDeviceTimeString()); stopTimeBinding = this.SetBinding(() => ViewModel.StopDate, () => StopTimeEditText.Text) .ConvertSourceToTarget(dateTime => dateTime.ToDeviceTimeString()); projectBinding = this.SetBinding(() => ViewModel.ProjectName, () => ProjectField.TextField.Text); clientBinding = this.SetBinding(() => ViewModel.ClientName, () => ProjectField.AssistViewTitle); tagBinding = this.SetBinding(() => ViewModel.TagList, () => TagsField.TagNames) .ConvertSourceToTarget(tagList => tagList.Select(tag => tag.Name).ToList()); descriptionBinding = this.SetBinding(() => ViewModel.Description, () => DescriptionField.TextField.Text); isPremiumBinding = this.SetBinding(() => ViewModel.IsPremium, () => BillableCheckBox.Visibility) .ConvertSourceToTarget(isVisible => isVisible ? ViewStates.Visible : ViewStates.Gone); isRunningBinding = this.SetBinding(() => ViewModel.IsRunning).WhenSourceChanges(() => { StopTimeEditText.Visibility = ViewModel.IsRunning ? ViewStates.Gone : ViewStates.Visible; stopTimeEditLabel.Visibility = ViewModel.IsRunning ? ViewStates.Gone : ViewStates.Visible; }); isBillableBinding = this.SetBinding(() => ViewModel.IsBillable, () => BillableCheckBox.Checked); billableBinding = this.SetBinding(() => ViewModel.IsBillable) .WhenSourceChanges(() => { var label = ViewModel.IsBillable ? GetString(Resource.String.CurrentTimeEntryEditBillableChecked) : GetString(Resource.String.CurrentTimeEntryEditBillableUnchecked); BillableCheckBox.Text = label; }); // If project list needs to be opened? var settingsStore = ServiceContainer.Resolve <SettingsStore> (); if (settingsStore.ChooseProjectForNew && LogTimeEntriesListFragment.NewTimeEntry) { OpenProjectListActivity(); } else if (LogTimeEntriesListFragment.NewTimeEntry) { DescriptionField.RequestFocus(); ((EditTimeEntryActivity)Activity).ShowSoftKeyboard(DescriptionField.TextField, false); LogTimeEntriesListFragment.NewTimeEntry = false; } else { DescriptionField.ClearFocus(); } // Finally set content visible. editTimeEntryContent.Visibility = ViewStates.Visible; editTimeEntryProgressBar.Visibility = ViewStates.Gone; }
public async override void OnViewCreated(View view, Bundle savedInstanceState) { base.OnViewCreated(view, savedInstanceState); ViewModel = await EditTimeEntryViewModel.Init(TimeEntryId); // TODO: in theory, this event could be binded but // the event "CheckedChange" isn't found when // the app is compiled for release. Investigate! BillableCheckBox.CheckedChange += (sender, e) => { ViewModel.IsBillable = BillableCheckBox.Checked; }; DurationTextView.Click += (sender, e) => ChangeTimeEntryDurationDialogFragment.NewInstance(ViewModel.StopDate, ViewModel.StartDate) .SetChangeDurationHandler(this) .Show(FragmentManager, "duration_dialog"); StartTimeEditText.Click += (sender, e) => { var title = GetString(Resource.String.ChangeTimeEntryStartTimeDialogTitle); ChangeDateTimeDialogFragment.NewInstance(ViewModel.StartDate, title) .SetOnChangeTimeHandler(this) .Show(FragmentManager, "start_time_dialog"); }; StopTimeEditText.Click += (sender, e) => { var title = GetString(Resource.String.ChangeTimeEntryStopTimeDialogTitle); ChangeDateTimeDialogFragment.NewInstance(ViewModel.StopDate, title) .SetOnChangeTimeHandler(this) .Show(FragmentManager, "stop_time_dialog"); }; ProjectField.TextField.Click += (sender, e) => OpenProjectListActivity(); ProjectField.Click += (sender, e) => OpenProjectListActivity(); TagsField.OnPressTagField += OnTagsEditTextClick; durationBinding = this.SetBinding(() => ViewModel.Duration, () => DurationTextView.Text); startTimeBinding = this.SetBinding(() => ViewModel.StartDate, () => StartTimeEditText.Text) .ConvertSourceToTarget(dateTime => dateTime.ToDeviceTimeString()); stopTimeBinding = this.SetBinding(() => ViewModel.StopDate, () => StopTimeEditText.Text) .ConvertSourceToTarget(dateTime => dateTime.ToDeviceTimeString()); projectBinding = this.SetBinding(() => ViewModel.ProjectName, () => ProjectField.TextField.Text); clientBinding = this.SetBinding(() => ViewModel.ClientName, () => ProjectField.AssistViewTitle); tagBinding = this.SetBinding(() => ViewModel.TagList, () => TagsField.TagNames) .ConvertSourceToTarget(tagList => tagList.Select(tag => tag.Name).ToList()); descriptionBinding = this.SetBinding(() => ViewModel.Description, () => DescriptionField.TextField.Text, BindingMode.TwoWay); isPremiumBinding = this.SetBinding(() => ViewModel.IsPremium, () => BillableCheckBox.Visibility) .ConvertSourceToTarget(isVisible => isVisible ? ViewStates.Visible : ViewStates.Gone); isRunningBinding = this.SetBinding(() => ViewModel.IsRunning).WhenSourceChanges(() => { StopTimeEditText.Visibility = ViewModel.IsRunning ? ViewStates.Gone : ViewStates.Visible; stopTimeEditLabel.Visibility = ViewModel.IsRunning ? ViewStates.Gone : ViewStates.Visible; }); isBillableBinding = this.SetBinding(() => ViewModel.IsBillable, () => BillableCheckBox.Checked); billableBinding = this.SetBinding(() => ViewModel.IsBillable) .WhenSourceChanges(() => { var label = ViewModel.IsBillable ? GetString(Resource.String.CurrentTimeEntryEditBillableChecked) : GetString(Resource.String.CurrentTimeEntryEditBillableUnchecked); BillableCheckBox.Text = label; }); saveMenuBinding = this.SetBinding(() => ViewModel.IsManual) .WhenSourceChanges(() => { if (SaveMenuItem != null) { SaveMenuItem.SetVisible(ViewModel.IsManual); } }); // Configure option menu. ConfigureOptionMenu(); // If project list needs to be opened? var settingsStore = ServiceContainer.Resolve <SettingsStore> (); if (settingsStore.ChooseProjectForNew && LogTimeEntriesListFragment.NewTimeEntryStartedByFAB) { LogTimeEntriesListFragment.NewTimeEntryStartedByFAB = false; OpenProjectListActivity(); } }
public EditTimeEntryViewController(TimeEntryData data, List <TagData> tagList) { this.tagList = tagList; this.data = data; ViewModel = EditTimeEntryViewModel.Init(data, tagList); }