1 /*
2  * Copyright (C) 2024 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 GEO_REQUEST_MESSAGE_H
17 #define GEO_REQUEST_MESSAGE_H
18 #ifdef FEATURE_GEOCODE_SUPPORT
19 
20 #include <mutex>
21 #include <singleton.h>
22 #include <string>
23 #include <vector>
24 
25 #include "iremote_object.h"
26 #include "message_parcel.h"
27 #include "message_option.h"
28 #include "common_utils.h"
29 
30 namespace OHOS {
31 namespace Location {
32 enum class GeoCodeType {
33     REQUEST_GEOCODE = 1,
34     REQUEST_REVERSE_GEOCODE,
35 };
36 
37 class GeoConvertRequest {
38 public:
39     GeoConvertRequest();
40     ~GeoConvertRequest();
41     std::string GetLocale();
42     void SetLocale(std::string locale);
43     double GetLatitude();
44     void SetLatitude(double latitude);
45     double GetLongitude();
46     void SetLongitude(double longitude);
47     int32_t GetMaxItems();
48     void SetMaxItems(int32_t maxItems);
49     std::string GetDescription();
50     void SetDescription(std::string description);
51     double GetMaxLatitude();
52     void SetMaxLatitude(double maxLatitude);
53     double GetMaxLongitude();
54     void SetMaxLongitude(double maxLongitude);
55     double GetMinLatitude();
56     void SetMinLatitude(double minLatitude);
57     double GetMinLongitude();
58     void SetMinLongitude(double minLongitude);
59     std::string GetBundleName();
60     void SetBundleName(std::string bundleName);
61     sptr<IRemoteObject> GetCallback();
62     void SetCallback(sptr<IRemoteObject> callback);
63     std::string GetTransId();
64     void SetTransId(std::string transId);
65     std::string GetCountry();
66     void SetCountry(std::string country);
67     GeoCodeType GetRequestType();
68     void SetRequestType(GeoCodeType requestType);
69     bool Marshalling(MessageParcel& parcel) const;
70     static std::unique_ptr<GeoConvertRequest> Unmarshalling(MessageParcel& parcel, GeoCodeType requestType);
71     static void OrderParcel(MessageParcel& in, MessageParcel& out, GeoCodeType requestType, std::string bundleName);
72     void ReadFromParcel(MessageParcel& parcel);
73 private:
74     std::string locale_;
75     double latitude_;
76     double longitude_;
77     int64_t maxItems_;
78     std::string description_;
79     double maxLatitude_;
80     double maxLongitude_;
81     double minLatitude_;
82     double minLongitude_;
83     std::string bundleName_;
84     sptr<IRemoteObject> callback_;
85     std::string transId_;
86     std::string country_;
87     GeoCodeType requestType_;
88 };
89 } // namespace OHOS
90 } // namespace Location
91 #endif // FEATURE_GEOCODE_SUPPORT
92 #endif // GEO_REQUEST_MESSAGE_H
93