Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
parent
6db9f438e6
commit
367dd879b7
|
@ -0,0 +1,160 @@
|
|||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AddressBook/ABAddressBook.h>
|
||||
#import <AddressBookUI/AddressBookUI.h>
|
||||
#import <Cordova/CDVPlugin.h>
|
||||
#import "CDVContact.h"
|
||||
|
||||
@interface CDVContacts : CDVPlugin <ABNewPersonViewControllerDelegate,
|
||||
ABPersonViewControllerDelegate,
|
||||
ABPeoplePickerNavigationControllerDelegate
|
||||
>
|
||||
{
|
||||
ABAddressBookRef addressBook;
|
||||
}
|
||||
|
||||
/*
|
||||
* newContact - create a new contact via the GUI
|
||||
*
|
||||
* arguments:
|
||||
* 1: successCallback: this is the javascript function that will be called with the newly created contactId
|
||||
*/
|
||||
- (void)newContact:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
/*
|
||||
* displayContact - IN PROGRESS
|
||||
*
|
||||
* arguments:
|
||||
* 1: recordID of the contact to display in the iPhone contact display
|
||||
* 2: successCallback - currently not used
|
||||
* 3: error callback
|
||||
* options:
|
||||
* allowsEditing: set to true to allow the user to edit the contact - currently not supported
|
||||
*/
|
||||
- (void)displayContact:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
/*
|
||||
* chooseContact
|
||||
*
|
||||
* arguments:
|
||||
* 1: this is the javascript function that will be called with the contact data as a JSON object (as the first param)
|
||||
* options:
|
||||
* allowsEditing: set to true to not choose the contact, but to edit it in the iPhone contact editor
|
||||
*/
|
||||
- (void)chooseContact:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
- (void)newPersonViewController:(ABNewPersonViewController*)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person;
|
||||
- (BOOL)personViewController:(ABPersonViewController*)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person
|
||||
property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifierForValue;
|
||||
/*
|
||||
* Launches the Contact Picker to select a single contact.
|
||||
*
|
||||
* arguments:
|
||||
* 1: this is the javascript function that will be called with the contact data as a JSON object (as the first param)
|
||||
* options:
|
||||
* desiredFields: ContactFields array to be returned back
|
||||
*/
|
||||
- (void)pickContact:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
/*
|
||||
* search - searches for contacts. Only person records are currently supported.
|
||||
*
|
||||
* arguments:
|
||||
* 1: successcallback - this is the javascript function that will be called with the array of found contacts
|
||||
* 2: errorCallback - optional javascript function to be called in the event of an error with an error code.
|
||||
* options: dictionary containing ContactFields and ContactFindOptions
|
||||
* fields - ContactFields array
|
||||
* findOptions - ContactFindOptions object as dictionary
|
||||
*
|
||||
*/
|
||||
- (void)search:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
/*
|
||||
* save - saves a new contact or updates and existing contact
|
||||
*
|
||||
* arguments:
|
||||
* 1: success callback - this is the javascript function that will be called with the JSON representation of the saved contact
|
||||
* search calls a fixed navigator.service.contacts._findCallback which then calls the success callback stored before making the call into obj-c
|
||||
*/
|
||||
- (void)save:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
/*
|
||||
* remove - removes a contact from the address book
|
||||
*
|
||||
* arguments:
|
||||
* 1: 1: successcallback - this is the javascript function that will be called with a (now) empty contact object
|
||||
*
|
||||
* options: dictionary containing Contact object to remove
|
||||
* contact - Contact object as dictionary
|
||||
*/
|
||||
- (void)remove:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
// - (void) dealloc;
|
||||
|
||||
@end
|
||||
|
||||
@interface CDVContactsPicker : ABPeoplePickerNavigationController
|
||||
{
|
||||
BOOL allowsEditing;
|
||||
NSString* callbackId;
|
||||
NSDictionary* options;
|
||||
NSDictionary* pickedContactDictionary;
|
||||
}
|
||||
|
||||
@property BOOL allowsEditing;
|
||||
@property (copy) NSString* callbackId;
|
||||
@property (nonatomic, strong) NSDictionary* options;
|
||||
@property (nonatomic, strong) NSDictionary* pickedContactDictionary;
|
||||
|
||||
@end
|
||||
|
||||
@interface CDVNewContactsController : ABNewPersonViewController
|
||||
{
|
||||
NSString* callbackId;
|
||||
}
|
||||
@property (copy) NSString* callbackId;
|
||||
@end
|
||||
|
||||
/* ABPersonViewController does not have any UI to dismiss. Adding navigationItems to it does not work properly, the navigationItems are lost when the app goes into the background.
|
||||
The solution was to create an empty NavController in front of the ABPersonViewController. This
|
||||
causes the ABPersonViewController to have a back button. By subclassing the ABPersonViewController,
|
||||
we can override viewWillDisappear and take down the entire NavigationController at that time.
|
||||
*/
|
||||
@interface CDVDisplayContactViewController : ABPersonViewController
|
||||
{}
|
||||
@property (nonatomic, strong) CDVPlugin* contactsPlugin;
|
||||
|
||||
@end
|
||||
@interface CDVAddressBookAccessError : NSObject
|
||||
{}
|
||||
@property (assign) CDVContactError errorCode;
|
||||
- (CDVAddressBookAccessError*)initWithCode:(CDVContactError)code;
|
||||
@end
|
||||
|
||||
typedef void (^ CDVAddressBookWorkerBlock)(
|
||||
ABAddressBookRef addressBook,
|
||||
CDVAddressBookAccessError* error
|
||||
);
|
||||
@interface CDVAddressBookHelper : NSObject
|
||||
{}
|
||||
|
||||
- (void)createAddressBook:(CDVAddressBookWorkerBlock)workerBlock;
|
||||
@end
|
Loading…
Reference in New Issue
Block a user