1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
/// The formatting styles for contact names.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/contacts/cncontactformatterstyle?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct CNContactFormatterStyle(pub NSInteger);
impl CNContactFormatterStyle {
/// Combine the contact name components into a displayable full name.
#[doc(alias = "CNContactFormatterStyleFullName")]
pub const FullName: Self = Self(0);
/// Combine the contact phonetic name components into a displayable phonetic full name.
#[doc(alias = "CNContactFormatterStylePhoneticFullName")]
pub const PhoneticFullName: Self = Self(1);
}
unsafe impl Encode for CNContactFormatterStyle {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for CNContactFormatterStyle {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
/// The formatting order of the contact name components.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/contacts/cncontactdisplaynameorder?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct CNContactDisplayNameOrder(pub NSInteger);
impl CNContactDisplayNameOrder {
#[doc(alias = "CNContactDisplayNameOrderUserDefault")]
pub const UserDefault: Self = Self(0);
#[doc(alias = "CNContactDisplayNameOrderGivenNameFirst")]
pub const GivenNameFirst: Self = Self(1);
#[doc(alias = "CNContactDisplayNameOrderFamilyNameFirst")]
pub const FamilyNameFirst: Self = Self(2);
}
unsafe impl Encode for CNContactDisplayNameOrder {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for CNContactDisplayNameOrder {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_class!(
/// Formats a contact name.
///
///
/// This formatter handles international ordering and delimiting of the contact name components. This includes applying the user defaults when appropriate.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/contacts/cncontactformatter?language=objc)
#[unsafe(super(NSFormatter, NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct CNContactFormatter;
);
extern_conformance!(
unsafe impl NSCoding for CNContactFormatter {}
);
extern_conformance!(
unsafe impl NSCopying for CNContactFormatter {}
);
unsafe impl CopyingHelper for CNContactFormatter {
type Result = Self;
}
extern_conformance!(
unsafe impl NSObjectProtocol for CNContactFormatter {}
);
extern_conformance!(
unsafe impl NSSecureCoding for CNContactFormatter {}
);
impl CNContactFormatter {
extern_methods!(
#[cfg(feature = "CNContact")]
/// The contact key descriptor required for the formatter.
///
///
/// Use to fetch all contact keys required for the formatter style. Can combine key descriptors for different formatter styles in the fetch.
///
///
/// Parameter `style`: The formatting style to be used for the contact name.
///
/// Returns: The contact key descriptor for the formatting style.
#[unsafe(method(descriptorForRequiredKeysForStyle:))]
#[unsafe(method_family = none)]
pub unsafe fn descriptorForRequiredKeysForStyle(
style: CNContactFormatterStyle,
) -> Retained<ProtocolObject<dyn CNKeyDescriptor>>;
#[cfg(feature = "CNContact")]
/// The contact key descriptor required for the name order.
///
///
/// Use to fetch all contact keys required for +nameOrderForContact:. Can combine key descriptors for different formatter styles in the fetch.
///
///
/// Returns: The contact key descriptor for the name order.
#[unsafe(method(descriptorForRequiredKeysForNameOrder))]
#[unsafe(method_family = none)]
pub unsafe fn descriptorForRequiredKeysForNameOrder(
) -> Retained<ProtocolObject<dyn CNKeyDescriptor>>;
#[cfg(feature = "CNContact")]
/// The contact key descriptor required for the name delimiter.
///
///
/// Use to fetch all contact keys required for +delimiterForContact:. Can combine key descriptors for different formatter styles in the fetch.
///
///
/// Returns: The contact key descriptor for the name delimiter.
#[unsafe(method(descriptorForRequiredKeysForDelimiter))]
#[unsafe(method_family = none)]
pub unsafe fn descriptorForRequiredKeysForDelimiter(
) -> Retained<ProtocolObject<dyn CNKeyDescriptor>>;
#[cfg(feature = "CNContact")]
/// Formats the contact name.
///
///
/// Parameter `contact`: The contact whose name is to be formatted.
///
/// Parameter `style`: The formatting style to be used for the contact name.
///
/// Returns: The formatted contact name.
#[unsafe(method(stringFromContact:style:))]
#[unsafe(method_family = none)]
pub unsafe fn stringFromContact_style(
contact: &CNContact,
style: CNContactFormatterStyle,
) -> Option<Retained<NSString>>;
#[cfg(feature = "CNContact")]
/// Formats the contact name returning an attributed string.
///
///
/// This behaves like +stringFromContact:style: except it returns an attributed string. Includes the attribute key CNContactPropertyAttribute.
///
///
/// Parameter `contact`: The contact whose name is to be formatted.
///
/// Parameter `style`: The formatting style to be used for the contact name.
///
/// Parameter `attributes`: The default attributes to use. See NSFormatter for details.
///
/// Returns: The formatted contact name as an attributed string.
///
/// # Safety
///
/// `attributes` generic should be of the correct type.
#[unsafe(method(attributedStringFromContact:style:defaultAttributes:))]
#[unsafe(method_family = none)]
pub unsafe fn attributedStringFromContact_style_defaultAttributes(
contact: &CNContact,
style: CNContactFormatterStyle,
attributes: Option<&NSDictionary>,
) -> Option<Retained<NSAttributedString>>;
#[cfg(feature = "CNContact")]
/// The recommended name order for a given contact.
#[unsafe(method(nameOrderForContact:))]
#[unsafe(method_family = none)]
pub unsafe fn nameOrderForContact(contact: &CNContact) -> CNContactDisplayNameOrder;
#[cfg(feature = "CNContact")]
/// The recommended delimiter to use between name components for a given contact.
#[unsafe(method(delimiterForContact:))]
#[unsafe(method_family = none)]
pub unsafe fn delimiterForContact(contact: &CNContact) -> Retained<NSString>;
/// The style for a contact formatter instance.
///
///
/// The default value is CNContactFormatterStyleFullName.
#[unsafe(method(style))]
#[unsafe(method_family = none)]
pub unsafe fn style(&self) -> CNContactFormatterStyle;
/// Setter for [`style`][Self::style].
#[unsafe(method(setStyle:))]
#[unsafe(method_family = none)]
pub unsafe fn setStyle(&self, style: CNContactFormatterStyle);
#[cfg(feature = "CNContact")]
/// Formats the contact name.
///
///
/// Parameter `contact`: The contact whose name is to be formatted.
///
/// Returns: The formatted contact name.
#[unsafe(method(stringFromContact:))]
#[unsafe(method_family = none)]
pub unsafe fn stringFromContact(&self, contact: &CNContact) -> Option<Retained<NSString>>;
#[cfg(feature = "CNContact")]
/// Formats the contact name returning an attributed string.
///
///
/// This behaves like -stringFromContact:style: except it returns an attributed string. CNContactPropertyAttribute key has the value of a CNContact name property key.
///
///
/// Parameter `contact`: The contact whose name is to be formatted.
///
/// Parameter `attributes`: The default attributes to use. See NSFormatter for details.
///
/// Returns: The formatted contact name as an attributed string.
///
/// # Safety
///
/// `attributes` generic should be of the correct type.
#[unsafe(method(attributedStringFromContact:defaultAttributes:))]
#[unsafe(method_family = none)]
pub unsafe fn attributedStringFromContact_defaultAttributes(
&self,
contact: &CNContact,
attributes: Option<&NSDictionary>,
) -> Option<Retained<NSAttributedString>>;
);
}
/// Methods declared on superclass `NSObject`.
impl CNContactFormatter {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}
extern "C" {
/// [Apple's documentation](https://developer.apple.com/documentation/contacts/cncontactpropertyattribute?language=objc)
pub static CNContactPropertyAttribute: &'static NSString;
}