Changeset 51813 in vbox
- Timestamp:
- Jul 2, 2014 2:17:56 PM (11 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/extensions
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIWidgetValidator.cpp
r47846 r51813 18 18 */ 19 19 20 /* GUI includes: */ 20 21 #include "QIWidgetValidator.h" 22 #include "UISettingsPage.h" 21 23 22 /* GUI includes: */ 23 #include "UISettingsPage.h" 24 25 QObjectValidator::QObjectValidator(QValidator *pValidator, QObject *pParent /* = 0 */) 26 : QObject(pParent) 27 , m_pValidator(pValidator) 28 , m_state(QValidator::Invalid) 29 { 30 /* Prepare: */ 31 prepare(); 32 } 33 34 void QObjectValidator::sltValidate(QString strInput /* = QString() */) 35 { 36 /* Make sure validator assigned: */ 37 AssertPtrReturnVoid(m_pValidator); 38 39 /* Validate: */ 40 int iPosition = 0; 41 const QValidator::State state = m_pValidator->validate(strInput, iPosition); 42 43 /* If validity state changed: */ 44 if (m_state != state) 45 { 46 /* Update last validity state: */ 47 m_state = state; 48 49 /* Notifies listener(s) about validity change: */ 50 emit sigValidityChange(m_state); 51 } 52 } 53 54 void QObjectValidator::prepare() 55 { 56 /* Make sure validator assigned: */ 57 AssertPtrReturnVoid(m_pValidator); 58 59 /* Register validator as child: */ 60 m_pValidator->setParent(this); 61 62 /* Validate: */ 63 sltValidate(); 64 } 65 66 67 QObjectValidatorGroup::QObjectValidatorGroup(QObject *pParent) 68 : QObject(pParent) 69 , m_fResult(false) 70 { 71 } 72 73 void QObjectValidatorGroup::addObjectValidator(QObjectValidator *pObjectValidator) 74 { 75 /* Make sure object-validator passed: */ 76 AssertPtrReturnVoid(pObjectValidator); 77 78 /* Register object-validator as child: */ 79 pObjectValidator->setParent(this); 80 81 /* Insert object-validator to internal map: */ 82 m_group.insert(pObjectValidator, toResult(pObjectValidator->state())); 83 84 /* Attach object-validator to group: */ 85 connect(pObjectValidator, SIGNAL(sigValidityChange(QValidator::State)), 86 this, SLOT(sltValidate(QValidator::State))); 87 } 88 89 void QObjectValidatorGroup::sltValidate(QValidator::State state) 90 { 91 /* Determine sender object-validator: */ 92 QObjectValidator *pObjectValidatorSender = qobject_cast<QObjectValidator*>(sender()); 93 /* Make sure that is one of our senders: */ 94 AssertReturnVoid(pObjectValidatorSender && m_group.contains(pObjectValidatorSender)); 95 96 /* Update internal map: */ 97 m_group[pObjectValidatorSender] = toResult(state); 98 99 /* Enumerate all the registered object-validators: */ 100 bool fResult = true; 101 foreach (QObjectValidator *pObjectValidator, m_group.keys()) 102 if (!toResult(pObjectValidator->state())) 103 { 104 fResult = false; 105 break; 106 } 107 108 /* If validity state changed: */ 109 if (m_fResult != fResult) 110 { 111 /* Update last validity state: */ 112 m_fResult = fResult; 113 114 /* Notifies listener(s) about validity change: */ 115 emit sigValidityChange(m_fResult); 116 } 117 } 118 119 /* static */ 120 bool QObjectValidatorGroup::toResult(QValidator::State state) 121 { 122 return state == QValidator::Acceptable; 123 } 24 124 25 125 -
trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIWidgetValidator.h
r47846 r51813 31 31 /* Forward declarations: */ 32 32 class UISettingsPage; 33 34 /** QObject reimplementation, 35 * providing passed QObject with validation routine. */ 36 class QObjectValidator : public QObject 37 { 38 Q_OBJECT; 39 40 signals: 41 42 /** Notifies listener(s) about validity change. */ 43 void sigValidityChange(QValidator::State state); 44 45 public: 46 47 /** Constructor. 48 * @param pParent is passed on to the QObject constructor, 49 * @param pValidator is passed on to the OObject children 50 * and used to perform validation itself. */ 51 QObjectValidator(QValidator *pValidator, QObject *pParent = 0); 52 53 /** Returns last validation state. */ 54 QValidator::State state() const { return m_state; } 55 56 private slots: 57 58 /** Performs validation: */ 59 void sltValidate(QString strInput = QString()); 60 61 private: 62 63 /** Prepare routine. */ 64 void prepare(); 65 66 /** Holds validator. */ 67 QValidator *m_pValidator; 68 /** Holds validation state. */ 69 QValidator::State m_state; 70 }; 71 72 /** QObject reimplementation, 73 * which can group various QObjectValidator instances to operate on. */ 74 class QObjectValidatorGroup : public QObject 75 { 76 Q_OBJECT; 77 78 signals: 79 80 /** Notifies listener(s) about validity change. */ 81 void sigValidityChange(bool fValid); 82 83 public: 84 85 /** Constructor. 86 * @param pParent is passed on to the QObject constructor. */ 87 QObjectValidatorGroup(QObject *pParent); 88 89 /** Adds object-validator. 90 * @note The ownership of @a pObjectValidator is transferred to the group, 91 * and it's the group's responsibility to delete it. */ 92 void addObjectValidator(QObjectValidator *pObjectValidator); 93 94 /** Returns last validation result. */ 95 bool result() const { return m_fResult; } 96 97 private slots: 98 99 /** Performs validation: */ 100 void sltValidate(QValidator::State state); 101 102 private: 103 104 /** Converts QValidator::State to bool result. */ 105 static bool toResult(QValidator::State state); 106 107 /** Holds object-validators and their states. */ 108 QMap<QObjectValidator*, bool> m_group; 109 /** Holds validation result. */ 110 bool m_fResult; 111 }; 33 112 34 113 /* Page validator prototype: */
Note:
See TracChangeset
for help on using the changeset viewer.