VirtualBox

Changeset 74883 in vbox


Ignore:
Timestamp:
Oct 17, 2018 3:05:15 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
125867
Message:

FE/Qt: bugref:9230: Advancing provider/profile items further, link them to requried actions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/cloud/UICloudProfileManager.cpp

    r74881 r74883  
    4545
    4646
    47 /** Tree-widget column tags. */
     47/** Tree-widget item types. */
     48enum CloudItemType
     49{
     50    CloudItemType_Provider = QTreeWidgetItem::UserType + 1,
     51    CloudItemType_Profile  = QTreeWidgetItem::UserType + 2
     52};
     53Q_DECLARE_METATYPE(CloudItemType);
     54
     55/** Tree-widget data types. */
    4856enum
    4957{
     58    Data_ItemType   = Qt::UserRole + 1,
     59    Data_ProviderID = Qt::UserRole + 2,
     60};
     61
     62/** Tree-widget column types. */
     63enum
     64{
    5065    Column_Name,
    51     Column_Max,
     66    Column_Max
    5267};
    5368
     
    5772{
    5873public:
     74
     75    /** Constructs item. */
     76    UIItemCloudProvider();
    5977
    6078    /** Updates item fields from base-class data. */
     
    7088public:
    7189
     90    /** Constructs item. */
     91    UIItemCloudProfile();
     92
    7293    /** Updates item fields from base-class data. */
    7394    void updateFields();
     
    82103*********************************************************************************************************************************/
    83104
     105UIItemCloudProvider::UIItemCloudProvider()
     106{
     107    /* Assign item type: */
     108    setData(Column_Name, Data_ItemType, CloudItemType_Provider);
     109}
     110
    84111void UIItemCloudProvider::updateFields()
    85112{
    86113    /* Update item fields: */
    87114    setText(Column_Name, m_strName);
     115    setData(Column_Name, Data_ProviderID, m_uuid);
    88116}
    89117
     
    92120*   Class UIItemCloudProfile implementation.                                                                                     *
    93121*********************************************************************************************************************************/
     122
     123UIItemCloudProfile::UIItemCloudProfile()
     124{
     125    /* Assign item type: */
     126    setData(Column_Name, Data_ItemType, CloudItemType_Profile);
     127}
    94128
    95129void UIItemCloudProfile::updateFields()
     
    191225void UICloudProfileManagerWidget::sltHandleCurrentItemChange()
    192226{
    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;
    195235
    196236    /* 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);
    199240
    200241    /* 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: */
    203245    else
    204     {
    205         /* Otherwise => clear details and close the area: */
    206246        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());
    209250}
    210251
    211252void UICloudProfileManagerWidget::sltHandleContextMenuRequest(const QPoint &position)
    212253{
     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
    213263    /* Compose temporary context-menu: */
    214264    QMenu menu;
    215     if (m_pTreeWidget->itemAt(position))
     265    if (pItemProfile)
    216266    {
    217267        menu.addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_S_Remove));
    218         menu.addSeparator();
    219268        menu.addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_T_Details));
    220269    }
    221     else
     270    else if (pItemProvider)
    222271    {
    223272        menu.addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_S_Create));
    224 //        menu.addSeparator();
    225273//        menu.addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_S_Refresh));
    226274    }
     
    297345        /* Add toolbar actions: */
    298346        m_pToolBar->addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_S_Create));
     347        m_pToolBar->addSeparator();
    299348        m_pToolBar->addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_S_Remove));
    300         m_pToolBar->addSeparator();
    301349        m_pToolBar->addAction(m_pActionPool->action(UIActionIndexST_M_Cloud_T_Details));
    302350//        m_pToolBar->addSeparator();
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette