private void scrollingTimer_Tick(object sender, EventArgs e) { if (this.shouldScroll) { int offset = 0; if (this.scrollUp) { FastNavigationItem item = this.hostedControl.Items[0] as FastNavigationItem; if (item.View.ViewStartDate <= this.Calendar.RangeMinDate) { return; } viewIndex--; offset = 1; } else { FastNavigationItem item = this.hostedControl.Items[this.hostedControl.Items.Count - 1] as FastNavigationItem; if (item.View.ViewEndDate >= this.Calendar.RangeMaxDate) { return; } viewIndex++; offset = -1; } int a = Calendar.RangeMaxDate.Month + (Calendar.RangeMaxDate.Year * 12); int b = Calendar.RangeMinDate.Month + (Calendar.RangeMinDate.Year * 12); if ((a - b) > hostedControl.Items.Count) { CalendarView maxView = (this.hostedControl.Items[this.hostedControl.Items.Count - 1] as FastNavigationItem).View; maxView = maxView.GetNextView(-offset); int maxViewMonth = maxView.ViewStartDate.Month; int maxViewYear = maxView.ViewStartDate.Year; CalendarView minView = (this.hostedControl.Items[0] as FastNavigationItem).View; minView = minView.GetNextView(-offset); int minViewMonth = minView.ViewStartDate.Month; int minViewYear = minView.ViewStartDate.Year; InitializeNavItems(viewIndex); if ((maxViewMonth >= this.Calendar.RangeMaxDate.Month && maxViewYear >= this.Calendar.RangeMaxDate.Year) || (minViewMonth <= this.Calendar.RangeMinDate.Month && minViewYear <= this.Calendar.RangeMinDate.Year)) { viewIndex += offset; } } this.scrollingTimer.Interval = 2500 / (Math.Abs(offsetPoint.Y) + 1); } }
private void SetNavigationItemsVisibility() { for (int i = 0; i < this.hostedControl.Items.Count; i++) { FastNavigationItem item = this.hostedControl.Items[i] as FastNavigationItem; item.Visibility = ElementVisibility.Visible; } for (int i = 0; i < this.hostedControl.Items.Count; i++) { FastNavigationItem item = this.hostedControl.Items[i] as FastNavigationItem; for (int j = i + 1; j < this.hostedControl.Items.Count; j++) { FastNavigationItem item2 = this.hostedControl.Items[j] as FastNavigationItem; if (item.View.Equals(item2.View)) { item2.Visibility = ElementVisibility.Collapsed; } } } // Get Visible Items List <FastNavigationItem> visibleItems = new List <FastNavigationItem>(); for (int i = 0; i < this.hostedControl.Items.Count; i++) { if (this.hostedControl.Items[i].Visibility == ElementVisibility.Visible) { visibleItems.Add(this.hostedControl.Items[i] as FastNavigationItem); this.hostedControl.Items[i].Visibility = ElementVisibility.Collapsed; } } for (int i = 0; i < this.hostedControl.Items.Count; i++) { if (visibleItems.Count > i) { (this.hostedControl.Items[i] as FastNavigationItem).View = visibleItems[i].View; (this.hostedControl.Items[i] as FastNavigationItem).Text = visibleItems[i].View.GetTitleContent(); (this.hostedControl.Items[i] as FastNavigationItem).Visibility = ElementVisibility.Visible; } else { break; } } }
private void items_ItemsChanged(RadItemCollection changed, RadItem target, ItemsChangeOperation operation) { if (operation == ItemsChangeOperation.Inserted) { this.Children.Add(target); } else if (operation == ItemsChangeOperation.Cleared) { for (int i = this.Children.Count - 1; i >= 0; i--) { FastNavigationItem item = this.Children[i] as FastNavigationItem; if (item != null) { this.Children.Remove(item); } } } }
private void items_ItemsChanged( RadItemCollection changed, RadItem target, ItemsChangeOperation operation) { switch (operation) { case ItemsChangeOperation.Inserted: this.Children.Add((RadElement)target); break; case ItemsChangeOperation.Cleared: for (int index = this.Children.Count - 1; index >= 0; --index) { FastNavigationItem child = this.Children[index] as FastNavigationItem; if (child != null) { this.Children.Remove((RadElement)child); } } break; } }
private void LoadFastNavigationItems() { this.viewIndex = 0; InitializeNavItems(0); this.hostedControl.Items.Clear(); if (this.hostedControl.Items.Count == 0) { this.dropDown.SizingMode = SizingMode.None; int fastNavigationItemsCnt = this.FastNavigationItemsCount; int months = (this.Calendar.RangeMaxDate.Year * 12 + this.Calendar.RangeMaxDate.Month) - (this.Calendar.RangeMinDate.Year * 12 + this.Calendar.RangeMinDate.Month) + 1; if (fastNavigationItemsCnt > months) { fastNavigationItemsCnt = months; } FastNavigationItem previosItem = null; for (int i = 1; i <= fastNavigationItemsCnt; i++) { FastNavigationItem item = null; switch (i) { case 1: item = item1; break; case 2: item = item2; break; case 3: item = item3; break; case 4: item = item4; break; case 5: item = item5; break; case 6: item = item6; break; case 7: item = item7; break; case 8: item = item8; break; case 9: item = item9; break; case 10: item = item10; break; case 11: item = item11; break; case 12: item = item12; break; case 13: item = item13; break; } if (item == null) { continue; } if (previosItem != null && item.View.ViewStartDate == previosItem.View.ViewStartDate && item.View.ViewEndDate == previosItem.View.ViewEndDate) { previosItem = item; continue; } this.hostedControl.Items.Add(item); previosItem = item; } } SetNavigationItemsVisibility(); }
private void InitializeNavItems(int offset) { if (item1 == null) { item1 = new FastNavigationItem(this.Calendar, this.View); item2 = new FastNavigationItem(this.Calendar, this.View); item3 = new FastNavigationItem(this.Calendar, this.View); item4 = new FastNavigationItem(this.Calendar, this.View); item5 = new FastNavigationItem(this.Calendar, this.View); item6 = new FastNavigationItem(this.Calendar, this.View); item7 = new FastNavigationItem(this.Calendar, this.View); item8 = new FastNavigationItem(this.Calendar, this.View); item9 = new FastNavigationItem(this.Calendar, this.View); item10 = new FastNavigationItem(this.Calendar, this.View); item11 = new FastNavigationItem(this.Calendar, this.View); item12 = new FastNavigationItem(this.Calendar, this.View); item13 = new FastNavigationItem(this.Calendar, this.View); // To be reviewed later Boyko Markov item1.PerformLayout(); item2.PerformLayout(); item3.PerformLayout(); item4.PerformLayout(); item5.PerformLayout(); item6.PerformLayout(); item7.PerformLayout(); item8.PerformLayout(); item9.PerformLayout(); item10.PerformLayout(); item11.PerformLayout(); item12.PerformLayout(); item13.PerformLayout(); } int defaultStep = 3; switch (this.FastNavigationItemsCount) { case 3: defaultStep = 1; break; case 7: defaultStep = 3; break; case 9: defaultStep = 4; break; case 11: defaultStep = 5; break; case 13: defaultStep = 6; break; } int yearDif = this.Calendar.DefaultView.ViewStartDate.Year - this.Calendar.RangeMinDate.Year; int monthDif = this.Calendar.DefaultView.ViewStartDate.Month - this.Calendar.RangeMinDate.Month; int realMonthDif = (yearDif * 12) + monthDif; if (realMonthDif < FastNavigationItemsCount) { defaultStep = realMonthDif; } if (this.FastNavigationItemsCount > 1) { CalendarView item1View = this.Calendar.GetNewViewFromStep(-defaultStep + offset); CalendarView item2View = this.Calendar.GetNewViewFromStep(-defaultStep + 1 + offset); CalendarView item3View = this.Calendar.GetNewViewFromStep(-defaultStep + 2 + offset); item1.View = item1View; item2.View = item2View; item3.View = item3View; item1.Text = item1.View.GetTitleContent(); item2.Text = item2.View.GetTitleContent(); item3.Text = item3.View.GetTitleContent(); } if (this.FastNavigationItemsCount > 3) { CalendarView item4View = this.Calendar.GetNewViewFromStep(-defaultStep + 3 + offset); CalendarView item5View = this.Calendar.GetNewViewFromStep(-defaultStep + 4 + offset); CalendarView item6View = this.Calendar.GetNewViewFromStep(-defaultStep + 5 + offset); CalendarView item7View = this.Calendar.GetNewViewFromStep(-defaultStep + 6 + offset); item4.View = item4View; item5.View = item5View; item6.View = item6View; item7.View = item7View; item4.Text = item4.View.GetTitleContent(); item5.Text = item5.View.GetTitleContent(); item6.Text = item6.View.GetTitleContent(); item7.Text = item7.View.GetTitleContent(); } if (this.FastNavigationItemsCount > 7) { item8.View = this.Calendar.GetNewViewFromStep(-defaultStep + 7 + offset); item9.View = this.Calendar.GetNewViewFromStep(-defaultStep + 8 + offset); item8.Text = item8.View.GetTitleContent(); item9.Text = item9.View.GetTitleContent(); } if (this.FastNavigationItemsCount > 9) { item10.View = this.Calendar.GetNewViewFromStep(-defaultStep + 9 + offset); item11.View = this.Calendar.GetNewViewFromStep(-defaultStep + 10 + offset); item10.Text = item10.View.GetTitleContent(); item11.Text = item11.View.GetTitleContent(); } if (this.fastNavigationItemsCount > 11) { item12.View = this.Calendar.GetNewViewFromStep(-defaultStep + 11 + offset); item13.View = this.Calendar.GetNewViewFromStep(-defaultStep + 12 + offset); item12.Text = item12.View.GetTitleContent(); item13.Text = item13.View.GetTitleContent(); } SetNavigationItemsVisibility(); this.dropDown.Invalidate(); this.hostedControl.Refresh(); }