diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-02-26 16:11:14 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-02-26 16:11:14 +0100 |
commit | 68bcefa4044157994936a7163a51ddba3d153302 (patch) | |
tree | 8f4adad5bac09c985e9f865f85d532c750524397 /src/libs/utils/newclasswidget.cpp | |
parent | d2e5b194385cf6998db5bb768a621bc08c92e3f3 (diff) | |
download | qt-creator-68bcefa4044157994936a7163a51ddba3d153302.tar.gz |
Class wizard: Guess recommended type from base class
employing some smartness.
Task-number: QTCREATORBUG-776
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(); |