Ergänzung zum Bugfix Cannot access the 'CustomFields' property of a disposed object, wenn Termin im Kalender aus dem Startbildschirm geöffnet werden SupportOID=165420

This commit is contained in:
2026-06-18 16:17:39 +02:00
parent 447f795b37
commit b21d7249a2
2 changed files with 55 additions and 54 deletions

View File

@@ -56,8 +56,6 @@ namespace BeWo.Scheduler.View
private bool _IsEmployeeBrushVisible;
Appointment appointmentToOpenFormHomePanel = null;
public bool IsEmployeeBrushVisible
{
get => _IsEmployeeBrushVisible;
@@ -422,13 +420,11 @@ namespace BeWo.Scheduler.View
private DateTime? _SelectedAppointmentStartDate;
private readonly SchedulerAppointmentDC _SelectedAppointmentFromHomePanelView;
private bool _IsComingFromHomeDragPanel;
private SchedulerAppointmentDC _SelectedAppointmentFromHomePanelView;
public NewSchedulerView(DateTime pIntervalStartDate, SchedulerAppointmentDC pAppointment)
{
_IsComingFromHomeDragPanel = true;
_SelectedAppointmentFromHomePanelView = pAppointment;
_SelectedAppointmentStartDate = pIntervalStartDate;
@@ -503,11 +499,14 @@ namespace BeWo.Scheduler.View
if(_IstErsterAufruf)
{
if(MainControl.HatNeueTermine && !_IsComingFromHomeDragPanel)
if(MainControl.HatNeueTermine && _SelectedAppointmentFromHomePanelView == null)
{
FensterOeffnen();
}
else
{
OpenAppointmentFromHomePanel();
}
_IstErsterAufruf = false;
}
});
@@ -515,7 +514,7 @@ namespace BeWo.Scheduler.View
private void InitScheduler()
{
if(_IsComingFromHomeDragPanel && _SelectedAppointmentStartDate.HasValue)
if(_SelectedAppointmentFromHomePanelView != null && _SelectedAppointmentStartDate.HasValue)
{
var monday = _SelectedAppointmentStartDate.Value.FirstDateOfWeek(_SelectedAppointmentStartDate.Value.GetIso8601WeekOfYear());
@@ -533,7 +532,7 @@ namespace BeWo.Scheduler.View
Scheduler.DayView.AppointmentDisplayOptions.ShowReminder = true;
Scheduler.DayView.ResourcesPerPage = 1;
Scheduler.WorkWeekView.ShowFullWeek = _IsComingFromHomeDragPanel && Scheduler.Start.DayOfWeek.Equals(DayOfWeek.Saturday) || Scheduler.Start.DayOfWeek.Equals(DayOfWeek.Sunday);
Scheduler.WorkWeekView.ShowFullWeek = _SelectedAppointmentFromHomePanelView != null && (Scheduler.Start.DayOfWeek.Equals(DayOfWeek.Saturday) || Scheduler.Start.DayOfWeek.Equals(DayOfWeek.Sunday));
Scheduler.WorkWeekView.ShowWorkTimeOnly = false;
Scheduler.WorkWeekView.NavigationButtonVisibility = NavigationButtonVisibility.Always;
@@ -2227,6 +2226,8 @@ namespace BeWo.Scheduler.View
//vm.Appointments.AddRange(ViewModel.ConvertAbsenceTimesToAppointments(employeeAbsenceTimes.Where(w => { return SelectedEmployees.Count == 0 || SelectedEmployees.Any(a => a.EmployeeOid == w.EmployeeOid); }), end, e, c));
}
Debug.WriteLine("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
ViewModel.ActiveAppointmentViewModel = vm;
ViewModel.SchedulerSettings = ViewModel.GetActiveSettings();
@@ -2253,41 +2254,6 @@ namespace BeWo.Scheduler.View
Scheduler.Storage.RefreshData();
Scheduler.Storage.RefreshUI();
if(_IsComingFromHomeDragPanel && _SelectedAppointmentFromHomePanelView != null)
{
var apps = Scheduler.ActiveView.GetAppointments().ToList();
var oid = _SelectedAppointmentFromHomePanelView.SchedulerAppointmentOid;
//Appointment appointmentToOpen;
if(oid != null)
{
appointmentToOpenFormHomePanel = apps.FirstOrDefault(app =>
{
var oidValue = app.CF_SchedulerAppointmentOid();
return oidValue.HasValue && oidValue.Value == oid;
});
//if(appointmentToOpenFormHomePanel != null)
//{
// Scheduler.ShowEditAppointmentForm(appointmentToOpenFormHomePanel);
//}
}
else if(_SelectedAppointmentFromHomePanelView.RecurrenceId != null && _SelectedAppointmentFromHomePanelView.RecurrenceIndex > 0)
{
appointmentToOpenFormHomePanel = apps.FirstOrDefault(appointment => appointment.RecurrenceInfo.Id.ToString().Equals(_SelectedAppointmentFromHomePanelView.RecurrenceId));
//if(appointmentToOpenFormHomePanel != null)
//{
// Scheduler.ShowEditAppointmentForm(appointmentToOpenFormHomePanel);
//}
}
_IsComingFromHomeDragPanel = false;
}
callback?.Invoke();
});
});
@@ -2303,16 +2269,51 @@ namespace BeWo.Scheduler.View
}
public void OpenAppointmentFromHomePanel()
{
while (_IsComingFromHomeDragPanel)
if (_SelectedAppointmentFromHomePanelView != null)
{
Thread.Sleep(100);
}
if (appointmentToOpenFormHomePanel != null)
{
Scheduler.ShowEditAppointmentForm(appointmentToOpenFormHomePanel);
var apps = Scheduler.ActiveView.GetAppointments().ToList();
appointmentToOpenFormHomePanel = null;
var oid = _SelectedAppointmentFromHomePanelView.SchedulerAppointmentOid;
Appointment appointmentToOpen = null;
if (oid != null)
{
appointmentToOpen = apps.FirstOrDefault(app =>
{
var oidValue = app.CF_SchedulerAppointmentOid();
return oidValue.HasValue && oidValue.Value == oid;
});
//if(appointmentToOpenFormHomePanel != null)
//{
// Scheduler.ShowEditAppointmentForm(appointmentToOpenFormHomePanel);
//}
}
else if (_SelectedAppointmentFromHomePanelView.RecurrenceId != null && _SelectedAppointmentFromHomePanelView.RecurrenceIndex > 0)
{
appointmentToOpen = apps.FirstOrDefault(appointment => appointment.RecurrenceInfo.Id.ToString().Equals(_SelectedAppointmentFromHomePanelView.RecurrenceId));
//if(appointmentToOpenFormHomePanel != null)
//{
// Scheduler.ShowEditAppointmentForm(appointmentToOpenFormHomePanel);
//}
}
if (appointmentToOpen != null)
{
Scheduler.ShowEditAppointmentForm(appointmentToOpen);
}
_SelectedAppointmentFromHomePanelView = null;
}
//while (_IsComingFromHomeDragPanel)
//{
//Thread.Sleep(100);
//}
}
private void ExportButton_OnClick(object sender, RoutedEventArgs e)

View File

@@ -21,7 +21,7 @@ namespace BeWo.View.Master
grid_root.Children.Add(scheduler);
scheduler.OpenAppointmentFromHomePanel();
//scheduler.OpenAppointmentFromHomePanel();
}
}
}