예제 #1
0
    /* Insert hard-disks to the passed uimedium map.
     * Get existing one from the previous map if any. */
    foreach (CMedium medium, inputMediums)
    {
        /* If VBoxGlobal is cleaning up, abort immediately: */
        if (vboxGlobal().isCleaningUp())
            break;

        /* Prepare uimedium on the basis of current medium: */
        QString strMediumID = medium.GetId();
        UIMedium uimedium = m_mediums.contains(strMediumID) ? m_mediums[strMediumID] :
                                                              UIMedium(medium, mediumType);

        /* Insert uimedium into map: */
        outputMediums.insert(uimedium.id(), uimedium);
    }
void UIMediumEnumerator::createMedium(const UIMedium &medium)
{
    /* Get medium ID: */
    QString strMediumID = medium.id();
    LogRelFlow(("UIMediumEnumerator: Medium with ID={%s} created.\n", strMediumID.toAscii().constData()));

    /* Make sure medium doesn't exists already: */
    AssertReturnVoid(!m_mediums.contains(strMediumID));

    /* Insert medium: */
    m_mediums[strMediumID] = medium;

    /* Notify listener: */
    emit sigMediumCreated(strMediumID);
}
void UIMediumEnumerator::updateMedium(const UIMedium &medium)
{
    /* Get medium ID: */
    QString strMediumID = medium.id();
    LogRelFlow(("UIMediumEnumerator: Medium with ID={%s} updated.\n", strMediumID.toAscii().constData()));

    /* Make sure medium still exists: */
    AssertReturnVoid(m_mediums.contains(strMediumID));

    /* Update medium: */
    m_mediums[strMediumID] = medium;

    /* Notify listener: */
    emit sigMediumUpdated(strMediumID);
}
예제 #4
0
void UIMediumEnumerator::createMedium(const UIMedium &medium)
{
    /* Get medium ID: */
    const QString strMediumID = medium.id();

    /* Do not create UIMedium(s) with incorrect ID: */
    AssertReturnVoid(!strMediumID.isNull());
    AssertReturnVoid(strMediumID != UIMedium::nullID());
    /* Make sure medium doesn't exists already: */
    AssertReturnVoid(!m_mediums.contains(strMediumID));

    /* Insert medium: */
    m_mediums[strMediumID] = medium;
    LogRel(("GUI: UIMediumEnumerator: Medium with key={%s} created\n", strMediumID.toUtf8().constData()));

    /* Notify listener: */
    emit sigMediumCreated(strMediumID);
}
예제 #5
0
void UIMediumEnumerator::sltHandleMediumEnumerationTaskComplete(UITask *pTask)
{
    /* Make sure that is one of our tasks: */
    if (pTask->type() != UITask::Type_MediumEnumeration)
        return;
    AssertReturnVoid(m_tasks.contains(pTask));

    /* Get enumerated UIMedium: */
    const UIMedium uimedium = pTask->property("medium").value<UIMedium>();
    const QString strUIMediumKey = uimedium.key();
    LogRel2(("GUI: UIMediumEnumerator: Medium with key={%s} enumerated\n", strUIMediumKey.toUtf8().constData()));

    /* Remove task from internal set: */
    m_tasks.remove(pTask);

    /* Make sure such UIMedium still exists: */
    AssertReturnVoid(m_mediums.contains(strUIMediumKey));

    /* Check if UIMedium ID was changed: */
    const QString strUIMediumID = uimedium.id();
    /* UIMedium ID was changed to nullID: */
    if (strUIMediumID == UIMedium::nullID())
    {
        /* Delete this medium: */
        m_mediums.remove(strUIMediumKey);
        LogRel2(("GUI: UIMediumEnumerator: Medium with key={%s} closed and deleted (after enumeration)\n", strUIMediumKey.toUtf8().constData()));

        /* And notify listener about delete: */
        emit sigMediumDeleted(strUIMediumKey);
    }
    /* UIMedium ID was changed to something proper: */
    else if (strUIMediumID != strUIMediumKey)
    {
        /* We have to reinject enumerated medium: */
        m_mediums.remove(strUIMediumKey);
        m_mediums[strUIMediumID] = uimedium;
        m_mediums[strUIMediumID].setKey(strUIMediumID);
        LogRel2(("GUI: UIMediumEnumerator: Medium with key={%s} has it changed to {%s}\n", strUIMediumKey.toUtf8().constData(),
                                                                                           strUIMediumID.toUtf8().constData()));

        /* And notify listener about delete/create: */
        emit sigMediumDeleted(strUIMediumKey);
        emit sigMediumCreated(strUIMediumID);
    }
    /* UIMedium ID was not changed: */
    else
    {
        /* Just update enumerated medium: */
        m_mediums[strUIMediumID] = uimedium;
        LogRel2(("GUI: UIMediumEnumerator: Medium with key={%s} updated\n", strUIMediumID.toUtf8().constData()));

        /* And notify listener about update: */
        emit sigMediumEnumerated(strUIMediumID);
    }

    /* If there are no more tasks we know about: */
    if (m_tasks.isEmpty())
    {
        /* Notify listener: */
        LogRel(("GUI: UIMediumEnumerator: Medium-enumeration finished!\n"));
        m_fMediumEnumerationInProgress = false;
        emit sigMediumEnumerationFinished();
    }
}