Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
parent
71079c1fb9
commit
e9b05ed776
|
@ -0,0 +1,125 @@
|
||||||
|
/*
|
||||||
|
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.Linq;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using Microsoft.Phone.Tasks;
|
||||||
|
using Microsoft.Phone.UserData;
|
||||||
|
using DeviceContacts = Microsoft.Phone.UserData.Contacts;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Custom implemented class for picking single contact
|
||||||
|
/// </summary>
|
||||||
|
public partial class ContactPicker
|
||||||
|
{
|
||||||
|
#region Fields
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Result of ContactPicker call, represent contact returned.
|
||||||
|
/// </summary>
|
||||||
|
private ContactPickerTask.PickResult result;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a new instance of the <see cref="ContactPicker"/> class.
|
||||||
|
/// </summary>
|
||||||
|
public ContactPicker()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
var cons = new DeviceContacts();
|
||||||
|
cons.SearchCompleted += this.OnSearchCompleted;
|
||||||
|
cons.SearchAsync(string.Empty, FilterKind.None, string.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Callbacks
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Occurs when contact is selected or pick operation cancelled.
|
||||||
|
/// </summary>
|
||||||
|
public event EventHandler<ContactPickerTask.PickResult> Completed;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The on navigated from.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="e">
|
||||||
|
/// The e.
|
||||||
|
/// </param>
|
||||||
|
protected override void OnNavigatedFrom(NavigationEventArgs e)
|
||||||
|
{
|
||||||
|
if (this.result == null)
|
||||||
|
{
|
||||||
|
this.Completed(this, new ContactPickerTask.PickResult(TaskResult.Cancel));
|
||||||
|
}
|
||||||
|
|
||||||
|
base.OnNavigatedFrom(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when contacts retrieval completed.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender">The sender.</param>
|
||||||
|
/// <param name="e">The <see cref="ContactsSearchEventArgs"/> instance containing the event data.</param>
|
||||||
|
private void OnSearchCompleted(object sender, ContactsSearchEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Results.Count() != 0)
|
||||||
|
{
|
||||||
|
lstContacts.ItemsSource = e.Results.ToList();
|
||||||
|
lstContacts.Visibility = Visibility.Visible;
|
||||||
|
NoContactsBlock.Visibility = Visibility.Collapsed;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lstContacts.Visibility = Visibility.Collapsed;
|
||||||
|
NoContactsBlock.Visibility = Visibility.Visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when any contact is selected.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender">
|
||||||
|
/// The sender.
|
||||||
|
/// </param>
|
||||||
|
/// <param name="e">
|
||||||
|
/// The e.
|
||||||
|
/// </param>
|
||||||
|
private void ContactsListSelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
this.result = new ContactPickerTask.PickResult(TaskResult.OK) { Contact = e.AddedItems[0] as Contact };
|
||||||
|
this.Completed(this, this.result);
|
||||||
|
|
||||||
|
if (NavigationService.CanGoBack)
|
||||||
|
{
|
||||||
|
NavigationService.GoBack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user