Changeset 74883 in vbox
- Timestamp:
- Oct 17, 2018 3:05:15 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 125867
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/cloud/UICloudProfileManager.cpp
r74881 r74883 45 45 46 46 47 /** Tree-widget column tags. */ 47 /** Tree-widget item types. */ 48 enum CloudItemType 49 { 50 CloudItemType_Provider = QTreeWidgetItem::UserType + 1, 51 CloudItemType_Profile = QTreeWidgetItem::UserType + 2 52 }; 53 Q_DECLARE_METATYPE(CloudItemType); 54 55 /** Tree-widget data types. */ 48 56 enum 49 57 { 58 Data_ItemType = Qt::UserRole + 1, 59 Data_ProviderID = Qt::UserRole + 2, 60 }; 61 62 /** Tree-widget column types. */ 63 enum 64 { 50 65 Column_Name, 51 Column_Max ,66 Column_Max 52 67 }; 53 68 … … 57 72 { 58 73 public: 74 75 /** Constructs item. */ 76 UIItemCloudProvider(); 59 77 60 78 /** Updates item fields from base-class data. */ … … 70 88 public: 71 89 90 /** Constructs item. */ 91 UIItemCloudProfile(); 92 72 93 /** Updates item fields from base-class data. */ 73 94 void updateFields(); … … 82 103 *********************************************************************************************************************************/ 83 104 105 UIItemCloudProvider::UIItemCloudProvider() 106 { 107 /* Assign item type: */ 108 setData(Column_Name, Data_ItemType, CloudItemType_Provider); 109 } 110 84 111 void UIItemCloudProvider::updateFields() 85 112 { 86 113 /* Update item fields: */ 87 114 setText(Column_Name, m_strName); 115 setData(Column_Name, Data_ProviderID, m_uuid); 88 116 } 89 117 … … 92 120 * Class UIItemCloudProfile implementation. * 93 121 *********************************************************************************************************************************/ 122 123 UIItemCloudProfile::UIItemCloudProfile() 124 { 125 /* Assign item type: */ 126 setData(Column_Name, Data_ItemType, CloudItemType_Profile); 127 } 94 128 95 129 void UIItemCloudProfile::updateFields() … … 191 225 void UICloudProfileManagerWidget::sltHandleCurrentItemChange() 192 226 { 193 /* Get profile item: */ 194 UIItemCloudProfile *pItem = static_cast<UIItemCloudProfile*>(m_pTreeWidget->currentItem()); 227 /* Get items: */ 228 QTreeWidgetItem *pItem = m_pTreeWidget->currentItem(); 229 UIItemCloudProvider *pItemProvider = pItem && pItem->data(0, Data_ItemType).value<CloudItemType>() == CloudItemType_Provider 230 ? static_cast<UIItemCloudProvider*>(pItem) 231 : 0; 232 UIItemCloudProfile *pItemProfile = pItem && pItem->data(0, Data_ItemType).value<CloudItemType>() == CloudItemType_Profile 233 ? static_cast<UIItemCloudProfile*>(pItem) 234 : 0; 195 235 196 236 /* Update actions availability: */ 197 m_pActionPool->action(UIActionIndexST_M_Cloud_S_Remove)->setEnabled(pItem); 198 m_pActionPool->action(UIActionIndexST_M_Cloud_T_Details)->setEnabled(pItem); 237 m_pActionPool->action(UIActionIndexST_M_Cloud_S_Create)->setEnabled(!pItem || pItemProvider); 238 m_pActionPool->action(UIActionIndexST_M_Cloud_S_Remove)->setEnabled(pItemProfile); 239 m_pActionPool->action(UIActionIndexST_M_Cloud_T_Details)->setEnabled(pItemProfile); 199 240 200 241 /* If there is an item => update details data: */ 201 if (pItem) 202 m_pDetailsWidget->setData(*pItem); 242 if (pItemProfile) 243 m_pDetailsWidget->setData(*pItemProfile); 244 /* Otherwise => clear details data: */ 203 245 else 204 {205 /* Otherwise => clear details and close the area: */206 246 m_pDetailsWidget->setData(UIDataCloudProfile()); 207 sltToggleCloudProfileDetailsVisibility(false); 208 } 247 248 /* Update details area visibility: */ 249 sltToggleCloudProfileDetailsVisibility(pItem && m_pActionPool->action(UIActionIndexST_M_Cloud_T_Details)->isChecked()); 209 250 } 210 251 211 252 void UICloudProfileManagerWidget::sltHandleContextMenuRequest(const QPoint &position) 212 253 { 254 /* Get items: */ 255 QTreeWidgetItem *pItem = m_pTreeWidget->itemAt(position); 256 UIItemCloudProvider *pItemProvider = pItem && pItem->data(0, Data_ItemType).value<CloudItemType>() == CloudItemType_Provider 257 ? static_cast<UIItemCloudProvider*>(pItem) 258 : 0; 259 UIItemCloudProfile *pItemProfile = pItem && pItem->data(0, Data_ItemType).value<CloudItemType>() == CloudItemType_Profile 260 ? static_cast<UIItemCloudProfile*>(pItem) 261 : 0; 262 213 263 /* Compose temporary context-menu: */ 214 264 QMenu menu; 215 if ( m_pTreeWidget->itemAt(position))265 if (pItemProfile) 216 266 { 217 267 menu.addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_S_Remove)); 218 menu.addSeparator();219 268 menu.addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_T_Details)); 220 269 } 221 else 270 else if (pItemProvider) 222 271 { 223 272 menu.addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_S_Create)); 224 // menu.addSeparator();225 273 // menu.addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_S_Refresh)); 226 274 } … … 297 345 /* Add toolbar actions: */ 298 346 m_pToolBar->addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_S_Create)); 347 m_pToolBar->addSeparator(); 299 348 m_pToolBar->addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_S_Remove)); 300 m_pToolBar->addSeparator();301 349 m_pToolBar->addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_T_Details)); 302 350 // m_pToolBar->addSeparator();
Note:
See TracChangeset
for help on using the changeset viewer.