1 /*
2 * Copyright 2019, Andrew Lindesay <apl@lindesay.co.nz>.
3 *
4 * All rights reserved. Distributed under the terms of the MIT License.
5 */
6 #include "UserDetail.h"
7
8
9 // These are keys that are used to store this object's data into a BMessage
10 // instance.
11
12 #define KEY_NICKNAME "nickname"
13 #define KEY_AGREEMENT "agreement"
14 #define KEY_IS_LATEST "isLatest"
15 #define KEY_CODE "code"
16 #define KEY_TIMESTAMP_AGREED "timestampAgreed"
17
18
UserUsageConditionsAgreement(BMessage * from)19 UserUsageConditionsAgreement::UserUsageConditionsAgreement(BMessage* from)
20 {
21 from->FindUInt64(KEY_TIMESTAMP_AGREED, &fTimestampAgreed);
22 from->FindString(KEY_CODE, &fCode);
23 from->FindBool(KEY_IS_LATEST, &fIsLatest);
24 }
25
26
UserUsageConditionsAgreement()27 UserUsageConditionsAgreement::UserUsageConditionsAgreement()
28 :
29 fCode(),
30 fTimestampAgreed(0),
31 fIsLatest(false)
32 {
33 }
34
35
~UserUsageConditionsAgreement()36 UserUsageConditionsAgreement::~UserUsageConditionsAgreement()
37 {
38 }
39
40
41 const BString&
Code() const42 UserUsageConditionsAgreement::Code() const
43 {
44 return fCode;
45 }
46
47
48 const uint64
TimestampAgreed() const49 UserUsageConditionsAgreement::TimestampAgreed() const
50 {
51 return fTimestampAgreed;
52 }
53
54
55 const bool
IsLatest() const56 UserUsageConditionsAgreement::IsLatest() const
57 {
58 return fIsLatest;
59 }
60
61
62 void
SetCode(const BString & value)63 UserUsageConditionsAgreement::SetCode(const BString& value)
64 {
65 fCode = value;
66 }
67
68
69 void
SetTimestampAgreed(uint64 value)70 UserUsageConditionsAgreement::SetTimestampAgreed(uint64 value)
71 {
72 fTimestampAgreed = value;
73 }
74
75
76 void
SetIsLatest(const bool value)77 UserUsageConditionsAgreement::SetIsLatest(const bool value)
78 {
79 fIsLatest = value;
80 }
81
82
83 UserUsageConditionsAgreement&
operator =(const UserUsageConditionsAgreement & other)84 UserUsageConditionsAgreement::operator=(
85 const UserUsageConditionsAgreement& other)
86 {
87 fCode = other.fCode;
88 fTimestampAgreed = other.fTimestampAgreed;
89 fIsLatest = other.fIsLatest;
90 return *this;
91 }
92
93
94 status_t
Archive(BMessage * into,bool deep) const95 UserUsageConditionsAgreement::Archive(BMessage* into, bool deep) const
96 {
97 status_t result = B_OK;
98 if (result == B_OK)
99 result = into->AddUInt64(KEY_TIMESTAMP_AGREED, fTimestampAgreed);
100 if (result == B_OK)
101 result = into->AddString(KEY_CODE, fCode);
102 if (result == B_OK)
103 result = into->AddBool(KEY_IS_LATEST, fIsLatest);
104 return result;
105 }
106
107
UserDetail(BMessage * from)108 UserDetail::UserDetail(BMessage* from)
109 {
110 BMessage agreementMessage;
111 if (from->FindMessage(KEY_AGREEMENT,
112 &agreementMessage) == B_OK) {
113 fAgreement = UserUsageConditionsAgreement(&agreementMessage);
114 }
115 from->FindString(KEY_NICKNAME, &fNickname);
116 }
117
118
UserDetail()119 UserDetail::UserDetail()
120 :
121 fNickname(),
122 fAgreement()
123 {
124 }
125
126
~UserDetail()127 UserDetail::~UserDetail()
128 {
129 }
130
131
132 const BString&
Nickname() const133 UserDetail::Nickname() const
134 {
135 return fNickname;
136 }
137
138
139 const UserUsageConditionsAgreement&
Agreement() const140 UserDetail::Agreement() const
141 {
142 return fAgreement;
143 }
144
145
146 void
SetNickname(const BString & value)147 UserDetail::SetNickname(const BString& value)
148 {
149 fNickname = value;
150 }
151
152
153 void
SetAgreement(const UserUsageConditionsAgreement & value)154 UserDetail::SetAgreement(
155 const UserUsageConditionsAgreement& value)
156 {
157 fAgreement = value;
158 }
159
160
161 UserDetail&
operator =(const UserDetail & other)162 UserDetail::operator=(const UserDetail& other)
163 {
164 fNickname = other.fNickname;
165 fAgreement = other.fAgreement;
166 return *this;
167 }
168
169
170 status_t
Archive(BMessage * into,bool deep) const171 UserDetail::Archive(BMessage* into, bool deep) const
172 {
173 status_t result = B_OK;
174 if (result == B_OK) {
175 BMessage agreementMessage;
176 result = fAgreement.Archive(&agreementMessage, true);
177 if (result == B_OK)
178 result = into->AddMessage(KEY_AGREEMENT, &agreementMessage);
179 }
180 if (result == B_OK)
181 result = into->AddString(KEY_NICKNAME, fNickname);
182 return result;
183 }
184