1 /* 2 * Copyright (c) 2022-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 BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_INTERFACES_INNER_API_NOTIFICATION_FLAGS_H 17 #define BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_INTERFACES_INNER_API_NOTIFICATION_FLAGS_H 18 19 #include <memory> 20 #include "parcel.h" 21 22 #include "notification_constant.h" 23 #include "notification_json_convert.h" 24 25 namespace OHOS { 26 namespace Notification { 27 class NotificationFlags : public Parcelable, public NotificationJsonConvertionBase { 28 public: 29 /** 30 * Default constructor used to create an empty NotificationFlags instance. 31 */ 32 NotificationFlags() = default; 33 34 /** 35 * Default deconstructor used to deconstruct. 36 */ 37 ~NotificationFlags() = default; 38 39 /** 40 * Sets the notification whether enable sound. 41 * @param soundEnabled whether enable sound. 42 */ 43 void SetSoundEnabled(NotificationConstant::FlagStatus soundEnabled); 44 45 /** 46 * Checks whether enable sound. 47 * @return sound enable. 48 */ 49 NotificationConstant::FlagStatus IsSoundEnabled() const; 50 51 /** 52 * Sets the notification whether enable vibration. 53 * @param vibrationEnabled whether enable vibration. 54 */ 55 void SetVibrationEnabled(NotificationConstant::FlagStatus vibrationEnabled); 56 57 /** 58 * Checks whether enable vibration. 59 * @return vibration enable. 60 */ 61 NotificationConstant::FlagStatus IsVibrationEnabled() const; 62 63 /** 64 * Get reminder flags. 65 * @return reminder flags. 66 */ 67 uint32_t GetReminderFlags(); 68 69 /** 70 * Sets the notification whether enable lock screen. 71 * @param visblenessEnabled whether enable lock screen. 72 */ 73 void SetLockScreenVisblenessEnabled(bool visblenessEnabled); 74 75 /** 76 * Checks whether enable lock screen. 77 * @return lock screen enable. 78 */ 79 bool IsLockScreenVisblenessEnabled(); 80 81 /** 82 * Sets the notification whether enable banner. 83 * @param bannerEnabled whether enable banner. 84 */ 85 void SetBannerEnabled(bool bannerEnabled); 86 87 /** 88 * Checks whether enable banner. 89 * @return banner enable. 90 */ 91 bool IsBannerEnabled(); 92 93 /** 94 * Sets the notification whether light screen. 95 * @param lightScreenEnabled whether light screen. 96 */ 97 void SetLightScreenEnabled(bool lightScreenEnabled); 98 99 /** 100 * Checks whether enable light screen. 101 * @return light screen enable. 102 */ 103 bool IsLightScreenEnabled(); 104 105 /** 106 * Sets the notification whether status icon. 107 * @param statusIconEnabled whether status icon. 108 */ 109 void SetStatusIconEnabled(bool statusIconEnabled); 110 111 /** 112 * Checks whether enable status icon. 113 * @return status icon enable. 114 */ 115 bool IsStatusIconEnabled(); 116 117 /** 118 * Returns a string representation of the object. 119 * @return a string representation of the object. 120 */ 121 std::string Dump(); 122 123 /** 124 * Converts a NotificationFlags object into a Json. 125 * @param jsonObject Indicates the Json object. 126 */ 127 bool ToJson(nlohmann::json &jsonObject) const override; 128 129 /** 130 * Creates a NotificationFlags object from a Json. 131 * @param jsonObject Indicates the Json object. 132 * @return the NotificationFlags. 133 */ 134 static NotificationFlags *FromJson(const nlohmann::json &jsonObject); 135 136 /** 137 * Marshal a object into a Parcel. 138 * @param parcel the object into the parcel 139 */ 140 virtual bool Marshalling(Parcel &parcel) const override; 141 142 /** 143 * Unmarshal object from a Parcel. 144 * @return the NotificationFlags 145 */ 146 static NotificationFlags *Unmarshalling(Parcel &parcel); 147 148 static bool GetReminderFlagsByString( 149 const std::string &strReminderFlags, std::shared_ptr<NotificationFlags> &reminderFlags); 150 151 static bool ValidCharReminderFlag(const char &charReminderFlag, const int32_t &seq); 152 153 private: 154 /** 155 * Read a NotificationFlags object from a Parcel. 156 * @param parcel the parcel 157 */ 158 bool ReadFromParcel(Parcel &parcel); 159 160 private: 161 NotificationConstant::FlagStatus soundEnabled_ {NotificationConstant::FlagStatus::NONE}; 162 NotificationConstant::FlagStatus vibrationEnabled_ {NotificationConstant::FlagStatus::NONE}; 163 uint32_t reminderFlags_ = 0; 164 165 static constexpr char CHAR_REMIND_DISABLE = '0'; 166 static constexpr char CHAR_REMIND_ENABLE = '1'; 167 static constexpr char CHAR_FLAG_STATUS_CLOSE = '2'; 168 static constexpr int32_t SOUND_ENABLED_SEQ = 5; 169 static constexpr int32_t LOCK_SCREEN_VISIBLENESS_ENABLED_SEQ = 4; 170 static constexpr int32_t BANNER_ENABLED_SEQ = 3; 171 static constexpr int32_t LIGHT_SCREEN_ENABLED_SEQ = 2; 172 static constexpr int32_t VIBRATION_ENABLED_SEQ = 1; 173 static constexpr int32_t ICON_ENABLED_SEQ = 0; 174 }; 175 } // namespace Notification 176 } // namespace OHOS 177 178 #endif // BASE_NOTIFICATION_DISTRIBUTED_NOTIFICATION_SERVICE_INTERFACES_INNER_API_NOTIFICATION_FLAGS_H 179 180