Esempio n. 1
0
 private void ConfigureMoreOptionsMenu(WorkoutViewHolder workoutViewHolder)
 {
     if (!workoutViewHolder.MoreOptionsButton.HasOnClickListeners)
     {
         workoutViewHolder.MoreOptionsButton.Click += delegate(object sender, EventArgs e)
         {
             workoutViewHolder.MoreOptionsButton.Visibility = ViewStates.Invisible;
             workoutViewHolder.MoreOptionsMenu.Visibility   = ViewStates.Visible;
         };
     }
     if (!workoutViewHolder.SaveWorkoutBtn.HasOnClickListeners)
     {
         workoutViewHolder.SaveWorkoutBtn.Click += delegate(object sender2, EventArgs e2)
         {
             workoutViewHolder.MoreOptionsButton.Visibility = ViewStates.Visible;
             workoutViewHolder.MoreOptionsMenu.Visibility   = ViewStates.Gone;
             Toast.MakeText(context, context.GetString(Resource.String.workout_saved, workoutViewHolder.Title.Text.ToString()), ToastLength.Long).Show();
         };
     }
     if (!workoutViewHolder.EditWorkoutBtn.HasOnClickListeners)
     {
         workoutViewHolder.EditWorkoutBtn.Click += delegate(object sender3, EventArgs e3)
         {
             workoutViewHolder.MoreOptionsButton.Visibility = ViewStates.Visible;
             workoutViewHolder.MoreOptionsMenu.Visibility   = ViewStates.Gone;
         };
     }
 }
Esempio n. 2
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            WorkoutViewHolder workoutHolder = holder as WorkoutViewHolder;

            workoutHolder.MoreOptionsButton.Visibility = ViewStates.Visible;
            workoutHolder.MoreOptionsMenu.Visibility   = ViewStates.Gone;

            if (data[position].editMode)
            {
                ToggleEditMode(true, workoutHolder, position);
            }
            else
            {
                ToggleEditMode(false, workoutHolder, position);

                workoutHolder.Title.Text     = data[position].title;
                workoutHolder.Exercises.Text = data[position].exercises != null && data[position].exercises.Length > 0 ? data[position].exercises : "";

                if (!workoutHolder.AddExerciseBtn.HasOnClickListeners)
                {
                    workoutHolder.AddExerciseBtn.Click += delegate(object senderExercise, EventArgs eExercise) {
                        AddExerciseOnClick(senderExercise, eExercise, workoutHolder.AddExerciseBtn, workoutHolder.ExpandedLayout, position, workoutHolder.Root);
                    };
                }

                ConfigureMoreOptionsMenu(workoutHolder);

                if (data[position].expanded)
                {
                    // expand
                    workoutHolder.ExpandedLayout.RemoveAllViews();
                    workoutHolder.ExpandedLayout.Visibility = ViewStates.Visible;
                    workoutHolder.Exercises.Visibility      = ViewStates.Gone;
                    workoutHolder.AddExerciseBtn.Visibility = ViewStates.Visible;

                    // setup widgets for expanded view
                    String[] exercisesList = new String[0];
                    if (data[position].exercises != null)
                    {
                        exercisesList = data[position].exercises.Split('\n');
                        for (int i = 0; i < exercisesList.Length; i++)
                        {
                            View exerciseView = LayoutInflater.From(context).Inflate(Resource.Layout.ListItemExercise, null);
                            exerciseView.FindViewById <TextView>(Resource.Id.exercise_name).Text = exercisesList[i];
                            LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);
                            ll.TopMargin = 8; ll.BottomMargin = 8; ll.LeftMargin = 18; ll.RightMargin = 24;
                            exerciseView.LayoutParameters = ll;
                            workoutHolder.ExpandedLayout.AddView(exerciseView);

                            if (i == 0)
                            {
                                // expand first item
                                exerciseView.FindViewById <LinearLayout>(Resource.Id.layout_set).Visibility       = ViewStates.Visible;
                                exerciseView.FindViewById <LinearLayout>(Resource.Id.layout_set_title).Visibility = ViewStates.Visible;
                                exerciseView.FindViewById <Button>(Resource.Id.add_set_btn).Visibility            = ViewStates.Visible;
                            }
                            else
                            {
                                exerciseView.FindViewById <LinearLayout>(Resource.Id.layout_set).Visibility       = ViewStates.Gone;
                                exerciseView.FindViewById <LinearLayout>(Resource.Id.layout_set_title).Visibility = ViewStates.Gone;
                                exerciseView.FindViewById <Button>(Resource.Id.add_set_btn).Visibility            = ViewStates.Gone;
                            }

                            LinearLayout rootExerciseItem = exerciseView.FindViewById <LinearLayout>(Resource.Id.root_exercise_item);
                            Button       addSetBtn        = exerciseView.FindViewById <Button>(Resource.Id.add_set_btn);

                            if (!rootExerciseItem.HasOnClickListeners)
                            {
                                rootExerciseItem.Click += delegate(object rootSender, EventArgs rootE) { ExerciseItemOnClick(rootSender, rootE); };
                            }

                            if (!addSetBtn.HasOnClickListeners)
                            {
                                addSetBtn.Click += delegate(object addSetSender, EventArgs addSetE) { ExerciseItemOnClick(addSetSender, addSetE); };
                            }
                        }
                    }

                    if (workoutHolder.Exercises.Text.Length > 0 && workoutHolder.Exercises.Text.Split('\n').Length < exercisesList.Length)
                    {
                        View exerciseView = LayoutInflater.From(context).Inflate(Resource.Layout.ListItemExercise, null);
                        exerciseView.FindViewById <TextView>(Resource.Id.exercise_name).Text = exercisesList[exercisesList.Length - 1];
                        LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);
                        ll.TopMargin = 8; ll.BottomMargin = 8; ll.LeftMargin = 24; ll.RightMargin = 24;
                        exerciseView.LayoutParameters = ll;
                        workoutHolder.ExpandedLayout.AddView(exerciseView);
                    }
                }
                else
                {
                    // collapse
                    workoutHolder.ExpandedLayout.Visibility = ViewStates.Gone;
                    workoutHolder.Exercises.Visibility      = ViewStates.Visible;
                    workoutHolder.AddExerciseBtn.Visibility = ViewStates.Gone;
                }
            }
        }
Esempio n. 3
0
        public void ShowConfirmDialog(string title, string pos, string neg, int adapterPosition, string newWorkoutName, WorkoutViewHolder workoutHolder)
        {
            AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.SetTitle(title);
            builder.SetPositiveButton(pos, delegate(object s, DialogClickEventArgs ev) {
                // save new workout name
                data[adapterPosition].title    = newWorkoutName;
                data[adapterPosition].editMode = false;
                data[adapterPosition].expanded = true;
                HideKeyboard(workoutHolder.NewWorkoutName);
                NotifyItemChanged(adapterPosition);
            });
            builder.SetNegativeButton(neg, delegate(object s2, DialogClickEventArgs ev2) {
                data.RemoveAt(adapterPosition);
                NotifyItemRemoved(adapterPosition);
                HideKeyboard(workoutHolder.NewWorkoutName);
            });

            builder.Create().Show();
        }
Esempio n. 4
0
        private void ToggleEditMode(bool edit, WorkoutViewHolder workoutHolder, int position)
        {
            if (edit)
            {
                workoutHolder.RootWorkoutLayout.Visibility = ViewStates.Gone;
                workoutHolder.EditModeRoot.Visibility      = ViewStates.Visible;

                ShowKeyboard(workoutHolder.NewWorkoutName);

                workoutHolder.NewWorkoutName.FocusChange += new EventHandler <View.FocusChangeEventArgs>((sender, e) =>
                {
                    string newWorkoutName = workoutHolder.NewWorkoutName.Text.ToString();
                    if (!e.HasFocus && newWorkoutName.Length > 0)
                    {
                        // save new workout name
                        if (position > -1 && data.Count > position)
                        {
                            data[position].title    = newWorkoutName;
                            data[position].editMode = false;
                            HideKeyboard(workoutHolder.NewWorkoutName);
                        }
                    }
                });
                workoutHolder.NewWorkoutName.EditorAction += (sender, e) => {
                    if (e.ActionId == ImeAction.Done)
                    {
                        string newWorkoutName = workoutHolder.NewWorkoutName.Text.ToString();
                        if (newWorkoutName.Length > 0)
                        {
                            // save new workout name
                            data[position].title    = newWorkoutName;
                            data[position].editMode = false;
                            data[position].expanded = true;
                            HideKeyboard(workoutHolder.NewWorkoutName);
                            NotifyItemChanged(position);
                        }
                    }
                    else
                    {
                        e.Handled = false;
                    }
                };
                if (!workoutHolder.DeleteWorkoutBtn.HasOnClickListeners)
                {
                    workoutHolder.DeleteWorkoutBtn.Click += delegate(object senderDeleteWorkout, EventArgs eDeleteWorkout)
                    {
                        if (workoutHolder.NewWorkoutName.Text.ToString().Length > 0)
                        {
                            string newWorkoutName = workoutHolder.NewWorkoutName.Text.ToString();
                            ShowConfirmDialog(context.GetString(Resource.String.confirm_save_changes),
                                              context.GetString(Resource.String.save), context.GetString(Resource.String.dont_save), position,
                                              newWorkoutName, workoutHolder);
                        }
                        else
                        {
                            data.RemoveAt(position);
                            NotifyItemRemoved(position);
                            HideKeyboard(workoutHolder.NewWorkoutName);
                        }
                    };
                }
            }
            else
            {
                workoutHolder.EditModeRoot.Visibility      = ViewStates.Gone;
                workoutHolder.RootWorkoutLayout.Visibility = ViewStates.Visible;
            }
        }