- Timestamp:
- Aug 16, 2018 3:35:27 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 124394
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/globals
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp
r73694 r73715 111 111 , m_pActionPool(pParent) 112 112 , m_enmActionPoolType(pParent->type()) 113 , m_iState(0) 113 114 , m_fShortcutHidden(false) 114 115 { … … 129 130 } 130 131 131 UIActionPolymorphic *UIAction::toActionPolymorphic()132 {133 return qobject_cast<UIActionPolymorphic*>(this);134 }135 136 132 UIActionPolymorphicMenu *UIAction::toActionPolymorphicMenu() 137 133 { 138 134 return qobject_cast<UIActionPolymorphicMenu*>(this); 135 } 136 137 void UIAction::setIcon(int iState, const QIcon &icon) 138 { 139 m_icons.resize(iState + 1); 140 m_icons[iState] = icon; 141 updateIcon(); 142 } 143 144 void UIAction::setIcon(const QIcon &icon) 145 { 146 setIcon(0, icon); 139 147 } 140 148 … … 189 197 /* Nothing by default: */ 190 198 return QString(); 199 } 200 201 void UIAction::updateIcon() 202 { 203 QAction::setIcon(m_icons.value(m_iState)); 191 204 } 192 205 … … 316 329 { 317 330 setCheckable(true); 318 }319 320 321 /*********************************************************************************************************************************322 * Class UIActionPolymorphic implementation. *323 *********************************************************************************************************************************/324 325 UIActionPolymorphic::UIActionPolymorphic(UIActionPool *pParent,326 const QString &strIcon /* = QString() */, const QString &strIconDisabled /* = QString() */)327 : UIAction(pParent, UIActionType_Polymorphic)328 , m_iState(0)329 {330 if (!strIcon.isNull())331 setIcon(UIIconPool::iconSet(strIcon, strIconDisabled));332 }333 334 UIActionPolymorphic::UIActionPolymorphic(UIActionPool *pParent,335 const QString &strIconNormal, const QString &strIconSmall,336 const QString &strIconNormalDisabled, const QString &strIconSmallDisabled)337 : UIAction(pParent, UIActionType_Polymorphic)338 , m_iState(0)339 {340 setIcon(UIIconPool::iconSetFull(strIconNormal, strIconSmall, strIconNormalDisabled, strIconSmallDisabled));341 }342 343 UIActionPolymorphic::UIActionPolymorphic(UIActionPool *pParent,344 const QIcon& icon)345 : UIAction(pParent, UIActionType_Polymorphic)346 , m_iState(0)347 {348 if (!icon.isNull())349 setIcon(icon);350 331 } 351 332 -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h
r73694 r73715 22 22 #include <QAction> 23 23 #include <QMenu> 24 #include <QVector> 24 25 25 26 /* GUI includes: */ … … 31 32 class QKeySequence; 32 33 class QString; 33 class UIActionPolymorphic;34 34 class UIActionPolymorphicMenu; 35 35 class UIActionPool; … … 170 170 UIActionPool *actionPool() const { return m_pActionPool; } 171 171 172 /** Casts action to polymorphic-action. */173 UIActionPolymorphic *toActionPolymorphic();174 172 /** Casts action to polymorphic-menu-action. */ 175 173 UIActionPolymorphicMenu *toActionPolymorphicMenu(); 174 175 /** Returns current action state. */ 176 int state() const { return m_iState; } 177 /** Defines current action @a iState. */ 178 void setState(int iState) { m_iState = iState; updateIcon(); retranslateUi(); } 179 180 /** Defines @a icon for certain @a iState. */ 181 void setIcon(int iState, const QIcon &icon); 182 /** Defines @a icon. */ 183 void setIcon(const QIcon &icon); 176 184 177 185 /** Returns current action name. */ … … 201 209 /** Retranslates action. */ 202 210 virtual void retranslateUi() = 0; 211 /** Destructs action. */ 203 212 virtual ~UIAction() /* override */ { delete menu(); } 204 213 … … 211 220 /** Returns current action name in menu. */ 212 221 QString nameInMenu() const; 222 223 /** Updates action icon. */ 224 virtual void updateIcon(); 213 225 214 226 /** Updates action text accordingly. */ … … 225 237 UIActionPoolType m_enmActionPoolType; 226 238 239 /** Holds current action state. */ 240 int m_iState; 241 /** Holds action icons. */ 242 QVector<QIcon> m_icons; 227 243 /** Holds the action name. */ 228 QString m_strName;244 QString m_strName; 229 245 /** Holds the action shortcut. */ 230 QKeySequence m_shortcut;246 QKeySequence m_shortcut; 231 247 /** Holds whether action shortcut hidden. */ 232 bool m_fShortcutHidden;248 bool m_fShortcutHidden; 233 249 }; 234 250 … … 289 305 * @param icon Brings the icon. */ 290 306 UIActionSimple(UIActionPool *pParent, 291 const QIcon &icon);307 const QIcon &icon); 292 308 }; 293 309 … … 325 341 326 342 327 /** Abstract UIAction extension for 'Polymorphic' action type. */328 class SHARED_LIBRARY_STUFF UIActionPolymorphic : public UIAction329 {330 Q_OBJECT;331 332 public:333 334 /** Returns current action state. */335 int state() const { return m_iState; }336 /** Defines current action state. */337 void setState(int iState) { m_iState = iState; retranslateUi(); }338 339 protected:340 341 /** Constructs polymorphic action passing @a pParent to the base-class.342 * @param strIcon Brings the normal-icon name.343 * @param strIconDisabled Brings the disabled-icon name. */344 UIActionPolymorphic(UIActionPool *pParent,345 const QString &strIcon = QString(), const QString &strIconDisabled = QString());346 /** Constructs polymorphic action passing @a pParent to the base-class.347 * @param strIconNormal Brings the normal-icon name.348 * @param strIconSmall Brings the small-icon name.349 * @param strIconNormalDisabled Brings the normal-disabled-icon name.350 * @param strIconSmallDisabled Brings the small-disabled-icon name. */351 UIActionPolymorphic(UIActionPool *pParent,352 const QString &strIconNormal, const QString &strIconSmall,353 const QString &strIconNormalDisabled, const QString &strIconSmallDisabled);354 /** Constructs polymorphic action passing @a pParent to the base-class.355 * @param icon Brings the icon. */356 UIActionPolymorphic(UIActionPool *pParent,357 const QIcon& icon);358 359 private:360 361 /** Holds current action state. */362 int m_iState;363 };364 365 366 343 /** Abstract UIAction extension for 'Polymorphic Menu' action type. */ 367 344 class SHARED_LIBRARY_STUFF UIActionPolymorphicMenu : public UIAction
Note:
See TracChangeset
for help on using the changeset viewer.