private void removeSickDayToolStripMenuItem_Click(object sender, EventArgs e) { ICalendarSelectableElement start = worker_calendar.SelectedElementStart; ICalendarSelectableElement end = worker_calendar.SelectedElementEnd; CalendarDayTop start_day = start as CalendarDayTop; CalendarDayTop end_day = end as CalendarDayTop; if (start_day == null || end_day == null) { return; } if (start_day.Date > end_day.Date) { //swap em ;) CalendarDayTop tmp = start_day; start_day = end_day; end_day = tmp; } IEnumerable <CalendarDay> days = worker_calendar.Days.Where(d => d.Date >= start_day.Date && d.Date <= end_day.Date); Worker.SickDays.RemoveDays(days.ElementAt(0).Date, days.Count()); Cursor = Cursors.WaitCursor; Worker.MarkForSave = true; Worker.Save(); Cursor = Cursors.Default; Refresh(); }
private void otherToolStripMenuItem1_Click(object sender, EventArgs e) { DayCountFrm frm = new DayCountFrm(); if (frm.ShowDialog() != DialogResult.OK) { return; } ICalendarSelectableElement start = worker_calendar.SelectedElementStart; ICalendarSelectableElement end = worker_calendar.SelectedElementEnd; CalendarDayTop start_day = start as CalendarDayTop; CalendarDayTop end_day = end as CalendarDayTop; if (start_day == null || end_day == null) { return; } if (start_day.Date > end_day.Date) { //swap em ;) CalendarDayTop tmp = start_day; start_day = end_day; end_day = tmp; } AddSickDay(start_day.Date, frm.DayCount, frm.ExcludeWeekends); }
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { base.OnMouseLeftButtonUp(e); ICalendarSelectableElement hitted = HitTest(e.GetPosition(this), State == CalendarState.DraggingTimeSelection); CalendarItem hittedItem = hitted as CalendarItem; CalendarDay hittedDay = hitted as CalendarDay; bool shiftPressed = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift); switch (State) { case CalendarState.Idle: break; case CalendarState.DraggingTimeSelection: if (SelectedElementStart == null || (hitted != null && !SelectedElementEnd.Equals(hitted))) { SelectedElementEnd = hitted; } if (hittedDay != null) { if (hittedDay.HeaderBounds.Contains(e.GetPosition(this))) { OnDayHeaderClick(new CalendarDayEventArgs(hittedDay)); } } break; case CalendarState.DraggingItem: if (itemOnStateChanged) { OnItemDatesChanged(new CalendarItemEventArgs(itemOnState)); } break; case CalendarState.ResizingItem: if (itemOnStateChanged) { OnItemDatesChanged(new CalendarItemEventArgs(itemOnState)); } break; case CalendarState.EditingItemText: break; } if (itemOnState != null) { itemOnState.SetIsDragging(false); itemOnState.SetIsResizingEndDate(false); itemOnState.SetIsResizingStartDate(false); Invalidate(itemOnState); OnItemClick(new CalendarItemEventArgs(itemOnState)); itemOnState = null; } SetState(CalendarState.Idle); }
private void removeTrainingToolStripMenuItem_Click(object sender, EventArgs e) { ICalendarSelectableElement start = worker_calendar.SelectedElementStart; ICalendarSelectableElement end = worker_calendar.SelectedElementEnd; CalendarDayTop start_day = start as CalendarDayTop; CalendarDayTop end_day = end as CalendarDayTop; CalendarTimeScaleUnit start_timeunit = start as CalendarTimeScaleUnit; CalendarTimeScaleUnit end_timeunit = end as CalendarTimeScaleUnit; if (start_day == null && end_day == null && start_timeunit == null && end_timeunit == null) { return; } else if (start_day != null && end_day != null) { if (start_day.Date > end_day.Date) { //swap em ;) CalendarDayTop tmp = start_day; start_day = end_day; end_day = tmp; } IEnumerable <CalendarDay> days = worker_calendar.Days.Where(d => d.Date >= start_day.Date && d.Date <= end_day.Date); Worker.Training.RemoveDays(days.ElementAt(0).Date, days.Count()); } else if (start_timeunit != null && end_timeunit != null && !start_timeunit.Day.Disabled) { //timescaleunit clicked start_day = start_timeunit.Day.DayTop; end_day = end_timeunit.Day.DayTop; IEnumerable <CalendarDay> daysSelected = worker_calendar.Days.Where(d => d.Date >= start_day.Date && d.Date <= end_day.Date); List <CalendarTimeScaleUnit> timeunitSelected = new List <CalendarTimeScaleUnit>(); foreach (CalendarDay day in daysSelected) { timeunitSelected.AddRange(day.TimeUnits.Where(t => t.Day == day && (t.Date >= start_timeunit.Date && t.Date <= end_timeunit.Date))); } foreach (CalendarTimeScaleUnit unit in timeunitSelected) { Worker.Training.RemoveTime(unit.Date, 60); } } Cursor = Cursors.WaitCursor; Worker.MarkForSave = true; Worker.Save(); Cursor = Cursors.Default; Refresh(); }
private void selectionToolStripMenuItem_Click_1(object sender, EventArgs e) { ICalendarSelectableElement start = worker_calendar.SelectedElementStart; ICalendarSelectableElement end = worker_calendar.SelectedElementEnd; CalendarDayTop start_day = start as CalendarDayTop; CalendarDayTop end_day = end as CalendarDayTop; CalendarTimeScaleUnit start_timeunit = start as CalendarTimeScaleUnit; CalendarTimeScaleUnit end_timeunit = end as CalendarTimeScaleUnit; if (start_day == null && end_day == null && start_timeunit == null && end_timeunit == null) { return; } else if (start_day != null && end_day != null) { //whole day selection if (start_day.Date > end_day.Date) { //swap em ;) CalendarDayTop tmp = start_day; start_day = end_day; end_day = tmp; } AddTraining(start_day.Date, (int)(end_day.Date - start_day.Date).TotalDays + 1); } else if (start_timeunit != null && end_timeunit != null) { //time unit selection if (start_timeunit.Date > end_timeunit.Date) { //swap em ;) CalendarTimeScaleUnit tmp = start_timeunit; start_timeunit = end_timeunit; end_timeunit = tmp; } AddTraining(start_timeunit.Date, 0, (int)(end_timeunit.Date - start_timeunit.Date).TotalMinutes + 60); } }
private void weeksToolStripMenuItem1_Click(object sender, EventArgs e) { ICalendarSelectableElement start = worker_calendar.SelectedElementStart; ICalendarSelectableElement end = worker_calendar.SelectedElementEnd; CalendarDayTop start_day = start as CalendarDayTop; CalendarDayTop end_day = end as CalendarDayTop; if (start_day == null || end_day == null) { return; } if (start_day.Date > end_day.Date) { //swap em ;) CalendarDayTop tmp = start_day; start_day = end_day; end_day = tmp; } AddSickDay(start_day.Date, 14); }
private void selectionToolStripMenuItem_Click(object sender, EventArgs e) { ICalendarSelectableElement start = worker_calendar.SelectedElementStart; ICalendarSelectableElement end = worker_calendar.SelectedElementEnd; CalendarDayTop start_day = start as CalendarDayTop; CalendarDayTop end_day = end as CalendarDayTop; if (start_day == null || end_day == null) { return; } if (start_day.Date > end_day.Date) { //swap em ;) CalendarDayTop tmp = start_day; start_day = end_day; end_day = tmp; } AddHoliday(start_day.Date, (int)(end_day.Date - start_day.Date).TotalDays + 1); }
/// <summary> /// Compares this element with other using date as comparer /// </summary> /// <param name="element"></param> /// <returns></returns> public virtual int CompareTo(ICalendarSelectableElement element) { return(Date.CompareTo(element.Date)); }
/// <summary> /// Establishes the selection range with only one graphical update. /// </summary> /// <param name="selectionStart">Fisrt selected element</param> /// <param name="selectionEnd">Last selection element</param> public void SetSelectionRange(ICalendarSelectableElement selectionStart, ICalendarSelectableElement selectionEnd) { _selectedElementStart = selectionStart; SelectedElementEnd = selectionEnd; }
/// <summary> /// Compares this element with other using date as comparer /// </summary> /// <param name="element"></param> /// <returns></returns> public virtual int CompareTo(ICalendarSelectableElement element) { return this.Date.CompareTo(element.Date); }
protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); ICalendarSelectableElement hitted = HitTest(e.GetPosition(this), State != CalendarState.Idle); CalendarItem hittedItem = hitted as CalendarItem; CalendarDayTop hittedTop = hitted as CalendarDayTop; bool shiftPressed = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift); if (hitted != null) { switch (State) { case CalendarState.Idle: Cursor should = Cursors.Arrow; if (hittedItem != null) { if ((hittedItem.ResizeEndDateZone(e.GetPosition(this)) || hittedItem.ResizeStartDateZone(e.GetPosition(this))) && AllowItemResize) { should = hittedItem.IsOnDayTop || DaysMode == CalendarDaysMode.Short ? Cursors.SizeWE : Cursors.SizeNS; } OnItemMouseHover(new CalendarItemEventArgs(hittedItem)); } if (!Cursor.Equals(should)) { Cursor = should; } break; case CalendarState.DraggingTimeSelection: if (SelectedElementStart != null && !SelectedElementEnd.Equals(hitted)) { SelectedElementEnd = hitted; } break; case CalendarState.DraggingItem: TimeSpan duration = itemOnState.Duration; itemOnState.SetIsDragging(true); itemOnState.StartDate = hitted.Date; itemOnState.EndDate = itemOnState.StartDate.Add(duration); Renderer.PerformItemsLayout(); Invalidate(); itemOnStateChanged = true; break; case CalendarState.ResizingItem: if (itemOnState.IsResizingEndDate && hitted.Date.CompareTo(itemOnState.StartDate) >= 0) { itemOnState.EndDate = hitted.Date.Add(hittedTop != null || DaysMode == CalendarDaysMode.Short ? new TimeSpan(23, 59, 59) : Days[0].TimeUnits[0].Duration); } else if (itemOnState.IsResizingStartDate && hitted.Date.CompareTo(itemOnState.EndDate) <= 0) { itemOnState.StartDate = hitted.Date; } Renderer.PerformItemsLayout(); Invalidate(); itemOnStateChanged = true; break; case CalendarState.EditingItemText: break; } } }
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); ICalendarSelectableElement hitted = HitTest(e.GetPosition(this)); CalendarItem hittedItem = hitted as CalendarItem; bool shiftPressed = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift); if (!Focused) { Focus(); } switch (State) { case CalendarState.Idle: if (hittedItem != null) { if (!shiftPressed) { ClearSelectedItems(); } hittedItem.SetSelected(true); Invalidate(hittedItem); OnItemSelected(new CalendarItemEventArgs(hittedItem)); itemOnState = hittedItem; itemOnStateChanged = false; if (AllowItemEdit) { if (itemOnState.ResizeStartDateZone(e.GetPosition(this)) && AllowItemResize) { SetState(CalendarState.ResizingItem); itemOnState.SetIsResizingStartDate(true); } else if (itemOnState.ResizeEndDateZone(e.GetPosition(this)) && AllowItemResize) { SetState(CalendarState.ResizingItem); itemOnState.SetIsResizingEndDate(true); } else { SetState(CalendarState.DraggingItem); } } SetSelectionRange(null, null); } else { ClearSelectedItems(); if (shiftPressed) { if (hitted != null && SelectedElementEnd == null && !SelectedElementEnd.Equals(hitted)) { SelectedElementEnd = hitted; } } else { if (SelectedElementStart == null || (hitted != null && !SelectedElementStart.Equals(hitted))) { SetSelectionRange(hitted, hitted); } } SetState(CalendarState.DraggingTimeSelection); } break; case CalendarState.DraggingTimeSelection: break; case CalendarState.DraggingItem: break; case CalendarState.ResizingItem: break; case CalendarState.EditingItemText: break; } }
protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); if (AllowNew) { CreateItemOnSelection(e.Key.ToString(), true); } bool shiftPressed = (e.Key.GetTypeCode()) == ModifierKeys.Shift.GetTypeCode(); int jump = (int)TimeScale; ICalendarSelectableElement sStart = null; ICalendarSelectableElement sEnd = null; if (e.Key == Key.F2) { ActivateEditMode(); } else if (e.Key == Key.Delete) { DeleteSelectedItems(); } else if (e.Key == Key.Insert) { if (AllowNew) { CreateItemOnSelection(string.Empty, true); } } else if (e.Key == Key.Down) { if (e.Key.GetTypeCode() == ModifierKeys.Shift.GetTypeCode()) { sStart = SelectedElementStart; } sEnd = GetTimeUnit(SelectedElementEnd.Date.Add(new TimeSpan(0, (int)TimeScale, 0))); } else if (e.Key == Key.Up) { if (e.Key.GetTypeCode() == ModifierKeys.Shift.GetTypeCode()) { sStart = SelectedElementStart; } sEnd = GetTimeUnit(SelectedElementEnd.Date.Add(new TimeSpan(0, -(int)TimeScale, 0))); } else if (e.Key == Key.Right) { sEnd = GetTimeUnit(SelectedElementEnd.Date.Add(new TimeSpan(24, 0, 0))); } else if (e.Key == Key.Left) { sEnd = GetTimeUnit(SelectedElementEnd.Date.Add(new TimeSpan(-24, 0, 0))); } else if (e.Key == Key.PageDown) { } else if (e.Key == Key.PageUp) { } if (sStart != null) { SetSelectionRange(sStart, sEnd); } else if (sEnd != null) { SetSelectionRange(sEnd, sEnd); if (sEnd is CalendarTimeScaleUnit) { EnsureVisible(sEnd as CalendarTimeScaleUnit); } } }
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) { //clear everything first setAsHolidayToolStripMenuItem.Visible = false; removeHolidayToolStripMenuItem.Visible = false; setAsSickDayToolStripMenuItem.Visible = false; removeSickDayToolStripMenuItem.Visible = false; setAsTrainingToolStripMenuItem.Visible = false; removeTrainingToolStripMenuItem.Visible = false; oneWeekToolStripMenuItem.Visible = false; twoWeeksToolStripMenuItem.Visible = false; otherToolStripMenuItem2.Visible = false; unassignToolStripMenuItem.Visible = false; if (SelectedItems.Count > 0) { unassignToolStripMenuItem.Visible = true; return; } ICalendarSelectableElement start = worker_calendar.SelectedElementStart; ICalendarSelectableElement end = worker_calendar.SelectedElementEnd; CalendarDayTop start_day = start as CalendarDayTop; CalendarDayTop end_day = end as CalendarDayTop; CalendarTimeScaleUnit start_timeunit = start as CalendarTimeScaleUnit; CalendarTimeScaleUnit end_timeunit = end as CalendarTimeScaleUnit; oneWeekToolStripMenuItem.Visible = true; twoWeeksToolStripMenuItem.Visible = true; otherToolStripMenuItem2.Visible = true; if (start_day != null && end_day != null) { //day top clicked if (start_day.Date > end_day.Date) { //swap em ;) CalendarDayTop tmp = start_day; start_day = end_day; end_day = tmp; } if (start_day == null || end_day == null) { //only allow training to be set if we arent selecting the whole day removeTrainingToolStripMenuItem.Visible = true; setAsTrainingToolStripMenuItem.Visible = true; } else { IEnumerable <CalendarDay> daysSelected = worker_calendar.Days.Where(d => d.Date >= start_day.Date && d.Date <= end_day.Date); int holidayCount = daysSelected.Where(d => d.Disabled && d.Image != null && d.Image.Tag.ToString() == "holiday").Count(); int sickCount = daysSelected.Where(d => d.Disabled && d.Image != null && d.Image.Tag.ToString() == "sick").Count(); int trainingCount = daysSelected.Where(d => d.Disabled && d.Image != null && d.Image.Tag.ToString() == "training").Count(); if (holidayCount < daysSelected.Count()) { setAsHolidayToolStripMenuItem.Visible = true; //not all are holiday } if (sickCount < daysSelected.Count()) { setAsSickDayToolStripMenuItem.Visible = true; //not all are sick } if (trainingCount < daysSelected.Count()) { setAsTrainingToolStripMenuItem.Visible = true; //not all are training } if (holidayCount > 0) { removeHolidayToolStripMenuItem.Visible = true; } if (sickCount > 0) { removeSickDayToolStripMenuItem.Visible = true; } if (trainingCount > 0) { removeTrainingToolStripMenuItem.Visible = true; } } } else if (start_timeunit != null && end_timeunit != null && !start_timeunit.Day.Disabled) { //timescaleunit clicked //dont need these for individual hour training oneWeekToolStripMenuItem.Visible = false; twoWeeksToolStripMenuItem.Visible = false; otherToolStripMenuItem2.Visible = false; start_day = start_timeunit.Day.DayTop; end_day = end_timeunit.Day.DayTop; IEnumerable <CalendarDay> daysSelected = worker_calendar.Days.Where(d => d.Date >= start_day.Date && d.Date <= end_day.Date); List <CalendarTimeScaleUnit> timeunitSelected = new List <CalendarTimeScaleUnit>(); foreach (CalendarDay day in daysSelected) { timeunitSelected.AddRange(day.TimeUnits.Where(t => t.Day == day && (t.Date >= start_timeunit.Date && t.Date <= end_timeunit.Date))); } int trainingCount = timeunitSelected.Where(t => t.Disabled && t.Image != null && t.Image.Tag.ToString() == "training").Count(); if (trainingCount < timeunitSelected.Count()) { setAsTrainingToolStripMenuItem.Visible = true; //not all are training } if (trainingCount > 0) { removeTrainingToolStripMenuItem.Visible = true; } } else { e.Cancel = true; return; } }