VirtualBox

Ignore:
Timestamp:
Jan 21, 2018 9:28:37 PM (7 years ago)
Author:
vboxsync
Message:

FE/Qt bugref:9072 Lazy application of settings to log viewer tabs.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/logviewer
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogPage.cpp

    r70647 r70663  
    4949    , m_bShowLineNumbers(true)
    5050    , m_bWrapLines(false)
     51    , m_iFontSizeInPoints(9)
    5152{
    5253    prepare();
     
    247248    if (m_pTextEdit)
    248249        m_pTextEdit->setFocus();
    249 
     250    applySettings();
    250251    QWidget::showEvent(pEvent);
    251252}
     
    300301        return;
    301302    m_bShowLineNumbers = bShowLineNumbers;
    302     if (m_pTextEdit)
    303         m_pTextEdit->setShowLineNumbers(m_bShowLineNumbers);
    304     update();
    305303}
    306304
     
    310308        return;
    311309    m_bWrapLines = bWrapLines;
    312     if (m_pTextEdit)
    313         m_pTextEdit->setWrapLines(m_bWrapLines);
    314     update();
     310    applySettings();
    315311}
    316312
     
    324320}
    325321
     322void UIVMLogPage::setFontSizeInPoints(int fontSize)
     323{
     324    if (m_iFontSizeInPoints == fontSize)
     325        return;
     326    m_iFontSizeInPoints = fontSize;
     327    applySettings();
     328}
     329
     330int UIVMLogPage::fontSizeInPoints() const
     331{
     332    return m_iFontSizeInPoints;
     333}
     334
    326335int  UIVMLogPage::filteredLineCount() const
    327336{
     
    345354    return false;
    346355}
     356
     357void UIVMLogPage::applySettings()
     358{
     359    if (!isVisible())
     360        return;
     361    if (!m_pTextEdit)
     362        return;
     363    if (m_bWrapLines != m_pTextEdit->wrapLines())
     364        m_pTextEdit->setWrapLines(m_bWrapLines);
     365
     366    if (m_bShowLineNumbers != m_pTextEdit->showLineNumbers())
     367        m_pTextEdit->setShowLineNumbers(m_bShowLineNumbers);
     368
     369    if (m_iFontSizeInPoints != m_pTextEdit->fontSizeInPoints())
     370        m_pTextEdit->setFontSizeInPoints(m_iFontSizeInPoints);
     371
     372    update();
     373
     374}
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogPage.h

    r70645 r70663  
    109109    bool shouldFilterBeApplied(const QSet<QString> &filterTermSet, int filterOperationType) const;
    110110
     111    void setFontSizeInPoints(int fontSize);
     112    int  fontSizeInPoints() const;
     113
    111114protected:
    112115
     
    126129    void updateTextEditBookmarkLineSet();
    127130    void deleteBookmark(LogBookmark bookmark);
     131    /** When settings for this changed, they are applied immediately
     132        only if this is visible, if not they are applied when this becomes
     133        visible. */
     134    void applySettings();
    128135
    129136    QHBoxLayout    *m_pMainLayout;
     
    161168    bool m_bShowLineNumbers;
    162169    bool m_bWrapLines;
     170    int  m_iFontSizeInPoints;
    163171};
    164172
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerFilterPanel.cpp

    r70649 r70663  
    275275    int hitCount = 0;
    276276
    277     for(QSet<QString>::const_iterator iterator = m_filterTermSet.begin();
     277    for (QSet<QString>::const_iterator iterator = m_filterTermSet.begin();
    278278        iterator != m_filterTermSet.end(); ++iterator)
    279279    {
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerSettingsPanel.cpp

    r70617 r70663  
    2727# endif
    2828# include <QCheckBox>
     29# include <QLabel>
     30# include <QSpinBox>
    2931
    3032/* GUI includes: */
     
    4042    , m_pLineNumberCheckBox(0)
    4143    , m_pWrapLinesCheckBox(0)
     44    , m_pFontSizeSpinBox(0)
     45    , m_pFontSizeLabel(0)
     46    , m_iDefaultFontSize(9)
    4247{
    4348    prepare();
     
    6267}
    6368
     69void UIVMLogViewerSettingsPanel::setFontSizeInPoints(int fontSizeInPoints)
     70{
     71    if (!m_pFontSizeSpinBox)
     72        return;
     73    if (m_pFontSizeSpinBox->value() == fontSizeInPoints)
     74        return;
     75    m_pFontSizeSpinBox->setValue(fontSizeInPoints);
     76}
    6477
    6578void UIVMLogViewerSettingsPanel::prepareWidgets()
     
    6881        return;
    6982
    70     m_pLineNumberCheckBox = new QCheckBox(this);
    71     AssertPtrReturnVoid(m_pLineNumberCheckBox);
    72     m_pLineNumberCheckBox->setChecked(true);
    73     mainLayout()->addWidget(m_pLineNumberCheckBox, 0, Qt::AlignLeft);
     83    m_pLineNumberCheckBox = new QCheckBox;
     84    if (m_pLineNumberCheckBox)
     85    {
     86        m_pLineNumberCheckBox->setChecked(true);
     87        mainLayout()->addWidget(m_pLineNumberCheckBox, 0, Qt::AlignLeft);
     88    }
    7489
    75     m_pWrapLinesCheckBox = new QCheckBox(this);
    76     AssertPtrReturnVoid(m_pWrapLinesCheckBox);
    77     m_pWrapLinesCheckBox->setChecked(false);
    78     mainLayout()->addWidget(m_pWrapLinesCheckBox, 0, Qt::AlignLeft);
     90    m_pWrapLinesCheckBox = new QCheckBox;
     91    if (m_pWrapLinesCheckBox)
     92    {
     93        m_pWrapLinesCheckBox->setChecked(false);
     94        mainLayout()->addWidget(m_pWrapLinesCheckBox, 0, Qt::AlignLeft);
     95    }
    7996
     97    m_pFontSizeSpinBox = new QSpinBox;
     98    if (m_pFontSizeSpinBox)
     99    {
     100        mainLayout()->addWidget(m_pFontSizeSpinBox, 0, Qt::AlignLeft);
     101        m_pFontSizeSpinBox->setValue(m_iDefaultFontSize);
     102        m_pFontSizeSpinBox->setMaximum(44);
     103        m_pFontSizeSpinBox->setMinimum(6);
     104    }
     105
     106    m_pFontSizeLabel = new QLabel;
     107    if (m_pFontSizeLabel)
     108    {
     109        mainLayout()->addWidget(m_pFontSizeLabel, 0, Qt::AlignLeft);
     110    }
    80111    mainLayout()->addStretch(2);
    81112}
     
    87118    if (m_pWrapLinesCheckBox)
    88119        connect(m_pWrapLinesCheckBox, &QCheckBox::toggled, this, &UIVMLogViewerSettingsPanel::sigWrapLines);
     120    if (m_pFontSizeSpinBox)
     121        connect(m_pFontSizeSpinBox, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
     122                this, &UIVMLogViewerSettingsPanel::sigFontSizeInPoints);
    89123}
    90124
     
    97131    m_pWrapLinesCheckBox->setText(UIVMLogViewerWidget::tr("Wrap Lines"));
    98132    m_pWrapLinesCheckBox->setToolTip(UIVMLogViewerWidget::tr("Wrap Lines"));
     133
     134    m_pFontSizeLabel->setText(UIVMLogViewerWidget::tr("Font Size"));
     135    m_pFontSizeSpinBox->setToolTip(UIVMLogViewerWidget::tr("Log Viewer Font Size"));
    99136}
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerSettingsPanel.h

    r70581 r70663  
    2424/* Forward declarations: */
    2525class QCheckBox;
     26class QSpinBox;
    2627class UIVMLogViewerWidget;
     28class QLabel;
    2729
    2830/** UIVMLogViewerPanel extension providing GUI to manage logviewer settings. */
     
    3537    void sigShowLineNumbers(bool show);
    3638    void sigWrapLines(bool show);
     39    void sigFontSizeInPoints(int size);
    3740
    3841public:
     
    4245    void setShowLineNumbers(bool bShowLineNumbers);
    4346    void setWrapLines(bool bWrapLines);
     47    void setFontSizeInPoints(int fontSizeInPoints);
    4448
    4549public slots:
     
    6064    QCheckBox   *m_pLineNumberCheckBox;
    6165    QCheckBox   *m_pWrapLinesCheckBox;
     66    QSpinBox    *m_pFontSizeSpinBox;
     67    QLabel      *m_pFontSizeLabel;
     68
     69    /** Default font size in points. */
     70    const int    m_iDefaultFontSize;
     71
    6272};
    6373
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerTextEdit.cpp

    r70655 r70663  
    466466}
    467467
     468bool UIVMLogViewerTextEdit::showLineNumbers() const
     469{
     470    return m_bShowLineNumbers;
     471}
     472
    468473void UIVMLogViewerTextEdit::setWrapLines(bool bWrapLines)
    469474{
     
    481486        setWordWrapMode(QTextOption::NoWrap);
    482487    }
    483 
    484488    update();
     489}
     490
     491void UIVMLogViewerTextEdit::setFontSizeInPoints(int fontSize)
     492{
     493    if (fontSizeInPoints() == fontSize)
     494        return;
     495    QFont newFont(font());
     496    newFont.setPointSize(fontSize);
     497    setFont(newFont);
     498}
     499
     500int  UIVMLogViewerTextEdit::fontSizeInPoints() const
     501{
     502    return font().pointSize();
     503}
     504
     505bool UIVMLogViewerTextEdit::wrapLines() const
     506{
     507    return m_bWrapLines;
    485508}
    486509
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerTextEdit.h

    r70655 r70663  
    5454
    5555    void setShowLineNumbers(bool bShowLineNumbers);
     56    bool showLineNumbers() const;
     57
    5658    void setWrapLines(bool bWrapLines);
     59    bool wrapLines() const;
    5760
    5861    /** currentVerticalScrollBarValue is used by UIVMLogPage to store and restore scrolled
     
    6063    int  currentVerticalScrollBarValue() const;
    6164    void setCurrentVerticalScrollBarValue(int value);
     65
     66    void setFontSizeInPoints(int fontSize);
     67    int  fontSizeInPoints() const;
    6268
    6369protected:
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerWidget.cpp

    r70645 r70663  
    7474    , m_bShowLineNumbers(true)
    7575    , m_bWrapLines(false)
    76 
     76    , m_iFontSizeInPoints(9)
    7777{
    7878    /* Prepare VM Log-Viewer: */
     
    327327}
    328328
     329void UIVMLogViewerWidget::sltFontSizeChanged(int fontSize)
     330{
     331    if (m_iFontSizeInPoints == fontSize)
     332        return;
     333    m_iFontSizeInPoints = fontSize;
     334    for (int i = 0; i < m_logPageList.size(); ++i)
     335    {
     336        UIVMLogPage* pLogPage = qobject_cast<UIVMLogPage*>(m_logPageList[i]);
     337        if (pLogPage)
     338            pLogPage->setFontSizeInPoints(m_iFontSizeInPoints);
     339    }
     340}
    329341
    330342void UIVMLogViewerWidget::setMachine(const CMachine &machine)
     
    427439        m_pSettingsPanel->setShowLineNumbers(m_bShowLineNumbers);
    428440        m_pSettingsPanel->setWrapLines(m_bWrapLines);
     441        m_pSettingsPanel->setFontSizeInPoints(m_iFontSizeInPoints);
    429442
    430443        m_pMainLayout->insertWidget(5, m_pSettingsPanel);
    431444        connect(m_pSettingsPanel, &UIVMLogViewerSettingsPanel::sigShowLineNumbers, this, &UIVMLogViewerWidget::sltShowLineNumbers);
    432445        connect(m_pSettingsPanel, &UIVMLogViewerSettingsPanel::sigWrapLines, this, &UIVMLogViewerWidget::sltWrapLines);
     446        connect(m_pSettingsPanel, &UIVMLogViewerSettingsPanel::sigFontSizeInPoints, this, &UIVMLogViewerWidget::sltFontSizeChanged);
    433447    }
    434448}
     
    831845    pLogPage->setShowLineNumbers(m_bShowLineNumbers);
    832846    pLogPage->setWrapLines(m_bWrapLines);
     847    pLogPage->setFontSizeInPoints(m_iFontSizeInPoints);
     848
    833849    /* Set the file name only if we really have log file to read. */
    834850    if (!noLogsToShow)
  • trunk/src/VBox/Frontends/VirtualBox/src/logviewer/UIVMLogViewerWidget.h

    r70617 r70663  
    108108    void sltLogPageFilteredChanged(bool isFiltered);
    109109
    110     void sltShowLineNumbers(bool bShowLineNumbers);
    111     void sltWrapLines(bool bWrapLine);
     110    /** @name Slots to handle signals from settings panel
     111     * @{ */
     112        void sltShowLineNumbers(bool bShowLineNumbers);
     113        void sltWrapLines(bool bWrapLine);
     114        void sltFontSizeChanged(int fontSize);
     115    /** @} */
    112116
    113117private:
     
    201205        bool m_bShowLineNumbers;
    202206        bool m_bWrapLines;
     207        int  m_iFontSizeInPoints;
    203208    /** @} */
    204209
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