Beispiel #1
0
        /// <summary>
        /// Raises the <see cref="E:Activated"/> event.
        /// </summary>
        /// <param name="e">
        /// The <see cref="IActivatedEventArgs"/> instance containing the event data.
        /// </param>
        protected override void OnActivated(IActivatedEventArgs e)
        {
            // Handle Protocol Activation
            //
            // Handles URIs of the format used by Gramps internally gramps://person/handle/12345
            if (e.Kind == ActivationKind.Protocol)
            {
                if (e is ProtocolActivatedEventArgs uriArgs)
                {
                    string[] uriSegments = uriArgs.Uri.Segments;

                    if (uriSegments[1] != "handle/")
                    {
                        ErrorInfo badUriAdditionalInfo = new ErrorInfo("Bad Protocol Activation Argument")
                        {
                            { "URI", uriArgs.Uri.ToString() },
                            { "Data", uriArgs.Data.ToString() }
                        };

                        ((GrampsView.App)Xamarin.Forms.Application.Current).Services.GetService <IErrorNotifications>().NotifyError(badUriAdditionalInfo);
                    }

                    // TODO Handle if GrampsView not running

                    switch (uriArgs.Uri.Host)
                    {
                    case Constants.ModelNameFamily:
                    {
                        HLinkFamilyModel targetFamily = new HLinkFamilyModel
                        {
                            HLinkKey = new HLinkKey(uriSegments[2])
                        };

                        targetFamily.UCNavigate();

                        break;
                    }

                    case Constants.ModelNamePerson:
                    {
                        HLinkPersonModel targetPerson = new HLinkPersonModel
                        {
                            HLinkKey = new HLinkKey(uriSegments[2])
                        };

                        targetPerson.UCNavigate();

                        break;
                    }

                    default:
                    {
                        // TODO Handle bad arg better

                        break;
                    }
                    }
                }
            }
        }
Beispiel #2
0
        private static async Task StartAtDetailPage()
        {
            if (PersonStartPage != null)
            {
                await PersonStartPage.UCNavigate();
            }

            if (FamilyStartModel != null)
            {
                await FamilyStartModel.UCNavigate();
            }
        }