VirtualBox

Changeset 43846 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Nov 9, 2012 11:10:49 AM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
81971
Message:

FE/Qt: VM group UI: Caching info text/size for group-item.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.cpp

    r43841 r43846  
    5454    retranslateUi();
    5555
    56     /* Calculate minimum header size: */
    57     updateHeaderSize();
     56    /* Init: */
     57    updateVisibleName();
     58    updateItemCountInfo();
     59    updateToolTip();
    5860}
    5961
     
    7981    retranslateUi();
    8082
    81     /* Calculate minimum header size: */
    82     updateHeaderSize();
     83    /* Init: */
     84    updateVisibleName();
     85    updateItemCountInfo();
     86    updateToolTip();
    8387}
    8488
     
    105109    retranslateUi();
    106110
    107     /* Calculate minimum header size: */
    108     updateHeaderSize();
     111    /* Init: */
     112    updateVisibleName();
     113    updateItemCountInfo();
     114    updateToolTip();
    109115}
    110116
     
    133139    retranslateUi();
    134140
    135     /* Calculate minimum header size: */
    136     updateHeaderSize();
     141    /* Init: */
     142    updateVisibleName();
     143    updateItemCountInfo();
     144    updateToolTip();
    137145}
    138146
     
    371379        case GroupItemData_MinorSpacing: return 3;
    372380        case GroupItemData_RootIndent: return 2;
    373         /* Texts: */
    374         case GroupItemData_Name: return m_strVisibleName;
    375         case GroupItemData_GroupCountText: return m_groupItems.isEmpty() ? QString() : QString::number(m_groupItems.size());
    376         case GroupItemData_MachineCountText: return m_machineItems.isEmpty() ? QString() : QString::number(m_machineItems.size());
    377381        /* Sizes: */
    378382        case GroupItemData_ToggleButtonSize: return m_pToggleButton ? m_pToggleButton->minimumSizeHint().toSize() : QSize(0, 0);
    379383        case GroupItemData_EnterButtonSize: return m_pEnterButton ? m_pEnterButton->minimumSizeHint().toSize() : QSize(0, 0);
    380384        case GroupItemData_ExitButtonSize: return m_pExitButton ? m_pExitButton->minimumSizeHint().toSize() : QSize(0, 0);
    381         case GroupItemData_NameSize: return isMainRoot() ? QSize(0, 0) : textSize(m_nameFont, model()->paintDevice(),
    382                                                                                   data(GroupItemData_Name).toString());
    383385        case GroupItemData_GroupPixmapSize: return isMainRoot() ? QSize(0, 0) : m_groupsPixmap.size();
    384386        case GroupItemData_MachinePixmapSize: return isMainRoot() ? QSize(0, 0) : m_machinesPixmap.size();
    385         case GroupItemData_GroupCountTextSize: return isMainRoot() ? QSize(0, 0) : textSize(m_infoFont, model()->paintDevice(),
    386                                                                                             data(GroupItemData_GroupCountText).toString());
    387         case GroupItemData_MachineCountTextSize: return isMainRoot() ? QSize(0, 0) : textSize(m_infoFont, model()->paintDevice(),
    388                                                                                               data(GroupItemData_MachineCountText).toString());
    389387        case GroupItemData_FullHeaderSize: return m_headerSize;
    390388        /* Default: */
     
    483481    int iGroupPixmapWidth = data(GroupItemData_GroupPixmapSize).toSize().width();
    484482    int iMachinePixmapWidth = data(GroupItemData_MachinePixmapSize).toSize().width();
    485     int iGroupCountTextWidth = data(GroupItemData_GroupCountTextSize).toSize().width();
    486     int iMachineCountTextWidth = data(GroupItemData_MachineCountTextSize).toSize().width();
     483    int iGroupCountTextWidth = m_infoSizeGroups.width();
     484    int iMachineCountTextWidth = m_infoSizeMachines.width();
    487485    int iMaximumWidth = geometry().width();
    488486
     
    518516
    519517    /* Recache visible name: */
    520     m_strVisibleName = compressText(m_nameFont, model()->paintDevice(), name(), iMaximumWidth);
     518    QPaintDevice *pPaintDevice = model()->paintDevice();
     519    m_strVisibleName = isMainRoot() ? QString() : compressText(m_nameFont, pPaintDevice, name(), iMaximumWidth);
     520    m_visibleNameSize = isMainRoot() ? QSize(0, 0) : textSize(m_nameFont, pPaintDevice, m_strVisibleName);
    521521
    522522    /* Repaint item: */
    523523    update();
     524}
     525
     526void UIGChooserItemGroup::updateItemCountInfo()
     527{
     528    /* Update item info attributes: */
     529    QPaintDevice *pPaintDevice = model()->paintDevice();
     530    m_strInfoGroups = isMainRoot() || m_groupItems.isEmpty() ? QString() : QString::number(m_groupItems.size());
     531    m_strInfoMachines = isMainRoot() || m_machineItems.isEmpty() ? QString() : QString::number(m_machineItems.size());
     532    m_infoSizeGroups = isMainRoot() ? QSize(0, 0) : textSize(m_infoFont, pPaintDevice, m_strInfoGroups);
     533    m_infoSizeMachines = isMainRoot() ? QSize(0, 0) : textSize(m_infoFont, pPaintDevice, m_strInfoMachines);
     534
     535    /* Update linked values: */
     536    updateHeaderSize();
    524537}
    525538
     
    536549    QSize toggleButtonSize = data(GroupItemData_ToggleButtonSize).toSize();
    537550    QSize groupPixmapSize = data(GroupItemData_GroupPixmapSize).toSize();
    538     QSize groupCountTextSize = data(GroupItemData_GroupCountTextSize).toSize();
    539551    QSize machinePixmapSize = data(GroupItemData_MachinePixmapSize).toSize();
    540     QSize machineCountTextSize = data(GroupItemData_MachineCountTextSize).toSize();
    541552    QSize enterButtonSize = data(GroupItemData_EnterButtonSize).toSize();
    542553
     
    564575    /* Group info width: */
    565576    if (!m_groupItems.isEmpty())
    566         iHeaderWidth += (groupPixmapSize.width() + groupCountTextSize.width());
     577        iHeaderWidth += (groupPixmapSize.width() + m_infoSizeGroups.width());
    567578    /* Machine info width: */
    568579    if (!m_machineItems.isEmpty())
    569         iHeaderWidth += (machinePixmapSize.width() + machineCountTextSize.width());
     580        iHeaderWidth += (machinePixmapSize.width() + m_infoSizeMachines.width());
    570581    /* Spacing + button width: */
    571582    if (!isRoot())
     
    582593            << iMinimumNameHeight
    583594            /* Group info heights: */
    584             << groupPixmapSize.height() << groupCountTextSize.height()
     595            << groupPixmapSize.height() << m_infoSizeGroups.height()
    585596            /* Machine info heights: */
    586             << machinePixmapSize.height() << machineCountTextSize.height();
     597            << machinePixmapSize.height() << m_infoSizeMachines.height();
    587598    /* Button height: */
    588599    if (!isRoot())
     
    741752    /* Update: */
    742753    updateVisibleName();
    743     updateHeaderSize();
     754    updateItemCountInfo();
    744755    updateToolTip();
    745756}
     
    773784    /* Update: */
    774785    updateVisibleName();
    775     updateHeaderSize();
     786    updateItemCountInfo();
    776787    updateToolTip();
    777788}
     
    789800    /* Update: */
    790801    updateVisibleName();
    791     updateHeaderSize();
     802    updateItemCountInfo();
    792803    updateToolTip();
    793804}
     
    845856    /* Update: */
    846857    updateVisibleName();
    847     updateHeaderSize();
     858    updateItemCountInfo();
    848859    updateToolTip();
    849860}
     
    15591570    QSize toggleButtonSize = data(GroupItemData_ToggleButtonSize).toSize();
    15601571    QSize exitButtonSize = data(GroupItemData_ExitButtonSize).toSize();
    1561     QSize nameSize = data(GroupItemData_NameSize).toSize();
    15621572    int iFullHeaderHeight = data(GroupItemData_FullHeaderSize).toSize().height();
    15631573
     
    15841594        iNameX += toggleButtonSize.width();
    15851595    iNameX += iMajorSpacing;
    1586     int iNameY = nameSize.height() == iFullHeaderHeight ? iVerticalMargin :
    1587                  iVerticalMargin + (iFullHeaderHeight - nameSize.height()) / 2;
     1596    int iNameY = m_visibleNameSize.height() == iFullHeaderHeight ? iVerticalMargin :
     1597                 iVerticalMargin + (iFullHeaderHeight - m_visibleNameSize.height()) / 2;
    15881598    paintText(/* Painter: */
    15891599              pPainter,
     
    15951605              model()->paintDevice(),
    15961606              /* Text to paint: */
    1597               data(GroupItemData_Name).toString());
     1607              m_strVisibleName);
    15981608
    15991609    /* Should we add more info? */
     
    16091619        QSize groupPixmapSize = data(GroupItemData_GroupPixmapSize).toSize();
    16101620        QSize machinePixmapSize = data(GroupItemData_MachinePixmapSize).toSize();
    1611         QSize groupCountTextSize = data(GroupItemData_GroupCountTextSize).toSize();
    1612         QSize machineCountTextSize = data(GroupItemData_MachineCountTextSize).toSize();
    1613         QString strGroupCountText = data(GroupItemData_GroupCountText).toString();
    1614         QString strMachineCountText = data(GroupItemData_MachineCountText).toString();
    16151621
    16161622        /* Indent: */
     
    16201626
    16211627        /* Should we draw machine count info? */
    1622         if (!strMachineCountText.isEmpty())
    1623         {
    1624             iHorizontalIndent -= machineCountTextSize.width();
     1628        if (!m_strInfoMachines.isEmpty())
     1629        {
     1630            iHorizontalIndent -= m_infoSizeMachines.width();
    16251631            int iMachineCountTextX = iHorizontalIndent;
    1626             int iMachineCountTextY = machineCountTextSize.height() == iFullHeaderHeight ?
    1627                                      iVerticalMargin : iVerticalMargin + (iFullHeaderHeight - machineCountTextSize.height()) / 2;
     1632            int iMachineCountTextY = m_infoSizeMachines.height() == iFullHeaderHeight ?
     1633                                     iVerticalMargin : iVerticalMargin + (iFullHeaderHeight - m_infoSizeMachines.height()) / 2;
    16281634            paintText(/* Painter: */
    16291635                      pPainter,
     
    16351641                      model()->paintDevice(),
    16361642                      /* Text to paint: */
    1637                       strMachineCountText);
     1643                      m_strInfoMachines);
    16381644
    16391645            iHorizontalIndent -= machinePixmapSize.width();
     
    16501656
    16511657        /* Should we draw group count info? */
    1652         if (!strGroupCountText.isEmpty())
    1653         {
    1654             iHorizontalIndent -= groupCountTextSize.width();
     1658        if (!m_strInfoGroups.isEmpty())
     1659        {
     1660            iHorizontalIndent -= m_infoSizeGroups.width();
    16551661            int iGroupCountTextX = iHorizontalIndent;
    1656             int iGroupCountTextY = groupCountTextSize.height() == iFullHeaderHeight ?
    1657                                    iVerticalMargin : iVerticalMargin + (iFullHeaderHeight - groupCountTextSize.height()) / 2;
     1662            int iGroupCountTextY = m_infoSizeGroups.height() == iFullHeaderHeight ?
     1663                                   iVerticalMargin : iVerticalMargin + (iFullHeaderHeight - m_infoSizeGroups.height()) / 2;
    16581664            paintText(/* Painter: */
    16591665                      pPainter,
     
    16651671                      model()->paintDevice(),
    16661672                      /* Text to paint: */
    1667                       strGroupCountText);
     1673                      m_strInfoGroups);
    16681674
    16691675            iHorizontalIndent -= groupPixmapSize.width();
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserItemGroup.h

    r43841 r43846  
    109109        GroupItemData_MinorSpacing,
    110110        GroupItemData_RootIndent,
    111         /* Text: */
    112         GroupItemData_Name,
    113         GroupItemData_GroupCountText,
    114         GroupItemData_MachineCountText,
    115111        /* Sizes: */
    116112        GroupItemData_ToggleButtonSize,
    117113        GroupItemData_EnterButtonSize,
    118114        GroupItemData_ExitButtonSize,
    119         GroupItemData_NameSize,
    120115        GroupItemData_GroupPixmapSize,
    121116        GroupItemData_MachinePixmapSize,
    122         GroupItemData_GroupCountTextSize,
    123         GroupItemData_MachineCountTextSize,
    124117        GroupItemData_FullHeaderSize
    125118    };
     
    135128    void handleRootStatusChange();
    136129    void updateVisibleName();
     130    void updateItemCountInfo();
    137131    void updateHeaderSize();
    138132    void updateToolTip();
     
    210204    /* Cached values: */
    211205    QString m_strVisibleName;
     206    QString m_strInfoGroups;
     207    QString m_strInfoMachines;
     208    QSize m_visibleNameSize;
     209    QSize m_infoSizeGroups;
     210    QSize m_infoSizeMachines;
    212211    QSize m_headerSize;
    213212    QFont m_nameFont;
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