diff options
Diffstat (limited to 'src/libs/utils/newclasswidget.cpp')
-rw-r--r-- | src/libs/utils/newclasswidget.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/libs/utils/newclasswidget.cpp b/src/libs/utils/newclasswidget.cpp index 4303b53cff..4889741276 100644 --- a/src/libs/utils/newclasswidget.cpp +++ b/src/libs/utils/newclasswidget.cpp @@ -121,7 +121,8 @@ NewClassWidget::NewClassWidget(QWidget *parent) : connect(m_d->m_ui.generateFormCheckBox, SIGNAL(stateChanged(int)), this, SLOT(slotFormInputChecked())); - + connect(m_d->m_ui.baseClassComboBox, SIGNAL(editTextChanged(QString)), + this, SLOT(slotBaseClassEdited(QString))); m_d->m_ui.generateFormCheckBox->setChecked(true); setFormInputCheckable(false, true); setClassType(NoClassType); @@ -393,6 +394,31 @@ void NewClassWidget::setClassTypeComboVisible(bool v) m_d->m_ui.classTypeComboBox->setVisible(v); } +// Guess suitable type information with some smartness +static inline NewClassWidget::ClassType classTypeForBaseClass(const QString &baseClass) +{ + if (!baseClass.startsWith(QLatin1Char('Q'))) + return NewClassWidget::NoClassType; + // QObject types: QObject as such and models. + if (baseClass == QLatin1String("QObject") || + (baseClass.startsWith(QLatin1String("QAbstract")) && baseClass.endsWith(QLatin1String("Model")))) + return NewClassWidget::ClassInheritsQObject; + // Widgets. + if (baseClass == QLatin1String("QWidget") || baseClass == QLatin1String("QMainWindow") + || baseClass == QLatin1String("QDialog")) + return NewClassWidget::ClassInheritsQWidget; + return NewClassWidget::NoClassType; +} + +void NewClassWidget::slotBaseClassEdited(const QString &baseClass) +{ + // Set type information with some smartness. + const ClassType currentClassType = classType(); + const ClassType recommendedClassType = classTypeForBaseClass(baseClass); + if (recommendedClassType != NoClassType && currentClassType != recommendedClassType) + setClassType(recommendedClassType); +} + void NewClassWidget::slotValidChanged() { const bool newValid = isValid(); |