VirtualBox

Changeset 48264 in vbox for trunk/src


Ignore:
Timestamp:
Sep 4, 2013 1:17:43 PM (11 years ago)
Author:
vboxsync
Message:

FE/Qt: 6909: Medium-enumeration cleanup/rework (part 8): Processing mediums by ID instead of copy, preparing for medium mapping.

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp

    r48261 r48264  
    17471747    it = m_mediums.insert (it, uimedium);
    17481748
    1749     emit sigMediumCreated(*it);
     1749    emit sigMediumCreated((*it).id());
    17501750}
    17511751
     
    17621762        *it = uimedium;
    17631763
    1764     emit sigMediumUpdated(*it);
     1764    emit sigMediumUpdated((*it).id());
    17651765}
    17661766
     
    17961796    {
    17971797        pParent->refresh();
    1798         emit sigMediumUpdated(*pParent);
     1798        emit sigMediumUpdated(pParent->id());
    17991799    }
    18001800}
     
    40184018
    40194019            /* Notify listeners about newly enumerated medium: */
    4020             emit sigMediumEnumerated(*pMediumEnumeratedEvent->m_iterator);
     4020            emit sigMediumEnumerated((*pMediumEnumeratedEvent->m_iterator).id());
    40214021
    40224022            /* Accept event: */
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h

    r48261 r48264  
    373373
    374374    /* Notifiers: Medium-processing stuff: */
    375     void sigMediumCreated(const UIMedium &medium);
    376     void sigMediumUpdated(const UIMedium &medium);
     375    void sigMediumCreated(const QString &strMediumID);
     376    void sigMediumUpdated(const QString &strMediumID);
    377377    void sigMediumDeleted(const QString &strMediumID);
    378378
    379379    /* Notifiers: Medium-enumeration stuff: */
    380380    void sigMediumEnumerationStarted();
    381     void sigMediumEnumerated(const UIMedium &medium);
     381    void sigMediumEnumerated(const QString &strMediumID);
    382382    void sigMediumEnumerationFinished();
    383383
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp

    r48260 r48264  
    272272}
    273273
    274 void UIMediumManager::sltHandleMediumCreated(const UIMedium &medium)
    275 {
     274void UIMediumManager::sltHandleMediumCreated(const QString &strMediumID)
     275{
     276    /* Search for corresponding medium: */
     277    UIMedium medium = vboxGlobal().medium(strMediumID);
     278
    276279    /* Ignore non-interesting mediums: */
    277280    if ((medium.isNull()) || (medium.isHostDrive()))
     
    337340}
    338341
    339 void UIMediumManager::sltHandleMediumUpdated(const UIMedium &medium)
    340 {
     342void UIMediumManager::sltHandleMediumUpdated(const QString &strMediumID)
     343{
     344    /* Search for corresponding medium: */
     345    UIMedium medium = vboxGlobal().medium(strMediumID);
     346
    341347    /* Ignore non-interesting mediums: */
    342348    if ((medium.isNull()) || (medium.isHostDrive()))
     
    420426    VBoxMediaList::const_iterator it;
    421427    for (it = mediums.begin(); it != mediums.end(); ++it)
    422         sltHandleMediumCreated(*it);
     428        sltHandleMediumCreated((*it).id());
    423429
    424430    /* Select the first item to be the current one
     
    438444}
    439445
    440 void UIMediumManager::sltHandleMediumEnumerated(const UIMedium &medium)
     446void UIMediumManager::sltHandleMediumEnumerated(const QString &strMediumID)
    441447{
    442448    /* Handle medium-update: */
    443     sltHandleMediumUpdated(medium);
     449    sltHandleMediumUpdated(strMediumID);
    444450
    445451    /* Advance progress-bar: */
     
    858864
    859865    /* Configure medium-processing connections: */
    860     connect(&vboxGlobal(), SIGNAL(sigMediumCreated(const UIMedium&)),
    861             this, SLOT(sltHandleMediumCreated(const UIMedium&)));
    862     connect(&vboxGlobal(), SIGNAL(sigMediumUpdated(const UIMedium&)),
    863             this, SLOT(sltHandleMediumUpdated(const UIMedium&)));
     866    connect(&vboxGlobal(), SIGNAL(sigMediumCreated(const QString&)),
     867            this, SLOT(sltHandleMediumCreated(const QString&)));
     868    connect(&vboxGlobal(), SIGNAL(sigMediumUpdated(const QString&)),
     869            this, SLOT(sltHandleMediumUpdated(const QString&)));
    864870    connect(&vboxGlobal(), SIGNAL(sigMediumDeleted(const QString&)),
    865871            this, SLOT(sltHandleMediumDeleted(const QString&)));
     
    868874    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerationStarted()),
    869875            this, SLOT(sltHandleMediumEnumerationStart()));
    870     connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const UIMedium&)),
    871             this, SLOT(sltHandleMediumEnumerated(const UIMedium&)));
     876    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const QString&)),
     877            this, SLOT(sltHandleMediumEnumerated(const QString&)));
    872878    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerationFinished()),
    873879            this, SLOT(sltHandleMediumEnumerationFinish()));
     
    11591165        for (it = mediums.begin(); it != mediums.end(); ++it)
    11601166        {
    1161             sltHandleMediumCreated(*it);
     1167            sltHandleMediumCreated((*it).id());
    11621168            /* But advance progress-bar only for created mediums: */
    11631169            if ((*it).state() != KMediumState_NotCreated)
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h

    r48260 r48264  
    6464
    6565    /* Handlers: Medium-processing stuff: */
    66     void sltHandleMediumCreated(const UIMedium &medium);
    67     void sltHandleMediumUpdated(const UIMedium &medium);
     66    void sltHandleMediumCreated(const QString &strMediumID);
     67    void sltHandleMediumUpdated(const QString &strMediumID);
    6868    void sltHandleMediumDeleted(const QString &strMediumID);
    6969
    7070    /* Handlers: Medium-enumeration stuff: */
    7171    void sltHandleMediumEnumerationStart();
    72     void sltHandleMediumEnumerated(const UIMedium &medium);
     72    void sltHandleMediumEnumerated(const QString &strMediumID);
    7373    void sltHandleMediumEnumerationFinish();
    7474
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp

    r48260 r48264  
    18311831
    18321832    /* Setup connections: */
    1833     connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const UIMedium&)),
    1834             this, SLOT(sltHandleMediumUpdated(const UIMedium&)));
    1835     connect(&vboxGlobal(), SIGNAL(sigMediumUpdated(const UIMedium&)),
    1836             this, SLOT(sltHandleMediumUpdated(const UIMedium&)));
     1833    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const QString&)),
     1834            this, SLOT(sltHandleMediumUpdated(const QString&)));
     1835    connect(&vboxGlobal(), SIGNAL(sigMediumUpdated(const QString&)),
     1836            this, SLOT(sltHandleMediumUpdated(const QString&)));
    18371837    connect(&vboxGlobal(), SIGNAL(sigMediumDeleted(const QString&)),
    18381838            this, SLOT(sltHandleMediumDeleted(const QString&)));
     
    22712271}
    22722272
    2273 void UIMachineSettingsStorage::sltHandleMediumUpdated(const UIMedium &medium)
    2274 {
     2273void UIMachineSettingsStorage::sltHandleMediumUpdated(const QString &strMediumID)
     2274{
     2275    /* Search for corresponding medium: */
     2276    UIMedium medium = vboxGlobal().medium(strMediumID);
     2277
    22752278    QModelIndex rootIndex = mStorageModel->root();
    2276     for (int i = 0; i < mStorageModel->rowCount (rootIndex); ++ i)
    2277     {
    2278         QModelIndex ctrIndex = rootIndex.child (i, 0);
    2279         for (int j = 0; j < mStorageModel->rowCount (ctrIndex); ++ j)
    2280         {
    2281             QModelIndex attIndex = ctrIndex.child (j, 0);
    2282             QString attMediumId = mStorageModel->data (attIndex, StorageModel::R_AttMediumId).toString();
     2279    for (int i = 0; i < mStorageModel->rowCount(rootIndex); ++i)
     2280    {
     2281        QModelIndex ctrIndex = rootIndex.child(i, 0);
     2282        for (int j = 0; j < mStorageModel->rowCount(ctrIndex); ++j)
     2283        {
     2284            QModelIndex attIndex = ctrIndex.child(j, 0);
     2285            QString attMediumId = mStorageModel->data(attIndex, StorageModel::R_AttMediumId).toString();
    22832286            if (attMediumId == medium.id())
    22842287            {
    2285                 mStorageModel->setData (attIndex, attMediumId, StorageModel::R_AttMediumId);
     2288                mStorageModel->setData(attIndex, attMediumId, StorageModel::R_AttMediumId);
    22862289
    22872290                /* Revalidate: */
     
    22952298{
    22962299    QModelIndex rootIndex = mStorageModel->root();
    2297     for (int i = 0; i < mStorageModel->rowCount (rootIndex); ++ i)
    2298     {
    2299         QModelIndex ctrIndex = rootIndex.child (i, 0);
    2300         for (int j = 0; j < mStorageModel->rowCount (ctrIndex); ++ j)
    2301         {
    2302             QModelIndex attIndex = ctrIndex.child (j, 0);
    2303             QString attMediumId = mStorageModel->data (attIndex, StorageModel::R_AttMediumId).toString();
     2300    for (int i = 0; i < mStorageModel->rowCount(rootIndex); ++i)
     2301    {
     2302        QModelIndex ctrIndex = rootIndex.child(i, 0);
     2303        for (int j = 0; j < mStorageModel->rowCount(ctrIndex); ++j)
     2304        {
     2305            QModelIndex attIndex = ctrIndex.child(j, 0);
     2306            QString attMediumId = mStorageModel->data(attIndex, StorageModel::R_AttMediumId).toString();
    23042307            if (attMediumId == strMediumID)
    23052308            {
    2306                 mStorageModel->setData (attIndex, UIMedium().id(), StorageModel::R_AttMediumId);
     2309                mStorageModel->setData(attIndex, UIMedium().id(), StorageModel::R_AttMediumId);
    23072310
    23082311                /* Revalidate: */
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.h

    r48260 r48264  
    683683
    684684    /* Handlers: Medium-processing stuff: */
    685     void sltHandleMediumUpdated(const UIMedium &medium);
     685    void sltHandleMediumUpdated(const QString &strMediumID);
    686686    void sltHandleMediumDeleted(const QString &strMediumID);
    687687
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxMediaComboBox.cpp

    r48261 r48264  
    3939
    4040    /* Setup medium-processing handlers: */
    41     connect(&vboxGlobal(), SIGNAL(sigMediumCreated(const UIMedium&)),
    42             this, SLOT(sltHandleMediumCreated(const UIMedium&)));
    43     connect(&vboxGlobal(), SIGNAL(sigMediumUpdated(const UIMedium&)),
    44             this, SLOT(sltHandleMediumUpdated(const UIMedium&)));
     41    connect(&vboxGlobal(), SIGNAL(sigMediumCreated(const QString&)),
     42            this, SLOT(sltHandleMediumCreated(const QString&)));
     43    connect(&vboxGlobal(), SIGNAL(sigMediumUpdated(const QString&)),
     44            this, SLOT(sltHandleMediumUpdated(const QString&)));
    4545    connect(&vboxGlobal(), SIGNAL(sigMediumDeleted(const QString&)),
    4646            this, SLOT(sltHandleMediumDeleted(const QString&)));
     
    4949    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerationStarted()),
    5050            this, SLOT(sltHandleMediumEnumerationStart()));
    51     connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const UIMedium&)),
    52             this, SLOT(sltHandleMediumUpdated(const UIMedium&)));
     51    connect(&vboxGlobal(), SIGNAL(sigMediumEnumerated(const QString&)),
     52            this, SLOT(sltHandleMediumUpdated(const QString&)));
    5353
    5454    /* Setup other connections */
     
    6969    VBoxMediaList list (vboxGlobal().currentMediaList());
    7070    foreach (UIMedium medium, list)
    71         sltHandleMediumCreated(medium);
     71        sltHandleMediumCreated(medium.id());
    7272
    7373    /* If at least one real medium present, process null medium */
     
    168168
    169169
    170 void VBoxMediaComboBox::sltHandleMediumEnumerationStart()
    171 {
    172     refresh();
    173 }
    174 
    175 void VBoxMediaComboBox::sltHandleMediumCreated(const UIMedium &medium)
    176 {
     170void VBoxMediaComboBox::sltHandleMediumCreated(const QString &strMediumID)
     171{
     172    /* Search for corresponding medium: */
     173    UIMedium medium = vboxGlobal().medium(strMediumID);
     174
    177175    if (medium.isNull() || medium.type() == mType)
    178176    {
     
    199197}
    200198
    201 void VBoxMediaComboBox::sltHandleMediumUpdated(const UIMedium &medium)
    202 {
     199void VBoxMediaComboBox::sltHandleMediumUpdated(const QString &strMediumID)
     200{
     201    /* Search for corresponding medium: */
     202    UIMedium medium = vboxGlobal().medium(strMediumID);
     203
    203204    if (medium.isNull() || medium.type() == mType)
    204205    {
     
    224225    mMedia.erase(mMedia.begin() + index);
    225226
    226     /* If no real medium left, add the null medium: */
     227    /* If no real medium left, add the NULL medium: */
    227228    if (count() == 0)
    228         sltHandleMediumCreated(UIMedium());
     229    {
     230        UIMedium nullMedium;
     231        sltHandleMediumCreated(nullMedium.id());
     232    }
    229233
    230234    /* Emit the signal to ensure the parent dialog handles the change of
    231235     * the selected item: */
    232236    emit activated(currentIndex());
     237}
     238
     239void VBoxMediaComboBox::sltHandleMediumEnumerationStart()
     240{
     241    refresh();
    233242}
    234243
     
    262271void VBoxMediaComboBox::appendItem (const UIMedium &aMedium)
    263272{
    264     if (!mShowDiffs && aMedium.parent() != NULL)
    265     {
    266         /* We are adding the direct machine diff in !mShowDiffs mode. Since its
    267          * base hard disk has been already appended (enumerated before), we want
    268          * to replace the base with the diff to avoid showing both (both would
    269          * be labeled using the base filename and therefore look like
    270          * duplicates). Note though that these visual duplicates are still
    271          * possible in !mShowDiffs mode if the same base hard disk is attached*
    272          * to the VM through different diffs (this is why we don't assert
    273          * below on findMediaIndex() == true). However, this situation is
    274          * unavoidable so we accept it assuming that the user will switch to
    275            mShowDiffs mode if he needs clarity. */
    276         int index;
    277         if (findMediaIndex (aMedium.root().id(), index))
    278         {
    279             replaceItem (index, aMedium);
    280             return;
    281         }
    282     }
    283 
    284273    mMedia.append (Medium (aMedium.id(), aMedium.location(),
    285274                           aMedium.toolTipCheckRO (!mShowDiffs, mShowNullItem && mType != UIMediumType_HardDisk)));
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxMediaComboBox.h

    r48261 r48264  
    5353
    5454    /* Handlers: Medium-processing stuff: */
    55     void sltHandleMediumCreated(const UIMedium &medium);
    56     void sltHandleMediumUpdated(const UIMedium &medium);
     55    void sltHandleMediumCreated(const QString &strMediumID);
     56    void sltHandleMediumUpdated(const QString &strMediumID);
    5757    void sltHandleMediumDeleted(const QString &strMediumID);
    5858
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