VirtualBox

Changeset 102922 in vbox for trunk


Ignore:
Timestamp:
Jan 17, 2024 1:17:09 PM (16 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
161150
Message:

FE/Qt: bugref:10513: VM settings / Storage page: A bit of rework for expanded/collapsed pixmap handling.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIStorageSettingsEditor.cpp

    r102541 r102922  
    596596    {
    597597        R_ItemId = Qt::UserRole + 1,
    598         R_ItemPixmap,
     598        R_ItemPixmapDefault,
     599        R_ItemPixmapCollapsed,
     600        R_ItemPixmapExpanded,
    599601        R_ItemPixmapRect,
    600602        R_ItemName,
     
    791793    StorageDelegate(QObject *pParent);
    792794
    793 private:
     795protected:
    794796
    795797    /** Paints @a index item with specified @a option using specified @a pPainter. */
    796     void paint(QPainter *pPainter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
     798    virtual void paint(QPainter *pPainter, const QStyleOptionViewItem &option, const QModelIndex &index) const RT_OVERRIDE;
    797799};
    798800
     
    18511853            return QUuid();
    18521854        }
    1853         case R_ItemPixmap:
     1855        case R_ItemPixmapDefault:
    18541856        {
    18551857            if (AbstractItem *pItem = static_cast<AbstractItem*>(specifiedIndex.internalPointer()))
    1856             {
    1857                 ItemState enmState = ItemState_Default;
    1858                 if (hasChildren(specifiedIndex))
    1859                     if (QTreeView *view = qobject_cast<QTreeView*>(QObject::parent()))
    1860                         enmState = view->isExpanded(specifiedIndex) ? ItemState_Expanded : ItemState_Collapsed;
    1861                 return pItem->pixmap(enmState);
    1862             }
     1858                return pItem->pixmap(ItemState_Default);
     1859            return QPixmap();
     1860        }
     1861        case R_ItemPixmapCollapsed:
     1862        {
     1863            if (AbstractItem *pItem = static_cast<AbstractItem*>(specifiedIndex.internalPointer()))
     1864                return pItem->pixmap(ItemState_Collapsed);
     1865            return QPixmap();
     1866        }
     1867        case R_ItemPixmapExpanded:
     1868        {
     1869            if (AbstractItem *pItem = static_cast<AbstractItem*>(specifiedIndex.internalPointer()))
     1870                return pItem->pixmap(ItemState_Expanded);
    18631871            return QPixmap();
    18641872        }
     
    27722780void StorageDelegate::paint(QPainter *pPainter, const QStyleOptionViewItem &option, const QModelIndex &index) const
    27732781{
    2774     if (!index.isValid()) return;
    2775 
    2776     /* Initialize variables: */
     2782    /* Sanity check: */
     2783    if (!index.isValid())
     2784        return;
     2785
     2786    /* Acquire model: */
     2787    const StorageModel *pModel = qobject_cast<const StorageModel*>(index.model());
     2788    AssertPtrReturnVoid(pModel);
     2789
     2790    /* Fetch options: */
    27772791    QStyle::State enmState = option.state;
    27782792    QRect rect = option.rect;
    2779     const StorageModel *pModel = qobject_cast<const StorageModel*>(index.model());
    2780     Assert(pModel);
    27812793
    27822794    pPainter->save();
     
    27962808
    27972809    /* Draw Item Pixmap: */
     2810    const bool fHasChildren = enmState & QStyle::State_Children;
     2811    const bool fOpened = enmState & QStyle::State_Open;
     2812    QPixmap pixmap = !fHasChildren
     2813                   ? pModel->data(index, StorageModel::R_ItemPixmapDefault).value<QPixmap>()
     2814                   : !fOpened
     2815                   ? pModel->data(index, StorageModel::R_ItemPixmapCollapsed).value<QPixmap>()
     2816                   : pModel->data(index, StorageModel::R_ItemPixmapExpanded).value<QPixmap>();
    27982817    pPainter->drawPixmap(pModel->data(index, StorageModel::R_ItemPixmapRect).toRect().topLeft(),
    2799                          pModel->data(index, StorageModel::R_ItemPixmap).value<QPixmap>());
     2818                         pixmap);
    28002819
    28012820    /* Draw compressed item name: */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette