summaryrefslogtreecommitdiff
path: root/src/libs/utils/newclasswidget.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2010-02-26 16:11:14 +0100
committerFriedemann Kleint <Friedemann.Kleint@nokia.com>2010-02-26 16:11:14 +0100
commit68bcefa4044157994936a7163a51ddba3d153302 (patch)
tree8f4adad5bac09c985e9f865f85d532c750524397 /src/libs/utils/newclasswidget.cpp
parentd2e5b194385cf6998db5bb768a621bc08c92e3f3 (diff)
downloadqt-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.cpp28
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();