VirtualBox

Changeset 86731 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Oct 28, 2020 10:52:12 AM (4 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9653: VirtualBox Manager: Chooser pane: Rework UICloudAccountKey to UICloudEntityKey to make it introduce any cloud entity, not just account; This will be useful to register update requests for cloud VMs as well as for cloud profiles.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserAbstractModel.cpp

    r86708 r86731  
    350350
    351351/*********************************************************************************************************************************
     352*   Class UICloudEntityKey implementation.                                                                                       *
     353*********************************************************************************************************************************/
     354
     355UICloudEntityKey::UICloudEntityKey(const QString &strProviderShortName /* = QString() */,
     356                                   const QString &strProfileName /* = QString() */,
     357                                   const QString &strMachineName /* = QString() */)
     358    : m_strProviderShortName(strProviderShortName)
     359    , m_strProfileName(strProfileName)
     360    , m_strMachineName(strMachineName)
     361{
     362}
     363
     364UICloudEntityKey::UICloudEntityKey(const UICloudEntityKey &another)
     365    : m_strProviderShortName(another.m_strProviderShortName)
     366    , m_strProfileName(another.m_strProfileName)
     367    , m_strMachineName(another.m_strMachineName)
     368{
     369}
     370
     371bool UICloudEntityKey::operator==(const UICloudEntityKey &another) const
     372{
     373    return    true
     374           && m_strProviderShortName == another.m_strProviderShortName
     375           && m_strProfileName == another.m_strProfileName
     376           && m_strProfileName == another.m_strProfileName
     377              ;
     378}
     379
     380QString UICloudEntityKey::toString() const
     381{
     382    QString strResult;
     383    if (m_strProviderShortName.isEmpty())
     384        return strResult;
     385    strResult += QString("/%1").arg(m_strProviderShortName);
     386    if (m_strProfileName.isEmpty())
     387        return strResult;
     388    strResult += QString("/%1").arg(m_strProfileName);
     389    if (m_strMachineName.isEmpty())
     390        return strResult;
     391    strResult += QString("/%1").arg(m_strMachineName);
     392    return strResult;
     393}
     394
     395
     396/*********************************************************************************************************************************
    352397*   Class UIChooserAbstractModel implementation.                                                                                 *
    353398*********************************************************************************************************************************/
     
    582627}
    583628
    584 void UIChooserAbstractModel::insertCloudAccountKey(const UICloudAccountKey &key)
    585 {
    586     m_cloudAccountKeysBeingUpdated.insert(key);
     629void UIChooserAbstractModel::insertCloudEntityKey(const UICloudEntityKey &key)
     630{
     631//    printf("Cloud entity with key %s being updated..\n", key.toString().toUtf8().constData());
     632    m_cloudEntityKeysBeingUpdated.insert(key);
    587633    emit sigCloudUpdateStateChanged();
    588634}
    589635
    590 void UIChooserAbstractModel::removeCloudAccountKey(const UICloudAccountKey &key)
    591 {
    592     m_cloudAccountKeysBeingUpdated.remove(key);
     636void UIChooserAbstractModel::removeCloudEntityKey(const UICloudEntityKey &key)
     637{
     638//    printf("Cloud entity with key %s is updated!\n", key.toString().toUtf8().constData());
     639    m_cloudEntityKeysBeingUpdated.remove(key);
    593640    emit sigCloudUpdateStateChanged();
    594641}
    595642
    596 bool UIChooserAbstractModel::containsCloudAccountKey(const UICloudAccountKey &key) const
    597 {
    598     return m_cloudAccountKeysBeingUpdated.contains(key);
     643bool UIChooserAbstractModel::containsCloudEntityKey(const UICloudEntityKey &key) const
     644{
     645    return m_cloudEntityKeysBeingUpdated.contains(key);
    599646}
    600647
    601648bool UIChooserAbstractModel::isCloudUpdateInProgress() const
    602649{
    603     return !m_cloudAccountKeysBeingUpdated.isEmpty();
     650    return !m_cloudEntityKeysBeingUpdated.isEmpty();
    604651}
    605652
     
    860907    }
    861908
    862     /* Remove cloud account key from the list of keys currently being updated: */
    863     const UICloudAccountKey accountKey = qMakePair(strProviderShortName, strProfileName);
    864     removeCloudAccountKey(accountKey);
     909    /* Remove cloud entity key from the list of keys currently being updated: */
     910    const UICloudEntityKey cloudEntityKey = UICloudEntityKey(strProviderShortName, strProfileName);
     911    removeCloudEntityKey(cloudEntityKey);
    865912}
    866913
     
    10601107            createCloudMachineNode(pProfileNode, UIFakeCloudVirtualMachineItemState_Loading);
    10611108
    1062             /* Insert cloud account key into a list of keys currently being updated: */
    1063             const UICloudAccountKey cloudAccountKey = qMakePair(strProviderShortName, strProfileName);
    1064             insertCloudAccountKey(cloudAccountKey);
     1109            /* Insert cloud entity key into a list of keys currently being updated: */
     1110            const UICloudEntityKey cloudEntityKey = UICloudEntityKey(strProviderShortName, strProfileName);
     1111            insertCloudEntityKey(cloudEntityKey);
    10651112
    10661113            /* Create list cloud machines task: */
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserAbstractModel.h

    r86678 r86731  
    3333#include "COMEnums.h"
    3434
    35 /* Typedefs: */
    36 typedef QPair<QString, QString> UICloudAccountKey;
    37 
    3835/* Forward declaration: */
    3936class UIChooser;
     
    4239class CCloudMachine;
    4340class CMachine;
     41
     42
     43/** Cloud entity key definition. */
     44struct UICloudEntityKey
     45{
     46    /** Constructs cloud entity key on the basis of passed parameters.
     47      * @param  strProviderShortName  Brings provider short name.
     48      * @param  strProfileName        Brings profile name.
     49      * @param  strMachineName        Brings machine name. */
     50    UICloudEntityKey(const QString &strProviderShortName = QString(),
     51                     const QString &strProfileName = QString(),
     52                     const QString &strMachineName = QString());
     53    /** Constructs cloud entity key on the basis of @a another one. */
     54    UICloudEntityKey(const UICloudEntityKey &another);
     55
     56    /** Returns whether this one key equals to @a another one. */
     57    bool operator==(const UICloudEntityKey &another) const;
     58
     59    /** Returns string key representation. */
     60    QString toString() const;
     61
     62    /** Holds provider short name. */
     63    QString m_strProviderShortName;
     64    /** Holds profile name. */
     65    QString m_strProfileName;
     66    /** Holds machine name. */
     67    QString m_strMachineName;
     68};
     69
     70inline uint qHash(const UICloudEntityKey &key, uint uSeed)
     71{
     72    return qHash(key.toString(), uSeed);
     73}
     74
    4475
    4576/** QObject extension used as VM Chooser-pane abstract model.
     
    134165    /** @name Cloud update stuff.
    135166      * @{ */
    136         /** Inserts cloud account @a key into a set of keys currently being updated. */
    137         void insertCloudAccountKey(const UICloudAccountKey &key);
    138         /** Removes cloud account @a key from a set of keys currently being updated. */
    139         void removeCloudAccountKey(const UICloudAccountKey &key);
    140         /** Returns whether cloud account @a key is a part of key set currently being updated. */
    141         bool containsCloudAccountKey(const UICloudAccountKey &key) const;
    142         /** Returns whether at least one cloud account update is in progress. */
     167        /** Inserts cloud entity @a key into a set of keys currently being updated. */
     168        void insertCloudEntityKey(const UICloudEntityKey &key);
     169        /** Removes cloud entity @a key from a set of keys currently being updated. */
     170        void removeCloudEntityKey(const UICloudEntityKey &key);
     171        /** Returns whether cloud entity @a key is a part of key set currently being updated. */
     172        bool containsCloudEntityKey(const UICloudEntityKey &key) const;
     173        /** Returns whether at least one cloud entity update is in progress. */
    143174        bool isCloudUpdateInProgress() const;
    144175    /** @} */
     
    345376    /** @name Cloud update stuff.
    346377      * @{ */
    347         /** Holds the set of cloud account keys currently being updated. */
    348         QSet<UICloudAccountKey>  m_cloudAccountKeysBeingUpdated;
     378        /** Holds the set of cloud entity keys currently being updated. */
     379        QSet<UICloudEntityKey>  m_cloudEntityKeysBeingUpdated;
    349380    /** @} */
    350381};
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp

    r86706 r86731  
    927927            case UIVirtualMachineItemType_CloudFake:
    928928            {
    929                 /* Compose cloud account key: */
     929                /* Compose cloud entity key: */
    930930                UIChooserItem *pParent = pItem->parentItem();
    931931                AssertPtrReturnVoid(pParent);
     
    933933                AssertPtrReturnVoid(pParentOfParent);
    934934
    935                 /* Insert cloud account key into a list of keys currently being updated: */
    936                 const UICloudAccountKey cloudAccountKey = qMakePair(pParentOfParent->name(), pParent->name());
    937                 insertCloudAccountKey(cloudAccountKey);
     935                /* Insert cloud entity key into a list of keys currently being updated: */
     936                const UICloudEntityKey cloudEntityKey = UICloudEntityKey(pParentOfParent->name(), pParent->name());
     937                insertCloudEntityKey(cloudEntityKey);
    938938
    939939                /* Create list cloud machines task: */
    940                 UITaskCloudListMachines *pTask = new UITaskCloudListMachines(cloudAccountKey.first /* short provider name */,
    941                                                                              cloudAccountKey.second /* profile name */,
     940                UITaskCloudListMachines *pTask = new UITaskCloudListMachines(cloudEntityKey.m_strProviderShortName,
     941                                                                             cloudEntityKey.m_strProfileName,
    942942                                                                             true /* with refresh? */);
    943943                AssertPtrReturnVoid(pTask);
     
    13091309{
    13101310    /* For every selected item: */
    1311     QSet<UICloudAccountKey> selectedCloudAccountKeys;
     1311    QSet<UICloudEntityKey> selectedCloudAccountKeys;
    13121312    foreach (UIChooserItem *pSelectedItem, selectedItems())
    13131313    {
    1314         /* Enumerate cloud account keys to update: */
     1314        /* Enumerate cloud entity keys to update: */
    13151315        switch (pSelectedItem->type())
    13161316        {
     
    13271327                        {
    13281328                            const QString strProfileName = pChildItem->name();
    1329                             const UICloudAccountKey cloudAccountKey = qMakePair(strProviderShortName, strProfileName);
    1330                             if (!selectedCloudAccountKeys.contains(cloudAccountKey))
    1331                                 selectedCloudAccountKeys.insert(cloudAccountKey);
     1329                            const UICloudEntityKey cloudEntityKey = UICloudEntityKey(strProviderShortName, strProfileName);
     1330                            if (!selectedCloudAccountKeys.contains(cloudEntityKey))
     1331                                selectedCloudAccountKeys.insert(cloudEntityKey);
    13321332                        }
    13331333                        break;
     
    13371337                        const QString strProviderShortName = pSelectedItem->parentItem()->name();
    13381338                        const QString strProfileName = pSelectedItem->name();
    1339                         const UICloudAccountKey cloudAccountKey = qMakePair(strProviderShortName, strProfileName);
    1340                         if (!selectedCloudAccountKeys.contains(cloudAccountKey))
    1341                             selectedCloudAccountKeys.insert(cloudAccountKey);
     1339                        const UICloudEntityKey cloudEntityKey = UICloudEntityKey(strProviderShortName, strProfileName);
     1340                        if (!selectedCloudAccountKeys.contains(cloudEntityKey))
     1341                            selectedCloudAccountKeys.insert(cloudEntityKey);
    13421342                        break;
    13431343                    }
     
    13561356                    const QString strProviderShortName = pMachineItem->parentItem()->parentItem()->name();
    13571357                    const QString strProfileName = pMachineItem->parentItem()->name();
    1358                     const UICloudAccountKey cloudAccountKey = qMakePair(strProviderShortName, strProfileName);
    1359                     if (!selectedCloudAccountKeys.contains(cloudAccountKey))
    1360                         selectedCloudAccountKeys.insert(cloudAccountKey);
     1358                    const UICloudEntityKey cloudEntityKey = UICloudEntityKey(strProviderShortName, strProfileName);
     1359                    if (!selectedCloudAccountKeys.contains(cloudEntityKey))
     1360                        selectedCloudAccountKeys.insert(cloudEntityKey);
    13611361                }
    13621362                break;
     
    13661366
    13671367    /* Restart List Cloud Machines task for selected account keys: */
    1368     foreach (const UICloudAccountKey &cloudAccountKey, selectedCloudAccountKeys)
    1369     {
    1370         /* Skip cloud account keys already being updated: */
    1371         if (containsCloudAccountKey(cloudAccountKey))
     1368    foreach (const UICloudEntityKey &cloudEntityKey, selectedCloudAccountKeys)
     1369    {
     1370        /* Skip cloud entity keys already being updated: */
     1371        if (containsCloudEntityKey(cloudEntityKey))
    13721372            continue;
    1373         insertCloudAccountKey(cloudAccountKey);
    1374 
    1375         /* Create a task for particular cloud account key: */
    1376         UITaskCloudListMachines *pTask = new UITaskCloudListMachines(cloudAccountKey.first /* short provider name */,
    1377                                                                      cloudAccountKey.second /* profile name */,
     1373        insertCloudEntityKey(cloudEntityKey);
     1374
     1375        /* Create a task for particular cloud entity key: */
     1376        UITaskCloudListMachines *pTask = new UITaskCloudListMachines(cloudEntityKey.m_strProviderShortName,
     1377                                                                     cloudEntityKey.m_strProfileName,
    13781378                                                                     false /* with refresh? */);
    13791379        AssertPtrReturnVoid(pTask);
     
    19231923
    19241924    /* For every selected machine-item: */
    1925     QSet<UICloudAccountKey> changedCloudAccountKeys;
     1925    QSet<UICloudEntityKey> changedCloudAccountKeys;
    19261926    foreach (UIChooserItemMachine *pMachineItem, machineItems)
    19271927    {
     
    19471947            continue;
    19481948        }
    1949         /* Compose cloud account key to update: */
     1949        /* Compose cloud entity key to update: */
    19501950        const QString strProviderShortName = pMachineItem->parentItem()->parentItem()->name();
    19511951        const QString strProfileName = pMachineItem->parentItem()->name();
    1952         const UICloudAccountKey cloudAccountKey = qMakePair(strProviderShortName, strProfileName);
    1953         if (!changedCloudAccountKeys.contains(cloudAccountKey))
    1954             changedCloudAccountKeys.insert(cloudAccountKey);
     1952        const UICloudEntityKey cloudEntityKey = UICloudEntityKey(strProviderShortName, strProfileName);
     1953        if (!changedCloudAccountKeys.contains(cloudEntityKey))
     1954            changedCloudAccountKeys.insert(cloudEntityKey);
    19551955    }
    19561956
    19571957    /* Restart List Cloud Machines task for required account keys: */
    1958     foreach (const UICloudAccountKey &cloudAccountKey, changedCloudAccountKeys)
    1959     {
    1960         /* Skip cloud account keys already being updated: */
    1961         if (containsCloudAccountKey(cloudAccountKey))
     1958    foreach (const UICloudEntityKey &cloudEntityKey, changedCloudAccountKeys)
     1959    {
     1960        /* Skip cloud entity keys already being updated: */
     1961        if (containsCloudEntityKey(cloudEntityKey))
    19621962            continue;
    1963         insertCloudAccountKey(cloudAccountKey);
    1964 
    1965         /* Create a task for particular cloud account key: */
    1966         UITaskCloudListMachines *pTask = new UITaskCloudListMachines(cloudAccountKey.first /* short provider name */,
    1967                                                                      cloudAccountKey.second /* profile name */,
     1963        insertCloudEntityKey(cloudEntityKey);
     1964
     1965        /* Create a task for particular cloud entity key: */
     1966        UITaskCloudListMachines *pTask = new UITaskCloudListMachines(cloudEntityKey.m_strProviderShortName,
     1967                                                                     cloudEntityKey.m_strProfileName,
    19681968                                                                     false /* with refresh? */);
    19691969        AssertPtrReturnVoid(pTask);
Note: See TracChangeset for help on using the changeset viewer.

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