private void ScrollToVenue(Venue venue) { var tableSource = VenuesAndShowsTableView.WeakDelegate as OrgEventTableSource; if (tableSource != null) { var index = tableSource.GetItemIndex(venue); if (index != null) { VenuesAndShowsTableView.ScrollToRow( index, UITableViewScrollPosition.Top, true); } } }
void ReleaseDesignerOutlets() { if (ProgressView != null) { ProgressView.Dispose(); ProgressView = null; } if (FullscreenHeightConstraint != null) { FullscreenHeightConstraint.Dispose(); FullscreenHeightConstraint = null; } if (FullscreenWidthConstraint != null) { FullscreenWidthConstraint.Dispose(); FullscreenWidthConstraint = null; } if (ListSettingsHeightConstraint != null) { ListSettingsHeightConstraint.Dispose(); ListSettingsHeightConstraint = null; } if (ListSettingsToTableConstraint != null) { ListSettingsToTableConstraint.Dispose(); ListSettingsToTableConstraint = null; } if (ListSettingsView != null) { ListSettingsView.Dispose(); ListSettingsView = null; } if (MapBottomSeparator != null) { MapBottomSeparator.Dispose(); MapBottomSeparator = null; } if (MapFullscreenButton != null) { MapFullscreenButton.Dispose(); MapFullscreenButton = null; } if (MapHeightConstraint != null) { MapHeightConstraint.Dispose(); MapHeightConstraint = null; } if (MapPanel != null) { MapPanel.Dispose(); MapPanel = null; } if (MapToListSettingsConstraint != null) { MapToListSettingsConstraint.Dispose(); MapToListSettingsConstraint = null; } if (ProgressViewTopConstraint != null) { ProgressViewTopConstraint.Dispose(); ProgressViewTopConstraint = null; } if (SearchBar != null) { SearchBar.Dispose(); SearchBar = null; } if (SearchTableTopConstraint != null) { SearchTableTopConstraint.Dispose(); SearchTableTopConstraint = null; } if (SearchTableView != null) { SearchTableView.Dispose(); SearchTableView = null; } if (TableHeightConstraint != null) { TableHeightConstraint.Dispose(); TableHeightConstraint = null; } if (VenuesAndShowsTableView != null) { VenuesAndShowsTableView.Dispose(); VenuesAndShowsTableView = null; } if (VenuesMapView != null) { VenuesMapView.Dispose(); VenuesMapView = null; } }
private void UpdateViewState(bool animated) { switch (CurrentMode) { case OrgEventViewMode.Combo: _modeButton.Hidden = false; _modeButton.VerticalIcon = ThemeIcons.List; _modeButton.LandscapeIcon = ThemeIcons.ListLandscape; _modeButton.UpdateState(); MapFullscreenButton.VerticalIcon = ThemeIcons.Fullscreen; MapFullscreenButton.LandscapeIcon = ThemeIcons.FullscreenLandscape; MapFullscreenButton.UpdateState(); VenuesAndShowsTableView.Hidden = false; MapPanel.Hidden = false; MapFullscreenButton.SetHidden(false, animated); ListSettingsView.Hidden = true; _scrollToHideManager.IsActive = false; InitializeMapView(); break; case OrgEventViewMode.Map: _modeButton.Hidden = false; _modeButton.VerticalIcon = ThemeIcons.List; _modeButton.LandscapeIcon = ThemeIcons.ListLandscape; _modeButton.UpdateState(); MapFullscreenButton.VerticalIcon = ThemeIcons.ExitFullscreen; MapFullscreenButton.LandscapeIcon = ThemeIcons.ExitFullscreenLandscape; MapFullscreenButton.UpdateState(); VenuesAndShowsTableView.SetHidden(true, animated); MapPanel.Hidden = false; MapFullscreenButton.SetHidden(false, animated); ListSettingsView.Hidden = true; _scrollToHideManager.IsActive = false; InitializeMapView(); break; case OrgEventViewMode.List: _modeButton.Hidden = !HasData; _modeButton.VerticalIcon = ThemeIcons.Map; _modeButton.LandscapeIcon = ThemeIcons.MapLandscape; _modeButton.UpdateState(); if (HasData) { VenuesAndShowsTableView.Hidden = false; } MapPanel.SetHidden(true, animated); MapFullscreenButton.SetHidden(true, animated); var listSettingsHidden = !HasData || IsInSearch; ListSettingsView.SetHidden(listSettingsHidden, animated && !listSettingsHidden); _scrollToHideManager.IsActive = !IsInSearch && HasData; break; } UpdateNavBarState(animated); UpdateNavBarItemsState(); UpdateDayButtonState(); UpdateTableViewInset(); UpdateViewConstraints(animated); UpdateSearchTableViewState(); UpdateFavoritesUnavailableState(); SearchBar.Hidden = !HasData; SearchTableView.SetHidden(!IsInSearch, animated); SearchTableView.ScrollsToTop = IsInSearch; VenuesAndShowsTableView.ScrollsToTop = !IsInSearch; VenuesAndShowsTableView.ScrollEnabled = !IsInSearch; View.BackgroundColor = IsInSearch ? ThemeColors.PanelBackground : ThemeColors.ContentLightBackground; SetNeedStatusBarUpdate(animated); }
protected override void OnViewModelPropertyChanged(string propertyName) { base.OnViewModelPropertyChanged(propertyName); if (propertyName == ViewModel.GetPropertyName(vm => vm.SortBy)) { UpdateFavoritesUnavailableState(); ScrollViewToTop(false); } else if (propertyName == ViewModel.GetPropertyName(vm => vm.CurrentMapType)) { VenuesMapView.MapType = ViewModel.CurrentMapType.ToMKMapType(); ReloadMap(); } else if (propertyName == ViewModel.GetPropertyName(vm => vm.OrgEvent)) { UpdateDayButtonState(); UpdateViewState(false); ReloadMap(); } else if (propertyName == ViewModel.GetPropertyName(vm => vm.SelectedVenueOnMap)) { if (CurrentMode == OrgEventViewMode.Map || CurrentMode == OrgEventViewMode.Combo || ViewModel.SelectedVenueOnMap == null) { SelectVenueMapAnnotation(ViewModel.SelectedVenueOnMap); } } else if (propertyName == ViewModel.GetPropertyName(vm => vm.ExpandedShow)) { UpdateTableViewOnShowExpanding(VenuesAndShowsTableView); if (IsInSearch && !SearchTableView.Hidden) { UpdateTableViewOnShowExpanding(SearchTableView); } } else if (propertyName == ViewModel.GetPropertyName(vm => vm.IsMultiday) || propertyName == ViewModel.GetPropertyName(vm => vm.CurrentDay)) { UpdateDayButtonState(); } else if (propertyName == ViewModel.GetPropertyName(vm => vm.SearchListItems)) { UpdateSearchTableViewState(); } else if (propertyName == ViewModel.GetPropertyName(vm => vm.ShowOnlyFavorites)) { UpdateFavoritesUnavailableState(); ScrollViewToTop(false); } else if (propertyName == ViewModel.GetPropertyName(vm => vm.IsInSearch)) { var isInSearch = ViewModel.IsInSearch; UpdateViewState(true); InvokeAfterAnimation(() => { if (!isInSearch) { // keeping searchbar visible after search ended VenuesAndShowsTableView.SetActualContentOffset(0, false); } }); } else if (propertyName == ViewModel.GetPropertyName(vm => vm.CurrentCalendarEvent)) { if (ViewModel.CurrentCalendarEvent != null) { if (_editCalEventController == null) { InitializeCalEventViewController(); } } else { DisposeCalEventViewController(); } } }
private void UpdateViewConstraints(bool animated) { _isAnimating = animated; var animationFinish = new Action(() => { _isAnimating = false; if (AnimationFinished != null) { AnimationFinished(this, EventArgs.Empty); } }); switch (CurrentMode) { case OrgEventViewMode.Combo: VenuesAndShowsTableView.RemoveConstraint(TableHeightConstraint); if (!View.Constraints.Contains(SearchTableTopConstraint)) { View.AddConstraint(SearchTableTopConstraint); } if (!MapPanel.Constraints.Contains(MapHeightConstraint)) { MapPanel.AddConstraint(MapHeightConstraint); } View.UpdateConstraint( () => MapHeightConstraint.Constant = ScreenUtil.GetGoldenRatio(View.Frame.Height), animated, animationFinish); MapToListSettingsConstraint.Constant = 0; ListSettingsHeightConstraint.Constant = 0; ListSettingsToTableConstraint.Constant = 0; break; case OrgEventViewMode.Map: MapPanel.RemoveConstraint(MapHeightConstraint); View.RemoveConstraint(SearchTableTopConstraint); if (!VenuesAndShowsTableView.Constraints.Contains(TableHeightConstraint)) { VenuesAndShowsTableView.AddConstraint(TableHeightConstraint); } View.UpdateConstraint( () => TableHeightConstraint.Constant = 0, animated, animationFinish); MapToListSettingsConstraint.Constant = 0; ListSettingsHeightConstraint.Constant = 0; ListSettingsToTableConstraint.Constant = 0; break; case OrgEventViewMode.List: VenuesAndShowsTableView.RemoveConstraint(TableHeightConstraint); if (!View.Constraints.Contains(SearchTableTopConstraint)) { View.AddConstraint(SearchTableTopConstraint); } if (!MapPanel.Constraints.Contains(MapHeightConstraint)) { MapPanel.AddConstraint(MapHeightConstraint); } View.UpdateConstraint( () => { MapHeightConstraint.Constant = 0; if (IsInSearch) { MapToListSettingsConstraint.Constant = UIConstants.StatusBarHeight; ListSettingsHeightConstraint.Constant = 0; ListSettingsToTableConstraint.Constant = 0; } else { MapToListSettingsConstraint.Constant = NavBarManager.NavBarHeight; ListSettingsHeightConstraint.Constant = ListSettingsView.DefaultHeight; ListSettingsToTableConstraint.Constant = -NavBarManager.NavBarHeight - ListSettingsView.DefaultHeight; } }, animated, animationFinish); break; } var size = ScreenUtil.IsVerticalOrientation ? ButtonBarButton.DefaultVerticalSize : ButtonBarButton.DefaultLandscapeSize; FullscreenWidthConstraint.Constant = size.Width; FullscreenHeightConstraint.Constant = size.Height; }