Line data Source code
1 : /****************************************************************************/ 2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo 3 : // Copyright (C) 2006-2024 German Aerospace Center (DLR) and others. 4 : // This program and the accompanying materials are made available under the 5 : // terms of the Eclipse Public License 2.0 which is available at 6 : // https://www.eclipse.org/legal/epl-2.0/ 7 : // This Source Code may also be made available under the following Secondary 8 : // Licenses when the conditions for such availability set forth in the Eclipse 9 : // Public License 2.0 are satisfied: GNU General Public License, version 2 10 : // or later which is available at 11 : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html 12 : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later 13 : /****************************************************************************/ 14 : /// @file MFXListIconItem.h 15 : /// @author Pablo Alvarez Lopez 16 : /// @date Feb 2023 17 : /// 18 : // 19 : /****************************************************************************/ 20 : 21 : #pragma once 22 : #include <config.h> 23 : 24 : #include "fxheader.h" 25 : 26 : // =========================================================================== 27 : // class declaration 28 : // =========================================================================== 29 : 30 : class MFXListIcon; 31 : 32 : // =========================================================================== 33 : // class definitions 34 : // =========================================================================== 35 : 36 : class MFXListIconItem : public FXObject { 37 : /// @brief FOX declaration 38 0 : FXDECLARE(MFXListIconItem) 39 : 40 : /// @brief declare friend class 41 : friend class MFXListIcon; 42 : 43 : public: 44 : enum { 45 : SELECTED = 1, /// Selected 46 : FOCUS = 2, /// Focus 47 : DISABLED = 4, /// Disabled 48 : DRAGGABLE = 8, /// Draggable 49 : ICONOWNED = 16 /// Icon owned by item 50 : }; 51 : 52 : /// @brief Construct new item with given text, icon, and user-data 53 : MFXListIconItem(const FXString& text, FXIcon* ic = NULL, FXColor backGroundColor = 0, void* ptr = NULL); 54 : 55 : /// @brief Destroy item and free icons if owned 56 : ~MFXListIconItem(); 57 : 58 : /// @brief Change item's text label 59 : void setText(const FXString& txt); 60 : 61 : /// @brief Return item's text label 62 : const FXString& getText() const; 63 : 64 : /// @brief Return item's icon 65 : FXIcon* getIcon() const; 66 : 67 : /// @brief get background color 68 : const FXColor& getBackGroundColor() const; 69 : 70 : /// @brief Make item draw as focused 71 : void setFocus(FXbool focus); 72 : 73 : /// @brief Return true if item has focus 74 : FXbool hasFocus() const; 75 : 76 : /// @brief Select item 77 : void setSelected(FXbool selected); 78 : 79 : /// @brief Return true if this item is selected 80 : FXbool isSelected() const; 81 : 82 : /// @brief Enable or disable item 83 : void setEnabled(FXbool enabled); 84 : 85 : /// @brief Return true if this item is enabled 86 : FXbool isEnabled() const; 87 : 88 : /// @brief Make item draggable 89 : void setDraggable(FXbool draggable); 90 : 91 : /// @brief Return true if this item is draggable 92 : FXbool isDraggable() const; 93 : 94 : /// @brief Return width of item as drawn in list 95 : FXint getWidth(const MFXListIcon* list) const; 96 : 97 : /// @brief Return height of item as drawn in list 98 : FXint getHeight(const MFXListIcon* list) const; 99 : 100 : /// @brief Create server-side resources 101 : void create(); 102 : 103 : /// @brief Detach server-side resources 104 : void detach(); 105 : 106 : /// @brief Destroy server-side resources 107 : void destroy(); 108 : 109 : protected: 110 : /// @brief FOX need this 111 : MFXListIconItem(); 112 : 113 : /// @brief daraw 114 : void draw(const MFXListIcon* list, FXDC& dc, FXint x, FXint y, FXint w, FXint h); 115 : 116 : /// @brief hit item 117 : FXint hitItem(const MFXListIcon* list, FXint x, FXint y) const; 118 : 119 : /// @brief label 120 : FXString label; 121 : 122 : /// @brief icon 123 : FXIcon* icon = nullptr; 124 : 125 : /// @brief data 126 : void* data = nullptr; 127 : 128 : /// @brief state 129 : FXuint state = 0; 130 : 131 : /// @brief position 132 : FXint x = 0; 133 : FXint y = 0; 134 : 135 : /// @brief backGround color 136 : FXColor myBackGroundColor = 0; 137 : 138 : /// @brief flag for show/hidde element 139 : bool show = true; 140 : 141 : private: 142 : /// @brief invalidate copy constructor 143 : MFXListIconItem(const MFXListIconItem&) = delete; 144 : 145 : /// @brief invalidate assign constructor 146 : MFXListIconItem& operator = (const MFXListIconItem&) = delete; 147 : };