コード例 #1
0
        public async override void OnViewCreated(View view, Bundle savedInstanceState)
        {
            base.OnViewCreated(view, savedInstanceState);

            viewModel = new EditTimeEntryViewModel(TimeEntryIds);
            viewModel.OnIsLoadingChanged += OnModelLoaded;
            await viewModel.Init();
        }
コード例 #2
0
 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();
     });
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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();
        }
コード例 #6
0
        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();
            });
        }
コード例 #7
0
        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;
        }
コード例 #8
0
        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();
            }
        }
コード例 #9
0
 public EditTimeEntryViewController(TimeEntryData data, List <TagData> tagList)
 {
     this.tagList = tagList;
     this.data    = data;
     ViewModel    = EditTimeEntryViewModel.Init(data, tagList);
 }