public EditWorkoutForm(Data data, Workout workout) : this(data) { // disabling the name field to avoid renaming of existing workouts txtName.Enabled = false; foreach (var wsc in workout.Steps.Select(t => new WorkoutStepControl { Location = new Point(_stepControls.Count == 0 ? labName.Left : _stepControls.Last().Right + ControlPadding, butAddStep.Top), Parent = this, Step = t })) { _stepControls.Add(wsc); } txtName.Text = workout.Name; // assign the category name but also change the dropdownstyle // since the combobox doesn't have the category names yet comCategory.DropDownStyle = ComboBoxStyle.Simple; comCategory.Text = workout.CategoryName; butAddStep.Left = _stepControls.Last().Right + ControlPadding; butRemoveStep.Left = _stepControls.Last().Right + ControlPadding; }
public EditWorkoutCategoryFormPresenter(IEditWorkoutCategoryForm view, Data data) { _data = data; _view = view; _view.SaveButtonClick += (s, e) => SaveWorkoutCategory(); }
public ManageWorkoutsForm(Data data) { _data = data; InitializeComponent(); lisWorkouts.ListViewItemSorter = new ListViewItemComparer(1, false); }
public EditWorkoutForm(Data data) { InitializeComponent(); txtName.AutoCompleteMode = AutoCompleteMode.SuggestAppend; txtName.AutoCompleteSource = AutoCompleteSource.CustomSource; txtName.AutoCompleteCustomSource.AddRange(data.Workouts.Select(w => w.Name).ToArray()); UpdateWidth(); }
public SelectWorkoutCategoryFormPresenter(ISelectWorkoutCategoryForm view, Data data) { _data = data; _view = view; _view.WorkoutCategorySelected += (s, e) => OnWorkoutCategorySelected(e); // when the workout categories change, reload the category list _data.CategoryChanged += (s, e) => _view.SetCategories(_data.Categories.Select(c => c.Name).ToArray()); _view.SetCategories(_data.Categories.Select(c => c.Name).ToArray()); }
public ManageWorkoutsFormPresenter(IManageWorkoutsForm view, Data data) { _data = data; view.DisplayWorkouts(_data.Workouts); view.AddWorkoutButtonClick += (s, e) => EditWorkout(null); view.EditWorkoutButtonClick += (s, e) => EditWorkout(e); view.DeleteWorkoutButtonClick += (s, e) => DeleteWorkout(e); view.ExitButtonClick += (s, e) => view.Close(); data.WorkoutChanged += (s, e) => view.DisplayWorkouts(_data.Workouts); }
public ManageWorkoutCategoriesFormPresenter(IManageWorkoutCategoriesForm view, Data data) { _data = data; view.DisplayCategories(data.Categories); view.AddCategoryButtonClick += (s, e) => EditCategory(null); view.EditCategoryButtonClick += (s, e) => EditCategory(e); view.DeleteCategoryButtonClick += (s, e) => DeleteCategory(e); view.ExitButtonClick += (s, e) => view.Close(); data.CategoryChanged += (s, e) => view.DisplayCategories(data.Categories); }
/// <summary> /// Initializes a new Data instance with the given name. /// This name is used to resolve the path to the persisted data. /// </summary> /// <param name="planName">Name of the training plan.</param> public Data(string planName) { Instance = this; // create persistence handler for this `Data` instance. var persistence = new DataPersistence(this); // load persisted data // NOTE: Must load training plan first because its name is needed to find the other files _trainingPlan = persistence.LoadPlan(planName); _trainingPlan.SetData(this); Pace = persistence.LoadPace(); _workouts = new List<Workout>(persistence.LoadWorkouts()); _categories = new List<WorkoutCategory>(persistence.LoadCategories()); Logger.Info("Data instantiated"); }
public EditWorkoutFormPresenter(IEditWorkoutForm view, Data data) { _view = view; _data = data; _data.CategoryChanged += (s, e) => SetCategories(); SetCategories(); _view.AddStepButtonClick += (s, e) => _view.AddStep(); _view.RemoveStepButtonClick += (s, e) => _view.RemoveStep(); _view.EditWorkoutFormClosing += OnEditWorkoutFormClosing; _view.SaveButtonClick += (s, e) => OnSaveButtonClick(); _view.DeleteButtonClick += (s, e) => OnDeleteButtonClick(); // only add a step if there is none yet (there already are steps when editing // but not when creating workouts) if (_view.Steps == null || _view.Steps.Length == 0) { _view.AddStep(); } }
private void LoadTrainingPlan(string planName) { try { // update recent training plans in settings - before actually loading the plan var recentPlans = Misc.Default.LastTrainingPlans.Split(';').ToList(); if (recentPlans.Contains(planName)) { // the newly-loaded plan is already among the list of recent plans - remove it recentPlans.Remove(planName); } else { while (recentPlans.Count >= 5) { // the plan isn't already in the list but we may need to remove one // to avoid having too many recent plans recentPlans.RemoveAt(4); } } // insert newly-loaded plan and save recentPlans.Insert(0, planName); Misc.Default.LastTrainingPlans = recentPlans.Aggregate((a, b) => a + ";" + b).TrimEnd(';'); Misc.Default.Save(); // load plan var data = new Data(planName); Data = data; _view.SetNewData(data); _view.UpdateWeeklyPlan(Data.TrainingPlan.WeeklyPlans); // scroll to current week - this probably doesn't work for (var i = 0; i < Data.TrainingPlan.WeeklyPlans.Length; i++) { if (Data.TrainingPlan.WeeklyPlans[i].WeekStart > DateTime.Today || Data.TrainingPlan.WeeklyPlans[i].WeekEnd < DateTime.Today) { continue; } _view.SetWeekActivity(i, true); //Task.Factory.StartNew(() => //{ // Thread.Sleep(1); //view.ScrollToWeek(i); //}); break; } } catch (Exception e) { MessageBox.Show(string.Format("Error while attempting to load plan {0} - {1}", planName, e.Message)); RemoveRecentPlan(planName); _view.UpdateRecentTrainingPlans(); } }
private void OnClosePlanClick() { Data = null; _view.SetNewData(null); Logger.Info("Closed current training plan"); }
public WeekControl(Data data) { InitializeComponent(); _data = data; BackColor = Colors.Default.DefaultWorkoutControlBackground; _workoutControls = new[] { wrkMondayMorning, wrkMondayEvening, wrkTuesdayMorning, wrkTuesdayEvening, wrkWednesdayMorning, wrkWednesdayEvening, wrkThursdayMorning, wrkThursdayEvening, wrkFridayMorning, wrkFridayEvening, wrkSaturdayMorning, wrkSaturdayEvening, wrkSundayMorning, wrkSundayEvening }; if (_workoutControls.Length != MaxWeeklyWorkouts) { throw new Exception("Must have exactly " + MaxWeeklyWorkouts + " workout contorls"); } for (var i = 0; i < _workoutControls.Length; i++) { var i1 = i; _workoutControls[i].SetData(_data); _workoutControls[i].WorkoutChanged += (s, workout) => { _weeklyPlan.Workouts[i1] = workout == null ? null : workout.Name; UpdateStatistics(); if (WeeklyPlanChanged != null && _triggerWeeklyPlanChangedEvent) { Logger.Debug("Triggering WeeklyPlanChanged event"); WeeklyPlanChanged(this, new EventArgs<WeeklyPlan>(WeeklyPlan)); } }; } // create a timer that triggers after 2s var noteChangeTriggerTimer = new Timer {Interval = 2000}; noteChangeTriggerTimer.Tick += (s, e) => { // when the timer triggers, stop it from re-triggering noteChangeTriggerTimer.Stop(); // save the currently entered notes _weeklyPlan.Notes = txtNotes.Text; if (WeeklyPlanChanged != null) { Logger.Debug("Triggering WeeklyPlanChanged event"); WeeklyPlanChanged(this, new EventArgs<WeeklyPlan>(WeeklyPlan)); } }; txtNotes.TextChanged += (s, e) => { if (!_triggerWeeklyPlanChangedEvent) { return; } noteChangeTriggerTimer.Stop(); noteChangeTriggerTimer.Start(); }; }
public void SetData(Data data) { _data = data; _data.CategoryChanged += (s, e) => UpdateControl(); _data.WorkoutChanged += (s, e) => UpdateControl(); CreateContextMenu(); }