Changeset 52152 in vbox
- Timestamp:
- Jul 23, 2014 3:18:04 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 95186
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/globals
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp
r52151 r52152 48 48 QAction *m_pAction; 49 49 }; 50 51 52 UIAction::UIAction(UIActionPool *pParent, UIActionType type)53 : QAction(pParent)54 , m_pActionPool(pParent)55 , m_type(type)56 , m_actionPoolType(pParent->type())57 , m_fShortcutHidden(false)58 {59 /* By default there is no specific menu role.60 * It will be set explicitly later. */61 setMenuRole(QAction::NoRole);62 }63 64 UIActionPolymorphic* UIAction::toActionPolymorphic()65 {66 return qobject_cast<UIActionPolymorphic*>(this);67 }68 69 void UIAction::setName(const QString &strName)70 {71 /* Remember internal name: */72 m_strName = strName;73 /* Update text according new name: */74 updateText();75 }76 77 void UIAction::setShortcut(const QKeySequence &shortcut)78 {79 /* Only for selector's action-pool: */80 if (m_actionPoolType == UIActionPoolType_Selector)81 {82 /* If shortcut is visible: */83 if (!m_fShortcutHidden)84 /* Call to base-class: */85 QAction::setShortcut(shortcut);86 /* Remember shortcut: */87 m_shortcut = shortcut;88 }89 /* Update text according new shortcut: */90 updateText();91 }92 93 void UIAction::showShortcut()94 {95 m_fShortcutHidden = false;96 if (!m_shortcut.isEmpty())97 QAction::setShortcut(m_shortcut);98 }99 100 void UIAction::hideShortcut()101 {102 m_fShortcutHidden = true;103 if (!shortcut().isEmpty())104 QAction::setShortcut(QKeySequence());105 }106 107 QString UIAction::nameInMenu() const108 {109 /* Action-name format depends on action-pool type: */110 switch (m_actionPoolType)111 {112 /* Unchanged name for Selector UI: */113 case UIActionPoolType_Selector: return name();114 /* Filtered name for Runtime UI: */115 case UIActionPoolType_Runtime: return VBoxGlobal::removeAccelMark(name());116 }117 /* Nothing by default: */118 return QString();119 }120 121 void UIAction::updateText()122 {123 /* Action-text format depends on action-pool type: */124 switch (m_actionPoolType)125 {126 /* The same as menu name for Selector UI: */127 case UIActionPoolType_Selector:128 setText(nameInMenu());129 break;130 /* With shortcut appended for Runtime UI: */131 case UIActionPoolType_Runtime:132 setText(vboxGlobal().insertKeyToActionText(nameInMenu(),133 gShortcutPool->shortcut(actionPool(), this).toString()));134 break;135 }136 }137 50 138 51 … … 167 80 168 81 82 UIAction::UIAction(UIActionPool *pParent, UIActionType type) 83 : QAction(pParent) 84 , m_pActionPool(pParent) 85 , m_type(type) 86 , m_actionPoolType(pParent->type()) 87 , m_fShortcutHidden(false) 88 { 89 /* By default there is no specific menu role. 90 * It will be set explicitly later. */ 91 setMenuRole(QAction::NoRole); 92 } 93 94 UIActionPolymorphic* UIAction::toActionPolymorphic() 95 { 96 return qobject_cast<UIActionPolymorphic*>(this); 97 } 98 99 void UIAction::setName(const QString &strName) 100 { 101 /* Remember internal name: */ 102 m_strName = strName; 103 /* Update text according new name: */ 104 updateText(); 105 } 106 107 void UIAction::setShortcut(const QKeySequence &shortcut) 108 { 109 /* Only for selector's action-pool: */ 110 if (m_actionPoolType == UIActionPoolType_Selector) 111 { 112 /* If shortcut is visible: */ 113 if (!m_fShortcutHidden) 114 /* Call to base-class: */ 115 QAction::setShortcut(shortcut); 116 /* Remember shortcut: */ 117 m_shortcut = shortcut; 118 } 119 /* Update text according new shortcut: */ 120 updateText(); 121 } 122 123 void UIAction::showShortcut() 124 { 125 m_fShortcutHidden = false; 126 if (!m_shortcut.isEmpty()) 127 QAction::setShortcut(m_shortcut); 128 } 129 130 void UIAction::hideShortcut() 131 { 132 m_fShortcutHidden = true; 133 if (!shortcut().isEmpty()) 134 QAction::setShortcut(QKeySequence()); 135 } 136 137 QString UIAction::nameInMenu() const 138 { 139 /* Action-name format depends on action-pool type: */ 140 switch (m_actionPoolType) 141 { 142 /* Unchanged name for Selector UI: */ 143 case UIActionPoolType_Selector: return name(); 144 /* Filtered name for Runtime UI: */ 145 case UIActionPoolType_Runtime: return VBoxGlobal::removeAccelMark(name()); 146 } 147 /* Nothing by default: */ 148 return QString(); 149 } 150 151 void UIAction::updateText() 152 { 153 /* Action-text format depends on action-pool type: */ 154 switch (m_actionPoolType) 155 { 156 /* The same as menu name for Selector UI: */ 157 case UIActionPoolType_Selector: 158 setText(nameInMenu()); 159 break; 160 /* With shortcut appended for Runtime UI: */ 161 case UIActionPoolType_Runtime: 162 setText(vboxGlobal().insertKeyToActionText(nameInMenu(), 163 gShortcutPool->shortcut(actionPool(), this).toString())); 164 break; 165 } 166 } 167 168 169 UIActionMenu::UIActionMenu(UIActionPool *pParent, 170 const QString &strIcon, const QString &strIconDis) 171 : UIAction(pParent, UIActionType_Menu) 172 { 173 if (!strIcon.isNull()) 174 setIcon(UIIconPool::iconSet(strIcon, strIconDis)); 175 setMenu(new UIMenu); 176 } 177 178 UIActionMenu::UIActionMenu(UIActionPool *pParent, 179 const QIcon &icon) 180 : UIAction(pParent, UIActionType_Menu) 181 { 182 if (!icon.isNull()) 183 setIcon(icon); 184 setMenu(new UIMenu); 185 } 186 187 void UIActionMenu::setShowToolTip(bool fShowToolTip) 188 { 189 qobject_cast<UIMenu*>(menu())->setShowToolTip(fShowToolTip); 190 } 191 192 void UIActionMenu::updateText() 193 { 194 setText(nameInMenu()); 195 } 196 197 169 198 UIActionSimple::UIActionSimple(UIActionPool *pParent, 170 199 const QString &strIcon /* = QString() */, const QString &strIconDisabled /* = QString() */) … … 191 220 192 221 193 UIActionPolymorphic::UIActionPolymorphic(UIActionPool *pParent,194 const QString &strIcon /* = QString() */, const QString &strIconDisabled /* = QString() */)195 : UIAction(pParent, UIActionType_Polymorphic)196 , m_iState(0)197 {198 if (!strIcon.isNull())199 setIcon(UIIconPool::iconSet(strIcon, strIconDisabled));200 }201 202 UIActionPolymorphic::UIActionPolymorphic(UIActionPool *pParent,203 const QString &strIconNormal, const QString &strIconSmall,204 const QString &strIconNormalDisabled, const QString &strIconSmallDisabled)205 : UIAction(pParent, UIActionType_Polymorphic)206 , m_iState(0)207 {208 setIcon(UIIconPool::iconSetFull(strIconNormal, strIconSmall, strIconNormalDisabled, strIconSmallDisabled));209 }210 211 UIActionPolymorphic::UIActionPolymorphic(UIActionPool *pParent,212 const QIcon& icon)213 : UIAction(pParent, UIActionType_Polymorphic)214 , m_iState(0)215 {216 if (!icon.isNull())217 setIcon(icon);218 }219 220 221 222 UIActionToggle::UIActionToggle(UIActionPool *pParent, 222 223 const QString &strIcon /* = QString() */, const QString &strIconDisabled /* = QString() */) … … 252 253 253 254 254 UIActionMenu::UIActionMenu(UIActionPool *pParent, 255 const QString &strIcon, const QString &strIconDis) 256 : UIAction(pParent, UIActionType_Menu) 255 UIActionPolymorphic::UIActionPolymorphic(UIActionPool *pParent, 256 const QString &strIcon /* = QString() */, const QString &strIconDisabled /* = QString() */) 257 : UIAction(pParent, UIActionType_Polymorphic) 258 , m_iState(0) 257 259 { 258 260 if (!strIcon.isNull()) 259 setIcon(UIIconPool::iconSet(strIcon, strIconDis)); 260 setMenu(new UIMenu); 261 } 262 263 UIActionMenu::UIActionMenu(UIActionPool *pParent, 264 const QIcon &icon) 265 : UIAction(pParent, UIActionType_Menu) 261 setIcon(UIIconPool::iconSet(strIcon, strIconDisabled)); 262 } 263 264 UIActionPolymorphic::UIActionPolymorphic(UIActionPool *pParent, 265 const QString &strIconNormal, const QString &strIconSmall, 266 const QString &strIconNormalDisabled, const QString &strIconSmallDisabled) 267 : UIAction(pParent, UIActionType_Polymorphic) 268 , m_iState(0) 269 { 270 setIcon(UIIconPool::iconSetFull(strIconNormal, strIconSmall, strIconNormalDisabled, strIconSmallDisabled)); 271 } 272 273 UIActionPolymorphic::UIActionPolymorphic(UIActionPool *pParent, 274 const QIcon& icon) 275 : UIAction(pParent, UIActionType_Polymorphic) 276 , m_iState(0) 266 277 { 267 278 if (!icon.isNull()) 268 279 setIcon(icon); 269 setMenu(new UIMenu);270 }271 272 void UIActionMenu::setShowToolTip(bool fShowToolTip)273 {274 qobject_cast<UIMenu*>(menu())->setShowToolTip(fShowToolTip);275 }276 277 void UIActionMenu::updateText()278 {279 setText(nameInMenu());280 280 } 281 281 -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h
r52151 r52152 40 40 enum UIActionType 41 41 { 42 UIActionType_Menu, 42 43 UIActionType_Simple, 43 UIActionType_Polymorphic,44 44 UIActionType_Toggle, 45 UIActionType_ Menu45 UIActionType_Polymorphic 46 46 }; 47 47 … … 69 69 70 70 71 /** QMenu extension 72 * allowing to show tool-tips. */ 73 class UIMenu : public QMenu 74 { 75 Q_OBJECT; 76 77 public: 78 79 /** Constructor. */ 80 UIMenu(); 81 82 /** Defines whether tool-tip should be shown. */ 83 void setShowToolTip(bool fShowToolTips) { m_fShowToolTip = fShowToolTips; } 84 85 protected: 86 87 /** General event handler. */ 88 virtual bool event(QEvent *pEvent); 89 90 private: 91 92 /** Holds whether tool-tip should be shown. */ 93 bool m_fShowToolTip; 94 }; 95 96 71 97 /** Abstract QAction extension. */ 72 98 class UIAction : public QAction … … 135 161 136 162 137 /** QMenu extension 138 * allowing to show tool-tips. */ 139 class UIMenu : public QMenu 140 { 141 Q_OBJECT; 142 143 public: 144 145 /** Constructor. */ 146 UIMenu(); 163 /** Abstract UIAction extension for 'Menu' action type. */ 164 class UIActionMenu : public UIAction 165 { 166 Q_OBJECT; 167 168 protected: 169 170 /** Constructor, taking normal icon name and name for disabled analog. */ 171 UIActionMenu(UIActionPool *pParent, 172 const QString &strIcon = QString(), const QString &strIconDis = QString()); 173 /** Constructor, taking copy of existing icon. */ 174 UIActionMenu(UIActionPool *pParent, 175 const QIcon &icon); 147 176 148 177 /** Defines whether tool-tip should be shown. */ 149 void setShowToolTip(bool fShowToolTips) { m_fShowToolTip = fShowToolTips; } 150 151 protected: 152 153 /** General event handler. */ 154 virtual bool event(QEvent *pEvent); 155 156 private: 157 158 /** Holds whether tool-tip should be shown. */ 159 bool m_fShowToolTip; 178 void setShowToolTip(bool fShowToolTip); 179 180 private: 181 182 /** Updates action text accordingly. */ 183 virtual void updateText(); 160 184 }; 161 185 … … 181 205 182 206 207 /** Abstract UIAction extension for 'Toggle' action type. */ 208 class UIActionToggle : public UIAction 209 { 210 Q_OBJECT; 211 212 protected: 213 214 /** Constructor, taking normal icon name and name for disabled analog. */ 215 UIActionToggle(UIActionPool *pParent, 216 const QString &strIcon = QString(), const QString &strIconDisabled = QString()); 217 /** Constructor, taking normal on/off icon names and names for disabled analogs. */ 218 UIActionToggle(UIActionPool *pParent, 219 const QString &strIconOn, const QString &strIconOff, 220 const QString &strIconOnDisabled, const QString &strIconOffDisabled); 221 /** Constructor, taking copy of existing icon. */ 222 UIActionToggle(UIActionPool *pParent, 223 const QIcon &icon); 224 225 private: 226 227 /** Prepare routine. */ 228 void prepare(); 229 }; 230 231 183 232 /** Abstract UIAction extension for 'Polymorphic' action type. */ 184 233 class UIActionPolymorphic : public UIAction … … 213 262 214 263 215 /** Abstract UIAction extension for 'Toggle' action type. */216 class UIActionToggle : public UIAction217 {218 Q_OBJECT;219 220 protected:221 222 /** Constructor, taking normal icon name and name for disabled analog. */223 UIActionToggle(UIActionPool *pParent,224 const QString &strIcon = QString(), const QString &strIconDisabled = QString());225 /** Constructor, taking normal on/off icon names and names for disabled analogs. */226 UIActionToggle(UIActionPool *pParent,227 const QString &strIconOn, const QString &strIconOff,228 const QString &strIconOnDisabled, const QString &strIconOffDisabled);229 /** Constructor, taking copy of existing icon. */230 UIActionToggle(UIActionPool *pParent,231 const QIcon &icon);232 233 private:234 235 /** Prepare routine. */236 void prepare();237 };238 239 240 /** Abstract UIAction extension for 'Menu' action type. */241 class UIActionMenu : public UIAction242 {243 Q_OBJECT;244 245 protected:246 247 /** Constructor, taking normal icon name and name for disabled analog. */248 UIActionMenu(UIActionPool *pParent,249 const QString &strIcon = QString(), const QString &strIconDis = QString());250 /** Constructor, taking copy of existing icon. */251 UIActionMenu(UIActionPool *pParent,252 const QIcon &icon);253 254 /** Defines whether tool-tip should be shown. */255 void setShowToolTip(bool fShowToolTip);256 257 private:258 259 /** Updates action text accordingly. */260 virtual void updateText();261 };262 263 264 264 /** Abstract QObject extension 265 265 * representing action-pool singleton. */
Note:
See TracChangeset
for help on using the changeset viewer.