VirtualBox

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


Ignore:
Timestamp:
Aug 23, 2023 5:08:38 PM (20 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
158897
Message:

FE/Qt: UISettingsDialog: Moving UIPageValidator from QIWidgetValidator to separate UISettingsPageValidator class under settings folder as it contains a lot of private (to settings code) references; Corresponding refactoring here and there.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk

    r100956 r100959  
    879879        src/settings/UISettingsDialogSpecific.h \
    880880        src/settings/UISettingsPage.h \
     881        src/settings/UISettingsPageValidator.h \
    881882        src/settings/UISettingsSelector.h \
    882883        src/settings/UISettingsSerializer.h \
     
    14611462        src/settings/UISettingsDialogSpecific.cpp \
    14621463        src/settings/UISettingsPage.cpp \
     1464        src/settings/UISettingsPageValidator.cpp \
    14631465        src/settings/UISettingsSelector.cpp \
    14641466        src/settings/UISettingsSerializer.cpp \
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIWidgetValidator.cpp

    r98103 r100959  
    2828/* GUI includes: */
    2929#include "QIWidgetValidator.h"
    30 #include "UISettingsPage.h"
     30
     31/* Other VBox includes: */
     32#include "iprt/assert.h"
    3133
    3234
     
    4042    , m_enmState(QValidator::Invalid)
    4143{
    42     /* Prepare: */
    4344    prepare();
    4445}
     
    8081*   Class QObjectValidatorGroup implementation.                                                                                  *
    8182*********************************************************************************************************************************/
     83
     84QObjectValidatorGroup::QObjectValidatorGroup(QObject *pParent)
     85    : QObject(pParent)
     86    , m_fResult(false)
     87{
     88}
    8289
    8390void QObjectValidatorGroup::addObjectValidator(QObjectValidator *pObjectValidator)
     
    135142
    136143/*********************************************************************************************************************************
    137 *   Class UIPageValidator implementation.                                                                                        *
    138 *********************************************************************************************************************************/
    139 
    140 QPixmap UIPageValidator::warningPixmap() const
    141 {
    142     return m_pPage->warningPixmap();
    143 }
    144 
    145 QString UIPageValidator::internalName() const
    146 {
    147     return m_pPage->internalName();
    148 }
    149 
    150 void UIPageValidator::setLastMessage(const QString &strLastMessage)
    151 {
    152     /* Remember new message: */
    153     m_strLastMessage = strLastMessage;
    154 
    155     /* Should we show corresponding warning icon? */
    156     if (m_strLastMessage.isEmpty())
    157         emit sigHideWarningIcon();
    158     else
    159         emit sigShowWarningIcon();
    160 }
    161 
    162 void UIPageValidator::revalidate()
    163 {
    164     /* Notify listener(s) about validity change: */
    165     emit sigValidityChanged(this);
    166 }
    167 
    168 
    169 /*********************************************************************************************************************************
    170144*   Class QIULongValidator implementation.                                                                                       *
    171145*********************************************************************************************************************************/
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIWidgetValidator.h

    r98103 r100959  
    3434/* Qt includes: */
    3535#include <QMap>
    36 #include <QPixmap>
    3736#include <QValidator>
    3837
     
    4039#include "UILibraryDefs.h"
    4140
    42 /* Forward declarations: */
    43 class QPixmap;
    44 class QString;
    45 class UISettingsPage;
    4641
    47 
    48 /** QObject extension,
     42/** QObject sub-class,
    4943  * providing passed QObject with validation routine. */
    5044class SHARED_LIBRARY_STUFF QObjectValidator : public QObject
     
    8579
    8680
    87 /** QObject extension,
     81/** QObject sub-class,
    8882  * which can group various QObjectValidator instances to operate on. */
    8983class SHARED_LIBRARY_STUFF QObjectValidatorGroup : public QObject
     
    9993
    10094    /** Constructs validation group passing @a pParent to the base-class. */
    101     QObjectValidatorGroup(QObject *pParent)
    102         : QObject(pParent)
    103         , m_fResult(false)
    104     {}
     95    QObjectValidatorGroup(QObject *pParent);
    10596
    10697    /** Adds @a pObjectValidator.
     
    127118    /** Holds validation result. */
    128119    bool m_fResult;
    129 };
    130 
    131 
    132 /** Page validator prototype. */
    133 class SHARED_LIBRARY_STUFF UIPageValidator : public QObject
    134 {
    135     Q_OBJECT;
    136 
    137 signals:
    138 
    139     /** Notifies about validity change for @a pValidator. */
    140     void sigValidityChanged(UIPageValidator *pValidator);
    141 
    142     /** Asks listener to show warning icon. */
    143     void sigShowWarningIcon();
    144     /** Asks listener to hide warning icon. */
    145     void sigHideWarningIcon();
    146 
    147 public:
    148 
    149     /** Constructs page validator for a certain @a pPage,
    150       * passing @a pParent to the base-class. */
    151     UIPageValidator(QObject *pParent, UISettingsPage *pPage)
    152         : QObject(pParent)
    153         , m_pPage(pPage)
    154         , m_fIsValid(true)
    155     {}
    156 
    157     /** Returns page. */
    158     UISettingsPage *page() const { return m_pPage; }
    159     /** Returns warning pixmap. */
    160     QPixmap warningPixmap() const;
    161     /** Returns internal name. */
    162     QString internalName() const;
    163 
    164     /** Returns whether validator is valid. */
    165     bool isValid() const { return m_fIsValid; }
    166     /** Defines whether validator @a fIsValid. */
    167     void setValid(bool fIsValid) { m_fIsValid = fIsValid; }
    168 
    169     /** Returns last message. */
    170     QString lastMessage() const { return m_strLastMessage; }
    171     /** Defines @a strLastMessage. */
    172     void setLastMessage(const QString &strLastMessage);
    173 
    174 public slots:
    175 
    176     /** Performs revalidation. */
    177     void revalidate();
    178 
    179 private:
    180 
    181     /** Holds the validated page. */
    182     UISettingsPage *m_pPage;
    183 
    184     /** Holds whether the page is valid. */
    185     bool m_fIsValid;
    186 
    187     /** Holds the last message. */
    188     QString m_strLastMessage;
    189120};
    190121
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.cpp

    r100925 r100959  
    4747#include "UISettingsDialog.h"
    4848#include "UISettingsPage.h"
     49#include "UISettingsPageValidator.h"
    4950#include "UISettingsSelector.h"
    5051#include "UISettingsSerializer.h"
     
    9697    save();
    9798
    98     /* Close if theere is no ongoing serialization: */
     99    /* Close if there is no ongoing serialization: */
    99100    if (!isSerializationInProgress())
    100101        close();
     
    103104void UISettingsDialog::reject()
    104105{
    105     /* Close if theere is no ongoing serialization: */
     106    /* Close if there is no ongoing serialization: */
    106107    if (!isSerializationInProgress())
    107108        close();
     
    198199
    199200    /* Retranslate all validators: */
    200     foreach (UIPageValidator *pValidator, findChildren<UIPageValidator*>())
     201    foreach (UISettingsPageValidator *pValidator, findChildren<UISettingsPageValidator*>())
    201202        if (!pValidator->lastMessage().isEmpty())
    202203            revalidate(pValidator);
     
    344345    m_pSerializeProcess = new UISettingsSerializer(this, UISettingsSerializer::Load,
    345346                                                   data, m_pSelector->settingPages());
    346     AssertPtrReturnVoid(m_pSerializeProcess);
     347    if (m_pSerializeProcess)
    347348    {
    348349        /* Configure settings loader: */
     
    374375        new UISettingsSerializerProgress(this, UISettingsSerializer::Save,
    375376                                         data, m_pSelector->settingPages());
    376     AssertPtrReturnVoid(static_cast<UISettingsSerializerProgress*>(pDlgSerializeProgress));
     377    if (pDlgSerializeProgress)
    377378    {
    378379        /* Make the 'settings saver' temporary parent for all sub-dialogs: */
     
    432433    {
    433434        pSettingsPage->setId(cId);
    434         assignValidator(pSettingsPage);
     435
     436        /* Create validator: */
     437        UISettingsPageValidator *pValidator = new UISettingsPageValidator(this, pSettingsPage);
     438        connect(pValidator, &UISettingsPageValidator::sigValidityChanged, this, &UISettingsDialog::sltHandleValidityChange);
     439        pSettingsPage->setValidator(pValidator);
     440        m_pWarningPane->registerValidator(pValidator);
     441
     442        /* Update navigation (tab-order): */
     443        pSettingsPage->setOrderAfter(m_pSelector->widget());
    435444    }
    436445}
     
    441450}
    442451
    443 void UISettingsDialog::revalidate(UIPageValidator *pValidator)
     452void UISettingsDialog::revalidate(UISettingsPageValidator *pValidator)
    444453{
    445454    /* Perform page revalidation: */
     
    487496
    488497    /* Enumerating all the validators we have: */
    489     QList<UIPageValidator*> validators(findChildren<UIPageValidator*>());
    490     foreach (UIPageValidator *pValidator, validators)
     498    QList<UISettingsPageValidator*> validators(findChildren<UISettingsPageValidator*>());
     499    foreach (UISettingsPageValidator *pValidator, validators)
    491500    {
    492501        /* Is current validator have something to say? */
     
    536545}
    537546
    538 void UISettingsDialog::sltHandleValidityChange(UIPageValidator *pValidator)
     547void UISettingsDialog::sltHandleValidityChange(UISettingsPageValidator *pValidator)
    539548{
    540549    /* Determine which settings-page had called for revalidation: */
     
    559568}
    560569
    561 void UISettingsDialog::sltHandleWarningPaneHovered(UIPageValidator *pValidator)
     570void UISettingsDialog::sltHandleWarningPaneHovered(UISettingsPageValidator *pValidator)
    562571{
    563572    LogRelFlow(("Settings Dialog: Warning-icon hovered: %s.\n", pValidator->internalName().toUtf8().constData()));
     
    565574    /* Show corresponding popup: */
    566575    if (!m_fValid || !m_fSilent)
    567     {
    568576        popupCenter().popup(m_pStack, "SettingsDialogWarning",
    569577                            pValidator->lastMessage());
    570     }
    571 }
    572 
    573 void UISettingsDialog::sltHandleWarningPaneUnhovered(UIPageValidator *pValidator)
     578}
     579
     580void UISettingsDialog::sltHandleWarningPaneUnhovered(UISettingsPageValidator *pValidator)
    574581{
    575582    LogRelFlow(("Settings Dialog: Warning-icon unhovered: %s.\n", pValidator->internalName().toUtf8().constData()));
     
    732739{
    733740    /* Delete serializer if exists: */
    734     if (serializeProcess())
    735     {
    736         delete m_pSerializeProcess;
    737         m_pSerializeProcess = 0;
    738     }
     741    delete m_pSerializeProcess;
     742    m_pSerializeProcess = 0;
    739743
    740744    /* Recall popup-pane if any: */
     
    744748    delete m_pSelector;
    745749}
    746 
    747 void UISettingsDialog::assignValidator(UISettingsPage *pPage)
    748 {
    749     /* Assign validator: */
    750     UIPageValidator *pValidator = new UIPageValidator(this, pPage);
    751     connect(pValidator, &UIPageValidator::sigValidityChanged, this, &UISettingsDialog::sltHandleValidityChange);
    752     pPage->setValidator(pValidator);
    753     m_pWarningPane->registerValidator(pValidator);
    754 
    755     /// @todo Why here?
    756     /* Configure navigation (tab-order): */
    757     pPage->setOrderAfter(m_pSelector->widget());
    758 }
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.h

    r100925 r100959  
    4949class QVariant;
    5050class QIDialogButtonBox;
    51 class UIPageValidator;
     51class UISettingsPageValidator;
    5252class UISettingsPage;
    5353class UISettingsSelector;
     
    160160
    161161    /** Validates data correctness using certain @a pValidator. */
    162     void revalidate(UIPageValidator *pValidator);
     162    void revalidate(UISettingsPageValidator *pValidator);
    163163    /** Validates data correctness. */
    164164    void revalidate();
     
    178178
    179179    /** Handles validity change for certain @a pValidator. */
    180     void sltHandleValidityChange(UIPageValidator *pValidator);
     180    void sltHandleValidityChange(UISettingsPageValidator *pValidator);
    181181
    182182    /** Handles hover enter for warning pane specified by @a pValidator. */
    183     void sltHandleWarningPaneHovered(UIPageValidator *pValidator);
     183    void sltHandleWarningPaneHovered(UISettingsPageValidator *pValidator);
    184184    /** Handles hover leave for warning pane specified by @a pValidator. */
    185     void sltHandleWarningPaneUnhovered(UIPageValidator *pValidator);
     185    void sltHandleWarningPaneUnhovered(UISettingsPageValidator *pValidator);
    186186
    187187private:
     
    201201        void cleanup();
    202202    /** @} */
    203 
    204     /** Assigns validater for passed @a pPage. */
    205     void assignValidator(UISettingsPage *pPage);
    206203
    207204    /** Holds configuration access level. */
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsPage.cpp

    r98103 r100959  
    2929#include "UIConverter.h"
    3030#include "UISettingsPage.h"
    31 #include "QIWidgetValidator.h"
     31#include "UISettingsPageValidator.h"
    3232
    3333
     
    5555}
    5656
    57 void UISettingsPage::setValidator(UIPageValidator *pValidator)
     57void UISettingsPage::setValidator(UISettingsPageValidator *pValidator)
    5858{
    5959    /* Make sure validator is not yet assigned: */
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsPage.h

    r98103 r100959  
    5353class QVariant;
    5454class QWidget;
    55 class UIPageValidator;
     55class UISettingsPageValidator;
    5656
    5757/* Using declarations: */
     
    135135
    136136    /** Defines @a pValidator. */
    137     void setValidator(UIPageValidator *pValidator);
     137    void setValidator(UISettingsPageValidator *pValidator);
    138138    /** Defines whether @a fIsValidatorBlocked which means not used at all. */
    139139    void setValidatorBlocked(bool fIsValidatorBlocked) { m_fIsValidatorBlocked = fIsValidatorBlocked; }
     
    207207
    208208    /** Holds the first TAB-orer widget reference. */
    209     QWidget         *m_pFirstWidget;
     209    QWidget                 *m_pFirstWidget;
    210210    /** Holds the page validator. */
    211     UIPageValidator *m_pValidator;
     211    UISettingsPageValidator *m_pValidator;
    212212
    213213    /** Holds whether page validation is blocked. */
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsPageValidator.cpp

    r100947 r100959  
    11/* $Id$ */
    22/** @file
    3  * VBox Qt GUI - Qt extensions: QIWidgetValidator class implementation.
     3 * VBox Qt GUI - Qt extensions: UISettingsPageValidator class implementation.
    44 */
    55
     
    2727
    2828/* GUI includes: */
    29 #include "QIWidgetValidator.h"
    3029#include "UISettingsPage.h"
     30#include "UISettingsPageValidator.h"
    3131
    3232
    33 /*********************************************************************************************************************************
    34 *   Class QObjectValidator implementation.                                                                                       *
    35 *********************************************************************************************************************************/
    36 
    37 QObjectValidator::QObjectValidator(QValidator *pValidator, QObject *pParent /* = 0 */)
     33UISettingsPageValidator::UISettingsPageValidator(QObject *pParent, UISettingsPage *pPage)
    3834    : QObject(pParent)
    39     , m_pValidator(pValidator)
    40     , m_enmState(QValidator::Invalid)
     35    , m_pPage(pPage)
     36    , m_fIsValid(true)
    4137{
    42     /* Prepare: */
    43     prepare();
    4438}
    4539
    46 void QObjectValidator::sltValidate(QString strInput /* = QString() */)
    47 {
    48     /* Make sure validator assigned: */
    49     AssertPtrReturnVoid(m_pValidator);
    50 
    51     /* Validate: */
    52     int iPosition = 0;
    53     const QValidator::State enmState = m_pValidator->validate(strInput, iPosition);
    54 
    55     /* If validity state changed: */
    56     if (m_enmState != enmState)
    57     {
    58         /* Update last validity state: */
    59         m_enmState = enmState;
    60 
    61         /* Notifies listener(s) about validity change: */
    62         emit sigValidityChange(m_enmState);
    63     }
    64 }
    65 
    66 void QObjectValidator::prepare()
    67 {
    68     /* Make sure validator assigned: */
    69     AssertPtrReturnVoid(m_pValidator);
    70 
    71     /* Register validator as child: */
    72     m_pValidator->setParent(this);
    73 
    74     /* Validate: */
    75     sltValidate();
    76 }
    77 
    78 
    79 /*********************************************************************************************************************************
    80 *   Class QObjectValidatorGroup implementation.                                                                                  *
    81 *********************************************************************************************************************************/
    82 
    83 void QObjectValidatorGroup::addObjectValidator(QObjectValidator *pObjectValidator)
    84 {
    85     /* Make sure object-validator passed: */
    86     AssertPtrReturnVoid(pObjectValidator);
    87 
    88     /* Register object-validator as child: */
    89     pObjectValidator->setParent(this);
    90 
    91     /* Insert object-validator to internal map: */
    92     m_group.insert(pObjectValidator, toResult(pObjectValidator->state()));
    93 
    94     /* Attach object-validator to group: */
    95     connect(pObjectValidator, &QObjectValidator::sigValidityChange,
    96             this, &QObjectValidatorGroup::sltValidate);
    97 }
    98 
    99 void QObjectValidatorGroup::sltValidate(QValidator::State enmState)
    100 {
    101     /* Determine sender object-validator: */
    102     QObjectValidator *pObjectValidatorSender = qobject_cast<QObjectValidator*>(sender());
    103     /* Make sure that is one of our senders: */
    104     AssertReturnVoid(pObjectValidatorSender && m_group.contains(pObjectValidatorSender));
    105 
    106     /* Update internal map: */
    107     m_group[pObjectValidatorSender] = toResult(enmState);
    108 
    109     /* Enumerate all the registered object-validators: */
    110     bool fResult = true;
    111     foreach (QObjectValidator *pObjectValidator, m_group.keys())
    112         if (!toResult(pObjectValidator->state()))
    113         {
    114             fResult = false;
    115             break;
    116         }
    117 
    118     /* If validity state changed: */
    119     if (m_fResult != fResult)
    120     {
    121         /* Update last validity state: */
    122         m_fResult = fResult;
    123 
    124         /* Notifies listener(s) about validity change: */
    125         emit sigValidityChange(m_fResult);
    126     }
    127 }
    128 
    129 /* static */
    130 bool QObjectValidatorGroup::toResult(QValidator::State enmState)
    131 {
    132     return enmState == QValidator::Acceptable;
    133 }
    134 
    135 
    136 /*********************************************************************************************************************************
    137 *   Class UIPageValidator implementation.                                                                                        *
    138 *********************************************************************************************************************************/
    139 
    140 QPixmap UIPageValidator::warningPixmap() const
     40QPixmap UISettingsPageValidator::warningPixmap() const
    14141{
    14242    return m_pPage->warningPixmap();
    14343}
    14444
    145 QString UIPageValidator::internalName() const
     45QString UISettingsPageValidator::internalName() const
    14646{
    14747    return m_pPage->internalName();
    14848}
    14949
    150 void UIPageValidator::setLastMessage(const QString &strLastMessage)
     50void UISettingsPageValidator::setLastMessage(const QString &strLastMessage)
    15151{
    15252    /* Remember new message: */
     
    16060}
    16161
    162 void UIPageValidator::revalidate()
     62void UISettingsPageValidator::revalidate()
    16363{
    16464    /* Notify listener(s) about validity change: */
    16565    emit sigValidityChanged(this);
    16666}
    167 
    168 
    169 /*********************************************************************************************************************************
    170 *   Class QIULongValidator implementation.                                                                                       *
    171 *********************************************************************************************************************************/
    172 
    173 QValidator::State QIULongValidator::validate(QString &strInput, int &iPosition) const
    174 {
    175     Q_UNUSED(iPosition);
    176 
    177     /* Get the stripped string: */
    178     QString strStripped = strInput.trimmed();
    179 
    180     /* 'Intermediate' for empty string or started from '0x': */
    181     if (strStripped.isEmpty() ||
    182         strStripped.toUpper() == QString("0x").toUpper())
    183         return Intermediate;
    184 
    185     /* Convert to ulong: */
    186     bool fOk;
    187     ulong uEntered = strInput.toULong(&fOk, 0);
    188 
    189     /* 'Invalid' if failed to convert: */
    190     if (!fOk)
    191         return Invalid;
    192 
    193     /* 'Acceptable' if fits the bounds: */
    194     if (uEntered >= m_uBottom && uEntered <= m_uTop)
    195         return Acceptable;
    196 
    197     /* 'Invalid' if more than top, 'Intermediate' if less than bottom: */
    198     return uEntered > m_uTop ? Invalid : Intermediate;
    199 }
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsPageValidator.h

    r100947 r100959  
    11/* $Id$ */
    22/** @file
    3  * VBox Qt GUI - Qt extensions: QIWidgetValidator class declaration.
     3 * VBox Qt GUI - Qt extensions: UISettingsPageValidator class declaration.
    44 */
    55
     
    2626 */
    2727
    28 #ifndef FEQT_INCLUDED_SRC_extensions_QIWidgetValidator_h
    29 #define FEQT_INCLUDED_SRC_extensions_QIWidgetValidator_h
     28#ifndef FEQT_INCLUDED_SRC_settings_UISettingsPageValidator_h
     29#define FEQT_INCLUDED_SRC_settings_UISettingsPageValidator_h
    3030#ifndef RT_WITHOUT_PRAGMA_ONCE
    3131# pragma once
     
    3333
    3434/* Qt includes: */
    35 #include <QMap>
     35#include <QObject>
    3636#include <QPixmap>
    37 #include <QValidator>
    3837
    3938/* GUI includes: */
     
    4140
    4241/* Forward declarations: */
    43 class QPixmap;
    4442class QString;
    4543class UISettingsPage;
    4644
    47 
    48 /** QObject extension,
    49   * providing passed QObject with validation routine. */
    50 class SHARED_LIBRARY_STUFF QObjectValidator : public QObject
    51 {
    52     Q_OBJECT;
    53 
    54 signals:
    55 
    56     /** Notifies listener(s) about validity changed to @a enmState. */
    57     void sigValidityChange(QValidator::State enmState);
    58 
    59 public:
    60 
    61     /** Constructs object validator passing @a pParent to the base-class.
    62       * @param  pValidator  Brings the validator passed on to the OObject
    63       *                     children and used to perform validation itself. */
    64     QObjectValidator(QValidator *pValidator, QObject *pParent = 0);
    65 
    66     /** Returns last validation state. */
    67     QValidator::State state() const { return m_enmState; }
    68 
    69 public slots:
    70 
    71     /** Performs validation: */
    72     void sltValidate(QString strInput = QString());
    73 
    74 private:
    75 
    76     /** Prepare routine. */
    77     void prepare();
    78 
    79     /** Holds the validator reference. */
    80     QValidator *m_pValidator;
    81 
    82     /** Holds the validation state. */
    83     QValidator::State m_enmState;
    84 };
    85 
    86 
    87 /** QObject extension,
    88   * which can group various QObjectValidator instances to operate on. */
    89 class SHARED_LIBRARY_STUFF QObjectValidatorGroup : public QObject
    90 {
    91     Q_OBJECT;
    92 
    93 signals:
    94 
    95     /** Notifies listener(s) about validity changed to @a fValid. */
    96     void sigValidityChange(bool fValid);
    97 
    98 public:
    99 
    100     /** Constructs validation group passing @a pParent to the base-class. */
    101     QObjectValidatorGroup(QObject *pParent)
    102         : QObject(pParent)
    103         , m_fResult(false)
    104     {}
    105 
    106     /** Adds @a pObjectValidator.
    107       * @note The ownership of @a pObjectValidator is transferred to the group,
    108       *       and it's the group's responsibility to delete it. */
    109     void addObjectValidator(QObjectValidator *pObjectValidator);
    110 
    111     /** Returns last validation result. */
    112     bool result() const { return m_fResult; }
    113 
    114 private slots:
    115 
    116     /** Performs validation for a passed @a enmState. */
    117     void sltValidate(QValidator::State enmState);
    118 
    119 private:
    120 
    121     /** Converts QValidator::State to bool result. */
    122     static bool toResult(QValidator::State enmState);
    123 
    124     /** Holds object-validators and their states. */
    125     QMap<QObjectValidator*, bool> m_group;
    126 
    127     /** Holds validation result. */
    128     bool m_fResult;
    129 };
    130 
    131 
    132 /** Page validator prototype. */
    133 class SHARED_LIBRARY_STUFF UIPageValidator : public QObject
     45/** QObject sub-class,
     46  * used as settings-page validator. */
     47class SHARED_LIBRARY_STUFF UISettingsPageValidator : public QObject
    13448{
    13549    Q_OBJECT;
     
    13852
    13953    /** Notifies about validity change for @a pValidator. */
    140     void sigValidityChanged(UIPageValidator *pValidator);
     54    void sigValidityChanged(UISettingsPageValidator *pValidator);
    14155
    14256    /** Asks listener to show warning icon. */
     
    14963    /** Constructs page validator for a certain @a pPage,
    15064      * passing @a pParent to the base-class. */
    151     UIPageValidator(QObject *pParent, UISettingsPage *pPage)
    152         : QObject(pParent)
    153         , m_pPage(pPage)
    154         , m_fIsValid(true)
    155     {}
     65    UISettingsPageValidator(QObject *pParent, UISettingsPage *pPage);
    15666
    15767    /** Returns page. */
    15868    UISettingsPage *page() const { return m_pPage; }
     69
    15970    /** Returns warning pixmap. */
    16071    QPixmap warningPixmap() const;
     
    18394
    18495    /** Holds whether the page is valid. */
    185     bool m_fIsValid;
     96    bool  m_fIsValid;
    18697
    18798    /** Holds the last message. */
    188     QString m_strLastMessage;
     99    QString  m_strLastMessage;
    189100};
    190101
    191 
    192 /** QValidator extension,
    193   * for long number validations. */
    194 class SHARED_LIBRARY_STUFF QIULongValidator : public QValidator
    195 {
    196 public:
    197 
    198     /** Constructs long validator passing @a pParent to the base-class. */
    199     QIULongValidator(QObject *pParent)
    200         : QValidator(pParent)
    201         , m_uBottom(0), m_uTop(ULONG_MAX)
    202     {}
    203 
    204     /** Constructs long validator passing @a pParent to the base-class.
    205       * @param  uMinimum  Holds the minimum valid border.
    206       * @param  uMaximum  Holds the maximum valid border. */
    207     QIULongValidator(ulong uMinimum, ulong uMaximum,
    208                      QObject *pParent)
    209         : QValidator(pParent)
    210         , m_uBottom(uMinimum), m_uTop(uMaximum)
    211     {}
    212 
    213     /** Destructs long validator. */
    214     virtual ~QIULongValidator() {}
    215 
    216     /** Performs validation for @a strInput at @a iPosition. */
    217     State validate(QString &strInput, int &iPosition) const;
    218 
    219     /** Defines @a uBottom. */
    220     void setBottom(ulong uBottom) { setRange(uBottom, m_uTop); }
    221     /** Defines @a uTop. */
    222     void setTop(ulong uTop) { setRange(m_uBottom, uTop); }
    223     /** Defines range based on passed @a uBottom and @a uTop. */
    224     void setRange(ulong uBottom, ulong uTop) { m_uBottom = uBottom; m_uTop = uTop; }
    225     /** Returns bottom. */
    226     ulong bottom() const { return m_uBottom; }
    227     /** Returns top. */
    228     ulong top() const { return m_uTop; }
    229 
    230 private:
    231 
    232     /** Holds the bottom. */
    233     ulong m_uBottom;
    234     /** Holds the top. */
    235     ulong m_uTop;
    236 };
    237 
    238 
    239 #endif /* !FEQT_INCLUDED_SRC_extensions_QIWidgetValidator_h */
     102#endif /* !FEQT_INCLUDED_SRC_settings_UISettingsPageValidator_h */
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIWarningPane.cpp

    r98103 r100959  
    3333
    3434/* GUI includes: */
    35 #include "QIWidgetValidator.h"
     35#include "UISettingsPageValidator.h"
    3636#include "UIWarningPane.h"
    3737
     
    5757}
    5858
    59 void UIWarningPane::registerValidator(UIPageValidator *pValidator)
     59void UIWarningPane::registerValidator(UISettingsPageValidator *pValidator)
    6060{
    6161    /* Make sure validator exists: */
     
    7979        pIconLabel->installEventFilter(this);
    8080        pIconLabel->setPixmap(pValidator->warningPixmap());
    81         connect(pValidator, &UIPageValidator::sigShowWarningIcon, pIconLabel, &QLabel::show);
    82         connect(pValidator, &UIPageValidator::sigHideWarningIcon, pIconLabel, &QLabel::hide);
     81        connect(pValidator, &UISettingsPageValidator::sigShowWarningIcon, pIconLabel, &QLabel::show);
     82        connect(pValidator, &UISettingsPageValidator::sigHideWarningIcon, pIconLabel, &QLabel::hide);
    8383
    8484        /* Add icon-label into list: */
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIWarningPane.h

    r98103 r100959  
    4646class QTimer;
    4747class QWidget;
    48 class UIPageValidator;
     48class UISettingsPageValidator;
    4949
    5050/** QWidget subclass used a settings dialog warning-pane. */
     
    5757    /** Notifies about hover enter event.
    5858      * @param  pValidator  Brings the validator reference. */
    59     void sigHoverEnter(UIPageValidator *pValidator);
     59    void sigHoverEnter(UISettingsPageValidator *pValidator);
    6060    /** Notifies about hover leave event.
    6161      * @param  pValidator  Brings the validator reference. */
    62     void sigHoverLeave(UIPageValidator *pValidator);
     62    void sigHoverLeave(UISettingsPageValidator *pValidator);
    6363
    6464public:
     
    7171
    7272    /** Registers corresponding @a pValidator. */
    73     void registerValidator(UIPageValidator *pValidator);
     73    void registerValidator(UISettingsPageValidator *pValidator);
    7474
    7575protected:
     
    9494
    9595    /** Holds the page validators list. */
    96     QList<UIPageValidator*>  m_validators;
     96    QList<UISettingsPageValidator*>  m_validators;
    9797    /** Holds the page icons list. */
    98     QList<QLabel*>           m_icons;
     98    QList<QLabel*>                   m_icons;
    9999    /** Holds the icons hovered-states list. */
    100     QList<bool>              m_hovered;
     100    QList<bool>                      m_hovered;
    101101
    102102    /** Holds the hover timer instance. */
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