protected virtual void Show(IMvxMacView view, MvxViewModelRequest request) { var viewController = view as NSViewController; if (viewController == null) throw new MvxException("Passed in IMvxMacView is not a UIViewController"); this.Show(viewController, request); }
public bool ShowViewModel(MvxViewModelRequest request) { Action action = () => { MvxTrace.TaggedTrace("MacNavigation", "Navigate requested"); this._presenter.Show(request); }; return this.RequestMainThreadAction(action); }
protected virtual void Show(NSViewController viewController, MvxViewModelRequest request) { while (this.Window.ContentView.Subviews.Any()) { this.Window.ContentView.Subviews[0].RemoveFromSuperview(); } this.Window.ContentView.AddSubview(viewController.View); this.AddLayoutConstraints(viewController, request); }
public virtual IMvxMacView CreateView(MvxViewModelRequest request) { try { this.CurrentRequest = request; var viewType = this.GetViewType(request.ViewModelType); if (viewType == null) throw new MvxException("View Type not found for " + request.ViewModelType); var view = Activator.CreateInstance(viewType) as IMvxMacView; if (view == null) throw new MvxException("View not loaded for " + viewType); view.Request = request; return view; } finally { this.CurrentRequest = null; } }
protected virtual void ShowPage(Type viewType, MvxBasePresentationAttribute attribute, MvxViewModelRequest request) { try { var requestText = GetRequestText(request); var viewsContainer = Mvx.Resolve <IMvxViewsContainer>(); _rootFrame.Navigate(viewType, requestText); //Frame won't allow serialization of it's nav-state if it gets a non-simple type as a nav param HandleBackButtonVisibility(); } catch (Exception exception) { MvxTrace.Trace("Error seen during navigation request to {0} - error {1}", request.ViewModelType.Name, exception.ToLongString()); } }
protected virtual void ShowSplitView(Type viewType, MvxSplitViewPresentationAttribute attribute, MvxViewModelRequest request) { var viewsContainer = Mvx.Resolve <IMvxViewsContainer>(); if (_rootFrame.Content is MvxWindowsPage currentPage) { var splitView = currentPage.Content.FindControl <SplitView>(); if (splitView == null) { throw new MvxException($"Failed to find a SplitView in the visual tree of {viewType.Name}"); } if (attribute.Position == SplitPanePosition.Content) { splitView.Content = (UIElement)Activator.CreateInstance(viewType); } else if (attribute.Position == SplitPanePosition.Pane) { splitView.Pane = (UIElement)Activator.CreateInstance(viewType); } } }
public override void OnReceive(Context context, Intent intent) { this.Init(context); try { NotificationManager notificationManager = (NotificationManager)context.GetSystemService(Context.NotificationService); var notification = intent.GetParcelableExtra(NOTIFICATION) as Notification; var medicationId = intent.GetIntExtra(MEDICATION_ID, 0); // notification itself if (notification != null) { var notificationId = intent.GetIntExtra(NOTIFICATION_ID, 0); var fireTime = intent.GetLongExtra(NOTIFICATION_FIRE_TIME, 0); notificationManager.Notify(notificationId, notification); //var dateFormat = new SimpleDateFormat("dd:MM:yy:HH:mm:ss"); //var cal = dateFormat.Format(fireTime); Task.Run(async() => { var notifications = await this.storage.List <NotificationOccurrence>(n => n.Id == notificationId); var currentNotification = notifications.FirstOrDefault(); var medications = await this.storage.List <MedicationDosage>(n => n.Id == medicationId); var medicationDosage = medications.FirstOrDefault(); //check if current notification is an overdue notification (if it should be sheduled again) var currentTimeSpan = currentNotification.OccurrenceDateTime.TimeOfDay; DateTime newOccurrenceDateTime; if (medicationDosage.DosageHours.Contains(currentTimeSpan)) { if (medicationDosage.Days.AllSelected()) { newOccurrenceDateTime = currentNotification.OccurrenceDateTime.AddDays(1); } else { newOccurrenceDateTime = currentNotification.OccurrenceDateTime.AddDays(7); } var occurrence = new NotificationOccurrence() { Name = currentNotification.Name, Dosage = currentNotification.Dosage, MedicationDosageId = currentNotification.MedicationDosageId, OccurrenceDateTime = newOccurrenceDateTime, ThumbnailImage = currentNotification.ThumbnailImage }; if (currentNotification != null) { await this.notificationService.CancelNotification(currentNotification); await this.storage.DeleteAsync(currentNotification); } else { System.Diagnostics.Debug.Write($"Notification with id {notificationId} could not be found in database."); } await this.storage.SaveAsync(occurrence); await this.notificationService.ScheduleNotification(occurrence, medicationDosage); Mvx.Resolve <IMvxMessenger>().Publish(new NotificationsChangedMessage(this)); } else { if (currentNotification != null) { await this.storage.DeleteAsync(currentNotification); } else { System.Diagnostics.Debug.Write($"Notification with id {notificationId} could not be found in database."); } } // find overdue notifications var nowCalendar = Calendar.Instance; var now = nowCalendar.TimeInMillis; var overdueNotificationsOccurrences = notifications.Where(n => n.OccurrenceDateMillis < now); foreach (var overdueNotificationOccurrence in overdueNotificationsOccurrences) { var medication = await this.storage.GetAsync <MedicationDosage>(overdueNotificationOccurrence.MedicationDosageId); Intent notificationIntent = new Intent(context, typeof(NotificationPublisher)); notificationIntent.PutExtra(NotificationPublisher.MEDICATION_ID, medicationId); var overdueNotification = NotificationHelper.GetNotification(context, medication, overdueNotificationOccurrence, notificationIntent); notificationManager.Notify(overdueNotificationOccurrence.Id.Value, overdueNotification); } }); } else { System.Diagnostics.Debug.WriteLine(intent.Action); System.Diagnostics.Debug.WriteLine(medicationId); var notificationId = intent.GetIntExtra(NOTIFICATION_ID, 0); if (intent.Action == "GO_TO_MEDICATION") { // open medication screen var navigation = new MedicationDosageNavigation(); navigation.MedicationDosageId = medicationId; var bundle = new MvxBundle(); bundle.Write(navigation); var request = new MvxViewModelRequest <MedicationDosageViewModel>(bundle, null, MvxRequestedBy.UserAction); //var request = new MvxViewModelRequest(); //request.ParameterValues = new System.Collections.Generic.Dictionary<string, string>(); //request.ParameterValues.Add("nav", Mvx.Resolve<IMvxJsonConverter>().SerializeObject(navigation)); request.ViewModelType = typeof(MedicationDosageViewModel); var requestTranslator = Mvx.Resolve <IMvxAndroidViewModelRequestTranslator>(); var newActivity = requestTranslator.GetIntentFor(request); newActivity.SetFlags(ActivityFlags.NewTask); context.StartActivity(newActivity); Task.Run(async() => { var notificationToDismiss = await this.storage.GetAsync <NotificationOccurrence>(notificationId); await this.notificationService.CancelNotification(notificationToDismiss); notificationManager.Cancel(notificationId); }); } if (intent.Action == "NOTIFCATION_DISMISS") { // todo remove notification totally or rather reschedule ? // maybe this action should be from settings (user decides in settings what happens if she/he dismisses notification)? var dismissedNotificationId = intent.GetIntExtra(NOTIFICATION_ID, 0); Task.Run(async() => { var dismissedNotification = await this.storage.GetAsync <NotificationOccurrence>(dismissedNotificationId); await this.notificationService.CancelNotification(dismissedNotification); Mvx.Resolve <IMvxMessenger>().Publish(new NotificationsChangedMessage(this)); }); } if (intent.Action == "OK") { Task.Run(async() => { await this.notificationService.CancelAndRemove(notificationId); Mvx.Resolve <IMvxMessenger>().Publish(new NotificationsChangedMessage(this)); }); notificationManager.Cancel(notificationId); } /*if (intent.Action == "NO") * { * var fireTime = intent.GetLongExtra(NOTIFICATION_FIRE_TIME, 0); * var name = intent.GetStringExtra(MEDICATION_NAME); * * Task.Run(async () => * { * var overdueNotification = new OverdueNotification(medicationId, name, fireTime); * await this.storage.SaveAsync(overdueNotification); * }); * * notificationManager.Cancel(notificationId); * }*/ if (intent.Action == "LATER") { Task.Run(async() => { var name = intent.GetStringExtra(MEDICATION_NAME); var fireTime = intent.GetLongExtra(NOTIFICATION_FIRE_TIME, 0); var settingsDataString = Mvx.Resolve <ISettings>().GetValue <string>(SettingsData.Key); var settingsData = JsonConvert.DeserializeObject <SettingsData>(settingsDataString); DateTime occurrenceDate = DateTime.Now.AddMinutes(settingsData.SnoozeMinutes); var medications = await this.storage.List <MedicationDosage>(); var medicationDosage = medications.FirstOrDefault(n => n.Id == medicationId); var newNotification = new NotificationOccurrence(medicationDosage.Name, medicationDosage.Dosage, medicationDosage.Id.Value, occurrenceDate, fireTime + 90000) { ThumbnailImage = medicationDosage.ThumbnailName }; await this.storage.SaveAsync <NotificationOccurrence>(newNotification); await this.notificationService.CancelAndRemove(notificationId); Mvx.Resolve <IMvxMessenger>().Publish(new NotificationsChangedMessage(this)); await notificationService.OverdueNotification(newNotification, medicationDosage); }); notificationManager.Cancel(notificationId); } } } catch (Exception ex) { Console.WriteLine($"[PILLER] Error during alarm receive: {ex}"); } }
protected override IMvxTouchView CreateViewOfType(Type viewType, MvxViewModelRequest request) { return((IMvxTouchView)UIStoryboard.FromName("Storyboard", null) .InstantiateViewController(viewType.Name)); }
protected override void ShowChildViewController(UIViewController viewController, MvxChildPresentationAttribute attribute, MvxViewModelRequest request) { if (request.ViewModelType == typeof(LoginViewModel)) { MasterNavigationController.View.Layer.AddAnimation(fadeAnimation, CALayer.Transition); MasterNavigationController.PushViewController(viewController, false); return; } base.ShowChildViewController(viewController, attribute, request); }
public virtual void ShowMasterDetailPage( Type view, MvxMasterDetailPagePresentationAttribute attribute, MvxViewModelRequest request) { var page = CloseAndCreatePage(view, request, attribute); if (attribute.Position == MasterDetailPosition.Root) { if (page is MasterDetailPage masterDetailRoot) { if (masterDetailRoot.Master == null) { masterDetailRoot.Master = new ContentPage() { Title = !string.IsNullOrEmpty(attribute.Title) ? attribute.Title : nameof(MvxMasterDetailPage) } } ; if (masterDetailRoot.Detail == null) { masterDetailRoot.Detail = new ContentPage() { Title = !string.IsNullOrEmpty(attribute.Title) ? attribute.Title : nameof(MvxMasterDetailPage) } } ; PushOrReplacePage(FormsApplication.MainPage, page, attribute); } else { throw new MvxException($"A root page should be of type {nameof(MasterDetailPage)}"); } } else { var masterDetailHost = GetPageOfType <MasterDetailPage>(); if (masterDetailHost == null) { //Assume we have to create the host masterDetailHost = new MasterDetailPage(); if (!string.IsNullOrWhiteSpace(attribute.Icon)) { masterDetailHost.Icon = attribute.Icon; } masterDetailHost.Master = new ContentPage() { Title = !string.IsNullOrWhiteSpace(attribute.Title) ? attribute.Title : nameof(MvxMasterDetailPage) }; masterDetailHost.Detail = new ContentPage(); var masterDetailRootAttribute = new MvxMasterDetailPagePresentationAttribute { Position = MasterDetailPosition.Root, WrapInNavigationPage = attribute.WrapInNavigationPage, NoHistory = attribute.NoHistory }; PushOrReplacePage(FormsApplication.MainPage, masterDetailHost, masterDetailRootAttribute); } if (attribute.Position == MasterDetailPosition.Master) { PushOrReplacePage(masterDetailHost.Master, page, attribute); } else { PushOrReplacePage(masterDetailHost.Detail, page, attribute); } } }
public async Task <bool> ShowViewModel(MvxViewModelRequest request) { await ExecuteOnMainThreadAsync(() => _presenter.Show(request)); return(true); }
public virtual void ShowMasterDetailPage( Type view, MvxMasterDetailPagePresentationAttribute attribute, MvxViewModelRequest request) { CloseAllModals(); ClosePlatformViews?.Invoke(); var page = CreatePage(view, request, attribute); if (attribute.Position == MasterDetailPosition.Root) { if (page is MasterDetailPage masterDetailRoot) { if (masterDetailRoot.Master == null) { masterDetailRoot.Master = new MvxContentPage() { Title = !string.IsNullOrEmpty(attribute.Title) ? attribute.Title : nameof(MvxMasterDetailPage) } } ; if (masterDetailRoot.Detail == null) { masterDetailRoot.Detail = new MvxContentPage() { Title = !string.IsNullOrEmpty(attribute.Title) ? attribute.Title : nameof(MvxMasterDetailPage) } } ; PushOrReplacePage(FormsApplication.MainPage, page, attribute); } else { throw new MvxException($"A root page should be of type {nameof(MasterDetailPage)}"); } } else { var masterDetailHost = GetHostPageOfType <MvxMasterDetailPage>(); if (masterDetailHost == null) { //Assume we have to create the host masterDetailHost = new MvxMasterDetailPage(); if (attribute.Position == MasterDetailPosition.Master) { masterDetailHost.Master = page; } else { masterDetailHost.Master = new MvxContentPage() { Title = !string.IsNullOrEmpty(attribute.Title) ? attribute.Title : nameof(MvxMasterDetailPage) } }; if (attribute.Position == MasterDetailPosition.Detail) { masterDetailHost.Detail = page; } else { masterDetailHost.Detail = new MvxNavigationPage(new MvxContentPage() { Title = !string.IsNullOrEmpty(attribute.Title) ? attribute.Title : nameof(MvxMasterDetailPage) }); } PushOrReplacePage(FormsApplication.MainPage, masterDetailHost, attribute); } else if (attribute.Position == MasterDetailPosition.Master) { PushOrReplacePage(masterDetailHost.Master, page, attribute); } else { PushOrReplacePage(masterDetailHost.Detail, page, attribute); } } }
public bool ShowViewModel(MvxViewModelRequest request) { ShowViewModelRequests.Add(request); return(true); }
public override IMvxIosView CreateViewOfType(Type viewType, MvxViewModelRequest request) { return((IMvxIosView)UIStoryboard.FromName("Main", null).InstantiateViewController(viewType.Name)); }
public static void OnViewCreate(this IMvxWindowsView storeView, MvxViewModelRequest viewModelRequest, Func <IMvxBundle> bundleLoader) { storeView.OnViewCreate(() => { return(storeView.LoadViewModel(viewModelRequest, bundleLoader())); }); }
public override void Show(MvxViewModelRequest request) { var view = this.CreateView(request); this.Show(view, request); }
protected virtual string GetFragmentTag(MvxViewModelRequest request, Bundle bundle, Type fragmentType) { // THAT won't work properly if you have multiple instance of same fragment type in same FragmentHost. // Override that in such cases return(request.ViewModelType.FullName); }
protected virtual void AddLayoutConstraints(NSViewController viewController, MvxViewModelRequest request) { var child = viewController.View; var container = this.Window.ContentView; // See http://blog.xamarin.com/autolayout-with-xamarin.mac/ for more on constraints // as well as https://gist.github.com/garuma/3de3bbeb954ad5679e87 (latter may be helpful as tools...) child.TranslatesAutoresizingMaskIntoConstraints = false; container.AddConstraints(new [] { NSLayoutAttribute.Left, NSLayoutAttribute.Right, NSLayoutAttribute.Top, NSLayoutAttribute.Bottom } .Select(attr => NSLayoutConstraint.Create(child, attr, NSLayoutRelation.Equal, container, attr, 1, 0)).ToArray()); }
protected virtual string GetPageName(MvxViewModelRequest request) { var viewModelName = request.ViewModelType.Name; return(viewModelName.Replace("ViewModel", "Page")); }
private void showModalDialogViewController(Type viewType, MvxBasePresentationAttribute attribute, MvxViewModelRequest request) { var viewController = (UIViewController)this.CreateViewControllerFor(request); viewController.ModalPresentationStyle = UIModalPresentationStyle.Custom; viewController.TransitioningDelegate = modalTransitionDelegate; TopViewController.PresentViewController(viewController, true, null); ModalViewControllers.Add(viewController); }
public override void Show(MvxViewModelRequest request) { IMvxIosView viewController = Mvx.Resolve <IMvxIosViewCreator>().CreateView(request); Show(viewController); }
private void showTabViewController(Type viewType, MvxBasePresentationAttribute attribute, MvxViewModelRequest request) { var tabIndex = tabViewModelTypes.IndexOf(request.ViewModelType); if (tabIndex < 0) { return; } mainTabBarController.SelectedIndex = tabIndex; if (mainTabBarController.ViewControllers[tabIndex] is UINavigationController navigationController) { navigationController.PopToRootViewController(false); } }
public static IMvxMacView CreateViewControllerFor( this IMvxCanCreateMacView view, MvxViewModelRequest request) { return(Mvx.IoCProvider.Resolve <IMvxMacViewCreator>().CreateView(request)); }
protected override async Task <bool> ShowRootViewController(UIViewController viewController, MvxRootPresentationAttribute attribute, MvxViewModelRequest request) { // check if viewController is a MvxSidebarPanelController if (viewController is MvxSidebarViewController sidebarView) { MasterNavigationController = new MvxNavigationController(); SideBarViewController = sidebarView; SideBarViewController.SetNavigationController(MasterNavigationController); SetWindowRootViewController(viewController, attribute); Mvx.IoCProvider.RegisterSingleton <IMvxSidebarViewController>(SideBarViewController); if (!await CloseModalViewControllers()) { return(false); } if (!await CloseTabBarViewController()) { return(false); } if (!await CloseSplitViewController()) { return(false); } CloseMasterNavigationController(); return(true); } else { SideBarViewController = null; MasterNavigationController = null; return(await base.ShowRootViewController(viewController, attribute, request)); } }
protected virtual void ShowWindow(FrameworkElement element, MvxWindowPresentationAttribute attribute, MvxViewModelRequest request) { Window window; if (element is MvxWindow) { window = (Window)element; ((MvxWindow)window).Identifier = attribute.Identifier ?? element.GetType().Name; } else if (element is Window) { // Accept normal Window class window = (Window)element; } else { // Wrap in window window = new MvxWindow { Identifier = attribute.Identifier ?? element.GetType().Name }; } window.Closed += Window_Closed; _frameworkElementsDictionary.Add(window, new Stack <FrameworkElement>()); if (!(element is Window)) { _frameworkElementsDictionary[window].Push(element); window.Content = element; } if (attribute.Modal) { window.ShowDialog(); } else { window.Show(); } }
private void HandleNotification(NSDictionary data, bool fromBootup) { try { var viewDispatcher = Mvx.Resolve <IMvxViewDispatcher>(); var appService = Mvx.Resolve <IApplicationService>(); var accountsService = Mvx.Resolve <IAccountsService>(); var repoId = RepositoryIdentifier.FromFullName(data["r"].ToString()); var parameters = new Dictionary <string, string>() { { "Username", repoId?.Owner }, { "Repository", repoId?.Name } }; MvxViewModelRequest request; if (data.ContainsKey(new NSString("c"))) { request = MvxViewModelRequest <CodeHub.Core.ViewModels.Changesets.ChangesetViewModel> .GetDefaultRequest(); parameters.Add("Node", data["c"].ToString()); parameters.Add("ShowRepository", "True"); } else if (data.ContainsKey(new NSString("i"))) { request = MvxViewModelRequest <CodeHub.Core.ViewModels.Issues.IssueViewModel> .GetDefaultRequest(); parameters.Add("Id", data["i"].ToString()); } else if (data.ContainsKey(new NSString("p"))) { request = MvxViewModelRequest <CodeHub.Core.ViewModels.PullRequests.PullRequestViewModel> .GetDefaultRequest(); parameters.Add("Id", data["p"].ToString()); } else { request = MvxViewModelRequest <CodeHub.Core.ViewModels.Repositories.RepositoryViewModel> .GetDefaultRequest(); } request.ParameterValues = parameters; var username = data["u"].ToString(); if (appService.Account == null || !appService.Account.Username.Equals(username)) { var accounts = accountsService.GetAccounts().Result.ToList(); var user = accounts.FirstOrDefault(x => x.Username.Equals(username)); if (user != null) { appService.DeactivateUser(); accountsService.SetActiveAccount(user).Wait(); } } appService.SetUserActivationAction(() => viewDispatcher.ShowViewModel(request)); if (appService.Account == null && !fromBootup) { MessageBus.Current.SendMessage(new LogoutMessage()); } } catch (Exception e) { Console.WriteLine("Handle Notifications issue: " + e); } }
protected virtual void ShowContentView(FrameworkElement element, MvxContentPresentationAttribute attribute, MvxViewModelRequest request) { var contentControl = _frameworkElementsDictionary.Keys.FirstOrDefault(w => (w as MvxWindow)?.Identifier == attribute.WindowIdentifier) ?? _frameworkElementsDictionary.Keys.Last(); if (!attribute.StackNavigation && _frameworkElementsDictionary[contentControl].Any()) { _frameworkElementsDictionary[contentControl].Pop(); // Close previous view } _frameworkElementsDictionary[contentControl].Push(element); contentControl.Content = element; }
protected virtual void ShowRegionView(Type viewType, MvxRegionPresentationAttribute attribute, MvxViewModelRequest request) { if (viewType.HasRegionAttribute()) { var requestText = GetRequestText(request); var containerView = _rootFrame.UnderlyingControl.FindControl <Frame>(viewType.GetRegionName()); if (containerView != null) { containerView.Navigate(viewType, requestText); return; } } }
public bool ShowViewModel(MvxViewModelRequest request) { return(RequestMainThreadAction(() => _presenter.Show(request))); }
public override void Show(MvxViewModelRequest request) { GetPresentationAttributeAction(request.ViewModelType, out MvxBasePresentationAttribute attribute).ShowAction.Invoke(attribute.ViewType, attribute, request); }
private static Type GetViewType(MvxViewModelRequest request) { var viewFinder = Mvx.Resolve <IMvxViewsContainer>(); return(viewFinder.GetViewType(request.ViewModelType)); }
public override void Show(MvxViewModelRequest request) { if (request.PresentationValues != null) { if (request.PresentationValues.ContainsKey(PresentationBundleFlagKeys.ParkingReserved)) { var vc = MasterNavigationController.TopViewController; while (!(vc is ParkingReservedView)) { ReleaseTimerIfNeeded(vc); MasterNavigationController.PopViewController(false); //vc.Dispose(); vc = MasterNavigationController.TopViewController; } return; } else if (request.PresentationValues.ContainsKey(PresentationBundleFlagKeys.Menu)) { var vc = MasterNavigationController.TopViewController; while (!(vc is MenuView)) { Console.WriteLine(vc); ReleaseTimerIfNeeded(vc); if (vc is ParkingSearchView) { MasterNavigationController.PopViewController(true); return; } else { MasterNavigationController.PopViewController(false); } //vc.Dispose(); vc = MasterNavigationController.TopViewController; } return; } else if (request.PresentationValues.ContainsKey(PresentationBundleFlagKeys.Search)) { var vc = MasterNavigationController.TopViewController; while (!(vc is ParkingSearchView)) { ReleaseTimerIfNeeded(vc); MasterNavigationController.PopViewController(false); //vc.Dispose(); vc = MasterNavigationController.TopViewController; } return; } else if (request.PresentationValues.ContainsKey(PresentationBundleFlagKeys.ParkingList)) { var vc = MasterNavigationController.TopViewController; while (!(vc is ParkingListsView) && !(vc is MyReservationsView)) { ReleaseTimerIfNeeded(vc); MasterNavigationController.PopViewController(false); //vc.Dispose(); vc = MasterNavigationController.TopViewController; } return; } else if (request.PresentationValues.ContainsKey(PresentationBundleFlagKeys.ClearStack)) { MasterNavigationController.PopToRootViewController(false); } } //prevent reshowing the current view controller (e.g 10 minutes before leaving ) if (MasterNavigationController != null && MasterNavigationController.TopViewController != null) { var topvc = MasterNavigationController.TopViewController; if (topvc != null && topvc is MvxViewController && request.ViewModelType == (topvc as MvxViewController).ViewModel.GetType()) { return; } } base.Show(request); }
public override MvxBasePresentationAttribute GetOverridePresentationAttribute(MvxViewModelRequest request, Type viewType) { if (viewType?.GetInterface(nameof(IMvxOverridePresentationAttribute)) != null) { var viewInstance = this.CreateViewControllerFor(viewType, null) as UIViewController; using (viewInstance) { var presentationAttribute = (viewInstance as IMvxOverridePresentationAttribute)?.PresentationAttribute(request); if (presentationAttribute == null) { MvxLog.Instance.Warn("Override PresentationAttribute null. Falling back to existing attribute."); } else { if (presentationAttribute.ViewType == null) { presentationAttribute.ViewType = viewType; } if (presentationAttribute.ViewModelType == null) { presentationAttribute.ViewModelType = request.ViewModelType; } return(presentationAttribute); } } } return(null); }
private IMvxMacView CreateView(MvxViewModelRequest request) { return Mvx.Resolve<IMvxMacViewCreator>().CreateView(request); }
public static IMvxTouchView CreateViewControllerFor( this IMvxCanCreateTouchView view, MvxViewModelRequest request) { return(Mvx.Resolve <IMvxTouchViewCreator>().CreateView(request)); }
private void showNestedViewController(Type viewType, MvxBasePresentationAttribute attribute, MvxViewModelRequest request) { var presentationInfo = nestedPresentationInfo[viewType]; var parentViewController = presentationInfo.ViewController; var containerView = presentationInfo.Container; var viewController = (UIViewController)this.CreateViewControllerFor(request); parentViewController.AddChildViewController(viewController); containerView.AddSubview(viewController.View); viewController.View.TopAnchor.ConstraintEqualTo(containerView.TopAnchor).Active = true; viewController.View.BottomAnchor.ConstraintEqualTo(containerView.BottomAnchor).Active = true; viewController.View.LeftAnchor.ConstraintEqualTo(containerView.LeftAnchor).Active = true; viewController.View.RightAnchor.ConstraintEqualTo(containerView.RightAnchor).Active = true; viewController.View.TranslatesAutoresizingMaskIntoConstraints = false; viewController.DidMoveToParentViewController(parentViewController); }
private void showModalCardViewController(Type viewType, MvxBasePresentationAttribute attribute, MvxViewModelRequest request) { var viewController = (UIViewController)this.CreateViewControllerFor(request); var transitionDelegate = new FromBottomTransitionDelegate( () => ModalViewControllers.Remove(viewController) ); viewController.ModalPresentationStyle = UIModalPresentationStyle.Custom; viewController.TransitioningDelegate = transitionDelegate; TopViewController.PresentViewController(viewController, true, null); ModalViewControllers.Add(viewController); }
public override void Show(MvxViewModelRequest request) { IMvxIosView viewController = Mvx.Resolve<IMvxIosViewCreator>().CreateView(request); Show(viewController); }
public override void Show(MvxViewModelRequest request) { }