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 SIM_ADN = 1, 30 SIM_FDN = 2, 31 }; 32 static const int EMPTY_INDEX = 0; 33 int32_t elementaryFileId_ = 0; 34 int32_t index_ = EMPTY_INDEX; 35 std::u16string name_ = u""; 36 std::u16string number_ = u""; 37 std::vector<std::u16string> emails_; 38 std::u16string pin2_ = u""; ReadFromParcel(Parcel & parcel)39 bool ReadFromParcel(Parcel &parcel) 40 { 41 if (!parcel.ReadInt32(elementaryFileId_)) { 42 return false; 43 } 44 if (!parcel.ReadInt32(index_)) { 45 return false; 46 } 47 if (!parcel.ReadString16(name_)) { 48 return false; 49 } 50 if (!parcel.ReadString16(number_)) { 51 return false; 52 } 53 if (!parcel.ReadString16(pin2_)) { 54 return false; 55 } 56 if (!parcel.ReadString16Vector(&emails_)) { 57 return false; 58 } 59 return true; 60 } 61 Marshalling(Parcel & parcel)62 virtual bool Marshalling(Parcel &parcel) const 63 { 64 if (!parcel.WriteInt32(elementaryFileId_)) { 65 return false; 66 } 67 if (!parcel.WriteInt32(index_)) { 68 return false; 69 } 70 if (!parcel.WriteString16(name_)) { 71 return false; 72 } 73 if (!parcel.WriteString16(number_)) { 74 return false; 75 } 76 if (!parcel.WriteString16(pin2_)) { 77 return false; 78 } 79 if (!parcel.WriteString16Vector(emails_)) { 80 return false; 81 } 82 return true; 83 } 84 UnMarshalling(Parcel & parcel)85 static std::shared_ptr<DiallingNumbersInfo> UnMarshalling(Parcel &parcel) 86 { 87 std::shared_ptr<DiallingNumbersInfo> param = std::make_shared<DiallingNumbersInfo>(); 88 if (param == nullptr) { 89 return nullptr; 90 } 91 if (!param->ReadFromParcel(parcel)) { 92 return nullptr; 93 } 94 return param; 95 } 96 DiallingNumbersInfo()97 DiallingNumbersInfo() {} 98 DiallingNumbersInfo(int32_t efid,int32_t recordNumber)99 DiallingNumbersInfo(int32_t efid, int32_t recordNumber) 100 { 101 elementaryFileId_ = efid; 102 index_ = recordNumber; 103 } 104 DiallingNumbersInfo(std::u16string & alphaTag,std::u16string & number)105 DiallingNumbersInfo(std::u16string &alphaTag, std::u16string &number) 106 { 107 DiallingNumbersInfo(0, 0, alphaTag, number); 108 } 109 DiallingNumbersInfo(std::u16string alphaTag,std::u16string number,std::vector<std::u16string> & emails)110 DiallingNumbersInfo(std::u16string alphaTag, std::u16string number, std::vector<std::u16string> &emails) 111 { 112 DiallingNumbersInfo(0, 0, alphaTag, number, emails); 113 } 114 DiallingNumbersInfo(int32_t efid,int32_t recordNumber,std::u16string alphaTag,std::u16string number,std::vector<std::u16string> & emails)115 DiallingNumbersInfo(int32_t efid, int32_t recordNumber, std::u16string alphaTag, std::u16string number, 116 std::vector<std::u16string> &emails) 117 { 118 elementaryFileId_ = efid; 119 index_ = recordNumber; 120 name_ = alphaTag; 121 number_ = number; 122 emails_.assign(emails.begin(), emails.end()); 123 } 124 DiallingNumbersInfo(int32_t efid,int32_t recordNumber,std::u16string & alphaTag,std::u16string & number)125 DiallingNumbersInfo(int32_t efid, int32_t recordNumber, std::u16string &alphaTag, std::u16string &number) 126 { 127 elementaryFileId_ = efid; 128 index_ = recordNumber; 129 name_ = alphaTag; 130 number_ = number; 131 } 132 ~DiallingNumbersInfo()133 virtual ~DiallingNumbersInfo() {} 134 GetName()135 std::u16string GetName() 136 { 137 return name_; 138 } 139 GetFileId()140 int32_t GetFileId() 141 { 142 return elementaryFileId_; 143 } 144 GetIndex()145 int32_t GetIndex() 146 { 147 return index_; 148 } 149 GetNumber()150 std::u16string GetNumber() 151 { 152 return number_; 153 } 154 UpdateNumber(std::u16string number)155 void UpdateNumber(std::u16string number) 156 { 157 number_ = number; 158 } 159 GetEmails()160 std::vector<std::u16string> GetEmails() 161 { 162 return emails_; 163 } 164 UpdateEmails(std::vector<std::u16string> & emails)165 void UpdateEmails(std::vector<std::u16string> &emails) 166 { 167 emails_.assign(emails.begin(), emails.end()); 168 } 169 IsEmpty()170 bool IsEmpty() 171 { 172 return (name_.empty() && number_.empty() && emails_.empty()); 173 } 174 }; 175 } // namespace Telephony 176 } // namespace OHOS 177 #endif // OHOS_DIALLING_NUMBER_INFO_H