1115cd2caSopenharmony_ci/*
2115cd2caSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3115cd2caSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4115cd2caSopenharmony_ci * you may not use this file except in compliance with the License.
5115cd2caSopenharmony_ci * You may obtain a copy of the License at
6115cd2caSopenharmony_ci *
7115cd2caSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8115cd2caSopenharmony_ci *
9115cd2caSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10115cd2caSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11115cd2caSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12115cd2caSopenharmony_ci * See the License for the specific language governing permissions and
13115cd2caSopenharmony_ci * limitations under the License.
14115cd2caSopenharmony_ci */
15115cd2caSopenharmony_ci
16115cd2caSopenharmony_ci#ifndef CONTACT_NAPI_OBJECT_H
17115cd2caSopenharmony_ci#define CONTACT_NAPI_OBJECT_H
18115cd2caSopenharmony_ci
19115cd2caSopenharmony_ci#include <string>
20115cd2caSopenharmony_ci
21115cd2caSopenharmony_cinamespace OHOS {
22115cd2caSopenharmony_cinamespace ContactsApi {
23115cd2caSopenharmony_cienum class Attribute {
24115cd2caSopenharmony_ci    /**
25115cd2caSopenharmony_ci     * Indicates the email address.
26115cd2caSopenharmony_ci     */
27115cd2caSopenharmony_ci    ATTR_EMAIL = 1,
28115cd2caSopenharmony_ci
29115cd2caSopenharmony_ci    /**
30115cd2caSopenharmony_ci     * Indicates the instant messaging (IM) address.
31115cd2caSopenharmony_ci     */
32115cd2caSopenharmony_ci    ATTR_IM,
33115cd2caSopenharmony_ci
34115cd2caSopenharmony_ci    /**
35115cd2caSopenharmony_ci     * Indicates the nickname.
36115cd2caSopenharmony_ci     */
37115cd2caSopenharmony_ci    ATTR_NICKNAME,
38115cd2caSopenharmony_ci
39115cd2caSopenharmony_ci    /**
40115cd2caSopenharmony_ci     * Indicates the organization.
41115cd2caSopenharmony_ci     */
42115cd2caSopenharmony_ci    ATTR_ORGANIZATION,
43115cd2caSopenharmony_ci
44115cd2caSopenharmony_ci    /**
45115cd2caSopenharmony_ci     * Indicates the phone number.
46115cd2caSopenharmony_ci     */
47115cd2caSopenharmony_ci    ATTR_PHONE,
48115cd2caSopenharmony_ci
49115cd2caSopenharmony_ci    /**
50115cd2caSopenharmony_ci     * Indicates the name.
51115cd2caSopenharmony_ci     */
52115cd2caSopenharmony_ci    ATTR_NAME,
53115cd2caSopenharmony_ci
54115cd2caSopenharmony_ci    /**
55115cd2caSopenharmony_ci     * Indicates the postal address.
56115cd2caSopenharmony_ci     */
57115cd2caSopenharmony_ci    ATTR_POSTAL_ADDRESS,
58115cd2caSopenharmony_ci
59115cd2caSopenharmony_ci    /**
60115cd2caSopenharmony_ci     * Indicates the portrait.
61115cd2caSopenharmony_ci     */
62115cd2caSopenharmony_ci    ATTR_PORTRAIT,
63115cd2caSopenharmony_ci
64115cd2caSopenharmony_ci    /**
65115cd2caSopenharmony_ci     * Indicates the contact group.
66115cd2caSopenharmony_ci     */
67115cd2caSopenharmony_ci    ATTR_GROUP_MEMBERSHIP,
68115cd2caSopenharmony_ci
69115cd2caSopenharmony_ci    /**
70115cd2caSopenharmony_ci     * Indicates the note.
71115cd2caSopenharmony_ci     */
72115cd2caSopenharmony_ci    ATTR_NOTE,
73115cd2caSopenharmony_ci
74115cd2caSopenharmony_ci    /**
75115cd2caSopenharmony_ci     * Indicates the contact event.
76115cd2caSopenharmony_ci     */
77115cd2caSopenharmony_ci    ATTR_CONTACT_EVENT,
78115cd2caSopenharmony_ci
79115cd2caSopenharmony_ci    /**
80115cd2caSopenharmony_ci     * Indicates the website.
81115cd2caSopenharmony_ci     */
82115cd2caSopenharmony_ci    ATTR_WEBSITE,
83115cd2caSopenharmony_ci
84115cd2caSopenharmony_ci    /**
85115cd2caSopenharmony_ci     * Indicates the relation.
86115cd2caSopenharmony_ci     */
87115cd2caSopenharmony_ci    ATTR_RELATION,
88115cd2caSopenharmony_ci
89115cd2caSopenharmony_ci    /**
90115cd2caSopenharmony_ci     * Indicates the Session Initiation Protocol (SIP) address.
91115cd2caSopenharmony_ci     */
92115cd2caSopenharmony_ci    ATTR_SIP_ADDRESS = 17
93115cd2caSopenharmony_ci};
94115cd2caSopenharmony_ci
95115cd2caSopenharmony_ci/**
96115cd2caSopenharmony_ci * Provides methods for contact attributes information
97115cd2caSopenharmony_ci */
98115cd2caSopenharmony_ciclass ContactAttributes {
99115cd2caSopenharmony_cipublic:
100115cd2caSopenharmony_ci    /**
101115cd2caSopenharmony_ci     * Indicates the contact attributes.
102115cd2caSopenharmony_ci     */
103115cd2caSopenharmony_ci    std::vector<int> attributes;
104115cd2caSopenharmony_ci};
105115cd2caSopenharmony_ci
106115cd2caSopenharmony_ci/**
107115cd2caSopenharmony_ci * Provides methods for email information
108115cd2caSopenharmony_ci */
109115cd2caSopenharmony_ciclass Email {
110115cd2caSopenharmony_cipublic:
111115cd2caSopenharmony_ci    /**
112115cd2caSopenharmony_ci     * Indicates a custom label.
113115cd2caSopenharmony_ci     */
114115cd2caSopenharmony_ci    static const int CUSTOM_LABEL = 0;
115115cd2caSopenharmony_ci
116115cd2caSopenharmony_ci    /**
117115cd2caSopenharmony_ci     * Indicates a home email.
118115cd2caSopenharmony_ci     */
119115cd2caSopenharmony_ci    static const int EMAIL_HOME = 1;
120115cd2caSopenharmony_ci
121115cd2caSopenharmony_ci    /**
122115cd2caSopenharmony_ci     * Indicates a work email.
123115cd2caSopenharmony_ci     */
124115cd2caSopenharmony_ci    static const int EMAIL_WORK = 2;
125115cd2caSopenharmony_ci
126115cd2caSopenharmony_ci    /**
127115cd2caSopenharmony_ci     * Indicates an email of the OTHER type.
128115cd2caSopenharmony_ci     */
129115cd2caSopenharmony_ci    static const int EMAIL_OTHER = 3;
130115cd2caSopenharmony_ci
131115cd2caSopenharmony_ci    /**
132115cd2caSopenharmony_ci     * Indicates an invalid label ID.
133115cd2caSopenharmony_ci     */
134115cd2caSopenharmony_ci    static const int INVALID_LABEL_ID = -1;
135115cd2caSopenharmony_ci
136115cd2caSopenharmony_ci    /**
137115cd2caSopenharmony_ci     * Indicates the email address.
138115cd2caSopenharmony_ci     */
139115cd2caSopenharmony_ci    std::string email;
140115cd2caSopenharmony_ci
141115cd2caSopenharmony_ci    /**
142115cd2caSopenharmony_ci     * Indicates the label name of an attribute.
143115cd2caSopenharmony_ci     */
144115cd2caSopenharmony_ci    std::string labelName;
145115cd2caSopenharmony_ci
146115cd2caSopenharmony_ci    /**
147115cd2caSopenharmony_ci     * Indicates the displayed email name.
148115cd2caSopenharmony_ci     */
149115cd2caSopenharmony_ci    std::string displayName;
150115cd2caSopenharmony_ci
151115cd2caSopenharmony_ci    /**
152115cd2caSopenharmony_ci     * Indicates the label id.
153115cd2caSopenharmony_ci     */
154115cd2caSopenharmony_ci    int labelId = -1;
155115cd2caSopenharmony_ci};
156115cd2caSopenharmony_ci
157115cd2caSopenharmony_ci/**
158115cd2caSopenharmony_ci * Provides methods for event information
159115cd2caSopenharmony_ci */
160115cd2caSopenharmony_ciclass Event {
161115cd2caSopenharmony_cipublic:
162115cd2caSopenharmony_ci    /**
163115cd2caSopenharmony_ci     * Indicates a custom label.
164115cd2caSopenharmony_ci     */
165115cd2caSopenharmony_ci    static const int CUSTOM_LABEL = 0;
166115cd2caSopenharmony_ci
167115cd2caSopenharmony_ci    /**
168115cd2caSopenharmony_ci     * Indicates an anniversary event.
169115cd2caSopenharmony_ci     */
170115cd2caSopenharmony_ci    static const int EVENT_ANNIVERSARY = 1;
171115cd2caSopenharmony_ci
172115cd2caSopenharmony_ci    /**
173115cd2caSopenharmony_ci     * Indicates an event of the OTHER type.
174115cd2caSopenharmony_ci     */
175115cd2caSopenharmony_ci    static const int EVENT_OTHER = 2;
176115cd2caSopenharmony_ci
177115cd2caSopenharmony_ci    /**
178115cd2caSopenharmony_ci     * Indicates an birthday event.
179115cd2caSopenharmony_ci     */
180115cd2caSopenharmony_ci    static const int EVENT_BIRTHDAY = 3;
181115cd2caSopenharmony_ci
182115cd2caSopenharmony_ci    /**
183115cd2caSopenharmony_ci     * Indicates an invalid label ID.
184115cd2caSopenharmony_ci     */
185115cd2caSopenharmony_ci    static const int INVALID_LABEL_ID = -1;
186115cd2caSopenharmony_ci
187115cd2caSopenharmony_ci    /**
188115cd2caSopenharmony_ci     * Indicates the event date.
189115cd2caSopenharmony_ci     */
190115cd2caSopenharmony_ci    std::string eventDate;
191115cd2caSopenharmony_ci
192115cd2caSopenharmony_ci    /**
193115cd2caSopenharmony_ci     * Indicates the label name of an attribute.
194115cd2caSopenharmony_ci     */
195115cd2caSopenharmony_ci    std::string labelName;
196115cd2caSopenharmony_ci
197115cd2caSopenharmony_ci    /**
198115cd2caSopenharmony_ci     * Indicates the label id.
199115cd2caSopenharmony_ci     */
200115cd2caSopenharmony_ci    int labelId = -1;
201115cd2caSopenharmony_ci};
202115cd2caSopenharmony_ci
203115cd2caSopenharmony_ci/**
204115cd2caSopenharmony_ci * Provides methods for group information
205115cd2caSopenharmony_ci */
206115cd2caSopenharmony_ciclass Group {
207115cd2caSopenharmony_cipublic:
208115cd2caSopenharmony_ci    /**
209115cd2caSopenharmony_ci     * Indicates the contact group ID.
210115cd2caSopenharmony_ci     */
211115cd2caSopenharmony_ci    int groupId = -1;
212115cd2caSopenharmony_ci
213115cd2caSopenharmony_ci    /**
214115cd2caSopenharmony_ci     * Indicates the contact group title.
215115cd2caSopenharmony_ci     */
216115cd2caSopenharmony_ci    std::string title;
217115cd2caSopenharmony_ci};
218115cd2caSopenharmony_ci
219115cd2caSopenharmony_ci/**
220115cd2caSopenharmony_ci * Provides methods for holder information
221115cd2caSopenharmony_ci */
222115cd2caSopenharmony_ciclass Holder {
223115cd2caSopenharmony_cipublic:
224115cd2caSopenharmony_ci    /**
225115cd2caSopenharmony_ci     * Indicates the bundle name of a contact holder.
226115cd2caSopenharmony_ci     */
227115cd2caSopenharmony_ci    std::string bundleName;
228115cd2caSopenharmony_ci
229115cd2caSopenharmony_ci    /**
230115cd2caSopenharmony_ci     * Indicates the displayed name of a contact holder.
231115cd2caSopenharmony_ci     */
232115cd2caSopenharmony_ci    std::string displayName;
233115cd2caSopenharmony_ci
234115cd2caSopenharmony_ci    /**
235115cd2caSopenharmony_ci     * Indicates the holder ID.
236115cd2caSopenharmony_ci     */
237115cd2caSopenharmony_ci    int holderId = -1;
238115cd2caSopenharmony_ci};
239115cd2caSopenharmony_ci
240115cd2caSopenharmony_ci/**
241115cd2caSopenharmony_ci * Provides methods for ImAddress information
242115cd2caSopenharmony_ci */
243115cd2caSopenharmony_ciclass ImAddress {
244115cd2caSopenharmony_cipublic:
245115cd2caSopenharmony_ci    /**
246115cd2caSopenharmony_ci     * Indicates a custom label.
247115cd2caSopenharmony_ci     */
248115cd2caSopenharmony_ci    static const int CUSTOM_LABEL = -1;
249115cd2caSopenharmony_ci
250115cd2caSopenharmony_ci    /**
251115cd2caSopenharmony_ci     * Indicates an AIM instant message.
252115cd2caSopenharmony_ci     */
253115cd2caSopenharmony_ci    static const int IM_AIM = 0;
254115cd2caSopenharmony_ci
255115cd2caSopenharmony_ci    /**
256115cd2caSopenharmony_ci     * Indicates a Windows Live instant message.
257115cd2caSopenharmony_ci     */
258115cd2caSopenharmony_ci    static const int IM_MSN = 1;
259115cd2caSopenharmony_ci
260115cd2caSopenharmony_ci    /**
261115cd2caSopenharmony_ci     * Indicates a Yahoo instant message.
262115cd2caSopenharmony_ci     */
263115cd2caSopenharmony_ci    static const int IM_YAHOO = 2;
264115cd2caSopenharmony_ci
265115cd2caSopenharmony_ci    /**
266115cd2caSopenharmony_ci     * Indicates a Skype instant message.
267115cd2caSopenharmony_ci     */
268115cd2caSopenharmony_ci    static const int IM_SKYPE = 3;
269115cd2caSopenharmony_ci
270115cd2caSopenharmony_ci    /**
271115cd2caSopenharmony_ci     * Indicates a QQ instant message.
272115cd2caSopenharmony_ci     */
273115cd2caSopenharmony_ci    static const int IM_QQ = 4;
274115cd2caSopenharmony_ci
275115cd2caSopenharmony_ci    /**
276115cd2caSopenharmony_ci     * Indicates an ICQ instant message.
277115cd2caSopenharmony_ci     */
278115cd2caSopenharmony_ci    static const int IM_ICQ = 6;
279115cd2caSopenharmony_ci
280115cd2caSopenharmony_ci    /**
281115cd2caSopenharmony_ci     * Indicates a Jabber instant message.
282115cd2caSopenharmony_ci     */
283115cd2caSopenharmony_ci    static const int IM_JABBER = 7;
284115cd2caSopenharmony_ci
285115cd2caSopenharmony_ci    /**
286115cd2caSopenharmony_ci     * Indicates an invalid label ID.
287115cd2caSopenharmony_ci     */
288115cd2caSopenharmony_ci    static const int INVALID_LABEL_ID = -2;
289115cd2caSopenharmony_ci
290115cd2caSopenharmony_ci    /**
291115cd2caSopenharmony_ci     * Indicates the IM address.
292115cd2caSopenharmony_ci     */
293115cd2caSopenharmony_ci    std::string imAddress;
294115cd2caSopenharmony_ci
295115cd2caSopenharmony_ci    /**
296115cd2caSopenharmony_ci     * Indicates the label name of an attribute.
297115cd2caSopenharmony_ci     */
298115cd2caSopenharmony_ci    std::string labelName;
299115cd2caSopenharmony_ci
300115cd2caSopenharmony_ci    /**
301115cd2caSopenharmony_ci     * Indicates the label id.
302115cd2caSopenharmony_ci     */
303115cd2caSopenharmony_ci    int labelId = -1;
304115cd2caSopenharmony_ci};
305115cd2caSopenharmony_ci/**
306115cd2caSopenharmony_ci * Provides methods for name information
307115cd2caSopenharmony_ci */
308115cd2caSopenharmony_ciclass Name {
309115cd2caSopenharmony_cipublic:
310115cd2caSopenharmony_ci    /**
311115cd2caSopenharmony_ci     * Indicates the family name of the contact.
312115cd2caSopenharmony_ci     */
313115cd2caSopenharmony_ci    std::string familyName;
314115cd2caSopenharmony_ci
315115cd2caSopenharmony_ci    /**
316115cd2caSopenharmony_ci     * Indicates the phonetic family name of the contact.
317115cd2caSopenharmony_ci     */
318115cd2caSopenharmony_ci    std::string familyNamePhonetic;
319115cd2caSopenharmony_ci
320115cd2caSopenharmony_ci    /**
321115cd2caSopenharmony_ci     * Indicates the full name of the contact.
322115cd2caSopenharmony_ci     */
323115cd2caSopenharmony_ci    std::string fullName;
324115cd2caSopenharmony_ci
325115cd2caSopenharmony_ci    /**
326115cd2caSopenharmony_ci     * Indicates the given name of the contact.
327115cd2caSopenharmony_ci     */
328115cd2caSopenharmony_ci    std::string givenName;
329115cd2caSopenharmony_ci
330115cd2caSopenharmony_ci    /**
331115cd2caSopenharmony_ci     * Indicates the phonetic given name of the contact.
332115cd2caSopenharmony_ci     */
333115cd2caSopenharmony_ci    std::string givenNamePhonetic;
334115cd2caSopenharmony_ci
335115cd2caSopenharmony_ci    /**
336115cd2caSopenharmony_ci     * Indicates the middle name of the contact.
337115cd2caSopenharmony_ci     */
338115cd2caSopenharmony_ci    std::string middleName;
339115cd2caSopenharmony_ci
340115cd2caSopenharmony_ci    /**
341115cd2caSopenharmony_ci     * Indicates the phonetic middle name of the contact.
342115cd2caSopenharmony_ci     */
343115cd2caSopenharmony_ci    std::string middleNamePhonetic;
344115cd2caSopenharmony_ci
345115cd2caSopenharmony_ci    /**
346115cd2caSopenharmony_ci     * Indicates the prefix of the contact name.
347115cd2caSopenharmony_ci     */
348115cd2caSopenharmony_ci    std::string namePrefix;
349115cd2caSopenharmony_ci
350115cd2caSopenharmony_ci    /**
351115cd2caSopenharmony_ci     * Indicates the suffix of this contact name.
352115cd2caSopenharmony_ci     */
353115cd2caSopenharmony_ci    std::string nameSuffix;
354115cd2caSopenharmony_ci};
355115cd2caSopenharmony_ci/**
356115cd2caSopenharmony_ci * Provides methods for nick name information
357115cd2caSopenharmony_ci */
358115cd2caSopenharmony_ciclass NickName {
359115cd2caSopenharmony_cipublic:
360115cd2caSopenharmony_ci    /**
361115cd2caSopenharmony_ci     * Indicates the nickname of the contact.
362115cd2caSopenharmony_ci     */
363115cd2caSopenharmony_ci    std::string nickName;
364115cd2caSopenharmony_ci};
365115cd2caSopenharmony_ci
366115cd2caSopenharmony_ci/**
367115cd2caSopenharmony_ci * Provides methods for note information
368115cd2caSopenharmony_ci */
369115cd2caSopenharmony_ciclass Note {
370115cd2caSopenharmony_cipublic:
371115cd2caSopenharmony_ci    /**
372115cd2caSopenharmony_ci     * Indicates the note content.
373115cd2caSopenharmony_ci     */
374115cd2caSopenharmony_ci    std::string noteContent;
375115cd2caSopenharmony_ci};
376115cd2caSopenharmony_ci/**
377115cd2caSopenharmony_ci * Provides methods for organization information
378115cd2caSopenharmony_ci */
379115cd2caSopenharmony_ciclass Organization {
380115cd2caSopenharmony_cipublic:
381115cd2caSopenharmony_ci    /**
382115cd2caSopenharmony_ci     * Indicates the name of the organization to which the contact belongs.
383115cd2caSopenharmony_ci     */
384115cd2caSopenharmony_ci    std::string name;
385115cd2caSopenharmony_ci
386115cd2caSopenharmony_ci    /**
387115cd2caSopenharmony_ci     * Indicates the title of the contact.
388115cd2caSopenharmony_ci     */
389115cd2caSopenharmony_ci    std::string title;
390115cd2caSopenharmony_ci};
391115cd2caSopenharmony_ci/**
392115cd2caSopenharmony_ci * Provides methods for phone number information
393115cd2caSopenharmony_ci */
394115cd2caSopenharmony_ciclass PhoneNumber {
395115cd2caSopenharmony_cipublic:
396115cd2caSopenharmony_ci    /**
397115cd2caSopenharmony_ci     * Indicates a custom label.
398115cd2caSopenharmony_ci     */
399115cd2caSopenharmony_ci    static const int CUSTOM_LABEL = 0;
400115cd2caSopenharmony_ci
401115cd2caSopenharmony_ci    /**
402115cd2caSopenharmony_ci     * Indicates a home number.
403115cd2caSopenharmony_ci     */
404115cd2caSopenharmony_ci    static const int NUM_HOME = 1;
405115cd2caSopenharmony_ci
406115cd2caSopenharmony_ci    /**
407115cd2caSopenharmony_ci     * Indicates a mobile phone number.
408115cd2caSopenharmony_ci     */
409115cd2caSopenharmony_ci    static const int NUM_MOBILE = 2;
410115cd2caSopenharmony_ci
411115cd2caSopenharmony_ci    /**
412115cd2caSopenharmony_ci     * Indicates a work number.
413115cd2caSopenharmony_ci     */
414115cd2caSopenharmony_ci    static const int NUM_WORK = 3;
415115cd2caSopenharmony_ci
416115cd2caSopenharmony_ci    /**
417115cd2caSopenharmony_ci     * Indicates a work fax number.
418115cd2caSopenharmony_ci     */
419115cd2caSopenharmony_ci    static const int NUM_FAX_WORK = 4;
420115cd2caSopenharmony_ci
421115cd2caSopenharmony_ci    /**
422115cd2caSopenharmony_ci     * Indicates a home fax number.
423115cd2caSopenharmony_ci     */
424115cd2caSopenharmony_ci    static const int NUM_FAX_HOME = 5;
425115cd2caSopenharmony_ci
426115cd2caSopenharmony_ci    /**
427115cd2caSopenharmony_ci     * Indicates a pager number.
428115cd2caSopenharmony_ci     */
429115cd2caSopenharmony_ci    static const int NUM_PAGER = 6;
430115cd2caSopenharmony_ci
431115cd2caSopenharmony_ci    /**
432115cd2caSopenharmony_ci     * Indicates a number of the OTHER type.
433115cd2caSopenharmony_ci     */
434115cd2caSopenharmony_ci    static const int NUM_OTHER = 7;
435115cd2caSopenharmony_ci
436115cd2caSopenharmony_ci    /**
437115cd2caSopenharmony_ci     * Indicates a callback number.
438115cd2caSopenharmony_ci     */
439115cd2caSopenharmony_ci    static const int NUM_CALLBACK = 8;
440115cd2caSopenharmony_ci
441115cd2caSopenharmony_ci    /**
442115cd2caSopenharmony_ci     * Indicates a car number.
443115cd2caSopenharmony_ci     */
444115cd2caSopenharmony_ci    static const int NUM_CAR = 9;
445115cd2caSopenharmony_ci
446115cd2caSopenharmony_ci    /**
447115cd2caSopenharmony_ci     * Indicates a company director number.
448115cd2caSopenharmony_ci     */
449115cd2caSopenharmony_ci    static const int NUM_COMPANY_MAIN = 10;
450115cd2caSopenharmony_ci
451115cd2caSopenharmony_ci    /**
452115cd2caSopenharmony_ci     * Indicates an Integrated Services Digital Network (ISDN) number.
453115cd2caSopenharmony_ci     */
454115cd2caSopenharmony_ci    static const int NUM_ISDN = 11;
455115cd2caSopenharmony_ci
456115cd2caSopenharmony_ci    /**
457115cd2caSopenharmony_ci     * Indicates a main number.
458115cd2caSopenharmony_ci     */
459115cd2caSopenharmony_ci    static const int NUM_MAIN = 12;
460115cd2caSopenharmony_ci
461115cd2caSopenharmony_ci    /**
462115cd2caSopenharmony_ci     * Indicates a number of the OTHER_FAX type.
463115cd2caSopenharmony_ci     */
464115cd2caSopenharmony_ci    static const int NUM_OTHER_FAX = 13;
465115cd2caSopenharmony_ci
466115cd2caSopenharmony_ci    /**
467115cd2caSopenharmony_ci     * Indicates a radio number.
468115cd2caSopenharmony_ci     */
469115cd2caSopenharmony_ci    static const int NUM_RADIO = 14;
470115cd2caSopenharmony_ci
471115cd2caSopenharmony_ci    /**
472115cd2caSopenharmony_ci     * Indicates a telex number.
473115cd2caSopenharmony_ci     */
474115cd2caSopenharmony_ci    static const int NUM_TELEX = 15;
475115cd2caSopenharmony_ci
476115cd2caSopenharmony_ci    /**
477115cd2caSopenharmony_ci     * Indicates a teletypewriter (TTY) or test-driven development (TDD) number.
478115cd2caSopenharmony_ci     */
479115cd2caSopenharmony_ci    static const int NUM_TTY_TDD = 16;
480115cd2caSopenharmony_ci
481115cd2caSopenharmony_ci    /**
482115cd2caSopenharmony_ci     * Indicates a work mobile phone number.
483115cd2caSopenharmony_ci     */
484115cd2caSopenharmony_ci    static const int NUM_WORK_MOBILE = 17;
485115cd2caSopenharmony_ci
486115cd2caSopenharmony_ci    /**
487115cd2caSopenharmony_ci     * Indicates a work pager number.
488115cd2caSopenharmony_ci     */
489115cd2caSopenharmony_ci    static const int NUM_WORK_PAGER = 18;
490115cd2caSopenharmony_ci
491115cd2caSopenharmony_ci    /**
492115cd2caSopenharmony_ci     * Indicates an assistant number.
493115cd2caSopenharmony_ci     */
494115cd2caSopenharmony_ci    static const int NUM_ASSISTANT = 19;
495115cd2caSopenharmony_ci
496115cd2caSopenharmony_ci    /**
497115cd2caSopenharmony_ci     * Indicates an MMS number.
498115cd2caSopenharmony_ci     */
499115cd2caSopenharmony_ci    static const int NUM_MMS = 20;
500115cd2caSopenharmony_ci
501115cd2caSopenharmony_ci    /**
502115cd2caSopenharmony_ci     * Indicates an invalid label ID.
503115cd2caSopenharmony_ci     */
504115cd2caSopenharmony_ci    static const int INVALID_LABEL_ID = -1;
505115cd2caSopenharmony_ci
506115cd2caSopenharmony_ci    /**
507115cd2caSopenharmony_ci     * Indicates the label name of an attribute.
508115cd2caSopenharmony_ci     */
509115cd2caSopenharmony_ci    std::string labelName;
510115cd2caSopenharmony_ci
511115cd2caSopenharmony_ci    /**
512115cd2caSopenharmony_ci     * Indicates the phone number of the contact.
513115cd2caSopenharmony_ci     */
514115cd2caSopenharmony_ci    std::string phoneNumber;
515115cd2caSopenharmony_ci
516115cd2caSopenharmony_ci    /**
517115cd2caSopenharmony_ci     * Indicates the label id.
518115cd2caSopenharmony_ci     */
519115cd2caSopenharmony_ci    int labelId = -1;
520115cd2caSopenharmony_ci};
521115cd2caSopenharmony_ci
522115cd2caSopenharmony_ci/**
523115cd2caSopenharmony_ci * Provides methods for portrait information
524115cd2caSopenharmony_ci */
525115cd2caSopenharmony_ciclass Portrait {
526115cd2caSopenharmony_cipublic:
527115cd2caSopenharmony_ci    /**
528115cd2caSopenharmony_ci     * Indicates the uri of the contact portrait.
529115cd2caSopenharmony_ci     */
530115cd2caSopenharmony_ci    std::string uri;
531115cd2caSopenharmony_ci};
532115cd2caSopenharmony_ci/**
533115cd2caSopenharmony_ci * Provides methods for postal address information
534115cd2caSopenharmony_ci */
535115cd2caSopenharmony_ciclass PostalAddress {
536115cd2caSopenharmony_cipublic:
537115cd2caSopenharmony_ci    /**
538115cd2caSopenharmony_ci     * Indicates a custom label.
539115cd2caSopenharmony_ci     */
540115cd2caSopenharmony_ci    static const int CUSTOM_LABEL = 0;
541115cd2caSopenharmony_ci
542115cd2caSopenharmony_ci    /**
543115cd2caSopenharmony_ci     * Indicates a home address.
544115cd2caSopenharmony_ci     */
545115cd2caSopenharmony_ci    static const int ADDR_HOME = 1;
546115cd2caSopenharmony_ci
547115cd2caSopenharmony_ci    /**
548115cd2caSopenharmony_ci     * Indicates a work address.
549115cd2caSopenharmony_ci     */
550115cd2caSopenharmony_ci    static const int ADDR_WORK = 2;
551115cd2caSopenharmony_ci
552115cd2caSopenharmony_ci    /**
553115cd2caSopenharmony_ci     * Indicates an address of the OTHER type.
554115cd2caSopenharmony_ci     */
555115cd2caSopenharmony_ci    static const int ADDR_OTHER = 3;
556115cd2caSopenharmony_ci
557115cd2caSopenharmony_ci    /**
558115cd2caSopenharmony_ci     * Indicates an invalid label ID.
559115cd2caSopenharmony_ci     */
560115cd2caSopenharmony_ci    static const int INVALID_LABEL_ID = -1;
561115cd2caSopenharmony_ci
562115cd2caSopenharmony_ci    /**
563115cd2caSopenharmony_ci     * Indicates the city where this contact is located.
564115cd2caSopenharmony_ci     */
565115cd2caSopenharmony_ci    std::string city;
566115cd2caSopenharmony_ci
567115cd2caSopenharmony_ci    /**
568115cd2caSopenharmony_ci     * Indicates the country/region where this contact is located.
569115cd2caSopenharmony_ci     */
570115cd2caSopenharmony_ci    std::string country;
571115cd2caSopenharmony_ci
572115cd2caSopenharmony_ci    /**
573115cd2caSopenharmony_ci     * Indicates the label name of an attribute.
574115cd2caSopenharmony_ci     */
575115cd2caSopenharmony_ci    std::string labelName;
576115cd2caSopenharmony_ci
577115cd2caSopenharmony_ci    /**
578115cd2caSopenharmony_ci     * Indicates the neighborhood where this contact is located.
579115cd2caSopenharmony_ci     */
580115cd2caSopenharmony_ci    std::string neighborhood;
581115cd2caSopenharmony_ci
582115cd2caSopenharmony_ci    /**
583115cd2caSopenharmony_ci     * Indicates the post box of this contact.
584115cd2caSopenharmony_ci     */
585115cd2caSopenharmony_ci    std::string pobox;
586115cd2caSopenharmony_ci
587115cd2caSopenharmony_ci    /**
588115cd2caSopenharmony_ci     * Indicates the postal address of this contact.
589115cd2caSopenharmony_ci     */
590115cd2caSopenharmony_ci    std::string postalAddress;
591115cd2caSopenharmony_ci
592115cd2caSopenharmony_ci    /**
593115cd2caSopenharmony_ci     * Indicates the postal code of this contact.
594115cd2caSopenharmony_ci     */
595115cd2caSopenharmony_ci    std::string postcode;
596115cd2caSopenharmony_ci
597115cd2caSopenharmony_ci    /**
598115cd2caSopenharmony_ci     * Indicates the area where this contact is located.
599115cd2caSopenharmony_ci     */
600115cd2caSopenharmony_ci    std::string region;
601115cd2caSopenharmony_ci
602115cd2caSopenharmony_ci    /**
603115cd2caSopenharmony_ci     * Indicates the street where this contact is located.
604115cd2caSopenharmony_ci     */
605115cd2caSopenharmony_ci    std::string street;
606115cd2caSopenharmony_ci
607115cd2caSopenharmony_ci    /**
608115cd2caSopenharmony_ci     * Indicates the label id.
609115cd2caSopenharmony_ci     */
610115cd2caSopenharmony_ci    int labelId = -1;
611115cd2caSopenharmony_ci};
612115cd2caSopenharmony_ci
613115cd2caSopenharmony_ciclass Relation {
614115cd2caSopenharmony_cipublic:
615115cd2caSopenharmony_ci    /**
616115cd2caSopenharmony_ci     * Indicates a custom label.
617115cd2caSopenharmony_ci     */
618115cd2caSopenharmony_ci    static const int CUSTOM_LABEL = 0;
619115cd2caSopenharmony_ci
620115cd2caSopenharmony_ci    /**
621115cd2caSopenharmony_ci     * Indicates an assistant.
622115cd2caSopenharmony_ci     */
623115cd2caSopenharmony_ci    static const int RELATION_ASSISTANT = 1;
624115cd2caSopenharmony_ci
625115cd2caSopenharmony_ci    /**
626115cd2caSopenharmony_ci     * Indicates a brother.
627115cd2caSopenharmony_ci     */
628115cd2caSopenharmony_ci    static const int RELATION_BROTHER = 2;
629115cd2caSopenharmony_ci
630115cd2caSopenharmony_ci    /**
631115cd2caSopenharmony_ci     * Indicates a child.
632115cd2caSopenharmony_ci     */
633115cd2caSopenharmony_ci    static const int RELATION_CHILD = 3;
634115cd2caSopenharmony_ci
635115cd2caSopenharmony_ci    /**
636115cd2caSopenharmony_ci     * Indicates a domestic partner.
637115cd2caSopenharmony_ci     */
638115cd2caSopenharmony_ci    static const int RELATION_DOMESTIC_PARTNER = 4;
639115cd2caSopenharmony_ci
640115cd2caSopenharmony_ci    /**
641115cd2caSopenharmony_ci     * Indicates a father.
642115cd2caSopenharmony_ci     */
643115cd2caSopenharmony_ci    static const int RELATION_FATHER = 5;
644115cd2caSopenharmony_ci
645115cd2caSopenharmony_ci    /**
646115cd2caSopenharmony_ci     * Indicates a friend.
647115cd2caSopenharmony_ci     */
648115cd2caSopenharmony_ci    static const int RELATION_FRIEND = 6;
649115cd2caSopenharmony_ci
650115cd2caSopenharmony_ci    /**
651115cd2caSopenharmony_ci     * Indicates a manager.
652115cd2caSopenharmony_ci     */
653115cd2caSopenharmony_ci    static const int RELATION_MANAGER = 7;
654115cd2caSopenharmony_ci
655115cd2caSopenharmony_ci    /**
656115cd2caSopenharmony_ci     * Indicates a mother.
657115cd2caSopenharmony_ci     */
658115cd2caSopenharmony_ci    static const int RELATION_MOTHER = 8;
659115cd2caSopenharmony_ci
660115cd2caSopenharmony_ci    /**
661115cd2caSopenharmony_ci     * Indicates a parent.
662115cd2caSopenharmony_ci     */
663115cd2caSopenharmony_ci    static const int RELATION_PARENT = 9;
664115cd2caSopenharmony_ci
665115cd2caSopenharmony_ci    /**
666115cd2caSopenharmony_ci     * Indicates a partner.
667115cd2caSopenharmony_ci     */
668115cd2caSopenharmony_ci    static const int RELATION_PARTNER = 10;
669115cd2caSopenharmony_ci
670115cd2caSopenharmony_ci    /**
671115cd2caSopenharmony_ci     * Indicates a referrer.
672115cd2caSopenharmony_ci     */
673115cd2caSopenharmony_ci    static const int RELATION_REFERRED_BY = 11;
674115cd2caSopenharmony_ci
675115cd2caSopenharmony_ci    /**
676115cd2caSopenharmony_ci     * Indicates a relative.
677115cd2caSopenharmony_ci     */
678115cd2caSopenharmony_ci    static const int RELATION_RELATIVE = 12;
679115cd2caSopenharmony_ci
680115cd2caSopenharmony_ci    /**
681115cd2caSopenharmony_ci     * Indicates a sister.
682115cd2caSopenharmony_ci     */
683115cd2caSopenharmony_ci    static const int RELATION_SISTER = 13;
684115cd2caSopenharmony_ci
685115cd2caSopenharmony_ci    /**
686115cd2caSopenharmony_ci     * Indicates a spouse.
687115cd2caSopenharmony_ci     */
688115cd2caSopenharmony_ci    static const int RELATION_SPOUSE = 14;
689115cd2caSopenharmony_ci
690115cd2caSopenharmony_ci    /**
691115cd2caSopenharmony_ci     * Indicates an invalid label ID.
692115cd2caSopenharmony_ci     */
693115cd2caSopenharmony_ci    static const int INVALID_LABEL_ID = -1;
694115cd2caSopenharmony_ci
695115cd2caSopenharmony_ci    /**
696115cd2caSopenharmony_ci     * Indicates the label name of an attribute.
697115cd2caSopenharmony_ci     */
698115cd2caSopenharmony_ci    std::string labelName;
699115cd2caSopenharmony_ci
700115cd2caSopenharmony_ci    /**
701115cd2caSopenharmony_ci     * Indicates the relation name.
702115cd2caSopenharmony_ci     */
703115cd2caSopenharmony_ci    std::string relationName;
704115cd2caSopenharmony_ci
705115cd2caSopenharmony_ci    /**
706115cd2caSopenharmony_ci     * Indicates the label id.
707115cd2caSopenharmony_ci     */
708115cd2caSopenharmony_ci    int labelId = -1;
709115cd2caSopenharmony_ci};
710115cd2caSopenharmony_ci
711115cd2caSopenharmony_ciclass SipAddress {
712115cd2caSopenharmony_cipublic:
713115cd2caSopenharmony_ci    /**
714115cd2caSopenharmony_ci     * Indicates a custom label.
715115cd2caSopenharmony_ci     */
716115cd2caSopenharmony_ci    static const int CUSTOM_LABEL = 0;
717115cd2caSopenharmony_ci
718115cd2caSopenharmony_ci    /**
719115cd2caSopenharmony_ci     * Indicates a home SIP address.
720115cd2caSopenharmony_ci     */
721115cd2caSopenharmony_ci    static const int SIP_HOME = 1;
722115cd2caSopenharmony_ci
723115cd2caSopenharmony_ci    /**
724115cd2caSopenharmony_ci     * Indicates a work SIP address.
725115cd2caSopenharmony_ci     */
726115cd2caSopenharmony_ci    static const int SIP_WORK = 2;
727115cd2caSopenharmony_ci
728115cd2caSopenharmony_ci    /**
729115cd2caSopenharmony_ci     * Indicates an SIP address of the OTHER type.
730115cd2caSopenharmony_ci     */
731115cd2caSopenharmony_ci    static const int SIP_OTHER = 3;
732115cd2caSopenharmony_ci
733115cd2caSopenharmony_ci    /**
734115cd2caSopenharmony_ci     * Indicates an invalid label ID.
735115cd2caSopenharmony_ci     */
736115cd2caSopenharmony_ci    static const int INVALID_LABEL_ID = -1;
737115cd2caSopenharmony_ci
738115cd2caSopenharmony_ci    /**
739115cd2caSopenharmony_ci     * Indicates the label name of an attribute.
740115cd2caSopenharmony_ci     */
741115cd2caSopenharmony_ci    std::string labelName;
742115cd2caSopenharmony_ci
743115cd2caSopenharmony_ci    /**
744115cd2caSopenharmony_ci     * Indicates the SIP address.
745115cd2caSopenharmony_ci     */
746115cd2caSopenharmony_ci    std::string sipAddress;
747115cd2caSopenharmony_ci
748115cd2caSopenharmony_ci    /**
749115cd2caSopenharmony_ci     * Indicates the label id.
750115cd2caSopenharmony_ci     */
751115cd2caSopenharmony_ci    int labelId = -1;
752115cd2caSopenharmony_ci};
753115cd2caSopenharmony_ci
754115cd2caSopenharmony_ciclass Website {
755115cd2caSopenharmony_cipublic:
756115cd2caSopenharmony_ci    std::string website;
757115cd2caSopenharmony_ci};
758115cd2caSopenharmony_ci
759115cd2caSopenharmony_ci/**
760115cd2caSopenharmony_ci * Provides methods for contact information
761115cd2caSopenharmony_ci */
762115cd2caSopenharmony_ciclass Contacts {
763115cd2caSopenharmony_cipublic:
764115cd2caSopenharmony_ci    /**
765115cd2caSopenharmony_ci     * Indicates the contact ID.
766115cd2caSopenharmony_ci     */
767115cd2caSopenharmony_ci    static const int INVALID_CONTACT_ID = -1;
768115cd2caSopenharmony_ci
769115cd2caSopenharmony_ci    /**
770115cd2caSopenharmony_ci     * Indicates the contact ID.
771115cd2caSopenharmony_ci     */
772115cd2caSopenharmony_ci    int id;
773115cd2caSopenharmony_ci
774115cd2caSopenharmony_ci    /**
775115cd2caSopenharmony_ci     * Indicates the query key that identifies the contact.
776115cd2caSopenharmony_ci     */
777115cd2caSopenharmony_ci    std::string key;
778115cd2caSopenharmony_ci
779115cd2caSopenharmony_ci    /**
780115cd2caSopenharmony_ci     * Indicates the contact attributes.
781115cd2caSopenharmony_ci     */
782115cd2caSopenharmony_ci    ContactAttributes contactAttributes;
783115cd2caSopenharmony_ci
784115cd2caSopenharmony_ci    /**
785115cd2caSopenharmony_ci     * Indicates an email address of the contact.
786115cd2caSopenharmony_ci     */
787115cd2caSopenharmony_ci    std::vector<Email> emails;
788115cd2caSopenharmony_ci
789115cd2caSopenharmony_ci    /**
790115cd2caSopenharmony_ci     * Indicates an event (special date) of the contact.
791115cd2caSopenharmony_ci     */
792115cd2caSopenharmony_ci    std::vector<Event> events;
793115cd2caSopenharmony_ci
794115cd2caSopenharmony_ci    /**
795115cd2caSopenharmony_ci     * Indicates a group of the contact.
796115cd2caSopenharmony_ci     */
797115cd2caSopenharmony_ci    std::vector<Group> groups;
798115cd2caSopenharmony_ci
799115cd2caSopenharmony_ci    /**
800115cd2caSopenharmony_ci     * Indicates an IM address of the contact.
801115cd2caSopenharmony_ci     */
802115cd2caSopenharmony_ci    std::vector<ImAddress> imAddresses;
803115cd2caSopenharmony_ci
804115cd2caSopenharmony_ci    /**
805115cd2caSopenharmony_ci     * Indicates a phone number of the contact.
806115cd2caSopenharmony_ci     */
807115cd2caSopenharmony_ci    std::vector<PhoneNumber> phoneNumbers;
808115cd2caSopenharmony_ci
809115cd2caSopenharmony_ci    /**
810115cd2caSopenharmony_ci     * Indicates the contact portrait.
811115cd2caSopenharmony_ci     */
812115cd2caSopenharmony_ci    Portrait portrait;
813115cd2caSopenharmony_ci
814115cd2caSopenharmony_ci    /**
815115cd2caSopenharmony_ci     * Indicates a postal address of the contact.
816115cd2caSopenharmony_ci     */
817115cd2caSopenharmony_ci    std::vector<PostalAddress> postalAddresses;
818115cd2caSopenharmony_ci
819115cd2caSopenharmony_ci    /**
820115cd2caSopenharmony_ci     * Indicates a relation of the contact.
821115cd2caSopenharmony_ci     */
822115cd2caSopenharmony_ci    std::vector<Relation> relations;
823115cd2caSopenharmony_ci
824115cd2caSopenharmony_ci    /**
825115cd2caSopenharmony_ci     * Indicates a Session Initiation Protocol (SIP) address of the contact.
826115cd2caSopenharmony_ci     */
827115cd2caSopenharmony_ci    std::vector<SipAddress> sipAddresses;
828115cd2caSopenharmony_ci
829115cd2caSopenharmony_ci    /**
830115cd2caSopenharmony_ci     * Indicates a website of the contact.
831115cd2caSopenharmony_ci     */
832115cd2caSopenharmony_ci    std::vector<Website> websites;
833115cd2caSopenharmony_ci
834115cd2caSopenharmony_ci    /**
835115cd2caSopenharmony_ci     * Indicates the contact name.
836115cd2caSopenharmony_ci     */
837115cd2caSopenharmony_ci    Name name;
838115cd2caSopenharmony_ci
839115cd2caSopenharmony_ci    /**
840115cd2caSopenharmony_ci     * Indicates the contact nickname.
841115cd2caSopenharmony_ci     */
842115cd2caSopenharmony_ci    NickName nickName;
843115cd2caSopenharmony_ci    /**
844115cd2caSopenharmony_ci     * Indicates the contact note.
845115cd2caSopenharmony_ci     */
846115cd2caSopenharmony_ci    Note note;
847115cd2caSopenharmony_ci    /**
848115cd2caSopenharmony_ci     * Indicates organization information about the contact.
849115cd2caSopenharmony_ci     */
850115cd2caSopenharmony_ci    Organization organization;
851115cd2caSopenharmony_ci};
852115cd2caSopenharmony_ci} // namespace ContactsApi
853115cd2caSopenharmony_ci} // namespace OHOS
854115cd2caSopenharmony_ci#endif // CONTACT_NAPI_OBJECT_H
855