public PopupDatePicker() { Orientation = ScrollOrientation.Horizontal; HorizontalOptions = LayoutOptions.Center; Padding = 0; BackgroundColor = StyleManager.DarkAccentColor; var now = DateTime.Now; monthTiles = new List <TopPanelItem>(); for (int i = 1; i <= 12; i++) { IEnumerable <DateTime> days = CalendarHelper.GetDaysInMonth(i, now.Year); var dayPicker = new DayPicker(CalendarHelper.CreateDayLayouts(days)); dayPicker.DateChanged += (sender, e) => { SelectedDay = dayPicker.SelectedItem; DateChanged(sender, e); }; var month = new DateTime(now.Year, i, 1, 0, 0, 0, DateTimeKind.Local); var tab = new TopPanelItem(month.ToString("MMMM", new CultureInfo("en-US")), dayPicker) { WidthRequest = 100 }; if (month.Month == now.Month) { tab.IsSelected = true; currentMonthTile = tab; } monthTiles.Add(tab); } monthPicker = new PopupTopPanel(monthTiles); monthPicker.DefaultView = currentMonthTile.ContentView; DefaultView = monthPicker.DefaultView; Content = monthPicker; ScrollEnded += (sender, args) => { var position = (int)Math.Round(ScrollX / 115); if (position >= 0 && position < monthTiles.Count) { SelectMonthTile(monthTiles[position]); } }; Scrolled += (sender, args) => { var position = (int)Math.Round(args.ScrollX / 115); if (position >= 0 && position < monthTiles.Count) { HighlightItem(position); } }; }
public HomeTopPanel(DateTime selectedDate) { SelectedDate = selectedDate; selectedMonth = SelectedDate.Month; selectedYear = selectedDate.Year; // Today's content view. var currentDayLayout = new ContentView { Padding = 6, Content = new DefaultLabel { HorizontalOptions = LayoutOptions.Center, Text = selectedDate.ToString("dddd", new CultureInfo("en-US")) } }; calendarView = new CalendarView { VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.CenterAndExpand }; // Home page tabs. todayButton = new TopPanelItem("Today", currentDayLayout, true); monthButton = new TopPanelItem(SelectedDate.ToString("MMMM", new CultureInfo("en-US"))); yearButton = new TopPanelItem(SelectedDate.Year.ToString(), calendarView); Items = new List <TopPanelItem> { todayButton, monthButton, yearButton }; Children.Add(todayButton); Children.Add(monthButton); Children.Add(yearButton); DefaultView = todayButton.ContentView; LastView = todayButton.ContentView; todayButton.OnTap += SelectToday; yearButton.OnTap += ShowCalender; monthButton.OnTap += ShowMonthLayout; calendarView.MonthChanged += (sender, newMonth) => ChangeMonth(newMonth); calendarView.DateSelected += (sender, newDate) => { SelectDate(newDate); ShowMonthLayout(); }; BottomPanel = new ContentView(); OnItemSelected = view => { if (view != null) { BottomPanel.Content = view; } }; BottomPanel.Content = DefaultView; }
private void SelectMonthTile(TopPanelItem selectedMonthTile) { monthTiles [SelectedItem].IsSelected = false; selectedMonthTile.IsSelected = true; SelectedItem = monthTiles.IndexOf(selectedMonthTile); ScrollToAsync(SelectedItem * 115, 0, false); OnItemSelected.Dispatch(selectedMonthTile.ContentView); SelectDay(1); }
public PopupDatePicker() { Orientation = ScrollOrientation.Horizontal; HorizontalOptions = LayoutOptions.Center; Padding = 0; BackgroundColor = StyleManager.DarkAccentColor; var now = DateTime.Now; monthTiles = new List<TopPanelItem>(); for (int i = 1; i <= 12; i++) { IEnumerable<DateTime> days = CalendarHelper.GetDaysInMonth(i, now.Year); var dayPicker = new DayPicker(CalendarHelper.CreateDayLayouts(days)); dayPicker.DateChanged += (sender, e) => { SelectedDay = dayPicker.SelectedItem; DateChanged (sender, e); }; var month = new DateTime (now.Year, i, 1, 0, 0, 0, DateTimeKind.Local); var tab = new TopPanelItem(month.ToString("MMMM", new CultureInfo("en-US")), dayPicker) { WidthRequest = 100 }; if (month.Month == now.Month) { tab.IsSelected = true; currentMonthTile = tab; } monthTiles.Add(tab); } monthPicker = new PopupTopPanel(monthTiles); monthPicker.DefaultView = currentMonthTile.ContentView; DefaultView = monthPicker.DefaultView; Content = monthPicker; ScrollEnded += ( sender, args ) => { var position = (int) Math.Round(ScrollX/115); if (position >= 0 && position < monthTiles.Count) SelectMonthTile(monthTiles[position]); }; Scrolled += ( sender, args ) => { var position = (int) Math.Round(args.ScrollX/115); if (position >= 0 && position < monthTiles.Count) HighlightItem(position); }; }
public HomeTopPanel( DateTime selectedDate) { SelectedDate = selectedDate; selectedMonth = SelectedDate.Month; selectedYear = selectedDate.Year; // Today's content view. var currentDayLayout = new ContentView { Padding = 6, Content = new DefaultLabel { HorizontalOptions = LayoutOptions.Center, Text = selectedDate.ToString("dddd", new CultureInfo("en-US")) } }; calendarView = new CalendarView { VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.CenterAndExpand }; // Home page tabs. todayButton = new TopPanelItem("Today", currentDayLayout, true); monthButton = new TopPanelItem(SelectedDate.ToString("MMMM", new CultureInfo("en-US"))); yearButton = new TopPanelItem(SelectedDate.Year.ToString(), calendarView); Items = new List<TopPanelItem> {todayButton, monthButton, yearButton}; Children.Add(todayButton); Children.Add(monthButton); Children.Add(yearButton); DefaultView = todayButton.ContentView; LastView = todayButton.ContentView; todayButton.OnTap += SelectToday; yearButton.OnTap += ShowCalender; monthButton.OnTap += ShowMonthLayout; calendarView.MonthChanged += (sender, newMonth) => ChangeMonth(newMonth); calendarView.DateSelected += (sender, newDate) => { SelectDate (newDate); ShowMonthLayout(); }; BottomPanel = new ContentView (); OnItemSelected = view => { if (view != null) BottomPanel.Content = view; }; BottomPanel.Content = DefaultView; }
protected override void SelectItem(TopPanelItem item) { base.SelectItem(item); OnItemSelected.Dispatch(item.ContentView); }
private void SelectMonthTile(TopPanelItem selectedMonthTile) { monthTiles [SelectedItem].IsSelected = false; selectedMonthTile.IsSelected = true; SelectedItem = monthTiles.IndexOf(selectedMonthTile); ScrollToAsync(SelectedItem*115, 0, false); OnItemSelected.Dispatch(selectedMonthTile.ContentView); SelectDay (1); }
protected override void SelectItem( TopPanelItem item ) { base.SelectItem(item); OnItemSelected.Dispatch (item.ContentView); }