VirtualBox

Ignore:
Timestamp:
Mar 23, 2021 2:17:57 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
143466
Message:

FE/Qt: bugref:9515. First atempt to make UIToolBox keyboard responsive

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIToolBox.cpp

    r88066 r88262  
    1919#include <QCheckBox>
    2020#include <QLabel>
     21#include <QPainter>
    2122#include <QStyle>
    2223#include <QVBoxLayout>
     24#include <QStyle>
     25#include <QStyleOptionToolBox>
    2326
    2427/* GUI includes: */
     
    2932#include "UIToolBox.h"
    3033#include "UIWizardNewVM.h"
     34
     35class UIToolBoxPageButton : public QAbstractButton
     36{
     37        Q_OBJECT;
     38public:
     39    UIToolBoxPageButton(QWidget *pParent = 0);
     40    virtual void paintEvent(QPaintEvent *pEvent) /* override */;
     41    QSize sizeHint() const /* override */;
     42
     43};
     44
     45UIToolBoxPageButton::UIToolBoxPageButton(QWidget *pParent /* = 0 */)
     46    : QAbstractButton(pParent)
     47{
     48    setBackgroundRole(QPalette::Window);
     49    //setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
     50    setFocusPolicy(Qt::NoFocus);
     51
     52}
     53
     54void UIToolBoxPageButton::paintEvent(QPaintEvent *pEvent)
     55{
     56
     57    Q_UNUSED(pEvent);
     58    QPainter painter(this);
     59
     60    // QFontMetrics metrics = fontMetrics();
     61    // painter.drawText(QRect(0, 0, metrics.averageCharWidth() * text().length(), metrics.height()),
     62    //                  Qt::TextShowMnemonic,
     63    //                  text());
     64
     65    QStyleOptionToolBox opt;
     66    opt.initFrom(this);
     67    opt.text = text();
     68    opt.state |= QStyle::State_Selected;
     69    style()->drawControl(QStyle::CE_ToolBoxTabLabel, &opt, &painter, parentWidget());
     70}
     71
     72QSize UIToolBoxPageButton::sizeHint() const
     73{
     74    QFontMetrics metrics = fontMetrics();
     75    return QSize(metrics.averageCharWidth() * text().length(), metrics.height());
     76}
    3177
    3278/*********************************************************************************************************************************
     
    65111
    66112    void sltHandleEnableToggle(int iState);
    67 
     113    void sltTitleButtonClicked();
    68114private:
    69115
     
    74120    QVBoxLayout *m_pLayout;
    75121    QWidget     *m_pTitleContainerWidget;
    76     QLabel      *m_pTitleLabel;
    77122    QLabel      *m_pIconLabel;
    78123    QLabel      *m_pExpandCollapseIconLabel;
     
    83128    bool         m_fExpandCollapseIconVisible;
    84129    QIcon        m_expandCollapseIcon;
     130    UIToolBoxPageButton *m_pTitleButton;
    85131};
    86132
     
    94140    , m_pLayout(0)
    95141    , m_pTitleContainerWidget(0)
    96     , m_pTitleLabel(0)
    97142    , m_pIconLabel(0)
    98143    , m_pExpandCollapseIconLabel(0)
     
    101146    , m_iIndex(0)
    102147    , m_fExpandCollapseIconVisible(true)
     148    , m_pTitleButton(0)
    103149{
    104150    prepare(fEnableCheckBoxEnabled);
     
    107153void UIToolBoxPage::setTitle(const QString &strTitle)
    108154{
    109     if (!m_pTitleLabel)
    110         return;
    111     m_pTitleLabel->setText(strTitle);
     155    if (m_pTitleButton)
     156        m_pTitleButton->setText(strTitle);
    112157}
    113158
     
    138183    }
    139184
    140     m_pTitleLabel = new QLabel;
    141     m_pTitleLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
    142 
    143     pTitleLayout->addWidget(m_pTitleLabel);
     185    m_pTitleButton = new UIToolBoxPageButton;
     186    pTitleLayout->addWidget(m_pTitleButton);
     187    connect(m_pTitleButton, &UIToolBoxPageButton::clicked,
     188            this, &UIToolBoxPage::sltTitleButtonClicked);
    144189    m_pIconLabel = new QLabel;
    145190    pTitleLayout->addWidget(m_pIconLabel, Qt::AlignLeft);
     
    166211void UIToolBoxPage::setTitleBackgroundColor(const QColor &color)
    167212{
    168     if (!m_pTitleLabel)
    169         return;
    170213    QPalette palette = m_pTitleContainerWidget->palette();
    171214    palette.setColor(QPalette::Window, color);
     
    240283    if (m_pWidget)
    241284        m_pWidget->setEnabled(iState == Qt::Checked);
     285}
     286
     287void UIToolBoxPage::sltTitleButtonClicked()
     288{
     289    emit sigShowPageWidget();
    242290}
    243291
  • trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp

    r88250 r88262  
    164164    if (m_pToolBox)
    165165    {
    166         m_pToolBox->setPageTitle(ExpertToolboxItems_NameAndOSType, QString(UIWizardNewVM::tr("Name and Operating System")));
    167         m_pToolBox->setPageTitle(ExpertToolboxItems_Unattended, UIWizardNewVM::tr("Unattended Install"));
    168         m_pToolBox->setPageTitle(ExpertToolboxItems_Disk, UIWizardNewVM::tr("Hard Disk"));
    169         m_pToolBox->setPageTitle(ExpertToolboxItems_Hardware, UIWizardNewVM::tr("Hardware"));
     166        m_pToolBox->setPageTitle(ExpertToolboxItems_NameAndOSType, QString(UIWizardNewVM::tr("Name and &Operating System")));
     167        m_pToolBox->setPageTitle(ExpertToolboxItems_Unattended, UIWizardNewVM::tr("Unatt&ended Install"));
     168        m_pToolBox->setPageTitle(ExpertToolboxItems_Disk, UIWizardNewVM::tr("Hard &Disk"));
     169        m_pToolBox->setPageTitle(ExpertToolboxItems_Hardware, UIWizardNewVM::tr("&Hardware"));
    170170    }
    171171
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