• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef OHOS_DIALLING_NUMBER_INFO_H
17 #define OHOS_DIALLING_NUMBER_INFO_H
18 
19 #include <memory>
20 #include <string>
21 #include <vector>
22 #include "parcel.h"
23 
24 namespace OHOS {
25 namespace Telephony {
26 class DiallingNumbersInfo : public Parcelable {
27 public:
28     enum : uint32_t {
29         /**
30          * Fixed dialing number
31          */
32         SIM_ADN = 1,
33         /**
34          *
35          * Abbreviated dialing numbers
36          */
37         SIM_FDN = 2,
38     };
39     static const int EMPTY_INDEX = 0;
40     int32_t elementaryFileId_ = 0;
41     int32_t index_ = EMPTY_INDEX;
42     std::u16string name_ = u"";
43     std::u16string number_ = u"";
44     std::vector<std::u16string> emails_;
45     std::u16string pin2_ = u"";
ReadFromParcel(Parcel & parcel)46     bool ReadFromParcel(Parcel &parcel)
47     {
48         if (!parcel.ReadInt32(elementaryFileId_)) {
49             return false;
50         }
51         if (!parcel.ReadInt32(index_)) {
52             return false;
53         }
54         if (!parcel.ReadString16(name_)) {
55             return false;
56         }
57         if (!parcel.ReadString16(number_)) {
58             return false;
59         }
60         if (!parcel.ReadString16(pin2_)) {
61             return false;
62         }
63         if (!parcel.ReadString16Vector(&emails_)) {
64             return false;
65         }
66         return true;
67     }
68 
Marshalling(Parcel & parcel)69     virtual bool Marshalling(Parcel &parcel) const
70     {
71         if (!parcel.WriteInt32(elementaryFileId_)) {
72             return false;
73         }
74         if (!parcel.WriteInt32(index_)) {
75             return false;
76         }
77         if (!parcel.WriteString16(name_)) {
78             return false;
79         }
80         if (!parcel.WriteString16(number_)) {
81             return false;
82         }
83         if (!parcel.WriteString16(pin2_)) {
84             return false;
85         }
86         if (!parcel.WriteString16Vector(emails_)) {
87             return false;
88         }
89         return true;
90     }
91 
UnMarshalling(Parcel & parcel)92     static std::shared_ptr<DiallingNumbersInfo> UnMarshalling(Parcel &parcel)
93     {
94         std::shared_ptr<DiallingNumbersInfo> param = std::make_shared<DiallingNumbersInfo>();
95         if (!param->ReadFromParcel(parcel)) {
96             return nullptr;
97         }
98         return param;
99     }
100 
DiallingNumbersInfo()101     DiallingNumbersInfo() {}
102 
DiallingNumbersInfo(int32_t efid,int32_t recordNumber)103     DiallingNumbersInfo(int32_t efid, int32_t recordNumber)
104     {
105         elementaryFileId_ = efid;
106         index_ = recordNumber;
107     }
108 
DiallingNumbersInfo(std::u16string & alphaTag,std::u16string & number)109     DiallingNumbersInfo(std::u16string &alphaTag, std::u16string &number)
110     {
111         DiallingNumbersInfo(0, 0, alphaTag, number);
112     }
113 
DiallingNumbersInfo(std::u16string alphaTag,std::u16string number,std::vector<std::u16string> & emails)114     DiallingNumbersInfo(std::u16string alphaTag, std::u16string number, std::vector<std::u16string> &emails)
115     {
116         DiallingNumbersInfo(0, 0, alphaTag, number, emails);
117     }
118 
DiallingNumbersInfo(int32_t efid,int32_t recordNumber,std::u16string alphaTag,std::u16string number,std::vector<std::u16string> & emails)119     DiallingNumbersInfo(int32_t efid, int32_t recordNumber, std::u16string alphaTag, std::u16string number,
120         std::vector<std::u16string> &emails)
121     {
122         elementaryFileId_ = efid;
123         index_ = recordNumber;
124         name_ = alphaTag;
125         number_ = number;
126         emails_.assign(emails.begin(), emails.end());
127     }
128 
DiallingNumbersInfo(int32_t efid,int32_t recordNumber,std::u16string & alphaTag,std::u16string & number)129     DiallingNumbersInfo(int32_t efid, int32_t recordNumber, std::u16string &alphaTag, std::u16string &number)
130     {
131         elementaryFileId_ = efid;
132         index_ = recordNumber;
133         name_ = alphaTag;
134         number_ = number;
135     }
136 
~DiallingNumbersInfo()137     virtual ~DiallingNumbersInfo() {}
138 
GetName()139     std::u16string GetName()
140     {
141         return name_;
142     }
143 
GetFileId()144     int32_t GetFileId()
145     {
146         return elementaryFileId_;
147     }
148 
GetIndex()149     int32_t GetIndex()
150     {
151         return index_;
152     }
153 
GetNumber()154     std::u16string GetNumber()
155     {
156         return number_;
157     }
158 
UpdateNumber(std::u16string number)159     void UpdateNumber(std::u16string number)
160     {
161         number_ = number;
162     }
163 
GetEmails()164     std::vector<std::u16string> GetEmails()
165     {
166         return emails_;
167     }
168 
UpdateEmails(std::vector<std::u16string> & emails)169     void UpdateEmails(std::vector<std::u16string> &emails)
170     {
171         emails_.assign(emails.begin(), emails.end());
172     }
173 
IsEmpty()174     bool IsEmpty()
175     {
176         return (name_.empty() && number_.empty() && emails_.empty());
177     }
178 };
179 } // namespace Telephony
180 } // namespace OHOS
181 #endif // OHOS_DIALLING_NUMBER_INFO_H