VirtualBox

Changeset 8227 in vbox


Ignore:
Timestamp:
Apr 21, 2008 1:54:37 PM (17 years ago)
Author:
vboxsync
Message:

(I) Added empty item to:

  1. support context menu in empty list.
allow user to double click this item
empty area to add attachment.
  1. see tool-tip when hovering empty viewport && empty item

(II)Added tool-tip to list items.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/ui/VBoxHardDiskSettings.ui.h

    r8201 r8227  
    318318}
    319319
     320class HDSpaceItem : public QListViewItem
     321{
     322public:
     323
     324    enum { HDSpaceItemType = 1011 };
     325
     326    HDSpaceItem (QListView *aParent)
     327        : QListViewItem (aParent)
     328    {
     329        setSelectable (false);
     330    }
     331
     332    int rtti() const { return HDSpaceItemType; }
     333};
     334
    320335class HDListItem : public QListViewItem
    321336{
     
    348363
    349364    int rtti() const { return HDListItemType; }
     365
     366    QString toolTip()
     367    {
     368        return QToolTip::textFor (mVector [1]);
     369    }
    350370
    351371    HDListItem* nextSibling() const
     
    559579    /* rest */
    560580
     581    new HDSpaceItem (mLvHD);
     582
    561583    mSlotUniquizer = new HDSlotUniquizer (this);
    562584
     
    698720            delete item;
    699721            mPrevItem = 0;
     722
     723            if (mLvHD->currentItem() &&
     724                mLvHD->currentItem()->rtti() == HDSpaceItem::HDSpaceItemType &&
     725                mLvHD->currentItem()->itemAbove() &&
     726                mLvHD->currentItem()->itemAbove()->rtti() == HDListItem::HDListItemType)
     727                mLvHD->setCurrentItem (mLvHD->currentItem()->itemAbove());
    700728        }
    701729    }
     
    797825{
    798826    /* Process postponed onCurrentChanged event */
    799     mAddAttachmentAct->setEnabled (mLvHD->childCount() < mSlotUniquizer->totalCount());
    800     mRemoveAttachmentAct->setEnabled (aItem != NULL);
    801     mSelectHardDiskAct->setEnabled (aItem != NULL);
     827    mAddAttachmentAct->setEnabled (mLvHD->childCount() <=
     828                                   mSlotUniquizer->totalCount());
     829    mRemoveAttachmentAct->setEnabled (aItem &&
     830                                      aItem->rtti() == HDListItem::HDListItemType);
     831    mSelectHardDiskAct->setEnabled (aItem &&
     832                                    aItem->rtti() == HDListItem::HDListItemType);
    802833
    803834    if (aItem == mPrevItem)
     
    828859                                              const CMachine &aMachine)
    829860{
    830     return mLvHD->lastItem() ?
    831         new HDListItem (this, mLvHD, mLvHD->lastItem(), aUniq, aMachine) :
     861    QListViewItem *item = mLvHD->lastItem();
     862    Assert (item->rtti() == HDSpaceItem::HDSpaceItemType);
     863    HDListItem *last = item->itemAbove() &&
     864        item->itemAbove()->rtti() == HDListItem::HDListItemType ?
     865        static_cast<HDListItem*> (item->itemAbove()) : 0;
     866
     867    return last ?
     868        new HDListItem (this, mLvHD, last, aUniq, aMachine) :
    832869        new HDListItem (this, mLvHD, aUniq, aMachine);
    833870}
     
    873910                break;
    874911
    875             HDListItem *item = mLvHD->currentItem() &&
    876                 mLvHD->currentItem()->rtti() == HDListItem::HDListItemType ?
    877                 static_cast<HDListItem*> (mLvHD->currentItem()) : 0;
     912            QMouseEvent *e = static_cast<QMouseEvent*> (aEvent);
     913            QListViewItem *clickedItem = mLvHD->itemAt (QPoint (e->x(), e->y()));
     914            HDListItem *item = clickedItem &&
     915                clickedItem->rtti() == HDListItem::HDListItemType ?
     916                static_cast<HDListItem*> (clickedItem) : 0;
     917
    878918            if (item)
    879919                item->showEditor();
     920            else if (mAddAttachmentAct->isEnabled())
     921                addHDItem();
     922            break;
     923        }
     924        /* Process mouse-move as "make tool-tip" action */
     925        case QEvent::MouseMove:
     926        {
     927            if (aObject != mLvHD->viewport())
     928                break;
     929
     930            QMouseEvent *e = static_cast<QMouseEvent*> (aEvent);
     931            QListViewItem *hoveredItem = mLvHD->itemAt (QPoint (e->x(), e->y()));
     932            HDListItem *item = hoveredItem &&
     933                hoveredItem->rtti() == HDListItem::HDListItemType ?
     934                static_cast<HDListItem*> (hoveredItem) : 0;
     935
     936            QString oldTip = QToolTip::textFor (mLvHD->viewport());
     937            QString newTip = item ? item->toolTip() :
     938                             tr ("Double-click to add new attachment");
     939
     940            if (newTip != oldTip)
     941            {
     942                QToolTip::remove (mLvHD->viewport());
     943                QToolTip::add (mLvHD->viewport(), newTip);
     944            }
    880945            break;
    881946        }
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