public TrainingDetailsForm(User user, List <User> users, Training training, TrainingDetailsMode mode) { InitializeComponent(); this.user = user; this.training = training; this.mode = mode; Text = training.date.ToString(); switch (mode) { case TrainingDetailsMode.Edit: //nameEdit.Enabled = true; nameEdit.Text = training.name; addTrainingBtn.Visible = false; subBtn.Visible = false; break; case TrainingDetailsMode.New: nameEdit.Enabled = true; okBtn.Visible = false; subBtn.Visible = false; break; case TrainingDetailsMode.View: addTrainingBtn.Visible = false; nameEdit.Text = training.name; okBtn.Visible = false; subscribed = training.traineesId.FindIndex(x => x == user.id) >= 0; if (subscribed) { subBtn.Text = "Отписаться"; } break; } User coach = users.Find(x => x.id == training.coachId); for (int i = 0; i < training.traineesId.Count; i++) { User usr = users.Find(x => x.id == training.traineesId[i]); traineesList.Items.Add(usr.firstName + " " + usr.secondName); } coachEdit.Text = coach.firstName + " " + coach.secondName; }
private void Cell_Click(object sender, EventArgs e) { TableLayoutPanelCellPosition cell = calendar.GetPositionFromControl((Control)sender); if (cell.Column == 0 && cell.Row == 0) { return; } Training training; TrainingDetailsMode mode = TrainingDetailsMode.View; Button btn = (Button)sender; if (btn.Text == "") { if (!user.isCoach) { return; } training = new Training(); mode = TrainingDetailsMode.New; training.coachId = user.id; training.date = date.AddDays(cell.Column - 1).AddHours(cell.Row - 1 + startHour); } else { training = localTrainings.Find(t => DateTime.Compare(t.date, date.AddDays(cell.Column - 1).AddHours(cell.Row - 1 + startHour)) == 0 && t.syncState != SyncState.Deleted); if (training == null) { return; } if (user.id == training.coachId) { mode = TrainingDetailsMode.Edit; } } Debug.WriteLine("{0}:{1}, mode {2}, coach {3}", cell.Row, cell.Column, mode, training.coachId); TrainingDetailsForm details = new TrainingDetailsForm(user, users, training, mode); DialogResult result = details.ShowDialog(); if (result == DialogResult.Abort) { return; } Cursor = Cursors.WaitCursor; trainingsMutex.WaitOne(); if (result == DialogResult.OK) { training.name = details.nameEdit.Text; localTrainings.Add(training); AddTrainingToCell(btn, training); } else if (result == DialogResult.Ignore) { training.syncState = SyncState.Deleted; if (training.id == -1) { localTrainings.Remove(training); } ClearCell(btn); } else if (result == DialogResult.Yes) { training.traineesId.Remove(user.id); training.syncState = SyncState.Updated; } else if (result == DialogResult.No) { training.traineesId.Add(user.id); training.syncState = SyncState.Updated; } trainingsMutex.Release(); Cursor = Cursors.Default; }