/// <summary> /// Loads up the contact store using the contactsRT APIs. /// Checks to make sure the store can be loaded and errors out accordingly /// </summary> private async Task LoadContactsFromStoreAsync() { //Try loading the contact atore try { store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AllContactsReadOnly); } catch (Exception ex) { ContactsStatusText = "We couldn't load the contact store."; Debug.WriteLine("Potential contact store bug: " + ex, "error"); } //If we can access the store without crashing (There seems to be a bug with the store). //Check to make sure we actually have access. if (store == null) { //Launch the settings app to fix the security settings Debug.WriteLine("Could not open contact store, is app access disabled in privacy settings?", "error"); return; } Debug.WriteLine("Contact store opened for reading successfully.", "informational"); //Load the contacts into the ListView on the page ContactReader reader = store.GetContactReader(); await DisplayContactsFromReaderAsync(reader, true); return; }
public void EmptyNumberTest() { ContactReader contactReader = GetContactReaderFromSingleDatabaseRow(new ContactDatabaseRow(1, "Larry", "Barry", "Sanders", "")); List <IContact> contacts = new List <IContact>(contactReader); Assert.AreEqual(0, contacts.Count); }
public async Task <List <string> > getContacts() { List <string> listResults = new List <string>(); ContactStore store = null; IReadOnlyList <ContactList> list = null; ContactReader reader = null; ContactBatch batch = null; // *** This RequestStoreAsync() call is where the exception is thrown. All the cases below have the same issue. *** //store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AllContactsReadWrite); //store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AppContactsReadWrite); store = await ContactManager.RequestStoreAsync(); list = await store.FindContactListsAsync(); foreach (ContactList contactList in list) { reader = contactList.GetContactReader(); batch = await reader.ReadBatchAsync(); foreach (Contact contact in batch.Contacts) { string fullname = contact.FullName; //+ ", " + contact.Name;// + ", " + contact.Emails.First().Address; listResults.Add(fullname); DisplayContact dc = new DisplayContact(contact); vDisplayContact.Add(dc); } } return(listResults); }
private async Task LoadContactsFromStoreAsync() { try { store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AllContactsReadOnly); } catch (Exception ex) { Debug.WriteLine("Potential contact store bug: " + ex, "error"); } if (store == null) { MessageDialog connectionWarning = new MessageDialog("The app needs access to your contacts in order to function correctly. " + "Please grant it access using the options in the settings menu ", "Lost Connection to Store"); await connectionWarning.ShowAsync(); await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings:privacy-contacts")); return; } store.ChangeTracker.Enable(); ContactReader reader = store.GetContactReader(); await DisplayContactsFromReaderAsync(reader, true); return; }
public void AppendCustomBase64Text() { var contact = CreateContact(); var encodedContact = new StringBuilder(ContactWriter.ToString(contact)); encodedContact.Append('.'); encodedContact.Append(Convert.ToBase64String(Encoding.UTF8.GetBytes("This is a test string."))); CompareContacts(contact, ContactReader.FromString(encodedContact.ToString())); }
public void LoadFromFile() { using (var tempFile = new TemporaryFile()) { var contact = CreateContact(); ContactWriter.ToFile(tempFile, contact); CompareContacts(contact, ContactReader.FromFile(tempFile)); } }
private ContactReader GetContactReaderFromSingleDatabaseRow(ContactDatabaseRow row) { MockContactDatabaseReader mockReader = new MockContactDatabaseReader(); mockReader.AddRow(row); ContactReader contactReader = new ContactReader(); contactReader.ParseDatabase(mockReader); return(contactReader); }
async Task <ObservableCollection <Contact> > GetContactsAsync() { ContactStore store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AppContactsReadWrite); //find contact list ContactList contactlist = await store.CreateContactListAsync(Windows.ApplicationModel.Package.Current.DisplayName); //problem if it already exists ContactReader contactreader = contactlist.GetContactReader(); ContactBatch contactbatch = await contactreader.ReadBatchAsync(); return(new ObservableCollection <Contact>(contactbatch.Contacts)); // store.FindContactsAsync() }
private async Task ShowContacts(ContactReader reader) { txtContacts.Text = ""; //reset text box var batch = await reader.ReadBatchAsync(); while (batch.Contacts.Count != 0 && batch.Status == ContactBatchStatus.Success) { foreach (Contact c in batch.Contacts) { txtContacts.Text += c.FirstName + " " + c.LastName + "\n"; } batch = await reader.ReadBatchAsync(); } }
/// <summary> /// Update displayed contacts. /// </summary> /// <param name="reader"></param> /// <returns></returns> private async Task DisplayContactsFromReaderAsync(ContactReader reader) { Contacts.Clear(); ContactBatch contactBatch = await reader.ReadBatchAsync(); while (contactBatch.Contacts.Count != 0 && contactBatch.Status == ContactBatchStatus.Success) { foreach (Contact c in contactBatch.Contacts) { Contacts.Add(new ContactViewModel(c)); } contactBatch = await reader.ReadBatchAsync(); } }
/// <summary> /// Search for contacts /// </summary> /// <param name="text"></param> /// <returns></returns> internal async Task SearchForTextAsync(string text) { if (!String.IsNullOrWhiteSpace(text)) { ContactQueryOptions option = new ContactQueryOptions(text, ContactQuerySearchFields.All); ContactReader reader = store.GetContactReader(option); await DisplayContactsFromReaderAsync(reader); } // A null query string is beeing treated as query for "*" else { ContactReader reader = store.GetContactReader(); await DisplayContactsFromReaderAsync(reader); } }
public void VerifyDatabaseRowsMatchContacts(List<ContactDatabaseRow> inputRows, List<IContact> contactsExpected) { MockContactDatabaseReader mockReader = new MockContactDatabaseReader(); foreach (ContactDatabaseRow row in inputRows) { mockReader.AddRow(row); } ContactReader contactReader = new ContactReader(); contactReader.ParseDatabase(mockReader); List<IContact> contactsActual = new List<IContact>(contactReader); Assert.AreEqual(contactsExpected.Count, contactsActual.Count); foreach (IContact contactExpected in contactsExpected) { Assert.IsTrue(contactsActual.Contains(contactExpected)); } }
public void VerifyDatabaseRowsMatchContacts(List <ContactDatabaseRow> inputRows, List <IContact> contactsExpected) { MockContactDatabaseReader mockReader = new MockContactDatabaseReader(); foreach (ContactDatabaseRow row in inputRows) { mockReader.AddRow(row); } ContactReader contactReader = new ContactReader(); contactReader.ParseDatabase(mockReader); List <IContact> contactsActual = new List <IContact>(contactReader); Assert.AreEqual(contactsExpected.Count, contactsActual.Count); foreach (IContact contactExpected in contactsExpected) { Assert.IsTrue(contactsActual.Contains(contactExpected)); } }
private async Task SearchForTextAsync(string ContactFilter) { if (store == null) { await LoadContactsFromStoreAsync(); return; } if (!string.IsNullOrWhiteSpace(ContactFilter)) { ContactQueryOptions option = new ContactQueryOptions(ContactFilter, ContactQuerySearchFields.All); ContactReader reader = store.GetContactReader(option); await DisplayContactsFromReaderAsync(reader, false); } else { ContactReader reader = store.GetContactReader(); await DisplayContactsFromReaderAsync(reader, true); } return; }
/// <summary> /// Load contacts from contact manager. /// Add <uap:Capability Name="contacts" /> to manifest /// </summary> /// <returns></returns> public async Task LoadContactsAsync() { store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AllContactsReadOnly); if (store == null) // check every time because user can deactivate access at any time { LostConnectionToStore(this, new EventArgs()); return; } Debug.WriteLine("Contact store opend for writing successfully.", "information"); // Load contacts into ListView on the page ContactReader reader = store.GetContactReader(); await DisplayContactsFromReaderAsync(reader); // Start tracking changes to the store once the list is loaded into memory store.ChangeTracker.Enable(); store.ContactChanged += Store_ContactChanged; }
/// <summary> /// Processes contact search. /// </summary> /// <param name="ContactFilter">Takes in the string inputed by the user</param> private async Task SearchForTextAsync(string ContactFilter) { if (store == null) { //Shouldn't happen, and I don't want to deal with opening the store in multiple locations await LoadContactsFromStoreAsync(); return; } //A null query string is being treated as a query for "*" if (!string.IsNullOrWhiteSpace(ContactFilter)) { ContactQueryOptions option = new ContactQueryOptions(ContactFilter, ContactQuerySearchFields.All); ContactReader reader = store.GetContactReader(option); await DisplayContactsFromReaderAsync(reader, false); } else { ContactReader reader = store.GetContactReader(); await DisplayContactsFromReaderAsync(reader, true); } return; }
/// <summary> /// Displays the items from the contact store in the contacts view. /// </summary> /// <param name="reader">Contact store reader</param> /// <param name="isGroup"> /// Boolean to decide if to show the list in a group or a flat list /// Groups is shown by default and search /// Flast list is shown during search /// </param> private async Task DisplayContactsFromReaderAsync(ContactReader reader, bool isGroup) { contactItems.Clear(); ContactBatch contactBatch = await reader.ReadBatchAsync(); if (contactBatch.Contacts.Count == 0) { Debug.WriteLine("Contact store empty"); ContactsStatusText = "We couldn't find any contacts."; ShowContactListStatusText(); return; } while (contactBatch.Contacts.Count != 0) { //should batch add to avoid triggering callbacks foreach (Contact c in contactBatch.Contacts) { ContactItem contactToAdd = new ContactItem(c.Id, c.DisplayName); contactToAdd.SetImageAsync(c.Thumbnail); contactItems.Add(contactToAdd); } contactBatch = await reader.ReadBatchAsync(); } if (isGroup) { GroupsOfContacts = alphaGroupSorting(contactItems); ShowContactGroup(); } else { ListOfContacts = contactItems; ShowContactList(); } return; }
private async Task <IReadOnlyList <Contact> > ListContactsAsync() { ContactStore store = await Store(); if (store != null) { ContactList list = await GetAsync(); if (list != null) { ContactReader reader = list.GetContactReader(); if (reader != null) { ContactBatch batch = await reader.ReadBatchAsync(); if (batch != null) { return(batch.Contacts); } } } } return(null); }
private async Task DisplayContactsFromReaderAsync(ContactReader reader, bool isGroup) { contactItems.Clear(); ContactBatch contactBatch = await reader.ReadBatchAsync(); if (contactBatch.Contacts.Count == 0) { return; } while (contactBatch.Contacts.Count != 0) { foreach (Contact c in contactBatch.Contacts) { if (c.Phones.Count > 0 || c.Emails.Count > 0) { ContactItem contactToAdd = new ContactItem(c.Id, c.DisplayName); contactToAdd.ContactEmails = c.Emails; contactToAdd.ContactPhones = c.Phones; contactToAdd.SetImageAsync(c.Thumbnail); contactItems.Add(contactToAdd); } } contactBatch = await reader.ReadBatchAsync(); } if (isGroup) { groupsOfContacts = alphaGroupSorting(contactItems); } else { _contactsList = contactItems; } return; }
private async Task RaiseContactAddedEvent(ContactReader contactReader, CancellationToken cancellationToken) { var e = new ContactAddedEvent(contactReader); await _mediator.Publish(e, cancellationToken); }
public static IConversationManager LoadConversationManager(ILoadingProgressCallback progressCallback, IPhoneDeviceInfo deviceInfo, bool mergeConversations) { IConversationManager conversationManager = null; using (DatabaseReader contactDatabaseReader = new DatabaseReader(DatabaseFinder.FindContactDatabasePath(deviceInfo.BackupPath))) { ContactReader contactReader = new ContactReader(); contactReader.ParseDatabase(contactDatabaseReader); using (DatabaseReader textDatabaseReader = new DatabaseReader(DatabaseFinder.FindTextMessageDatabasePath(deviceInfo.BackupPath))) { TextMessageReaderBase textMessageReader; IEnumerable <ChatRoomInformation> chatReader; IEnumerable <MessageAttachment> attachments; int chatWorkEstimate; if ((deviceInfo.OsVersion == null) || (deviceInfo.OsVersion.MajorVersion >= 6)) { try { textMessageReader = new TextMessageReaderiOS6(deviceInfo.BackupPath); textMessageReader.ParseDatabase(textDatabaseReader); ChatRoomInformationReaderiOS6 chatRoomInfoReader = new ChatRoomInformationReaderiOS6(); chatRoomInfoReader.ParseDatabase(textDatabaseReader); chatReader = chatRoomInfoReader; attachments = new List <MessageAttachment>(); chatWorkEstimate = chatRoomInfoReader.ItemCountEstimate; } catch (DatabaseQueryException) { textMessageReader = new TextMessageReader(deviceInfo.BackupPath); textMessageReader.ParseDatabase(textDatabaseReader); chatReader = new List <ChatRoomInformation>(); attachments = new List <MessageAttachment>(); chatWorkEstimate = 0; } } else if (deviceInfo.OsVersion.MajorVersion == 5) { textMessageReader = new TextMessageReader2(deviceInfo.BackupPath); textMessageReader.ParseDatabase(textDatabaseReader); ChatRoomInformationReader chatRoomInfoReader = new ChatRoomInformationReader(); chatRoomInfoReader.ParseDatabase(textDatabaseReader); chatReader = chatRoomInfoReader; attachments = new List <MessageAttachment>(); chatWorkEstimate = chatRoomInfoReader.ItemCountEstimate; } else { textMessageReader = new TextMessageReader(deviceInfo.BackupPath); textMessageReader.ParseDatabase(textDatabaseReader); chatReader = new List <ChatRoomInformation>(); attachments = new List <MessageAttachment>(); chatWorkEstimate = 0; } int workEstimate = AllYourTextsLib.Conversation.ConversationManager.GetWorkEstimate(contactReader.ItemCountEstimate, textMessageReader.ItemCountEstimate, chatWorkEstimate, 0); if (mergeConversations) { workEstimate += MergingConversationManager.GetWorkEstimateByContacts(contactReader.ItemCountEstimate); } progressCallback.Begin(workEstimate); conversationManager = new ConversationManager(contactReader, textMessageReader, chatReader, attachments, progressCallback); if (mergeConversations) { conversationManager = new MergingConversationManager(conversationManager, progressCallback); } } } return(conversationManager); }
private IContact GetContactFromSingleDatabaseRow(ContactDatabaseRow row) { ContactReader contactReader = GetContactReaderFromSingleDatabaseRow(row); return(new List <IContact>(contactReader)[0]); }
public static IConversationManager LoadConversationManager(ILoadingProgressCallback progressCallback, IPhoneDeviceInfo deviceInfo, bool mergeConversations) { IConversationManager conversationManager = null; using (DatabaseReader contactDatabaseReader = new DatabaseReader(DatabaseFinder.FindContactDatabasePath(deviceInfo.BackupPath))) { ContactReader contactReader = new ContactReader(); contactReader.ParseDatabase(contactDatabaseReader); using (DatabaseReader textDatabaseReader = new DatabaseReader(DatabaseFinder.FindTextMessageDatabasePath(deviceInfo.BackupPath))) { TextMessageReaderBase textMessageReader; IEnumerable<ChatRoomInformation> chatReader; IEnumerable<MessageAttachment> attachments; int chatWorkEstimate; if ((deviceInfo.OsVersion == null) || (deviceInfo.OsVersion.MajorVersion >= 6)) { try { textMessageReader = new TextMessageReaderiOS6(deviceInfo.BackupPath); textMessageReader.ParseDatabase(textDatabaseReader); ChatRoomInformationReaderiOS6 chatRoomInfoReader = new ChatRoomInformationReaderiOS6(); chatRoomInfoReader.ParseDatabase(textDatabaseReader); chatReader = chatRoomInfoReader; attachments = new List<MessageAttachment>(); chatWorkEstimate = chatRoomInfoReader.ItemCountEstimate; } catch (DatabaseQueryException) { textMessageReader = new TextMessageReader(deviceInfo.BackupPath); textMessageReader.ParseDatabase(textDatabaseReader); chatReader = new List<ChatRoomInformation>(); attachments = new List<MessageAttachment>(); chatWorkEstimate = 0; } } else if (deviceInfo.OsVersion.MajorVersion == 5) { textMessageReader = new TextMessageReader2(deviceInfo.BackupPath); textMessageReader.ParseDatabase(textDatabaseReader); ChatRoomInformationReader chatRoomInfoReader = new ChatRoomInformationReader(); chatRoomInfoReader.ParseDatabase(textDatabaseReader); chatReader = chatRoomInfoReader; attachments = new List<MessageAttachment>(); chatWorkEstimate = chatRoomInfoReader.ItemCountEstimate; } else { textMessageReader = new TextMessageReader(deviceInfo.BackupPath); textMessageReader.ParseDatabase(textDatabaseReader); chatReader = new List<ChatRoomInformation>(); attachments = new List<MessageAttachment>(); chatWorkEstimate = 0; } int workEstimate = AllYourTextsLib.Conversation.ConversationManager.GetWorkEstimate(contactReader.ItemCountEstimate, textMessageReader.ItemCountEstimate, chatWorkEstimate, 0); if (mergeConversations) { workEstimate += MergingConversationManager.GetWorkEstimateByContacts(contactReader.ItemCountEstimate); } progressCallback.Begin(workEstimate); conversationManager = new ConversationManager(contactReader, textMessageReader, chatReader, attachments, progressCallback); if (mergeConversations) { conversationManager = new MergingConversationManager(conversationManager, progressCallback); } } } return conversationManager; }
private ContactReader GetContactReaderFromSingleDatabaseRow(ContactDatabaseRow row) { MockContactDatabaseReader mockReader = new MockContactDatabaseReader(); mockReader.AddRow(row); ContactReader contactReader = new ContactReader(); contactReader.ParseDatabase(mockReader); return contactReader; }
/// <summary> /// Displays the items from the contact store in the contacts view. /// </summary> /// <param name="reader">Contact store reader</param> /// <param name="isGroup"> /// Boolean to decide if to show the list in a group or a flat list /// Groups is shown by default and search /// Flast list is shown during search /// </param> private async Task DisplayContactsFromReaderAsync(ContactReader reader, bool isGroup) { contactItems.Clear(); ContactBatch contactBatch = await reader.ReadBatchAsync(); if (contactBatch.Contacts.Count == 0) { Debug.WriteLine("Contact store empty"); ContactsStatusText = "We couldn't find any contacts."; ShowContactListStatusText(); return; } while (contactBatch.Contacts.Count != 0) { //should batch add to avoid triggering callbacks foreach (Contact c in contactBatch.Contacts) { ContactItem contactToAdd = new ContactItem(c.Id, c.DisplayName); contactToAdd.SetImageAsync(c.Thumbnail); contactItems.Add(contactToAdd); } contactBatch = await reader.ReadBatchAsync(); } if (isGroup) { GroupsOfContacts = alphaGroupSorting(contactItems); ShowContactGroup(); } else { ListOfContacts = contactItems; ShowContactList(); } return; }