1 /* 2 * Copyright (c) 2020-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 /** 17 * @addtogroup UI_Components 18 * @{ 19 * 20 * @brief Defines UI components such as buttons, texts, images, lists, and progress bars. 21 * 22 * @since 1.0 23 * @version 1.0 24 */ 25 26 /** 27 * @file ui_radio_button.h 28 * 29 * @brief Defines the attributes and common functions of a radio button. 30 * 31 * @since 1.0 32 * @version 1.0 33 */ 34 35 #ifndef GRAPHIC_LITE_UI_RADIO_BUTTON_H 36 #define GRAPHIC_LITE_UI_RADIO_BUTTON_H 37 38 #include "components/ui_checkbox.h" 39 40 namespace OHOS { 41 /** 42 * @brief Represents a radio button. 43 * 44 * Only one option can be selected with the radio button. 45 * 46 * @see UICheckBox 47 * @since 1.0 48 * @version 1.0 49 */ 50 class UIRadioButton : public UICheckBox { 51 public: 52 /** 53 * @brief A constructor used to create a <b>UIRadioButton</b> instance. 54 * 55 * @since 1.0 56 * @version 1.0 57 */ 58 UIRadioButton(); 59 60 /** 61 * @fn UIRadioButton::UIRadioButton(const char* name); 62 * 63 * @brief Default constructor 64 */ 65 explicit UIRadioButton(const char* name); 66 67 /** 68 * @brief A destructor used to delete the <b>UIRadioButton</b> instance. 69 * 70 * @since 1.0 71 * @version 1.0 72 */ ~UIRadioButton()73 virtual ~UIRadioButton() 74 { 75 if (name_ != nullptr) { 76 UIFree(name_); 77 name_ = nullptr; 78 } 79 } 80 81 /** 82 * @brief Obtains the component type. 83 * 84 * @return Returns the component type, as defined in {@link UIViewType}. 85 * @since 1.0 86 * @version 1.0 87 */ GetViewType()88 UIViewType GetViewType() const override 89 { 90 return UI_RADIO_BUTTON; 91 } 92 OnPreDraw(Rect & invalidatedArea)93 bool OnPreDraw(Rect& invalidatedArea) const override 94 { 95 return false; 96 } 97 98 void OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override; 99 100 /** 101 * @fn virtual void UIRadioButton::OnClickEvent(const ClickEvent& event) override; 102 * 103 * @brief Executes the click event action 104 * OnClickEvent will reverse the selected state of checkbox. 105 * Example: If the check box is selected, the checkbox status is changed to 106 * Unselected after the click action is taken. 107 * 108 * @param event The event that passed when OnClickEvent is invoked. 109 * @return Returns <b>true</b> if the event is consumed; returns <b>false</b> otherwise. 110 */ 111 bool OnClickEvent(const ClickEvent& event) override; 112 113 /** 114 * @brief Sets the name for this radio button. 115 * 116 * @param name Indicates the name to set, which is a character string. 117 * @since 1.0 118 * @version 1.0 119 */ 120 void SetName(const char* name); 121 122 /** 123 * @brief Obtains the name of this radio button. 124 * 125 * @return Returns the name of this radio button, which is a defined character string. Radio buttons sharing the 126 * same name are in the same batch from which only one can be selected. 127 * @since 1.0 128 * @version 1.0 129 */ GetName()130 const char* GetName() const 131 { 132 return name_; 133 } 134 135 protected: 136 void CalculateSize() override; 137 #if DEFAULT_ANIMATION 138 void Callback(UIView* view) override; 139 #endif 140 141 private: 142 void FindRadioButtonAndChangeState(UIView* view); 143 char* name_; 144 uint16_t radiusBig_; 145 uint16_t radiusSmall_; 146 uint16_t currentRadius_; 147 int16_t lineWidth_; 148 }; 149 } // namespace OHOS 150 #endif // GRAPHIC_LITE_UI_RADIO_BUTTON_H 151