1a3e0fd82Sopenharmony_ci/* 2a3e0fd82Sopenharmony_ci * Copyright (c) 2020-2021 Huawei Device Co., Ltd. 3a3e0fd82Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4a3e0fd82Sopenharmony_ci * you may not use this file except in compliance with the License. 5a3e0fd82Sopenharmony_ci * You may obtain a copy of the License at 6a3e0fd82Sopenharmony_ci * 7a3e0fd82Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8a3e0fd82Sopenharmony_ci * 9a3e0fd82Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10a3e0fd82Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11a3e0fd82Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12a3e0fd82Sopenharmony_ci * See the License for the specific language governing permissions and 13a3e0fd82Sopenharmony_ci * limitations under the License. 14a3e0fd82Sopenharmony_ci */ 15a3e0fd82Sopenharmony_ci 16a3e0fd82Sopenharmony_ci/** 17a3e0fd82Sopenharmony_ci * @addtogroup UI_Components 18a3e0fd82Sopenharmony_ci * @{ 19a3e0fd82Sopenharmony_ci * 20a3e0fd82Sopenharmony_ci * @brief Defines UI components such as buttons, texts, images, lists, and progress bars. 21a3e0fd82Sopenharmony_ci * 22a3e0fd82Sopenharmony_ci * @since 1.0 23a3e0fd82Sopenharmony_ci * @version 1.0 24a3e0fd82Sopenharmony_ci */ 25a3e0fd82Sopenharmony_ci 26a3e0fd82Sopenharmony_ci/** 27a3e0fd82Sopenharmony_ci * @file ui_time_picker.h 28a3e0fd82Sopenharmony_ci * 29a3e0fd82Sopenharmony_ci * @brief Defines the attributes and functions of the <b>UITimePicker</b> class. 30a3e0fd82Sopenharmony_ci * 31a3e0fd82Sopenharmony_ci * @since 1.0 32a3e0fd82Sopenharmony_ci * @version 1.0 33a3e0fd82Sopenharmony_ci */ 34a3e0fd82Sopenharmony_ci 35a3e0fd82Sopenharmony_ci#ifndef GRAPHIC_LITE_UI_TIME_PICKER_H 36a3e0fd82Sopenharmony_ci#define GRAPHIC_LITE_UI_TIME_PICKER_H 37a3e0fd82Sopenharmony_ci 38a3e0fd82Sopenharmony_ci#include "components/ui_picker.h" 39a3e0fd82Sopenharmony_ci 40a3e0fd82Sopenharmony_cinamespace OHOS { 41a3e0fd82Sopenharmony_ci/** 42a3e0fd82Sopenharmony_ci * @brief Defines the time picker. The time is in the format of "hour:minute" or "hour:minute:second". 43a3e0fd82Sopenharmony_ci * The selected time is highlighted. 44a3e0fd82Sopenharmony_ci * 45a3e0fd82Sopenharmony_ci * @since 1.0 46a3e0fd82Sopenharmony_ci * @version 1.0 47a3e0fd82Sopenharmony_ci */ 48a3e0fd82Sopenharmony_ciclass UITimePicker : public UIViewGroup { 49a3e0fd82Sopenharmony_cipublic: 50a3e0fd82Sopenharmony_ci#if ENABLE_ROTATE_INPUT 51a3e0fd82Sopenharmony_ci static constexpr const char* HOUR_LIST_NAME = "hour"; 52a3e0fd82Sopenharmony_ci static constexpr const char* MIN_LIST_NAME = "minute"; 53a3e0fd82Sopenharmony_ci static constexpr const char* SEC_LIST_NAME = "second"; 54a3e0fd82Sopenharmony_ci#endif 55a3e0fd82Sopenharmony_ci /** 56a3e0fd82Sopenharmony_ci * 枚举Picker类型 57a3e0fd82Sopenharmony_ci */ 58a3e0fd82Sopenharmony_ci enum PickerType : uint8_t { 59a3e0fd82Sopenharmony_ci /* 时 */ 60a3e0fd82Sopenharmony_ci PICKER_HOUR = 0, 61a3e0fd82Sopenharmony_ci /* 分 */ 62a3e0fd82Sopenharmony_ci PICKER_MIN, 63a3e0fd82Sopenharmony_ci /* 秒 */ 64a3e0fd82Sopenharmony_ci PICKER_SEC, 65a3e0fd82Sopenharmony_ci /* 最大值 */ 66a3e0fd82Sopenharmony_ci PICKER_MAX, 67a3e0fd82Sopenharmony_ci }; 68a3e0fd82Sopenharmony_ci /** 69a3e0fd82Sopenharmony_ci * @brief A constructor used to create a <b>UITimePicker</b> instance. 70a3e0fd82Sopenharmony_ci * 71a3e0fd82Sopenharmony_ci * @since 1.0 72a3e0fd82Sopenharmony_ci * @version 1.0 73a3e0fd82Sopenharmony_ci */ 74a3e0fd82Sopenharmony_ci UITimePicker(); 75a3e0fd82Sopenharmony_ci 76a3e0fd82Sopenharmony_ci /** 77a3e0fd82Sopenharmony_ci * @brief A destructor used to delete the <b>UITimePicker</b> instance. 78a3e0fd82Sopenharmony_ci * 79a3e0fd82Sopenharmony_ci * @since 1.0 80a3e0fd82Sopenharmony_ci * @version 1.0 81a3e0fd82Sopenharmony_ci */ 82a3e0fd82Sopenharmony_ci virtual ~UITimePicker(); 83a3e0fd82Sopenharmony_ci 84a3e0fd82Sopenharmony_ci /** 85a3e0fd82Sopenharmony_ci * @brief Obtains the view type. 86a3e0fd82Sopenharmony_ci * 87a3e0fd82Sopenharmony_ci * @return Returns the view type. For details, see {@link UIViewType}. 88a3e0fd82Sopenharmony_ci * @since 1.0 89a3e0fd82Sopenharmony_ci * @version 1.0 90a3e0fd82Sopenharmony_ci */ 91a3e0fd82Sopenharmony_ci UIViewType GetViewType() const override 92a3e0fd82Sopenharmony_ci { 93a3e0fd82Sopenharmony_ci return UI_TIME_PICKER; 94a3e0fd82Sopenharmony_ci } 95a3e0fd82Sopenharmony_ci 96a3e0fd82Sopenharmony_ci /** 97a3e0fd82Sopenharmony_ci * @brief Sets the time currently selected in the time picker. 98a3e0fd82Sopenharmony_ci * 99a3e0fd82Sopenharmony_ci * @param value Indicates the pointer to the selected time, which is in the format of "hour:minute:second", 100a3e0fd82Sopenharmony_ci * for example, 10:12:50. The second is optional and depends on the setting of {@link EnableSecond}. 101a3e0fd82Sopenharmony_ci * The time must be a valid value. For example, the hour value must range from 0 to 23. 102a3e0fd82Sopenharmony_ci * @return Returns <b>true</b> if the setting is successful; returns <b>false</b> otherwise. 103a3e0fd82Sopenharmony_ci * @since 1.0 104a3e0fd82Sopenharmony_ci * @version 1.0 105a3e0fd82Sopenharmony_ci */ 106a3e0fd82Sopenharmony_ci bool SetSelected(const char* value); 107a3e0fd82Sopenharmony_ci 108a3e0fd82Sopenharmony_ci /** 109a3e0fd82Sopenharmony_ci * @brief Obtains the time currently selected in the time picker. 110a3e0fd82Sopenharmony_ci * 111a3e0fd82Sopenharmony_ci * @return Returns a string representing the selected time. The time is in the format of "hour:minute:second", 112a3e0fd82Sopenharmony_ci * for example, 10:12:50. The second is optional and depends on the setting of {@link EnableSecond}. 113a3e0fd82Sopenharmony_ci * @since 1.0 114a3e0fd82Sopenharmony_ci * @version 1.0 115a3e0fd82Sopenharmony_ci */ 116a3e0fd82Sopenharmony_ci const char* GetSelectValue() 117a3e0fd82Sopenharmony_ci { 118a3e0fd82Sopenharmony_ci return selectedValue_; 119a3e0fd82Sopenharmony_ci } 120a3e0fd82Sopenharmony_ci 121a3e0fd82Sopenharmony_ci /** 122a3e0fd82Sopenharmony_ci * @brief Obtains the hour currently selected in the time picker. 123a3e0fd82Sopenharmony_ci * 124a3e0fd82Sopenharmony_ci * @return Returns a string representing the selected hour, for example, 10. 125a3e0fd82Sopenharmony_ci * @since 1.0 126a3e0fd82Sopenharmony_ci * @version 1.0 127a3e0fd82Sopenharmony_ci */ 128a3e0fd82Sopenharmony_ci const char* GetSelectHour() const 129a3e0fd82Sopenharmony_ci { 130a3e0fd82Sopenharmony_ci return selectedHour_; 131a3e0fd82Sopenharmony_ci } 132a3e0fd82Sopenharmony_ci 133a3e0fd82Sopenharmony_ci /** 134a3e0fd82Sopenharmony_ci * @brief Obtains the minute currently selected in the time picker. 135a3e0fd82Sopenharmony_ci * 136a3e0fd82Sopenharmony_ci * @return Returns a string representing the selected minute, for example, 12. 137a3e0fd82Sopenharmony_ci * @since 1.0 138a3e0fd82Sopenharmony_ci * @version 1.0 139a3e0fd82Sopenharmony_ci */ 140a3e0fd82Sopenharmony_ci const char* GetSelectMinute() const 141a3e0fd82Sopenharmony_ci { 142a3e0fd82Sopenharmony_ci return selectedMinute_; 143a3e0fd82Sopenharmony_ci } 144a3e0fd82Sopenharmony_ci 145a3e0fd82Sopenharmony_ci /** 146a3e0fd82Sopenharmony_ci * @brief Obtains the second currently selected in the time picker. 147a3e0fd82Sopenharmony_ci * 148a3e0fd82Sopenharmony_ci * @return Returns a string representing the selected second, for example, 50. 149a3e0fd82Sopenharmony_ci * @since 1.0 150a3e0fd82Sopenharmony_ci * @version 1.0 151a3e0fd82Sopenharmony_ci */ 152a3e0fd82Sopenharmony_ci const char* GetSelectSecond() const 153a3e0fd82Sopenharmony_ci { 154a3e0fd82Sopenharmony_ci return selectedSecond_; 155a3e0fd82Sopenharmony_ci } 156a3e0fd82Sopenharmony_ci 157a3e0fd82Sopenharmony_ci /** 158a3e0fd82Sopenharmony_ci * @brief Sets the height of each item in the time picker. 159a3e0fd82Sopenharmony_ci * 160a3e0fd82Sopenharmony_ci * @param height Indicates the height of each item. 161a3e0fd82Sopenharmony_ci * @since 1.0 162a3e0fd82Sopenharmony_ci * @version 1.0 163a3e0fd82Sopenharmony_ci */ 164a3e0fd82Sopenharmony_ci void SetItemHeight(int16_t height); 165a3e0fd82Sopenharmony_ci 166a3e0fd82Sopenharmony_ci /** 167a3e0fd82Sopenharmony_ci * @brief Sets whether to enable seconds in the time picker. 168a3e0fd82Sopenharmony_ci * 169a3e0fd82Sopenharmony_ci * @param state Specifies whether to enable seconds in the time picker. Value <b>true</b> means to enable seconds, 170a3e0fd82Sopenharmony_ci * and value <b>false</b> means to disable seconds. The default value is <b>false</b>. 171a3e0fd82Sopenharmony_ci * @since 1.0 172a3e0fd82Sopenharmony_ci * @version 1.0 173a3e0fd82Sopenharmony_ci */ 174a3e0fd82Sopenharmony_ci void EnableSecond(bool state); 175a3e0fd82Sopenharmony_ci 176a3e0fd82Sopenharmony_ci /** 177a3e0fd82Sopenharmony_ci * @brief Sets the text format in the time picker, including the font ID and color. 178a3e0fd82Sopenharmony_ci * 179a3e0fd82Sopenharmony_ci * @param backgroundFontId Indicates the font ID of the background text. 180a3e0fd82Sopenharmony_ci * @param highlightFontId Indicates the font ID of the highlighted text. 181a3e0fd82Sopenharmony_ci * @param backgroundColor Indicates the color of the background text. 182a3e0fd82Sopenharmony_ci * @param highlightColor Indicates the color of the highlighted text. 183a3e0fd82Sopenharmony_ci * @since 1.0 184a3e0fd82Sopenharmony_ci * @version 1.0 185a3e0fd82Sopenharmony_ci */ 186a3e0fd82Sopenharmony_ci void SetTextStyle(uint16_t backgroundFontId, 187a3e0fd82Sopenharmony_ci uint16_t highlightFontId, 188a3e0fd82Sopenharmony_ci ColorType backgroundColor, 189a3e0fd82Sopenharmony_ci ColorType highlightColor); 190a3e0fd82Sopenharmony_ci 191a3e0fd82Sopenharmony_ci /** 192a3e0fd82Sopenharmony_ci * @brief Sets the text color in the time picker. 193a3e0fd82Sopenharmony_ci * 194a3e0fd82Sopenharmony_ci * @param backgroundColor Indicates the color of the background text. 195a3e0fd82Sopenharmony_ci * @param highlightColor Indicates the color of the highlighted text. 196a3e0fd82Sopenharmony_ci * @since 1.0 197a3e0fd82Sopenharmony_ci * @version 1.0 198a3e0fd82Sopenharmony_ci */ 199a3e0fd82Sopenharmony_ci void SetTextColor(ColorType backgroundColor, ColorType highlightColor); 200a3e0fd82Sopenharmony_ci 201a3e0fd82Sopenharmony_ci /** 202a3e0fd82Sopenharmony_ci * @brief Sets the font name and size for the background text. 203a3e0fd82Sopenharmony_ci * 204a3e0fd82Sopenharmony_ci * @param name Indicates the pointer to the font name to set. 205a3e0fd82Sopenharmony_ci * @param size Indicates the font size to set. 206a3e0fd82Sopenharmony_ci * @since 1.0 207a3e0fd82Sopenharmony_ci * @version 1.0 208a3e0fd82Sopenharmony_ci */ 209a3e0fd82Sopenharmony_ci void SetBackgroundFont(const char* name, uint8_t size); 210a3e0fd82Sopenharmony_ci 211a3e0fd82Sopenharmony_ci /** 212a3e0fd82Sopenharmony_ci * @brief Sets the font name and size for the highlighted text. 213a3e0fd82Sopenharmony_ci * 214a3e0fd82Sopenharmony_ci * @param name Indicates the pointer to the font name to set. 215a3e0fd82Sopenharmony_ci * @param size Indicates the font size to set. 216a3e0fd82Sopenharmony_ci * @since 1.0 217a3e0fd82Sopenharmony_ci * @version 1.0 218a3e0fd82Sopenharmony_ci */ 219a3e0fd82Sopenharmony_ci void SetHighlightFont(const char* name, uint8_t size); 220a3e0fd82Sopenharmony_ci 221a3e0fd82Sopenharmony_ci /** 222a3e0fd82Sopenharmony_ci * @brief Sets the width for the time picker. 223a3e0fd82Sopenharmony_ci * 224a3e0fd82Sopenharmony_ci * @param width Indicates the width to set. 225a3e0fd82Sopenharmony_ci * @since 1.0 226a3e0fd82Sopenharmony_ci * @version 1.0 227a3e0fd82Sopenharmony_ci */ 228a3e0fd82Sopenharmony_ci void SetWidth(int16_t width) override; 229a3e0fd82Sopenharmony_ci 230a3e0fd82Sopenharmony_ci /** 231a3e0fd82Sopenharmony_ci * @brief Sets the height for the time picker. 232a3e0fd82Sopenharmony_ci * 233a3e0fd82Sopenharmony_ci * @param height Indicates the height to set. 234a3e0fd82Sopenharmony_ci * @since 1.0 235a3e0fd82Sopenharmony_ci * @version 1.0 236a3e0fd82Sopenharmony_ci */ 237a3e0fd82Sopenharmony_ci void SetHeight(int16_t height) override; 238a3e0fd82Sopenharmony_ci 239a3e0fd82Sopenharmony_ci /** 240a3e0fd82Sopenharmony_ci * @brief 设置是否开启循环 241a3e0fd82Sopenharmony_ci * 242a3e0fd82Sopenharmony_ci * @param pickerType Picker类型 243a3e0fd82Sopenharmony_ci * @param state 状态 244a3e0fd82Sopenharmony_ci * 245a3e0fd82Sopenharmony_ci * @since 3.0 246a3e0fd82Sopenharmony_ci * @version 5.0 247a3e0fd82Sopenharmony_ci */ 248a3e0fd82Sopenharmony_ci void SetLoopState(const uint8_t pickerType, bool state); 249a3e0fd82Sopenharmony_ci 250a3e0fd82Sopenharmony_ci /** 251a3e0fd82Sopenharmony_ci * @brief Defines the listener used by the time picker. This listener is triggered when an item is selected 252a3e0fd82Sopenharmony_ci * after sliding stops. 253a3e0fd82Sopenharmony_ci * 254a3e0fd82Sopenharmony_ci * @since 1.0 255a3e0fd82Sopenharmony_ci * @version 1.0 256a3e0fd82Sopenharmony_ci */ 257a3e0fd82Sopenharmony_ci class SelectedListener : public HeapBase { 258a3e0fd82Sopenharmony_ci public: 259a3e0fd82Sopenharmony_ci /** 260a3e0fd82Sopenharmony_ci * @brief A constructor used to create a <b>SelectedListener</b> instance. 261a3e0fd82Sopenharmony_ci * 262a3e0fd82Sopenharmony_ci * @since 1.0 263a3e0fd82Sopenharmony_ci * @version 1.0 264a3e0fd82Sopenharmony_ci */ 265a3e0fd82Sopenharmony_ci SelectedListener() {} 266a3e0fd82Sopenharmony_ci 267a3e0fd82Sopenharmony_ci /** 268a3e0fd82Sopenharmony_ci * @brief A destructor used to delete the <b>SelectedListener</b> instance. 269a3e0fd82Sopenharmony_ci * 270a3e0fd82Sopenharmony_ci * @since 1.0 271a3e0fd82Sopenharmony_ci * @version 1.0 272a3e0fd82Sopenharmony_ci */ 273a3e0fd82Sopenharmony_ci virtual ~SelectedListener() {} 274a3e0fd82Sopenharmony_ci 275a3e0fd82Sopenharmony_ci /** 276a3e0fd82Sopenharmony_ci * @brief Called when an item is selected after sliding stops. This function is implemented by applications. 277a3e0fd82Sopenharmony_ci * 278a3e0fd82Sopenharmony_ci * @param picker Indicates the time picker instance. 279a3e0fd82Sopenharmony_ci * @since 1.0 280a3e0fd82Sopenharmony_ci * @version 1.0 281a3e0fd82Sopenharmony_ci */ 282a3e0fd82Sopenharmony_ci virtual void OnTimePickerStoped(UITimePicker& picker) {} 283a3e0fd82Sopenharmony_ci }; 284a3e0fd82Sopenharmony_ci 285a3e0fd82Sopenharmony_ci /** 286a3e0fd82Sopenharmony_ci * @brief Registers a listener for a selected event. 287a3e0fd82Sopenharmony_ci * 288a3e0fd82Sopenharmony_ci * @param timePickerListener Indicates the listener to register. For details, see {@link SelectedListener}. 289a3e0fd82Sopenharmony_ci * 290a3e0fd82Sopenharmony_ci * @since 1.0 291a3e0fd82Sopenharmony_ci * @version 1.0 292a3e0fd82Sopenharmony_ci */ 293a3e0fd82Sopenharmony_ci void RegisterSelectedListener(SelectedListener* timePickerListener) 294a3e0fd82Sopenharmony_ci { 295a3e0fd82Sopenharmony_ci timePickerListener_ = timePickerListener; 296a3e0fd82Sopenharmony_ci } 297a3e0fd82Sopenharmony_ci 298a3e0fd82Sopenharmony_ci bool OnPressEvent(const PressEvent& event) override; 299a3e0fd82Sopenharmony_ciprivate: 300a3e0fd82Sopenharmony_ci class UIPickerListener : public UIPicker::SelectedListener { 301a3e0fd82Sopenharmony_ci public: 302a3e0fd82Sopenharmony_ci explicit UIPickerListener(UITimePicker* timePicker) 303a3e0fd82Sopenharmony_ci { 304a3e0fd82Sopenharmony_ci timePicker_ = timePicker; 305a3e0fd82Sopenharmony_ci } 306a3e0fd82Sopenharmony_ci 307a3e0fd82Sopenharmony_ci ~UIPickerListener() {} 308a3e0fd82Sopenharmony_ci 309a3e0fd82Sopenharmony_ci void OnPickerStoped(UIPicker& picker) override 310a3e0fd82Sopenharmony_ci { 311a3e0fd82Sopenharmony_ci if (timePicker_ != nullptr) { 312a3e0fd82Sopenharmony_ci timePicker_->TimeSelectedCallback(); 313a3e0fd82Sopenharmony_ci } 314a3e0fd82Sopenharmony_ci } 315a3e0fd82Sopenharmony_ci 316a3e0fd82Sopenharmony_ci private: 317a3e0fd82Sopenharmony_ci UITimePicker* timePicker_; 318a3e0fd82Sopenharmony_ci }; 319a3e0fd82Sopenharmony_ci static constexpr uint8_t TIME_START = 0; 320a3e0fd82Sopenharmony_ci static constexpr uint8_t HOUR_END = 23; 321a3e0fd82Sopenharmony_ci static constexpr uint8_t MIN_END = 59; 322a3e0fd82Sopenharmony_ci static constexpr uint8_t SEC_END = 59; 323a3e0fd82Sopenharmony_ci static constexpr uint8_t BUF_SIZE = 3; 324a3e0fd82Sopenharmony_ci static constexpr uint8_t SELECTED_VALUE_SIZE = 9; 325a3e0fd82Sopenharmony_ci static constexpr uint8_t SEC_VISIBLE_COUNT = 3; 326a3e0fd82Sopenharmony_ci static constexpr uint8_t SEC_INVISIBLE_COUNT = 2; 327a3e0fd82Sopenharmony_ci void TimeSelectedCallback(); 328a3e0fd82Sopenharmony_ci void InitTimePicker(); 329a3e0fd82Sopenharmony_ci void DeInitTimePicker(); 330a3e0fd82Sopenharmony_ci void RefreshTimePicker(); 331a3e0fd82Sopenharmony_ci bool RefreshSelected(const char* value); 332a3e0fd82Sopenharmony_ci void InitPicker(UIPicker*& picker, int16_t start, int16_t end); 333a3e0fd82Sopenharmony_ci void DeInitPicker(UIPicker*& picker); 334a3e0fd82Sopenharmony_ci void GetValueByIndex(char* value, uint8_t len, uint16_t index, int16_t start, int16_t end); 335a3e0fd82Sopenharmony_ci UIPicker* hourPicker_; 336a3e0fd82Sopenharmony_ci UIPicker* minutePicker_; 337a3e0fd82Sopenharmony_ci UIPicker* secondPicker_; 338a3e0fd82Sopenharmony_ci char selectedValue_[SELECTED_VALUE_SIZE]; 339a3e0fd82Sopenharmony_ci char selectedHour_[BUF_SIZE]; 340a3e0fd82Sopenharmony_ci char selectedMinute_[BUF_SIZE]; 341a3e0fd82Sopenharmony_ci char selectedSecond_[BUF_SIZE]; 342a3e0fd82Sopenharmony_ci bool secVisible_; 343a3e0fd82Sopenharmony_ci bool loopState_[PICKER_MAX]; 344a3e0fd82Sopenharmony_ci uint16_t pickerWidth_; 345a3e0fd82Sopenharmony_ci uint16_t itemsHeight_; 346a3e0fd82Sopenharmony_ci int16_t xPos_; 347a3e0fd82Sopenharmony_ci uint16_t highlightFontId_; 348a3e0fd82Sopenharmony_ci uint16_t backgroundFontId_; 349a3e0fd82Sopenharmony_ci uint8_t backgroundFontSize_; 350a3e0fd82Sopenharmony_ci uint8_t highlightFontSize_; 351a3e0fd82Sopenharmony_ci char* backgroundFontName_; 352a3e0fd82Sopenharmony_ci char* highlightFontName_; 353a3e0fd82Sopenharmony_ci ColorType highlightColor_; 354a3e0fd82Sopenharmony_ci ColorType backgroundColor_; 355a3e0fd82Sopenharmony_ci UIPickerListener pickerListener_; 356a3e0fd82Sopenharmony_ci SelectedListener* timePickerListener_; 357a3e0fd82Sopenharmony_ci}; 358a3e0fd82Sopenharmony_ci} // namespace OHOS 359a3e0fd82Sopenharmony_ci#endif // GRAPHIC_LITE_UI_TIME_PICKER_H 360