Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
parent
e41e52ab3b
commit
71079c1fb9
|
@ -0,0 +1,122 @@
|
||||||
|
/*
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you under the Apache License, Version 2.0 (the
|
||||||
|
"License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace WPCordovaClassLib.Cordova.Commands
|
||||||
|
{
|
||||||
|
using System;
|
||||||
|
using System.Windows;
|
||||||
|
using Microsoft.Phone.Controls;
|
||||||
|
using Microsoft.Phone.Tasks;
|
||||||
|
using Microsoft.Phone.UserData;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Allows an application to pick contact.
|
||||||
|
/// Use this to allow users to pick contact from your application.
|
||||||
|
/// </summary>
|
||||||
|
public class ContactPickerTask
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Occurs when a Pick task is completed.
|
||||||
|
/// </summary>
|
||||||
|
public event EventHandler<PickResult> Completed;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Shows Contact pick application
|
||||||
|
/// </summary>
|
||||||
|
public void Show()
|
||||||
|
{
|
||||||
|
Deployment.Current.Dispatcher.BeginInvoke(() =>
|
||||||
|
{
|
||||||
|
var root = Application.Current.RootVisual as PhoneApplicationFrame;
|
||||||
|
|
||||||
|
string baseUrl = "/";
|
||||||
|
|
||||||
|
if (root != null)
|
||||||
|
{
|
||||||
|
root.Navigated += this.OnNavigate;
|
||||||
|
|
||||||
|
// dummy parameter is used to always open a fresh version
|
||||||
|
root.Navigate(
|
||||||
|
new Uri(
|
||||||
|
baseUrl + "Plugins/cordova-plugin-contacts/ContactPicker.xaml?dummy="
|
||||||
|
+ Guid.NewGuid(),
|
||||||
|
UriKind.Relative));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Performs additional configuration of the picker application.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender">The source of the event.</param>
|
||||||
|
/// <param name="e">The <see cref="System.Windows.Navigation.NavigationEventArgs"/> instance containing the event data.</param>
|
||||||
|
private void OnNavigate(object sender, System.Windows.Navigation.NavigationEventArgs e)
|
||||||
|
{
|
||||||
|
if (!(e.Content is ContactPicker))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var phoneApplicationFrame = Application.Current.RootVisual as PhoneApplicationFrame;
|
||||||
|
if (phoneApplicationFrame != null)
|
||||||
|
{
|
||||||
|
phoneApplicationFrame.Navigated -= this.OnNavigate;
|
||||||
|
}
|
||||||
|
|
||||||
|
ContactPicker contactPicker = (ContactPicker)e.Content;
|
||||||
|
|
||||||
|
if (contactPicker != null)
|
||||||
|
{
|
||||||
|
contactPicker.Completed += this.Completed;
|
||||||
|
}
|
||||||
|
else if (this.Completed != null)
|
||||||
|
{
|
||||||
|
this.Completed(this, new PickResult(TaskResult.Cancel));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Represents contact returned
|
||||||
|
/// </summary>
|
||||||
|
public class PickResult : TaskEventArgs
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a new instance of the PickResult class.
|
||||||
|
/// </summary>
|
||||||
|
public PickResult()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a new instance of the PickResult class
|
||||||
|
/// with the specified Microsoft.Phone.Tasks.TaskResult.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="taskResult">Associated Microsoft.Phone.Tasks.TaskResult</param>
|
||||||
|
public PickResult(TaskResult taskResult)
|
||||||
|
: base(taskResult)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the contact.
|
||||||
|
/// </summary>
|
||||||
|
public Contact Contact { get; internal set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user