// this gets called periodically after activity.BecomeCurrent() is called
        // //http://www.raywenderlich.com/84174/ios-8-handoff-tutorial
        public override void UpdateUserActivityState(NSUserActivity activity)
        {
            Console.WriteLine("UpdateUserActivityState for " + activity.Title);
            // update activity
            if (current.IsIndexable())
            {
                activity.AddUserInfoEntries(current.IdToDictionary());
            }
            // persist partly-entered data for Handoff
            activity.AddUserInfoEntries(current.NameToDictionary());
            activity.AddUserInfoEntries(current.NotesToDictionary());

            base.UpdateUserActivityState(activity);
        }
        //
        // https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/Activities.html#//apple_ref/doc/uid/TP40016308-CH6-SW1
        //
        public static NSUserActivity CreateNSUserActivity(TodoItem userInfo)
        {
            var activityType = ActivityTypes.Detail;

            if (userInfo.Id <= 0)
            {
                activityType = ActivityTypes.Add;
            }
            var activity = new NSUserActivity(activityType);

            activity.EligibleForSearch         = true;
            activity.EligibleForPublicIndexing = false;
            activity.EligibleForHandoff        = true;

            activity.Title = NSBundle.MainBundle.LocalizedString("Todo Detail", "");

            // Attributes
            var nsd = new NSMutableDictionary();

            nsd.Add(new NSString("en"), new NSString("Add todo"));
            nsd.Add(new NSString("fr"), new NSString("ajouter todo"));
            nsd.Add(new NSString("ja"), new NSString("TODOを追加"));
            nsd.Add(new NSString("es"), new NSString("añadir todo"));
            nsd.Add(new NSString("pt"), new NSString("adicionar todo"));
            nsd.Add(new NSString("ar"), new NSString("إضافة تودو"));
            nsd.Add(new NSString("he"), new NSString("להוסיף todo"));
            var csls = new CSLocalizedString(nsd);

            var attributeSet = new CoreSpotlight.CSSearchableItemAttributeSet();

            if (userInfo.Id <= 0)
            {
                attributeSet.DisplayName        = csls;
                attributeSet.ContentDescription = NSBundle.MainBundle.LocalizedString("(new)", "");
                activity.AddUserInfoEntries(NSDictionary.FromObjectAndKey(new NSString("0"), ActivityKeys.Id));
            }
            else
            {
                attributeSet.DisplayName        = NSBundle.MainBundle.LocalizedString("Edit Todo", "");
                attributeSet.ContentDescription = userInfo.Name + "!";
                activity.AddUserInfoEntries(NSDictionary.FromObjectAndKey(new NSString(userInfo.Id.ToString()), ActivityKeys.Id));
            }
            activity.ContentAttributeSet = attributeSet;

            activity.BecomeCurrent();              // don't forget to ResignCurrent()

            return(activity);
        }
        public static NSUserActivity CreateNSUserActivity(Restaurant userInfo)
        {
            var activityType = ActivityTypes.View;
            var activity     = new NSUserActivity(activityType);

            activity.EligibleForSearch         = true;     // HACK: can result in duplicates with CoreSpotlight
            activity.EligibleForPublicIndexing = false;
            activity.EligibleForHandoff        = false;

            activity.Title = "Restaurant " + userInfo.Name;

            //			var keywords = new NSString[] {new NSString("Add"), new NSString("Todo"), new NSString("Empty"), new NSString("Task") };
            //			activity.Keywords = new NSSet<NSString>(keywords);

            var attributeSet = new CoreSpotlight.CSSearchableItemAttributeSet();

            attributeSet.DisplayName        = userInfo.Name;
            attributeSet.ContentDescription = userInfo.Cuisine + " " + userInfo.Chef;

            // Handoff https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/Handoff/AdoptingHandoff/AdoptingHandoff.html
//			attributeSet.RelatedUniqueIdentifier = userInfo.Number.ToString(); // CoreSpotlight "id"


            activity.AddUserInfoEntries(NSDictionary.FromObjectAndKey(new NSString(userInfo.Number.ToString()), ActivityKeys.Id));

            activity.ContentAttributeSet = attributeSet;

            activity.BecomeCurrent();              // don't forget to ResignCurrent()

            return(activity);
        }
		/// <summary>
		/// Navigates the Webview to the given URL string.
		/// </summary>
		/// <param name="url">URL.</param>
		private void NavigateToURL(string url) {

			// Properly formatted?
			if (!url.StartsWith ("http://")) {
				// Add web
				url = "http://" + url;
			}

			// Display the give webpage
			WebView.LoadRequest(new NSUrlRequest(NSUrl.FromString(url)));

			// Invalidate existing Activity
			if (UserActivity != null) {
				UserActivity.Invalidate();
				UserActivity = null;
			}

			// Create a new user Activity to support this tab
			UserActivity = new NSUserActivity (ThisApp.UserActivityTab4);
			UserActivity.Title = "Coffee Break Tab";

			// Update the activity when the tab's URL changes
			var userInfo = new NSMutableDictionary ();
			userInfo.Add (new NSString ("Url"), new NSString (url));
			UserActivity.AddUserInfoEntries (userInfo);

			// Inform Activity that it has been updated
			UserActivity.BecomeCurrent ();

			// Log User Activity
			Console.WriteLine ("Creating User Activity: {0} - {1}", UserActivity.Title, url);
		}
Ejemplo n.º 5
0
        /// <summary>
        /// Navigates the Webview to the given URL string.
        /// </summary>
        /// <param name="url">URL.</param>
        private void NavigateToURL(string url)
        {
            // Properly formatted?
            if (!url.StartsWith("http://"))
            {
                // Add web
                url = "http://" + url;
            }

            // Display the give webpage
            WebView.LoadRequest(new NSUrlRequest(NSUrl.FromString(url)));

            // Invalidate existing Activity
            if (UserActivity != null)
            {
                UserActivity.Invalidate();
                UserActivity = null;
            }

            // Create a new user Activity to support this tab
            UserActivity       = new NSUserActivity(ThisApp.UserActivityTab4);
            UserActivity.Title = "Coffee Break Tab";

            // Update the activity when the tab's URL changes
            var userInfo = new NSMutableDictionary();

            userInfo.Add(new NSString("Url"), new NSString(url));
            UserActivity.AddUserInfoEntries(userInfo);

            // Inform Activity that it has been updated
            UserActivity.BecomeCurrent();

            // Log User Activity
            Console.WriteLine("Creating User Activity: {0} - {1}", UserActivity.Title, url);
        }
		public static NSUserActivity CreateNSUserActivity(Restaurant userInfo)
		{
			var activityType = ActivityTypes.View;
			var activity = new NSUserActivity(activityType);
			activity.EligibleForSearch = true; // HACK: can result in duplicates with CoreSpotlight
			activity.EligibleForPublicIndexing = false;
			activity.EligibleForHandoff = false;

			activity.Title = "Restaurant " + userInfo.Name;

			//			var keywords = new NSString[] {new NSString("Add"), new NSString("Todo"), new NSString("Empty"), new NSString("Task") };
			//			activity.Keywords = new NSSet<NSString>(keywords);

			var attributeSet = new CoreSpotlight.CSSearchableItemAttributeSet ();

			attributeSet.DisplayName = userInfo.Name;
			attributeSet.ContentDescription = userInfo.Cuisine + " " + userInfo.Chef;

			// Handoff https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/Handoff/AdoptingHandoff/AdoptingHandoff.html
//			attributeSet.RelatedUniqueIdentifier = userInfo.Number.ToString(); // CoreSpotlight "id"


			activity.AddUserInfoEntries(NSDictionary.FromObjectAndKey(new NSString(userInfo.Number.ToString()), ActivityKeys.Id));

			activity.ContentAttributeSet = attributeSet;

			activity.BecomeCurrent (); // don't forget to ResignCurrent()

			return activity;
		}
Ejemplo n.º 7
0
        void RegisterHandoff(Speaker speaker)
        {
            var userInfo = new NSMutableDictionary();

            userInfo.Add(new NSString("Url"), new NSString(speaker.GetAppLink().AppLinkUri.AbsoluteUri));

            var keywords = new NSMutableSet <NSString>(new NSString(speaker.FirstName), new NSString(speaker.LastName));

            if (speaker.Sessions != null)
            {
                foreach (var session in speaker.Sessions)
                {
                    keywords.Add(new NSString(session.Title));
                }
            }

            _activity.Keywords   = new NSSet <NSString>(keywords);
            _activity.WebPageUrl = NSUrl.FromString(speaker.GetWebUrl());

            _activity.EligibleForHandoff = false;

            _activity.AddUserInfoEntries(userInfo);

            // Provide context
            var attributes = new CSSearchableItemAttributeSet($"{AboutThisApp.PackageName}.speaker");

            attributes.Keywords           = keywords.ToArray().Select(k => k.ToString()).ToArray();
            attributes.Url                = NSUrl.FromString(speaker.GetAppLink().AppLinkUri.AbsoluteUri);
            _activity.ContentAttributeSet = attributes;
        }
        public override void UpdateUserActivityState(NSUserActivity activity)
        {
            base.UpdateUserActivityState(activity);

            UserInfo info = GetFilterValues();

            activity.AddUserInfoEntries(info.Dictionary);
        }
        NSUserActivity CreateActivity()
        {
            var activity = new NSUserActivity(activityName);
            activity.EligibleForSearch = true;
            activity.EligibleForPublicIndexing = true;
            activity.EligibleForHandoff = false;

            activity.Title = "Favorites";
            activity.AddUserInfoEntries(NSDictionary.FromObjectAndKey(new NSString("Favorites"), new NSString("Name")));

            //var keywords = new string[] {  };
            activity.Keywords = new NSSet<NSString>(new NSString("Favorites"), new NSString("Soccer"), new NSString("Favorites"));
            activity.ContentAttributeSet = new CSSearchableItemAttributeSet("Open favorites");

            return activity;
        }
        NSUserActivity CreateActivity()
        {
            var activity = new NSUserActivity(activityName);
            activity.EligibleForSearch = true;
            activity.EligibleForPublicIndexing = true;
            activity.EligibleForHandoff = false;

            activity.Title = monkey.Name;
            activity.AddUserInfoEntries(NSDictionary.FromObjectAndKey(new NSString(monkey.Name), new NSString("Name")));

            var keywords = new string[] { monkey.Name, "Monkey" };
            activity.Keywords = new NSSet(keywords);
            activity.ContentAttributeSet = new CoreSpotlight.CSSearchableItemAttributeSet(monkey.Details);

            return activity;
        }
Ejemplo n.º 11
0
        NSUserActivity CreateActivity()
        {
            var activity = new NSUserActivity(activityName);

            activity.EligibleForSearch         = true;
            activity.EligibleForPublicIndexing = true;
            activity.EligibleForHandoff        = false;

            activity.Title = "Favorites";
            activity.AddUserInfoEntries(NSDictionary.FromObjectAndKey(new NSString("Favorites"), new NSString("Name")));

            //var keywords = new string[] {  };
            activity.Keywords            = new NSSet <NSString>(new NSString("Favorites"), new NSString("Soccer"), new NSString("Favorites"));
            activity.ContentAttributeSet = new CSSearchableItemAttributeSet("Open favorites");

            return(activity);
        }
Ejemplo n.º 12
0
        NSUserActivity CreateActivity()
        {
            var activity = new NSUserActivity(activityName);

            activity.EligibleForSearch         = true;
            activity.EligibleForPublicIndexing = true;
            activity.EligibleForHandoff        = false;

            activity.Title = monkey.Name;
            activity.AddUserInfoEntries(NSDictionary.FromObjectAndKey(new NSString(monkey.Name), new NSString("Name")));

            var keywords = new NSString[] { (NSString)monkey.Name, (NSString)"Monkey" };

            activity.Keywords            = new NSSet <NSString>(keywords);
            activity.ContentAttributeSet = new CoreSpotlight.CSSearchableItemAttributeSet(monkey.Details);

            return(activity);
        }
Ejemplo n.º 13
0
        public static NSUserActivity ToUserActivity(this IPersistedState?state, string userActivityType)
        {
            var userInfo = new NSMutableDictionary();

            if (state is not null)
            {
                foreach (var pair in state)
                {
                    userInfo.SetValueForKey(new NSString(pair.Value), new NSString(pair.Key));
                }
            }

            var userActivity = new NSUserActivity(userActivityType);

            userActivity.AddUserInfoEntries(userInfo);

            return(userActivity);
        }
        public override void UpdateUserActivityState(NSUserActivity activity)
        {
            base.UpdateUserActivityState(activity);

            string imageIdentifier = detailViewController.ImageIdentifier;

            if (string.IsNullOrEmpty(imageIdentifier))
            {
                return;
            }

            activity.Title = DataSource.GetTitleForIdentifier(imageIdentifier);

            var userInfo = new UserInfo {
                ImageId = imageIdentifier
            };

            activity.AddUserInfoEntries(userInfo.Dictionary);
        }
Ejemplo n.º 15
0
        NSUserActivity CreateActivity(TodoItem item)
        {
            // Create app search activity
            var activity = new NSUserActivity (ActivityTypes.View);

            // Populate activity
            activity.Title = item.Name;

            // Add additional data
            var attributes = new CSSearchableItemAttributeSet ();
            attributes.DisplayName = item.Name;
            attributes.ContentDescription = item.Notes;

            activity.ContentAttributeSet = attributes;
            activity.AddUserInfoEntries (NSDictionary.FromObjectAndKey (new NSString (item.ID), new NSString ("Id")));

            // Add app search ability
            activity.EligibleForSearch = true;
            activity.BecomeCurrent ();	// Don't forget to ResignCurrent() later

            return activity;
        }
        public override void UpdateUserActivityState(NSUserActivity activity)
        {
            base.UpdateUserActivityState(activity);

            var keys = new NSString[] {
                (NSString)(NSUserActivityHelper.ActivityKeys.MenuItems),
                (NSString)(NSUserActivityHelper.ActivityKeys.SegueId)
            };

            // Creates an NSArray<NSString> of MenuItem.ItemNameKey values
            var menuItemNames = NSArray.FromNSObjects(
                MenuItems.Select <MenuItem, NSString>(
                    (menuItem) => (NSString)(menuItem.ItemNameKey)
                    ).ToArray <NSString>()
                );

            var objects = new NSObject[] { menuItemNames, (NSString)"Soup Menu" };

            NSDictionary userInfo = NSDictionary.FromObjectsAndKeys(objects, keys);

            activity.AddUserInfoEntries(userInfo);
        }
Ejemplo n.º 17
0
        NSUserActivity CreateActivity(TodoItem item)
        {
            // Create app search activity
            var activity = new NSUserActivity(ActivityTypes.View);

            // Populate activity
            activity.Title = item.Name;

            // Add additional data
            var attributes = new CSSearchableItemAttributeSet();

            attributes.DisplayName        = item.Name;
            attributes.ContentDescription = item.Notes;

            activity.ContentAttributeSet = attributes;
            activity.AddUserInfoEntries(NSDictionary.FromObjectAndKey(new NSString(item.ID), new NSString("Id")));

            // Add app search ability
            activity.EligibleForSearch = true;
            activity.BecomeCurrent();                   // Don't forget to ResignCurrent() later

            return(activity);
        }
		public override void UpdateUserActivityState (NSUserActivity activity)
		{
			base.UpdateUserActivityState (activity);

			UserInfo info = GetFilterValues ();
			activity.AddUserInfoEntries (info.Dictionary);
		}
Ejemplo n.º 19
0
 public static void SetEntryDescription(this NSUserActivity userActivity, string entryDescription)
 => userActivity.AddUserInfoEntries(new NSDictionary(entryDescriptionKey, entryDescription));
Ejemplo n.º 20
0
 public static void SetResponseText(this NSUserActivity userActivity, string responseText)
 => userActivity.AddUserInfoEntries(new NSDictionary(responseTextKey, responseText));
 public override void UpdateUserActivityState(NSUserActivity activity)
 {
     activity.AddUserInfoEntries(NSDictionary.FromObjectAndKey(new NSString(beer.Id), new NSString("id")));
     base.UpdateUserActivityState(activity);
 }
 // this gets called periodically after activity.BecomeCurrent() is called
 // //http://www.raywenderlich.com/84174/ios-8-handoff-tutorial
 public override void UpdateUserActivityState(NSUserActivity activity)
 {
     Console.WriteLine ("UpdateUserActivityState for " + activity.Title);
     // update activity
     if (current.IsIndexable()) {
         activity.AddUserInfoEntries (current.IdToDictionary());
         activity.AddUserInfoEntries (current.NameToDictionary());
     }
     base.UpdateUserActivityState (activity);
 }
        public override void UpdateUserActivityState(NSUserActivity activity)
        {
            base.UpdateUserActivityState (activity);

            string imageIdentifier = detailViewController.ImageIdentifier;
            if (string.IsNullOrEmpty (imageIdentifier))
                return;

            activity.Title = DataSource.GetTitleForIdentifier (imageIdentifier);

            var userInfo = new UserInfo {
                ImageId = imageIdentifier
            };
            activity.AddUserInfoEntries (userInfo.Dictionary);
        }