VirtualBox

Changeset 23290 in vbox


Ignore:
Timestamp:
Sep 24, 2009 3:51:02 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
52783
Message:

FE/Qt4: New Storage UI: Tool-Tips support for controller items of Storage Tree.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/include/QITreeView.h

    r23269 r23290  
    4242    void currentItemChanged (const QModelIndex &aCurrent, const QModelIndex &aPrevious);
    4343    void drawItemBranches (QPainter *aPainter, const QRect &aRect, const QModelIndex &aIndex) const;
     44    void mouseMoved (QMouseEvent *aEvent);
    4445    void mousePressed (QMouseEvent *aEvent);
    4546    void mouseDoubleClicked (QMouseEvent *aEvent);
     
    5253
    5354    void drawBranches (QPainter *aPainter, const QRect &aRect, const QModelIndex &aIndex) const;
     55    void mouseMoveEvent (QMouseEvent *aEvent);
    5456    void mousePressEvent (QMouseEvent *aEvent);
    5557    void mouseDoubleClickEvent (QMouseEvent *aEvent);
  • trunk/src/VBox/Frontends/VirtualBox/include/VBoxVMSettingsHD.h

    r23239 r23290  
    384384        R_IsAttachment,
    385385
     386        R_ToolTipType,
    386387        R_IsMoreControllersPossible,
    387388        R_IsMoreAttachmentsPossible,
     
    428429    };
    429430
     431    enum ToolTipType
     432    {
     433        DefaultToolTip  = 0,
     434        ExpanderToolTip = 1,
     435        HDAdderToolTip  = 2,
     436        CDAdderToolTip  = 3,
     437        FDAdderToolTip  = 4
     438    };
     439
    430440    StorageModel (QObject *aParent);
    431441   ~StorageModel();
     
    460470    QPixmap mMinusPixmapEn;
    461471    QPixmap mMinusPixmapDis;
    462 };
     472
     473    ToolTipType mToolTipType;
     474};
     475Q_DECLARE_METATYPE (StorageModel::ToolTipType);
    463476
    464477/* Storage Delegate */
     
    536549    void onDrawItemBranches (QPainter *aPainter, const QRect &aRect, const QModelIndex &aIndex);
    537550
     551    void onMouseMoved (QMouseEvent *aEvent);
    538552    void onMouseClicked (QMouseEvent *aEvent);
    539553
  • trunk/src/VBox/Frontends/VirtualBox/src/QITreeView.cpp

    r23269 r23290  
    4747}
    4848
     49void QITreeView::mouseMoveEvent (QMouseEvent *aEvent)
     50{
     51    aEvent->setAccepted (false);
     52    emit mouseMoved (aEvent);
     53    if (!aEvent->isAccepted())
     54        QTreeView::mouseMoveEvent (aEvent);
     55}
     56
    4957void QITreeView::mousePressEvent (QMouseEvent *aEvent)
    5058{
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsHD.cpp

    r23282 r23290  
    465465QString ControllerItem::tip() const
    466466{
    467     return QString();
     467    return VBoxVMSettingsHD::tr ("<nobr><b>%1</b></nobr><br>"
     468                                 "<nobr>Bus:&nbsp;&nbsp;%2</nobr><br>"
     469                                 "<nobr>Type:&nbsp;&nbsp;%3</nobr>")
     470                                 .arg (mCtrName)
     471                                 .arg (vboxGlobal().toString (mCtrType->busType()))
     472                                 .arg (vboxGlobal().toString (mCtrType->ctrType()));
    468473}
    469474
     
    832837    : QAbstractItemModel (aParent)
    833838    , mRootItem (new RootItem)
     839    , mToolTipType (DefaultToolTip)
    834840{
    835841}
     
    905911        {
    906912            if (AbstractItem *item = static_cast <AbstractItem*> (aIndex.internalPointer()))
     913            {
     914                if (item->rtti() == AbstractItem::Type_ControllerItem)
     915                {
     916                    QString tip (item->tip());
     917                    switch (mToolTipType)
     918                    {
     919                        case ExpanderToolTip:
     920                            if (aIndex.child (0, 0).isValid())
     921                                tip = VBoxVMSettingsHD::tr ("<nobr>Expand/Collapse&nbsp;Item</nobr>");
     922                            break;
     923                        case HDAdderToolTip:
     924                            tip = VBoxVMSettingsHD::tr ("<nobr>Add&nbsp;Hard&nbsp;Disk</nobr>");
     925                            break;
     926                        case CDAdderToolTip:
     927                            tip = VBoxVMSettingsHD::tr ("<nobr>Add&nbsp;CD/DVD&nbsp;Device</nobr>");
     928                            break;
     929                        case FDAdderToolTip:
     930                            tip = VBoxVMSettingsHD::tr ("<nobr>Add&nbsp;Floppy&nbsp;Device</nobr>");
     931                            break;
     932                        default:
     933                            break;
     934                    }
     935                    return tip;
     936                }
    907937                return item->tip();
     938            }
    908939            return QString();
    909940        }
     
    964995        }
    965996
     997        case R_ToolTipType:
     998        {
     999            return QVariant::fromValue (mToolTipType);
     1000        }
    9661001        case R_IsMoreControllersPossible:
    9671002        {
     
    12091244    switch (aRole)
    12101245    {
     1246        case R_ToolTipType:
     1247        {
     1248            mToolTipType = aValue.value <ToolTipType>();
     1249            emit dataChanged (aIndex, aIndex);
     1250            return true;
     1251        }
    12111252        case R_CtrName:
    12121253        {
     
    15191560    mStorageModel = new StorageModel (mTwStorageTree);
    15201561    StorageDelegate *storageDelegate = new StorageDelegate (mTwStorageTree);
     1562    mTwStorageTree->setMouseTracking (true);
    15211563    mTwStorageTree->setContextMenuPolicy (Qt::CustomContextMenu);
    15221564    mTwStorageTree->setModel (mStorageModel);
     
    15791621    connect (mTwStorageTree, SIGNAL (drawItemBranches (QPainter*, const QRect&, const QModelIndex&)),
    15801622             this, SLOT (onDrawItemBranches (QPainter *, const QRect &, const QModelIndex &)));
     1623    connect (mTwStorageTree, SIGNAL (mouseMoved (QMouseEvent*)),
     1624             this, SLOT (onMouseMoved (QMouseEvent*)));
    15811625    connect (mTwStorageTree, SIGNAL (mousePressed (QMouseEvent*)),
    15821626             this, SLOT (onMouseClicked (QMouseEvent*)));
     
    17341778    mDelAttAction->setWhatsThis (tr ("Removes attachment highlighted in Storage Tree."));
    17351779
    1736     mAddCtrAction->setToolTip (mAddCtrAction->text().remove ('&') +
    1737         QString (" (%1)").arg (mAddCtrAction->shortcut().toString()));
    1738     mDelCtrAction->setToolTip (mDelCtrAction->text().remove ('&') +
    1739         QString (" (%1)").arg (mDelCtrAction->shortcut().toString()));
    1740     mAddAttAction->setToolTip (mAddAttAction->text().remove ('&') +
    1741         QString (" (%1)").arg (mAddAttAction->shortcut().toString()));
    1742     mDelAttAction->setToolTip (mDelAttAction->text().remove ('&') +
    1743         QString (" (%1)").arg (mDelAttAction->shortcut().toString()));
     1780    mAddCtrAction->setToolTip (QString ("<nobr>%1&nbsp;(%2)")
     1781                               .arg (mAddCtrAction->text().remove ('&'))
     1782                               .arg (mAddCtrAction->shortcut().toString()));
     1783    mDelCtrAction->setToolTip (QString ("<nobr>%1&nbsp;(%2)")
     1784                               .arg (mDelCtrAction->text().remove ('&'))
     1785                               .arg (mDelCtrAction->shortcut().toString()));
     1786    mAddAttAction->setToolTip (QString ("<nobr>%1&nbsp;(%2)")
     1787                               .arg (mAddAttAction->text().remove ('&'))
     1788                               .arg (mAddAttAction->shortcut().toString()));
     1789    mDelAttAction->setToolTip (QString ("<nobr>%1&nbsp;(%2)")
     1790                               .arg (mDelAttAction->text().remove ('&'))
     1791                               .arg (mDelAttAction->shortcut().toString()));
    17441792}
    17451793
     
    21572205}
    21582206
    2159 void VBoxVMSettingsHD::onMouseClicked (QMouseEvent *aEvent)
     2207void VBoxVMSettingsHD::onMouseMoved (QMouseEvent *aEvent)
    21602208{
    21612209    QModelIndex index = mTwStorageTree->indexAt (aEvent->pos());
    21622210    QRect indexRect = mTwStorageTree->visualRect (index);
    21632211
    2164     /* Process expander icon */
     2212    /* Expander tool-tip */
    21652213    if (mStorageModel->data (index, StorageModel::R_IsController).toBool())
    21662214    {
     
    21702218        {
    21712219            aEvent->setAccepted (true);
    2172             mTwStorageTree->setExpanded (index, !mTwStorageTree->isExpanded (index));
     2220            if (mStorageModel->data (index, StorageModel::R_ToolTipType).value <StorageModel::ToolTipType>() != StorageModel::ExpanderToolTip)
     2221                mStorageModel->setData (index, QVariant::fromValue (StorageModel::ExpanderToolTip), StorageModel::R_ToolTipType);
    21732222            return;
    21742223        }
    21752224    }
    21762225
    2177     /* Process add-attachment icons */
     2226    /* Adder tool-tip */
    21782227    if (mStorageModel->data (index, StorageModel::R_IsController).toBool() &&
    21792228        mTwStorageTree->currentIndex() == index)
     
    22102259            {
    22112260                aEvent->setAccepted (true);
     2261                switch (deviceType)
     2262                {
     2263                    case KDeviceType_HardDisk:
     2264                    {
     2265                        if (mStorageModel->data (index, StorageModel::R_ToolTipType).value <StorageModel::ToolTipType>() != StorageModel::HDAdderToolTip)
     2266                            mStorageModel->setData (index, QVariant::fromValue (StorageModel::HDAdderToolTip), StorageModel::R_ToolTipType);
     2267                        break;
     2268                    }
     2269                    case KDeviceType_DVD:
     2270                    {
     2271                        if (mStorageModel->data (index, StorageModel::R_ToolTipType).value <StorageModel::ToolTipType>() != StorageModel::CDAdderToolTip)
     2272                            mStorageModel->setData (index, QVariant::fromValue (StorageModel::CDAdderToolTip), StorageModel::R_ToolTipType);
     2273                        break;
     2274                    }
     2275                    case KDeviceType_Floppy:
     2276                    {
     2277                        if (mStorageModel->data (index, StorageModel::R_ToolTipType).value <StorageModel::ToolTipType>() != StorageModel::FDAdderToolTip)
     2278                            mStorageModel->setData (index, QVariant::fromValue (StorageModel::FDAdderToolTip), StorageModel::R_ToolTipType);
     2279                        break;
     2280                    }
     2281                    default:
     2282                        break;
     2283                }
     2284                return;
     2285            }
     2286        }
     2287    }
     2288
     2289    /* Default tool-tip */
     2290    if (mStorageModel->data (index, StorageModel::R_ToolTipType).value <StorageModel::ToolTipType>() != StorageModel::DefaultToolTip)
     2291        mStorageModel->setData (index, StorageModel::DefaultToolTip, StorageModel::R_ToolTipType);
     2292}
     2293
     2294void VBoxVMSettingsHD::onMouseClicked (QMouseEvent *aEvent)
     2295{
     2296    QModelIndex index = mTwStorageTree->indexAt (aEvent->pos());
     2297    QRect indexRect = mTwStorageTree->visualRect (index);
     2298
     2299    /* Expander icon */
     2300    if (mStorageModel->data (index, StorageModel::R_IsController).toBool())
     2301    {
     2302        QRect expanderRect = mStorageModel->data (index, StorageModel::R_ItemPixmapRect).toRect();
     2303        expanderRect.translate (indexRect.x(), indexRect.y());
     2304        if (expanderRect.contains (aEvent->pos()))
     2305        {
     2306            aEvent->setAccepted (true);
     2307            mTwStorageTree->setExpanded (index, !mTwStorageTree->isExpanded (index));
     2308            return;
     2309        }
     2310    }
     2311
     2312    /* Adder icons */
     2313    if (mStorageModel->data (index, StorageModel::R_IsController).toBool() &&
     2314        mTwStorageTree->currentIndex() == index)
     2315    {
     2316        DeviceTypeList devicesList (mStorageModel->data (index, StorageModel::R_CtrDevices).value <DeviceTypeList>());
     2317        for (int i = 0; i < devicesList.size(); ++ i)
     2318        {
     2319            KDeviceType deviceType = devicesList [i];
     2320
     2321            QRect deviceRect;
     2322            switch (deviceType)
     2323            {
     2324                case KDeviceType_HardDisk:
     2325                {
     2326                    deviceRect = mStorageModel->data (index, StorageModel::R_HDPixmapRect).toRect();
     2327                    break;
     2328                }
     2329                case KDeviceType_DVD:
     2330                {
     2331                    deviceRect = mStorageModel->data (index, StorageModel::R_CDPixmapRect).toRect();
     2332                    break;
     2333                }
     2334                case KDeviceType_Floppy:
     2335                {
     2336                    deviceRect = mStorageModel->data (index, StorageModel::R_FDPixmapRect).toRect();
     2337                    break;
     2338                }
     2339                default:
     2340                    break;
     2341            }
     2342            deviceRect.translate (indexRect.x() + indexRect.width(), indexRect.y());
     2343
     2344            if (deviceRect.contains (aEvent->pos()))
     2345            {
     2346                aEvent->setAccepted (true);
    22122347                if (mAddAttAction->isEnabled())
    22132348                    addAttachment (deviceType);
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