VirtualBox

Changeset 48061 in vbox


Ignore:
Timestamp:
Aug 26, 2013 1:26:46 PM (11 years ago)
Author:
vboxsync
Message:

FE/Qt: 6909: Medium-enumeration cleanup (part 3).

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

Legend:

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

    r47998 r48061  
    17401740        return;
    17411741
    1742     /* composes a list of all currently known media & their children */
     1742    /* Compose a list of all currently known mediums & their children: */
    17431743    m_mediums.clear();
    1744     addNullMediumToList (m_mediums, m_mediums.end());
    1745     addHardDisksToList (mVBox.GetHardDisks(), m_mediums, m_mediums.end());
    1746     addMediumsToList (mHost.GetDVDDrives(), m_mediums, m_mediums.end(), UIMediumType_DVD);
    1747     addMediumsToList (mVBox.GetDVDImages(), m_mediums, m_mediums.end(), UIMediumType_DVD);
    1748     addMediumsToList (mHost.GetFloppyDrives(), m_mediums, m_mediums.end(), UIMediumType_Floppy);
    1749     addMediumsToList (mVBox.GetFloppyImages(), m_mediums, m_mediums.end(), UIMediumType_Floppy);
    1750 
    1751     /* enumeration thread class */
     1744    addNullMediumToList(m_mediums, m_mediums.end());
     1745    addHardDisksToList(mVBox.GetHardDisks(), m_mediums, m_mediums.end());
     1746    addMediumsToList(mHost.GetDVDDrives(), m_mediums, m_mediums.end(), UIMediumType_DVD);
     1747    addMediumsToList(mVBox.GetDVDImages(), m_mediums, m_mediums.end(), UIMediumType_DVD);
     1748    addMediumsToList(mHost.GetFloppyDrives(), m_mediums, m_mediums.end(), UIMediumType_Floppy);
     1749    addMediumsToList(mVBox.GetFloppyImages(), m_mediums, m_mediums.end(), UIMediumType_Floppy);
     1750
     1751    /* Enumeration thread class: */
    17521752    class MediaEnumThread : public QThread
    17531753    {
    17541754    public:
    17551755
    1756         MediaEnumThread (VBoxMediaList &aList)
    1757             : mVector (aList.size())
    1758             , mSavedIt (aList.begin())
     1756        MediaEnumThread(VBoxMediaList &mediums)
     1757            : m_mediums(mediums.size())
     1758            , m_iterator(mediums.begin())
    17591759        {
    17601760            int i = 0;
    1761             for (VBoxMediaList::const_iterator it = aList.begin();
    1762                  it != aList.end(); ++ it)
    1763                 mVector [i ++] = *it;
    1764         }
    1765 
    1766         virtual void run()
    1767         {
    1768             LogFlow (("MediaEnumThread started.\n"));
     1761            for (VBoxMediaList::const_iterator it = mediums.begin(); it != mediums.end(); ++it)
     1762                m_mediums[i++] = *it;
     1763        }
     1764
     1765        void run()
     1766        {
     1767            LogFlow(("MediaEnumThread started.\n"));
    17691768            COMBase::InitializeCOM(false);
    17701769
    1771             CVirtualBox mVBox = vboxGlobal().virtualBox();
    1772             QObject *self = &vboxGlobal();
    1773 
    1774             /* Enumerate the list */
    1775             for (int i = 0; i < mVector.size() && !m_sfCleanupInProgress; ++ i)
     1770            QObject *pSelf = &vboxGlobal();
     1771
     1772            /* Enumerate medium list: */
     1773            for (int i = 0; i < m_mediums.size() && !m_sfCleanupInProgress; ++i)
    17761774            {
    1777                 mVector [i].blockAndQueryState();
    1778                 QApplication::
    1779                     postEvent (self,
    1780                                new VBoxMediaEnumEvent (mVector [i], mSavedIt));
    1781                 ++mSavedIt;
     1775                m_mediums[i].blockAndQueryState();
     1776                QApplication::postEvent(pSelf, new VBoxMediaEnumEvent(m_mediums[i], m_iterator));
     1777                ++m_iterator;
    17821778            }
    17831779
    1784             /* Post the end-of-enumeration event */
     1780            /* Post the end-of-enumeration event: */
    17851781            if (!m_sfCleanupInProgress)
    1786                 QApplication::postEvent (self, new VBoxMediaEnumEvent (mSavedIt));
     1782                QApplication::postEvent(pSelf, new VBoxMediaEnumEvent(m_iterator));
    17871783
    17881784            COMBase::CleanupCOM();
    1789             LogFlow (("MediaEnumThread finished.\n"));
     1785            LogFlow(("MediaEnumThread finished.\n"));
    17901786        }
    17911787
    17921788    private:
    17931789
    1794         QVector <UIMedium> mVector;
    1795         VBoxMediaList::iterator mSavedIt;
     1790        QVector<UIMedium> m_mediums;
     1791        VBoxMediaList::iterator m_iterator;
    17961792    };
    17971793
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMedium.cpp

    r47952 r48061  
    2525#include <QDir>
    2626
    27 /* GUI includes */
     27/* GUI includes: */
    2828#include "UIMedium.h"
    2929#include "VBoxGlobal.h"
     
    3737#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
    3838
    39 QString UIMedium::mTable = QString ("<table>%1</table>");
    40 QString UIMedium::mRow = QString ("<tr><td>%1</td></tr>");
    41 
    42 UIMedium& UIMedium::operator= (const UIMedium &aOther)
    43 {
    44     m_fHide = aOther.m_fHide;
    45     m_fAttachedToHiddenMachinesOnly = aOther.m_fAttachedToHiddenMachinesOnly;
    46 
    47     mMedium = aOther.medium();
    48     mType = aOther.type();
    49     mState = aOther.state();
    50     mLastAccessError = aOther.lastAccessError();
    51     mResult = aOther.result();
    52 
    53     mId = aOther.id();
    54     mName = aOther.name();
    55     mLocation = aOther.location();
    56 
    57     mSize = aOther.size();
    58     mLogicalSize = aOther.logicalSize();
    59 
    60     mHardDiskFormat = aOther.hardDiskFormat();
    61     mHardDiskType = aOther.hardDiskType();
    62 
    63     mStorageDetails = aOther.storageDetails();
    64 
    65     mUsage = aOther.usage();
    66     mToolTip = aOther.tip();
    67 
    68     mIsReadOnly = aOther.isReadOnly();
    69     mIsUsedInSnapshots = aOther.isUsedInSnapshots();
    70     mIsHostDrive = aOther.isHostDrive();
    71 
    72     mCurStateMachineIds = aOther.curStateMachineIds();
    73 
    74     mParent = aOther.parent();
    75 
    76     mNoDiffs = aOther.cache();
     39QString UIMedium::m_sstrTable = QString("<table>%1</table>");
     40QString UIMedium::m_sstrRow = QString("<tr><td>%1</td></tr>");
     41
     42UIMedium& UIMedium::operator=(const UIMedium &other)
     43{
     44    m_fHidden = other.m_fHidden;
     45    m_fAttachedToHiddenMachinesOnly = other.m_fAttachedToHiddenMachinesOnly;
     46
     47    m_medium = other.medium();
     48    m_type = other.type();
     49    m_state = other.state();
     50    m_strLastAccessError = other.lastAccessError();
     51    m_result = other.result();
     52
     53    m_strId = other.id();
     54    m_strName = other.name();
     55    m_strLocation = other.location();
     56
     57    m_strSize = other.size();
     58    m_strLogicalSize = other.logicalSize();
     59
     60    m_strHardDiskFormat = other.hardDiskFormat();
     61    m_strHardDiskType = other.hardDiskType();
     62
     63    m_strStorageDetails = other.storageDetails();
     64
     65    m_strUsage = other.usage();
     66    m_strToolTip = other.tip();
     67
     68    m_fReadOnly = other.isReadOnly();
     69    m_fUsedInSnapshots = other.isUsedInSnapshots();
     70    m_fHostDrive = other.isHostDrive();
     71
     72    m_curStateMachineIds = other.curStateMachineIds();
     73
     74    m_pParent = other.parent();
     75
     76    m_noDiffs = other.cache();
    7777
    7878    return *this;
     
    9595void UIMedium::blockAndQueryState()
    9696{
    97     if (mMedium.isNull()) return;
    98 
    99     mState = mMedium.RefreshState();
    100 
    101     /* Save the result to distinguish between inaccessible and e.g. uninitialized objects */
    102     mResult = COMResult (mMedium);
    103 
    104     if (!mResult.isOk())
    105     {
    106         mState = KMediumState_Inaccessible;
    107         mLastAccessError = QString::null;
     97    if (m_medium.isNull())
     98        return;
     99
     100    m_state = m_medium.RefreshState();
     101
     102    /* Save the result to distinguish between
     103     * inaccessible and e.g. uninitialized objects: */
     104    m_result = COMResult(m_medium);
     105    if (!m_result.isOk())
     106    {
     107        m_state = KMediumState_Inaccessible;
     108        m_strLastAccessError = QString();
    108109    }
    109110    else
    110         mLastAccessError = mMedium.GetLastAccessError();
     111        m_strLastAccessError = m_medium.GetLastAccessError();
    111112
    112113    refresh();
     
    125126{
    126127    /* We assume these flags are 'false' by default: */
    127     m_fHide = false;
     128    m_fHidden = false;
    128129    m_fAttachedToHiddenMachinesOnly = false;
    129130
    130131    /* Detect basic parameters */
    131     mId = mMedium.isNull() ? QUuid().toString().remove ('{').remove ('}') : mMedium.GetId();
    132 
    133     mIsHostDrive = mMedium.isNull() ? false : mMedium.GetHostDrive();
    134 
    135     if (mMedium.isNull())
    136         mName = VBoxGlobal::tr ("Empty", "medium");
    137     else if (!mIsHostDrive)
    138         mName = mMedium.GetName();
    139     else if (mMedium.GetDescription().isEmpty())
    140         mName = VBoxGlobal::tr ("Host Drive '%1'", "medium").arg (QDir::toNativeSeparators (mMedium.GetLocation()));
     132    m_strId = m_medium.isNull() ? QUuid().toString().remove ('{').remove ('}') : m_medium.GetId();
     133
     134    m_fHostDrive = m_medium.isNull() ? false : m_medium.GetHostDrive();
     135
     136    if (m_medium.isNull())
     137        m_strName = VBoxGlobal::tr("Empty", "medium");
     138    else if (!m_fHostDrive)
     139        m_strName = m_medium.GetName();
     140    else if (m_medium.GetDescription().isEmpty())
     141        m_strName = VBoxGlobal::tr("Host Drive '%1'", "medium").arg(QDir::toNativeSeparators(m_medium.GetLocation()));
    141142    else
    142         mName = VBoxGlobal::tr ("Host Drive %1 (%2)", "medium").arg (mMedium.GetDescription(), mMedium.GetName());
    143 
    144     mLocation = mMedium.isNull() || mIsHostDrive ? QString ("--") :
    145                 QDir::toNativeSeparators (mMedium.GetLocation());
     143        m_strName = VBoxGlobal::tr("Host Drive %1 (%2)", "medium").arg(m_medium.GetDescription(), m_medium.GetName());
     144
     145    m_strLocation = m_medium.isNull() || m_fHostDrive ? QString("--") :
     146                    QDir::toNativeSeparators(m_medium.GetLocation());
    146147
    147148    QString tmp;
    148     if (!mMedium.isNull())
    149         tmp = mMedium.GetProperty("Special/GUI/Hints");
     149    if (!m_medium.isNull())
     150        tmp = m_medium.GetProperty("Special/GUI/Hints");
    150151    if (!tmp.isEmpty())
    151152    {
    152153        QStringList tmpList(tmp.split(','));
    153154        if (tmpList.contains("Hide", Qt::CaseInsensitive))
    154             m_fHide = true;
    155     }
    156 
    157     if (mType == UIMediumType_HardDisk)
    158     {
    159         mHardDiskFormat = mMedium.GetFormat();
    160         mHardDiskType = vboxGlobal().mediumTypeString (mMedium);
    161 
    162         QVector<KMediumVariant> mediumVariants_QVector = mMedium.GetVariant();
    163         qlonglong mediumVariants_qlonglong = 0;
    164         for (int i = 0; i < mediumVariants_QVector.size(); i++)
    165             mediumVariants_qlonglong |= mediumVariants_QVector[i];
    166 
    167         mStorageDetails = gpConverter->toString((KMediumVariant)mediumVariants_qlonglong);
    168         mIsReadOnly = mMedium.GetReadOnly();
    169 
    170         /* Adjust the parent if its possible */
    171         CMedium parentMedium = mMedium.GetParent();
    172         Assert (!parentMedium.isNull() || mParent == NULL);
    173 
    174         if (!parentMedium.isNull() && (mParent == NULL || mParent->mMedium != parentMedium))
    175         {
    176             /* Search for the parent (might be there) */
     155            m_fHidden = true;
     156    }
     157
     158    if (m_type == UIMediumType_HardDisk)
     159    {
     160        m_strHardDiskFormat = m_medium.GetFormat();
     161        m_strHardDiskType = vboxGlobal().mediumTypeString(m_medium);
     162
     163        QVector<KMediumVariant> mediumVariants = m_medium.GetVariant();
     164        qlonglong mediumVariant = 0;
     165        for (int i = 0; i < mediumVariants.size(); ++i)
     166            mediumVariant |= mediumVariants[i];
     167
     168        m_strStorageDetails = gpConverter->toString((KMediumVariant)mediumVariant);
     169        m_fReadOnly = m_medium.GetReadOnly();
     170
     171        /* Adjust the parent if its possible: */
     172        CMedium parentMedium = m_medium.GetParent();
     173        Assert(!parentMedium.isNull() || m_pParent == NULL);
     174
     175        if (!parentMedium.isNull() && (m_pParent == NULL || m_pParent->m_medium != parentMedium))
     176        {
     177            /* Search for the parent (might be there): */
    177178            const VBoxMediaList &list = vboxGlobal().currentMediaList();
    178             for (VBoxMediaList::const_iterator it = list.begin(); it != list.end(); ++ it)
     179            for (VBoxMediaList::const_iterator it = list.begin(); it != list.end(); ++it)
    179180            {
    180                 if ((*it).mType != UIMediumType_HardDisk)
     181                if ((*it).m_type != UIMediumType_HardDisk)
    181182                    break;
    182183
    183                 if ((*it).mMedium == parentMedium)
     184                if ((*it).m_medium == parentMedium)
    184185                {
    185                     mParent = unconst (&*it);
     186                    m_pParent = unconst(&*it);
    186187                    break;
    187188                }
     
    191192    else
    192193    {
    193         mHardDiskFormat = QString::null;
    194         mHardDiskType = QString::null;
    195         mIsReadOnly = false;
     194        m_strHardDiskFormat = QString();
     195        m_strHardDiskType = QString();
     196        m_fReadOnly = false;
    196197    }
    197198
    198199    /* Detect sizes */
    199     if (mState != KMediumState_Inaccessible && mState != KMediumState_NotCreated && !mIsHostDrive)
    200     {
    201         mSize = vboxGlobal().formatSize (mMedium.GetSize());
    202         if (mType == UIMediumType_HardDisk)
    203             mLogicalSize = vboxGlobal().formatSize(mMedium.GetLogicalSize());
     200    if (m_state != KMediumState_Inaccessible && m_state != KMediumState_NotCreated && !m_fHostDrive)
     201    {
     202        m_strSize = vboxGlobal().formatSize(m_medium.GetSize());
     203        if (m_type == UIMediumType_HardDisk)
     204            m_strLogicalSize = vboxGlobal().formatSize(m_medium.GetLogicalSize());
    204205        else
    205             mLogicalSize = mSize;
     206            m_strLogicalSize = m_strSize;
    206207    }
    207208    else
    208209    {
    209         mSize = mLogicalSize = QString ("--");
     210        m_strSize = m_strLogicalSize = QString("--");
    210211    }
    211212
    212213    /* Detect usage */
    213     mUsage = QString::null;
    214     if (!mMedium.isNull())
    215     {
    216         mCurStateMachineIds.clear();
    217         QVector <QString> machineIds = mMedium.GetMachineIds();
     214    m_strUsage = QString();
     215    if (!m_medium.isNull())
     216    {
     217        m_curStateMachineIds.clear();
     218        QVector <QString> machineIds = m_medium.GetMachineIds();
    218219        if (machineIds.size() > 0)
    219220        {
     
    221222            m_fAttachedToHiddenMachinesOnly = true;
    222223
    223             QString sUsage;
     224            QString strUsage;
    224225
    225226            CVirtualBox vbox = vboxGlobal().virtualBox();
    226227
    227             for (QVector <QString>::ConstIterator it = machineIds.begin(); it != machineIds.end(); ++ it)
     228            for (QVector <QString>::ConstIterator it = machineIds.begin(); it != machineIds.end(); ++it)
    228229            {
    229230                CMachine machine = vbox.FindMachine(*it);
     
    245246                    m_fAttachedToHiddenMachinesOnly = false;
    246247
    247                 QString sName = machine.GetName();
    248                 QString sSnapshots;
    249 
    250                 QVector <QString> snapIds = mMedium.GetSnapshotIds (*it);
    251                 for (QVector <QString>::ConstIterator jt = snapIds.begin(); jt != snapIds.end(); ++ jt)
     248                QString strName = machine.GetName();
     249                QString strSnapshots;
     250
     251                QVector <QString> snapIds = m_medium.GetSnapshotIds(*it);
     252                for (QVector <QString>::ConstIterator jt = snapIds.begin(); jt != snapIds.end(); ++jt)
    252253                {
    253254                    if (*jt == *it)
     
    256257                         * state, we don't distinguish this for now by always
    257258                         * giving the VM name in front of snapshot names. */
    258                         mCurStateMachineIds.push_back (*jt);
     259                        m_curStateMachineIds.push_back(*jt);
    259260                        continue;
    260261                    }
    261262
    262263                    CSnapshot snapshot = machine.FindSnapshot(*jt);
    263                     if (!snapshot.isNull())           // can be NULL while takeSnaphot is in progress
     264                    if (!snapshot.isNull()) // can be NULL while takeSnaphot is in progress
    264265                    {
    265                         if (!sSnapshots.isNull())
    266                             sSnapshots += ", ";
    267                         sSnapshots += snapshot.GetName();
     266                        if (!strSnapshots.isNull())
     267                            strSnapshots += ", ";
     268                        strSnapshots += snapshot.GetName();
    268269                    }
    269270                }
    270271
    271                 if (!sUsage.isNull())
    272                     sUsage += ", ";
    273 
    274                 sUsage += sName;
    275 
    276                 if (!sSnapshots.isNull())
     272                if (!strUsage.isNull())
     273                    strUsage += ", ";
     274
     275                strUsage += strName;
     276
     277                if (!strSnapshots.isNull())
    277278                {
    278                     sUsage += QString (" (%2)").arg (sSnapshots);
    279                     mIsUsedInSnapshots = true;
     279                    strUsage += QString(" (%2)").arg(strSnapshots);
     280                    m_fUsedInSnapshots = true;
    280281                }
    281282                else
    282                     mIsUsedInSnapshots = false;
     283                    m_fUsedInSnapshots = false;
    283284            }
    284285
    285             if (!sUsage.isEmpty())
    286                 mUsage = sUsage;
     286            if (!strUsage.isEmpty())
     287                m_strUsage = strUsage;
    287288        }
    288289    }
    289290
    290291    /* Compose the tooltip */
    291     if (!mMedium.isNull())
    292     {
    293         mToolTip = mRow.arg (QString ("<p style=white-space:pre><b>%1</b></p>").arg (mIsHostDrive ? mName : mLocation));
    294 
    295         if (mType == UIMediumType_HardDisk)
    296         {
    297             mToolTip += mRow.arg (VBoxGlobal::tr ("<p style=white-space:pre>Type (Format):  %1 (%2)</p>", "medium")
    298                                                   .arg (mHardDiskType).arg (mHardDiskFormat));
    299         }
    300 
    301         mToolTip += mRow.arg (VBoxGlobal::tr ("<p>Attached to:  %1</p>", "image")
    302                                               .arg (mUsage.isNull() ? VBoxGlobal::tr ("<i>Not Attached</i>", "image") : mUsage));
    303 
    304         switch (mState)
     292    if (!m_medium.isNull())
     293    {
     294        m_strToolTip = m_sstrRow.arg(QString("<p style=white-space:pre><b>%1</b></p>").arg(m_fHostDrive ? m_strName : m_strLocation));
     295
     296        if (m_type == UIMediumType_HardDisk)
     297        {
     298            m_strToolTip += m_sstrRow.arg(VBoxGlobal::tr("<p style=white-space:pre>Type (Format):  %1 (%2)</p>", "medium")
     299                                                         .arg(m_strHardDiskType).arg(m_strHardDiskFormat));
     300        }
     301
     302        m_strToolTip += m_sstrRow.arg(VBoxGlobal::tr("<p>Attached to:  %1</p>", "image")
     303                                                     .arg(m_strUsage.isNull() ? VBoxGlobal::tr("<i>Not Attached</i>", "image") : m_strUsage));
     304
     305        switch (m_state)
    305306        {
    306307            case KMediumState_NotCreated:
    307308            {
    308                 mToolTip += mRow.arg (VBoxGlobal::tr ("<i>Checking accessibility...</i>", "medium"));
     309                m_strToolTip += m_sstrRow.arg(VBoxGlobal::tr("<i>Checking accessibility...</i>", "medium"));
    309310                break;
    310311            }
    311312            case KMediumState_Inaccessible:
    312313            {
    313                 if (mResult.isOk())
     314                if (m_result.isOk())
    314315                {
    315316                    /* Not Accessible */
    316                     mToolTip += mRow.arg ("<hr>") + mRow.arg (VBoxGlobal::highlight (mLastAccessError, true /* aToolTip */));
     317                    m_strToolTip += m_sstrRow.arg("<hr>") + m_sstrRow.arg(VBoxGlobal::highlight(m_strLastAccessError, true /* aToolTip */));
    317318                }
    318319                else
    319320                {
    320                     /* Accessibility check (eg GetState()) itself failed */
    321                     mToolTip += mRow.arg ("<hr>") + mRow.arg (VBoxGlobal::tr ("Failed to check media accessibility.", "medium")) +
    322                                 mRow.arg (UIMessageCenter::formatErrorInfo (mResult) + ".");
     321                    /* Accessibility check (eg GetState()) itself failed: */
     322                    m_strToolTip += m_sstrRow.arg("<hr>") + m_sstrRow.arg(VBoxGlobal::tr("Failed to check media accessibility.", "medium")) +
     323                                    m_sstrRow.arg(UIMessageCenter::formatErrorInfo(m_result) + ".");
    323324                }
    324325                break;
     
    329330    }
    330331
    331     /* Reset mNoDiffs */
    332     mNoDiffs.isSet = false;
     332    /* Reset m_noDiffs */
     333    m_noDiffs.isSet = false;
    333334}
    334335
     
    339340UIMedium &UIMedium::root() const
    340341{
    341     UIMedium *pRoot = unconst (this);
    342     while (pRoot->mParent != NULL)
    343         pRoot = pRoot->mParent;
     342    UIMedium *pRoot = unconst(this);
     343    while (pRoot->m_pParent != NULL)
     344        pRoot = pRoot->m_pParent;
    344345
    345346    return *pRoot;
     
    354355 * medium is actually a differencing hard disk.
    355356 *
    356  * @param aNoDiffs  @c true to enable user-friendly "don't show diffs" mode.
    357  * @param aCheckRO  @c true to perform the #readOnly() check and add a notice
     357 * @param fNoDiffs  @c true to enable user-friendly "don't show diffs" mode.
     358 * @param fCheckRO  @c true to perform the #readOnly() check and add a notice
    358359 *                  accordingly.
    359360 */
    360 QString UIMedium::toolTip (bool aNoDiffs /* = false */, bool aCheckRO /* = false */, bool aNullAllowed /* = false */) const
    361 {
    362     QString sTip;
    363 
    364     if (mMedium.isNull())
    365     {
    366         sTip = aNullAllowed ? mRow.arg (VBoxGlobal::tr ("<b>No medium selected</b>", "medium")) +
    367                               mRow.arg (VBoxGlobal::tr ("You can also change this while the machine is running.")) :
    368                               mRow.arg (VBoxGlobal::tr ("<b>No media available</b>", "medium")) +
    369                               mRow.arg (VBoxGlobal::tr ("You can create media images using the virtual media manager."));
     361QString UIMedium::toolTip (bool fNoDiffs /* = false */, bool fCheckRO /* = false */, bool fNullAllowed /* = false */) const
     362{
     363    QString strTip;
     364
     365    if (m_medium.isNull())
     366    {
     367        strTip = fNullAllowed ? m_sstrRow.arg(VBoxGlobal::tr("<b>No medium selected</b>", "medium")) +
     368                                m_sstrRow.arg(VBoxGlobal::tr("You can also change this while the machine is running.")) :
     369                                m_sstrRow.arg(VBoxGlobal::tr("<b>No media available</b>", "medium")) +
     370                                m_sstrRow.arg(VBoxGlobal::tr("You can create media images using the virtual media manager."));
    370371    }
    371372    else
    372373    {
    373         unconst (this)->checkNoDiffs (aNoDiffs);
    374 
    375         sTip = aNoDiffs ? mNoDiffs.toolTip : mToolTip;
    376 
    377         if (aCheckRO && mIsReadOnly)
    378             sTip += mRow.arg ("<hr>") +
    379                     mRow.arg (VBoxGlobal::tr ("Attaching this hard disk will be performed indirectly using "
    380                                               "a newly created differencing hard disk.", "medium"));
    381     }
    382 
    383     return mTable.arg (sTip);
     374        unconst(this)->checkNoDiffs(fNoDiffs);
     375
     376        strTip = fNoDiffs ? m_noDiffs.toolTip : m_strToolTip;
     377
     378        if (fCheckRO && m_fReadOnly)
     379            strTip += m_sstrRow.arg("<hr>") +
     380                      m_sstrRow.arg(VBoxGlobal::tr("Attaching this hard disk will be performed indirectly using "
     381                                                   "a newly created differencing hard disk.", "medium"));
     382    }
     383
     384    return m_sstrTable.arg(strTip);
    384385}
    385386
     
    394395 * media icon.
    395396 *
    396  * @param aNoDiffs  @c true to enable user-friendly "don't show diffs" mode.
    397  * @param aCheckRO  @c true to perform the #readOnly() check and change the icon
     397 * @param fNoDiffs  @c true to enable user-friendly "don't show diffs" mode.
     398 * @param fCheckRO  @c true to perform the #readOnly() check and change the icon
    398399 *                  accordingly.
    399400 */
    400 QPixmap UIMedium::icon (bool aNoDiffs /* = false */, bool aCheckRO /* = false */) const
     401QPixmap UIMedium::icon(bool fNoDiffs /* = false */, bool fCheckRO /* = false */) const
    401402{
    402403    QPixmap pixmap;
    403404
    404     if (state (aNoDiffs) == KMediumState_Inaccessible)
    405         pixmap = result (aNoDiffs).isOk() ? vboxGlobal().warningIcon() : vboxGlobal().errorIcon();
    406 
    407     if (aCheckRO && mIsReadOnly)
    408         pixmap = VBoxGlobal::joinPixmaps (pixmap, QPixmap (":/hd_new_16px.png"));
     405    if (state(fNoDiffs) == KMediumState_Inaccessible)
     406        pixmap = result(fNoDiffs).isOk() ? vboxGlobal().warningIcon() : vboxGlobal().errorIcon();
     407
     408    if (fCheckRO && m_fReadOnly)
     409        pixmap = VBoxGlobal::joinPixmaps(pixmap, QPixmap(":/hd_new_16px.png"));
    409410
    410411    return pixmap;
     
    415416 *
    416417 * For hard disks, the details include the location, type and the logical size
    417  * of the hard disk. Note that if @a aNoDiffs is @c true, these properties are
     418 * of the hard disk. Note that if @a fNoDiffs is @c true, these properties are
    418419 * queried on the root hard disk of the given hard disk because the primary
    419420 * purpose of the returned string is to be human readable (so that seeing a
     
    421422 *
    422423 * For other media types, the location and the actual size are returned.
    423  * Arguments @a aPredictDiff and @a aNoRoot are ignored in this case.
    424  *
    425  * @param aNoDiffs      @c true to enable user-friendly "don't show diffs" mode.
    426  * @param aPredictDiff  @c true to mark the hard disk as differencing if
     424 * Arguments @a fPredictDiff and @a aNoRoot are ignored in this case.
     425 *
     426 * @param fNoDiffs      @c true to enable user-friendly "don't show diffs" mode.
     427 * @param fPredictDiff  @c true to mark the hard disk as differencing if
    427428 *                      attaching it would create a differencing hard disk (not
    428429 *                      used when @a aNoRoot is true).
    429  * @param aUseHTML      @c true to allow for emphasizing using bold and italics.
    430  *
    431  * @note Use #detailsHTML() instead of passing @c true for @a aUseHTML.
     430 * @param fUseHTML      @c true to allow for emphasizing using bold and italics.
     431 *
     432 * @note Use #detailsHTML() instead of passing @c true for @a fUseHTML.
    432433 *
    433434 * @note The media object may become uninitialized by a third party while this
     
    435436 *       an empty string.
    436437 */
    437 QString UIMedium::details (bool aNoDiffs /* = false */,
    438                              bool aPredictDiff /* = false */,
    439                              bool aUseHTML /* = false */) const
    440 {
    441     // @todo the below check is rough; if mMedium becomes uninitialized, any
     438QString UIMedium::details(bool fNoDiffs /* = false */,
     439                          bool fPredictDiff /* = false */,
     440                          bool fUseHTML /* = false */) const
     441{
     442    // @todo the below check is rough; if m_medium becomes uninitialized, any
    442443    // of getters called afterwards will also fail. The same relates to the
    443444    // root hard disk object (that will be the hard disk itself in case of
     
    454455    // @bugref{2149}.
    455456
    456     if (mMedium.isNull() || mIsHostDrive)
    457         return mName;
    458 
    459     if (!mMedium.isOk())
    460         return QString::null;
    461 
    462     QString sDetails, sStr;
    463 
    464     UIMedium *pRoot = unconst (this);
    465     KMediumState eState = mState;
    466 
    467     if (mType == UIMediumType_HardDisk)
    468     {
    469         if (aNoDiffs)
     457    if (m_medium.isNull() || m_fHostDrive)
     458        return m_strName;
     459
     460    if (!m_medium.isOk())
     461        return QString();
     462
     463    QString strDetails, strText;
     464
     465    UIMedium *pRoot = unconst(this);
     466    KMediumState eState = m_state;
     467
     468    if (m_type == UIMediumType_HardDisk)
     469    {
     470        if (fNoDiffs)
    470471        {
    471472            pRoot = &this->root();
    472473
    473             bool isDiff = (!aPredictDiff && mParent != NULL) || (aPredictDiff && mIsReadOnly);
    474 
    475             sDetails = isDiff && aUseHTML ?
    476                 QString ("<i>%1</i>, ").arg (pRoot->mHardDiskType) :
    477                 QString ("%1, ").arg (pRoot->mHardDiskType);
    478 
    479             eState = this->state (true /* aNoDiffs */);
    480 
    481             if (pRoot->mState == KMediumState_NotCreated)
     474            bool isDiff = (!fPredictDiff && m_pParent != NULL) || (fPredictDiff && m_fReadOnly);
     475
     476            strDetails = isDiff && fUseHTML ?
     477                QString("<i>%1</i>, ").arg(pRoot->m_strHardDiskType) :
     478                QString("%1, ").arg(pRoot->m_strHardDiskType);
     479
     480            eState = this->state(true /* fNoDiffs */);
     481
     482            if (pRoot->m_state == KMediumState_NotCreated)
    482483                eState = KMediumState_NotCreated;
    483484        }
    484485        else
    485486        {
    486             sDetails = QString ("%1, ").arg (pRoot->mHardDiskType);
     487            strDetails = QString("%1, ").arg(pRoot->m_strHardDiskType);
    487488        }
    488489    }
     
    493494    {
    494495        case KMediumState_NotCreated:
    495             sStr = VBoxGlobal::tr ("Checking...", "medium");
    496             sDetails += aUseHTML ? QString ("<i>%1</i>").arg (sStr) : sStr;
     496            strText = VBoxGlobal::tr("Checking...", "medium");
     497            strDetails += fUseHTML ? QString("<i>%1</i>").arg(strText) : strText;
    497498            break;
    498499        case KMediumState_Inaccessible:
    499             sStr = VBoxGlobal::tr ("Inaccessible", "medium");
    500             sDetails += aUseHTML ? QString ("<b>%1</b>").arg (sStr) : sStr;
     500            strText = VBoxGlobal::tr("Inaccessible", "medium");
     501            strDetails += fUseHTML ? QString("<b>%1</b>").arg(strText) : strText;
    501502            break;
    502503        default:
    503             sDetails += mType == UIMediumType_HardDisk ? pRoot->mLogicalSize : pRoot->mSize;
     504            strDetails += m_type == UIMediumType_HardDisk ? pRoot->m_strLogicalSize : pRoot->m_strSize;
    504505            break;
    505506    }
    506507
    507     sDetails = aUseHTML ?
    508         QString ("%1 (<nobr>%2</nobr>)").arg (VBoxGlobal::locationForHTML (pRoot->mName), sDetails) :
    509         QString ("%1 (%2)").arg (VBoxGlobal::locationForHTML (pRoot->mName), sDetails);
    510 
    511     return sDetails;
    512 }
    513 
    514 /**
    515  * Checks if mNoDiffs is filled in and does it if not.
    516  *
    517  * @param aNoDiffs  @if false, this method immediately returns.
    518  */
    519 void UIMedium::checkNoDiffs (bool aNoDiffs)
    520 {
    521     if (!aNoDiffs || mNoDiffs.isSet)
     508    strDetails = fUseHTML ?
     509        QString("%1 (<nobr>%2</nobr>)").arg(VBoxGlobal::locationForHTML(pRoot->m_strName), strDetails) :
     510        QString("%1 (%2)").arg(VBoxGlobal::locationForHTML(pRoot->m_strName), strDetails);
     511
     512    return strDetails;
     513}
     514
     515/**
     516 * Checks if m_noDiffs is filled in and does it if not.
     517 *
     518 * @param fNoDiffs  @if false, this method immediately returns.
     519 */
     520void UIMedium::checkNoDiffs(bool fNoDiffs)
     521{
     522    if (!fNoDiffs || m_noDiffs.isSet)
    522523        return;
    523524
    524     mNoDiffs.toolTip = QString::null;
    525 
    526     mNoDiffs.state = mState;
    527     for (UIMedium *cur = mParent; cur != NULL; cur = cur->mParent)
    528     {
    529         if (cur->mState == KMediumState_Inaccessible)
    530         {
    531             mNoDiffs.state = cur->mState;
    532 
    533             if (mNoDiffs.toolTip.isNull())
    534                 mNoDiffs.toolTip = mRow.arg (VBoxGlobal::tr ("Some of the media in this hard disk chain "
    535                                                              "are inaccessible. Please use the Virtual Media "
    536                                                              "Manager in <b>Show Differencing Hard Disks</b> "
    537                                                              "mode to inspect these media.", "medium"));
    538 
    539             if (!cur->mResult.isOk())
     525    m_noDiffs.toolTip = QString();
     526
     527    m_noDiffs.state = m_state;
     528    for (UIMedium *cur = m_pParent; cur != NULL; cur = cur->m_pParent)
     529    {
     530        if (cur->m_state == KMediumState_Inaccessible)
     531        {
     532            m_noDiffs.state = cur->m_state;
     533
     534            if (m_noDiffs.toolTip.isNull())
     535                m_noDiffs.toolTip = m_sstrRow.arg(VBoxGlobal::tr("Some of the media in this hard disk chain "
     536                                                                 "are inaccessible. Please use the Virtual Media "
     537                                                                 "Manager in <b>Show Differencing Hard Disks</b> "
     538                                                                 "mode to inspect these media.", "medium"));
     539
     540            if (!cur->m_result.isOk())
    540541            {
    541                 mNoDiffs.result = cur->mResult;
     542                m_noDiffs.result = cur->m_result;
    542543                break;
    543544            }
     
    545546    }
    546547
    547     if (mParent != NULL && !mIsReadOnly)
    548     {
    549         mNoDiffs.toolTip = root().tip() +
    550                            mRow.arg ("<hr>") +
    551                            mRow.arg (VBoxGlobal::tr ("This base hard disk is indirectly attached using "
    552                                                      "the following differencing hard disk:", "medium")) +
    553                            mToolTip + mNoDiffs.toolTip;
    554     }
    555 
    556     if (mNoDiffs.toolTip.isNull())
    557         mNoDiffs.toolTip = mToolTip;
    558 
    559     mNoDiffs.isSet = true;
    560 }
    561 
     548    if (m_pParent != NULL && !m_fReadOnly)
     549    {
     550        m_noDiffs.toolTip = root().tip() +
     551                            m_sstrRow.arg("<hr>") +
     552                            m_sstrRow.arg(VBoxGlobal::tr("This base hard disk is indirectly attached using "
     553                                                         "the following differencing hard disk:", "medium")) +
     554                            m_strToolTip + m_noDiffs.toolTip;
     555    }
     556
     557    if (m_noDiffs.toolTip.isNull())
     558        m_noDiffs.toolTip = m_strToolTip;
     559
     560    m_noDiffs.isSet = true;
     561}
     562
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMedium.h

    r47952 r48061  
    3939struct NoDiffsCache
    4040{
    41     NoDiffsCache() : isSet (false), state (KMediumState_NotCreated) {}
    42     NoDiffsCache& operator= (const NoDiffsCache &aOther)
     41    NoDiffsCache() : isSet(false), state(KMediumState_NotCreated) {}
     42    NoDiffsCache& operator=(const NoDiffsCache &other)
    4343    {
    44         isSet = aOther.isSet;
    45         state = aOther.state;
    46         result = aOther.result;
    47         toolTip = aOther.toolTip;
     44        isSet = other.isSet;
     45        state = other.state;
     46        result = other.result;
     47        toolTip = other.toolTip;
    4848        return *this;
    4949    }
     
    8787     */
    8888    UIMedium()
    89         : mType (UIMediumType_Invalid)
    90         , mState (KMediumState_NotCreated)
    91         , mIsReadOnly (false)
    92         , mIsUsedInSnapshots (false)
    93         , mParent (0) { refresh(); }
     89        : m_type(UIMediumType_Invalid)
     90        , m_state(KMediumState_NotCreated)
     91        , m_fReadOnly(false)
     92        , m_fUsedInSnapshots(false)
     93        , m_pParent(0) { refresh(); }
    9494
    9595    /**
     
    101101     *
    102102     * One of the hardDisk, dvdImage, or floppyImage members is assigned from
    103      * aMedium according to aType. @a aParent must be always NULL for non-hard
     103     * medium according to type. @a pParent must be always NULL for non-hard
    104104     * disk media.
    105105     */
    106     UIMedium (const CMedium &aMedium, UIMediumType aType, UIMedium *aParent = 0)
    107         : mMedium (aMedium)
    108         , mType (aType)
    109         , mState (KMediumState_NotCreated)
    110         , mIsReadOnly (false)
    111         , mIsUsedInSnapshots (false)
    112         , mParent (aParent) { refresh(); }
     106    UIMedium(const CMedium &medium, UIMediumType type, UIMedium *pParent = 0)
     107        : m_medium(medium)
     108        , m_type(type)
     109        , m_state(KMediumState_NotCreated)
     110        , m_fReadOnly(false)
     111        , m_fUsedInSnapshots(false)
     112        , m_pParent(pParent) { refresh(); }
    113113
    114114    /**
    115115     * Similar to the other non-null constructor but sets the media state to
    116      * @a aState. Suitable when the media state is known such as right after
     116     * @a state. Suitable when the media state is known such as right after
    117117     * creation.
    118118     */
    119     UIMedium (const CMedium &aMedium, UIMediumType aType, KMediumState aState)
    120         : mMedium (aMedium)
    121         , mType (aType)
    122         , mState (aState)
    123         , mIsReadOnly (false)
    124         , mIsUsedInSnapshots (false)
    125         , mParent (0) { refresh(); }
    126 
    127     UIMedium& operator= (const UIMedium &aOther);
     119    UIMedium(const CMedium &medium, UIMediumType type, KMediumState state)
     120        : m_medium(medium)
     121        , m_type(type)
     122        , m_state(state)
     123        , m_fReadOnly(false)
     124        , m_fUsedInSnapshots(false)
     125        , m_pParent(0) { refresh(); }
     126
     127    UIMedium& operator=(const UIMedium &other);
    128128
    129129    void blockAndQueryState();
    130130    void refresh();
    131131
    132     bool isHidden() const { return m_fHide | m_fAttachedToHiddenMachinesOnly; }
    133 
    134     const CMedium &medium() const { return mMedium; }
    135 
    136     UIMediumType type() const { return mType; }
     132    bool isHidden() const { return m_fHidden | m_fAttachedToHiddenMachinesOnly; }
     133
     134    const CMedium &medium() const { return m_medium; }
     135
     136    UIMediumType type() const { return m_type; }
    137137
    138138    /**
     
    140140     * terms of inaccessibility) detected on the given hard disk chain.
    141141     *
    142      * @param aNoDiffs  @c true to enable user-friendly "don't show diffs" mode.
    143      */
    144     KMediumState state (bool aNoDiffs = false) const
     142     * @param fNoDiffs  @c true to enable user-friendly "don't show diffs" mode.
     143     */
     144    KMediumState state(bool fNoDiffs = false) const
    145145    {
    146         unconst (this)->checkNoDiffs (aNoDiffs);
    147         return aNoDiffs ? mNoDiffs.state : mState;
     146        unconst (this)->checkNoDiffs(fNoDiffs);
     147        return fNoDiffs ? m_noDiffs.state : m_state;
    148148    }
    149149
    150     QString lastAccessError() const { return mLastAccessError; }
     150    QString lastAccessError() const { return m_strLastAccessError; }
    151151
    152152    /**
     
    156156     * detected on the given hard disk chain.
    157157     *
    158      * @param aNoDiffs  @c true to enable user-friendly "don't show diffs" mode.
    159      */
    160     const COMResult &result (bool aNoDiffs = false) const
     158     * @param fNoDiffs  @c true to enable user-friendly "don't show diffs" mode.
     159     */
     160    const COMResult &result(bool fNoDiffs = false) const
    161161    {
    162         unconst (this)->checkNoDiffs (aNoDiffs);
    163         return aNoDiffs ? mNoDiffs.result : mResult;
     162        unconst(this)->checkNoDiffs(fNoDiffs);
     163        return fNoDiffs ? m_noDiffs.result : m_result;
    164164    }
    165165
    166     QString id() const { return mId; }
    167     QString name (bool aNoDiffs = false) const { return aNoDiffs ? root().mName : mName; }
    168     QString location (bool aNoDiffs = false) const { return aNoDiffs ? root().mLocation : mLocation; }
    169 
    170     QString size (bool aNoDiffs = false) const { return aNoDiffs ? root().mSize : mSize; }
    171     QString logicalSize (bool aNoDiffs = false) const { return aNoDiffs ? root().mLogicalSize : mLogicalSize; }
    172 
    173     QString hardDiskFormat (bool aNoDiffs = false) const { return aNoDiffs ? root().mHardDiskFormat : mHardDiskFormat; }
    174     QString hardDiskType (bool aNoDiffs = false) const { return aNoDiffs ? root().mHardDiskType : mHardDiskType; }
    175 
    176     QString storageDetails() const { return mStorageDetails; }
    177 
    178     QString usage (bool aNoDiffs = false) const { return aNoDiffs ? root().mUsage : mUsage; }
    179     QString tip() const { return mToolTip; }
    180 
    181     const NoDiffsCache& cache() const { return mNoDiffs; }
     166    QString id() const { return m_strId; }
     167    QString name(bool fNoDiffs = false) const { return fNoDiffs ? root().m_strName : m_strName; }
     168    QString location(bool fNoDiffs = false) const { return fNoDiffs ? root().m_strLocation : m_strLocation; }
     169
     170    QString size(bool fNoDiffs = false) const { return fNoDiffs ? root().m_strSize : m_strSize; }
     171    QString logicalSize(bool fNoDiffs = false) const { return fNoDiffs ? root().m_strLogicalSize : m_strLogicalSize; }
     172
     173    QString hardDiskFormat(bool fNoDiffs = false) const { return fNoDiffs ? root().m_strHardDiskFormat : m_strHardDiskFormat; }
     174    QString hardDiskType(bool fNoDiffs = false) const { return fNoDiffs ? root().m_strHardDiskType : m_strHardDiskType; }
     175
     176    QString storageDetails() const { return m_strStorageDetails; }
     177
     178    QString usage(bool fNoDiffs = false) const { return fNoDiffs ? root().m_strUsage : m_strUsage; }
     179    QString tip() const { return m_strToolTip; }
     180
     181    const NoDiffsCache& cache() const { return m_noDiffs; }
    182182
    183183    /**
     
    186186     * be attached indirectly.
    187187     */
    188     bool isReadOnly() const { return mIsReadOnly; }
     188    bool isReadOnly() const { return m_fReadOnly; }
    189189
    190190    /**
     
    193193     * comma-separated VM names (with snapshot names, if any, in parenthesis).
    194194     */
    195     bool isUsed() const { return !mUsage.isNull(); }
     195    bool isUsed() const { return !m_strUsage.isNull(); }
    196196
    197197    /**
    198198     * Returns @c true if this medium is attached to any VM in any snapshot.
    199199     */
    200     bool isUsedInSnapshots() const { return mIsUsedInSnapshots; }
     200    bool isUsedInSnapshots() const { return m_fUsedInSnapshots; }
    201201
    202202    /**
    203203     * Returns @c true if this medium corresponds to real host drive.
    204204     */
    205     bool isHostDrive() const { return mIsHostDrive; }
     205    bool isHostDrive() const { return m_fHostDrive; }
    206206
    207207    /**
    208208     * Returns @c true if this medium is attached to the given machine in the current state.
    209209     */
    210     bool isAttachedInCurStateTo (const QString &aMachineId) const { return mCurStateMachineIds.indexOf (aMachineId) >= 0; }
     210    bool isAttachedInCurStateTo(const QString &strMachineId) const { return m_curStateMachineIds.indexOf(strMachineId) >= 0; }
    211211
    212212    /**
     
    214214     * to in their current state (i.e. excluding snapshots).
    215215     */
    216     const QList <QString> &curStateMachineIds() const { return mCurStateMachineIds; }
     216    const QList <QString> &curStateMachineIds() const { return m_curStateMachineIds; }
    217217
    218218    /**
    219219     * Returns a parent medium. For non-hard disk media, this is always NULL.
    220220     */
    221     UIMedium* parent() const { return mParent; }
     221    UIMedium* parent() const { return m_pParent; }
    222222
    223223    UIMedium& root() const;
    224224
    225     QString toolTip (bool aNoDiffs = false, bool aCheckRO = false, bool aNullAllowed = false) const;
    226     QPixmap icon (bool aNoDiffs = false, bool aCheckRO = false) const;
    227 
    228     /** Shortcut to <tt>#toolTip (aNoDiffs, true)</tt>. */
    229     QString toolTipCheckRO (bool aNoDiffs = false, bool aNullAllowed = false) const { return toolTip (aNoDiffs, true, aNullAllowed); }
    230 
    231     /** Shortcut to <tt>#icon (aNoDiffs, true)</tt>. */
    232     QPixmap iconCheckRO (bool aNoDiffs = false) const { return icon (aNoDiffs, true); }
    233 
    234     QString details (bool aNoDiffs = false, bool aPredictDiff = false, bool aUseHTML = false) const;
    235 
    236     /** Shortcut to <tt>#details (aNoDiffs, aPredictDiff, true)</tt>. */
    237     QString detailsHTML (bool aNoDiffs = false, bool aPredictDiff = false) const { return details (aNoDiffs, aPredictDiff, true); }
     225    QString toolTip(bool fNoDiffs = false, bool fCheckRO = false, bool fNullAllowed = false) const;
     226    QPixmap icon(bool fNoDiffs = false, bool fCheckRO = false) const;
     227
     228    /** Shortcut to <tt>#toolTip(fNoDiffs, true)</tt>. */
     229    QString toolTipCheckRO(bool fNoDiffs = false, bool fNullAllowed = false) const { return toolTip(fNoDiffs, true, fNullAllowed); }
     230
     231    /** Shortcut to <tt>#icon(fNoDiffs, true)</tt>. */
     232    QPixmap iconCheckRO(bool fNoDiffs = false) const { return icon(fNoDiffs, true); }
     233
     234    QString details(bool fNoDiffs = false, bool fPredictDiff = false, bool aUseHTML = false) const;
     235
     236    /** Shortcut to <tt>#details(fNoDiffs, fPredictDiff, true)</tt>. */
     237    QString detailsHTML(bool fNoDiffs = false, bool fPredictDiff = false) const { return details(fNoDiffs, fPredictDiff, true); }
    238238
    239239    /** Returns @c true if this media descriptor is a null object. */
    240     bool isNull() const { return mMedium.isNull(); }
     240    bool isNull() const { return m_medium.isNull(); }
    241241
    242242private:
    243243
    244     void checkNoDiffs (bool aNoDiffs);
    245 
    246     CMedium mMedium;
    247 
    248     UIMediumType mType;
    249 
    250     KMediumState mState;
    251     QString mLastAccessError;
    252     COMResult mResult;
    253 
    254     QString mId;
    255     QString mName;
    256     QString mLocation;
    257 
    258     QString mSize;
    259     QString mLogicalSize;
    260 
    261     QString mHardDiskFormat;
    262     QString mHardDiskType;
    263 
    264     QString mStorageDetails;
    265 
    266     QString mUsage;
    267     QString mToolTip;
    268 
    269     bool mIsReadOnly        : 1;
    270     bool mIsUsedInSnapshots : 1;
    271     bool mIsHostDrive       : 1;
    272     bool m_fHide            : 1;
     244    void checkNoDiffs(bool fNoDiffs);
     245
     246    CMedium m_medium;
     247
     248    UIMediumType m_type;
     249
     250    KMediumState m_state;
     251    QString m_strLastAccessError;
     252    COMResult m_result;
     253
     254    QString m_strId;
     255    QString m_strName;
     256    QString m_strLocation;
     257
     258    QString m_strSize;
     259    QString m_strLogicalSize;
     260
     261    QString m_strHardDiskFormat;
     262    QString m_strHardDiskType;
     263
     264    QString m_strStorageDetails;
     265
     266    QString m_strUsage;
     267    QString m_strToolTip;
     268
     269    bool m_fReadOnly                     : 1;
     270    bool m_fUsedInSnapshots              : 1;
     271    bool m_fHostDrive                    : 1;
     272    bool m_fHidden                       : 1;
    273273    bool m_fAttachedToHiddenMachinesOnly : 1;
    274274
    275     QList <QString> mCurStateMachineIds;
    276 
    277     UIMedium *mParent;
    278 
    279     NoDiffsCache mNoDiffs;
    280 
    281     static QString mTable;
    282     static QString mRow;
     275    QList<QString> m_curStateMachineIds;
     276
     277    UIMedium *m_pParent;
     278
     279    NoDiffsCache m_noDiffs;
     280
     281    static QString m_sstrTable;
     282    static QString m_sstrRow;
    283283};
    284284
    285 typedef QLinkedList <UIMedium> VBoxMediaList;
     285typedef QLinkedList<UIMedium> VBoxMediaList;
    286286
    287287#endif /* __UIMedium_h__ */
    288 
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