Пример #1
0
 public override void OnAttachedToWindow()
 {
     base.OnAttachedToWindow();
     if (CurrentExpense != null && CurrentExpense.Id != 0)
     {
         expenseViewModel.LoadPhotoAsync(CurrentExpense).ContinueWith(_ => {
             activity.RunOnUiThread(() => {
                 if (expenseViewModel.Photo != null)
                 {
                     if (expenseViewModel.Photo.Image != null)
                     {
                         imageBitmap = BitmapFactory.DecodeByteArray(expenseViewModel.Photo.Image, 0, expenseViewModel.Photo.Image.Length);
                         imageBitmap = Extensions.ResizeBitmap(imageBitmap, Constants.MaxWidth, Constants.MaxHeight);
                     }
                     expensePhoto.SetImageBitmap(imageBitmap);
                     expenseAddPhoto.Visibility = ViewStates.Gone;
                 }
                 else
                 {
                     expensePhoto.SetImageBitmap(null);
                     expenseAddPhoto.Visibility = ViewStates.Visible;
                 }
             });
         });
         expenseType.SetSelection(expenseTypes.ToList().IndexOf(CurrentExpense.Category));
         expenseAmount.Text       = CurrentExpense.Cost.ToString("0.00");
         expenseDescription.Text  = CurrentExpense.Description;
         deleteExpense.Visibility = CurrentExpense.Id != 0 ? ViewStates.Visible : ViewStates.Gone;
     }
     else
     {
         expenseViewModel.Photo = null;
         expensePhoto.SetImageBitmap(null);
         expenseAmount.Text      = "0.00";
         expenseDescription.Text = string.Empty;
         expenseType.SetSelection(0);
         expenseAddPhoto.Visibility = ViewStates.Visible;
         deleteExpense.Visibility   = ViewStates.Gone;
     }
 }
Пример #2
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Create your application here
            SetContentView(Resource.Layout.MapViewLayout);

            assignmentMapViewLayout        = FindViewById <LinearLayout> (Resource.Id.mapViewAssignmentLayout);
            assignmentMapViewLayout.Click += (sender, e) => {
                var intent      = new Intent(this, typeof(SummaryActivity));
                var tabActivity = (AssignmentTabActivity)Parent;
                tabActivity.MapData = null;
                assignmentViewModel.SelectedAssignment = assignmentViewModel.ActiveAssignment;
                menuViewModel.MenuIndex = Constants.Navigation.IndexOf("Map");
                StartActivity(intent);
            };
            mapView = FindViewById <MapView> (Resource.Id.googleMapsView);

            myLocation = new MyLocationOverlay(this, mapView);

            mapView.Overlays.Add(myLocation);
            mapView.Clickable = true;
            mapView.Enabled   = true;
            mapView.SetBuiltInZoomControls(true);


            //View containing the active assignment
            var            view     = new View(this);
            LayoutInflater inflator = (LayoutInflater)GetSystemService(Context.LayoutInflaterService);

            view = inflator.Inflate(Resource.Layout.AssignmentItemLayout, null);
            assignmentMapViewLayout.AddView(view);
            view.LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FillParent, LinearLayout.LayoutParams.WrapContent);
            view.SetBackgroundDrawable(Resources.GetDrawable(Resource.Drawable.active_assignment_selector));
            number        = view.FindViewById <TextView> (Resource.Id.assignmentItemNumber);
            job           = view.FindViewById <TextView> (Resource.Id.assignmentJob);
            name          = view.FindViewById <TextView> (Resource.Id.assignmentName);
            phone         = view.FindViewById <TextView> (Resource.Id.assignmentPhone);
            address       = view.FindViewById <TextView> (Resource.Id.assignmentAddress);
            buttonLayout  = view.FindViewById <LinearLayout> (Resource.Id.assignmentButtonLayout);
            timerLayout   = view.FindViewById <LinearLayout> (Resource.Id.assignmentTimerLayout);
            activeSpinner = view.FindViewById <Spinner> (Resource.Id.assignmentStatus);
            spinnerImage  = view.FindViewById <ImageView> (Resource.Id.assignmentStatusImage);
            timer         = view.FindViewById <ToggleButton> (Resource.Id.assignmentTimer);
            timerText     = view.FindViewById <TextView> (Resource.Id.assignmentTimerText);
            phoneButton   = view.FindViewById <RelativeLayout> (Resource.Id.assignmentPhoneLayout);
            mapButton     = view.FindViewById <RelativeLayout> (Resource.Id.assignmentAddressLayout);

            phoneButton.Click += (sender, e) => {
                Extensions.MakePhoneCall(this, phone.Text);
            };

            mapButton.Click += (sender, e) => {
                var intent      = new Intent(this, typeof(SummaryActivity));
                var tabActivity = (AssignmentTabActivity)Parent;
                tabActivity.MapData = null;
                assignmentViewModel.SelectedAssignment = assignmentViewModel.ActiveAssignment;
                menuViewModel.MenuIndex = 0;
                StartActivity(intent);
            };

            assignmentViewModel.LoadTimerEntryAsync().ContinueWith(_ => {
                RunOnUiThread(() => {
                    if (assignmentViewModel.Recording)
                    {
                        timer.Checked = true;
                    }
                    else
                    {
                        timer.Checked = false;
                    }
                });
            });

            timer.CheckedChange += (sender, e) => {
                if (e.IsChecked != assignmentViewModel.Recording)
                {
                    if (assignmentViewModel.Recording)
                    {
                        assignmentViewModel.PauseAsync();
                    }
                    else
                    {
                        assignmentViewModel.RecordAsync();
                    }
                }
            };

            activeSpinner.ItemSelected += (sender, e) => {
                if (assignment != null)
                {
                    var selected = assignmentViewModel.AvailableStatuses.ElementAtOrDefault(e.Position);
                    if (selected != assignment.Status)
                    {
                        switch (selected)
                        {
                        case AssignmentStatus.Hold:
                            assignment.Status = selected;
                            assignmentViewModel.SaveAssignmentAsync(assignment).ContinueWith(_ => {
                                RunOnUiThread(() => {
                                    SetAssignment(false);
                                    mapView.Overlays.Clear();
                                    mapView.Overlays.Add(myLocation);
                                    UpdateLocations();
                                });
                            });
                            break;

                        case AssignmentStatus.Complete:
                            //go to confirmations
                            var intent = new Intent(this, typeof(SummaryActivity));
                            menuViewModel.MenuIndex = Constants.Navigation.IndexOf(Constants.Confirmations);
                            StartActivity(intent);
                            break;

                        default:
                            break;
                        }
                    }
                }
            };
        }
Пример #3
0
        public void OnClick(View v)
        {
            switch (v.Id)
            {
            case Resource.Id.addExpenseDelete:
                if (CurrentExpense != null && CurrentExpense.Id != -1)
                {
                    DeleteExpense();
                }
                else
                {
                    Dismiss();
                }
                break;

            case Resource.Id.addExpenseSave:
                SaveExpense();
                break;

            case Resource.Id.addExpenseCancel:
                Dismiss();
                break;

            case Resource.Id.addExpenseAddPhoto:
                var choices = new List <string> ();
                choices.Add(activity.Resources.GetString(Resource.String.Gallery));
                if (mediaPicker.IsCameraAvailable)
                {
                    choices.Add(activity.Resources.GetString(Resource.String.Camera));
                }

                AlertDialog.Builder takePictureDialog = new AlertDialog.Builder(activity);
                takePictureDialog.SetTitle("Select:");
                takePictureDialog.SetItems(choices.ToArray(), (innerSender, innerE) => {
                    if (innerE.Which == 0)
                    {
                        mediaPicker.PickPhotoAsync().ContinueWith(t => {
                            if (t.IsCanceled)
                            {
                                return;
                            }
                            activity.RunOnUiThread(() => {
                                expenseAddPhoto.Visibility = ViewStates.Gone;
                                imageBitmap = BitmapFactory.DecodeStream(t.Result.GetStream());
                                imageBitmap = Extensions.ResizeBitmap(imageBitmap, Constants.MaxWidth, Constants.MaxHeight);
                                expensePhoto.SetImageBitmap(imageBitmap);
                                expenseViewModel.Photo = new ExpensePhoto {
                                    ExpenseId = CurrentExpense.Id
                                };
                            });
                        });
                    }
                    else if (innerE.Which == 1)
                    {
                        //camera
                        StoreCameraMediaOptions options = new StoreCameraMediaOptions();
                        options.Directory = "FieldService";
                        options.Name      = "FieldService.jpg";
                        mediaPicker.TakePhotoAsync(options).ContinueWith(t => {
                            if (t.IsCanceled)
                            {
                                return;
                            }
                            activity.RunOnUiThread(() => {
                                expenseAddPhoto.Visibility = ViewStates.Gone;
                                imageBitmap = BitmapFactory.DecodeStream(t.Result.GetStream());
                                imageBitmap = Extensions.ResizeBitmap(imageBitmap, Constants.MaxWidth, Constants.MaxHeight);
                                expensePhoto.SetImageBitmap(imageBitmap);
                                expenseViewModel.Photo = new ExpensePhoto {
                                    ExpenseId = CurrentExpense.Id
                                };
                            });
                        });
                    }
                });
                takePictureDialog.Show();
                break;
            }
        }
Пример #4
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.AssignmentsLayout);

            assignmentsListView           = FindViewById <ListView> (Resource.Id.assignmentsListView);
            assignmentActiveLayout        = FindViewById <LinearLayout> (Resource.Id.assignmentSelectedItem);
            assignmentActiveLayout.Click += (sender, e) => AssignmentSelected(-1);

            assignmentsListView.ItemClick += (sender, e) => AssignmentSelected(e.Position);

            //View containing the active assignment
            var            view     = new View(this);
            LayoutInflater inflator = (LayoutInflater)GetSystemService(Context.LayoutInflaterService);

            view = inflator.Inflate(Resource.Layout.AssignmentItemLayout, null);
            assignmentActiveLayout.AddView(view);
            view.LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FillParent, LinearLayout.LayoutParams.WrapContent);
            view.SetBackgroundDrawable(Resources.GetDrawable(Resource.Drawable.active_assignment_selector));
            number        = view.FindViewById <TextView> (Resource.Id.assignmentItemNumber);
            job           = view.FindViewById <TextView> (Resource.Id.assignmentJob);
            name          = view.FindViewById <TextView> (Resource.Id.assignmentName);
            phone         = view.FindViewById <TextView> (Resource.Id.assignmentPhone);
            address       = view.FindViewById <TextView> (Resource.Id.assignmentAddress);
            buttonLayout  = view.FindViewById <LinearLayout> (Resource.Id.assignmentButtonLayout);
            timerLayout   = view.FindViewById <LinearLayout> (Resource.Id.assignmentTimerLayout);
            activeSpinner = view.FindViewById <Spinner> (Resource.Id.assignmentStatus);
            spinnerImage  = view.FindViewById <ImageView> (Resource.Id.assignmentStatusImage);
            timer         = view.FindViewById <ToggleButton> (Resource.Id.assignmentTimer);
            timerText     = view.FindViewById <TextView> (Resource.Id.assignmentTimerText);
            phoneButton   = view.FindViewById <RelativeLayout> (Resource.Id.assignmentPhoneLayout);
            mapButton     = view.FindViewById <RelativeLayout> (Resource.Id.assignmentAddressLayout);

            timer.CheckedChange += (sender, e) => {
                if (e.IsChecked != assignmentViewModel.Recording)
                {
                    if (assignmentViewModel.Recording)
                    {
                        assignmentViewModel.PauseAsync();
                    }
                    else
                    {
                        assignmentViewModel.RecordAsync();
                    }
                }
            };

            activeSpinner.ItemSelected += (sender, e) => {
                if (assignment != null)
                {
                    var selected = assignmentViewModel.AvailableStatuses.ElementAtOrDefault(e.Position);
                    if (selected != assignment.Status)
                    {
                        switch (selected)
                        {
                        case AssignmentStatus.Hold:
                            timer.Checked     = false;
                            assignment.Status = selected;
                            assignmentViewModel.SaveAssignmentAsync(assignment).ContinueWith(_ => RunOnUiThread(ReloadAssignments));
                            break;

                        case AssignmentStatus.Complete:
                            //go to confirmations, this is getting called multiple times.
                            var intent = new Intent(this, typeof(SummaryActivity));
                            assignmentViewModel.SelectedAssignment = assignment;
                            menuViewModel.MenuIndex = Constants.Navigation.IndexOf(Constants.Confirmations);
                            StartActivity(intent);
                            break;

                        default:
                            break;
                        }
                    }
                }
            };

            mapButton.Click += (sender, e) => {
                var activity = (AssignmentTabActivity)Parent;
                var intent   = new Intent(activity, typeof(SummaryActivity));
                menuViewModel.MenuIndex = Constants.Navigation.IndexOf("Map");
                assignmentViewModel.SelectedAssignment = assignmentViewModel.ActiveAssignment;
                activity.StartActivity(intent);
            };

            phoneButton.Click += (sender, e) => {
                Extensions.MakePhoneCall(this, phone.Text);
            };
        }