From 951b1120d603892b910b90b4d375d58b39354703 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Mon, 23 Jan 2012 12:26:59 +0100 Subject: Preserve user changes in custom wizard on back Task-number: QTCREATORBUG-6774 Change-Id: I7c06f794f04b6e019a7d8b65d810096a1d9ebf82 Reviewed-by: Friedemann Kleint --- .../customwizard/customwizardpage.cpp | 35 ++++++++++++++++++---- .../customwizard/customwizardpage.h | 3 ++ 2 files changed, 33 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/plugins/projectexplorer/customwizard/customwizardpage.cpp b/src/plugins/projectexplorer/customwizard/customwizardpage.cpp index 9b37c3950e..725bf4375c 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardpage.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizardpage.cpp @@ -356,18 +356,19 @@ void CustomWizardFieldPage::initializePage() { QWizardPage::initializePage(); clearError(); - // Note that the field mechanism will always restore the value - // set on it when entering the page, so, there is no point in - // trying to preserve user modifications of the text. foreach(const LineEditData &led, m_lineEdits) { - if (!led.defaultText.isEmpty()) { + if (!led.userChange.isNull()) { + led.lineEdit->setText(led.userChange); + } else if (!led.defaultText.isEmpty()) { QString defaultText = led.defaultText; CustomWizardContext::replaceFields(m_context->baseReplacements, &defaultText); led.lineEdit->setText(defaultText); } } foreach(const TextEditData &ted, m_textEdits) { - if (!ted.defaultText.isEmpty()) { + if (!ted.userChange.isNull()) { + ted.textEdit->setText(ted.userChange); + } else if (!ted.defaultText.isEmpty()) { QString defaultText = ted.defaultText; CustomWizardContext::replaceFields(m_context->baseReplacements, &defaultText); ted.textEdit->setText(defaultText); @@ -375,6 +376,30 @@ void CustomWizardFieldPage::initializePage() } } +void CustomWizardFieldPage::cleanupPage() +{ + for (int i = 0; i < m_lineEdits.count(); ++i) { + LineEditData &led = m_lineEdits[i]; + QString defaultText = led.defaultText; + CustomWizardContext::replaceFields(m_context->baseReplacements, &defaultText); + if (led.lineEdit->text() != defaultText) + led.userChange = led.lineEdit->text(); + else + led.userChange.clear(); + + } + for (int i= 0; i < m_textEdits.count(); ++i) { + TextEditData &ted = m_textEdits[i]; + QString defaultText = ted.defaultText; + CustomWizardContext::replaceFields(m_context->baseReplacements, &defaultText); + if (ted.textEdit->toHtml() != ted.defaultText && ted.textEdit->toPlainText() != ted.defaultText) + ted.userChange = ted.textEdit->toHtml(); + else + ted.userChange.clear(); + } + QWizardPage::cleanupPage(); +} + bool CustomWizardFieldPage::validatePage() { clearError(); diff --git a/src/plugins/projectexplorer/customwizard/customwizardpage.h b/src/plugins/projectexplorer/customwizard/customwizardpage.h index b17391db72..20221c3530 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardpage.h +++ b/src/plugins/projectexplorer/customwizard/customwizardpage.h @@ -119,6 +119,7 @@ public: virtual bool validatePage(); virtual void initializePage(); + virtual void cleanupPage(); static QMap replacementMap(const QWizard *w, const QSharedPointer &ctx, @@ -133,11 +134,13 @@ private: explicit LineEditData(QLineEdit* le = 0, const QString &defText = QString()); QLineEdit* lineEdit; QString defaultText; + QString userChange; }; struct TextEditData { explicit TextEditData(QTextEdit* le = 0, const QString &defText = QString()); QTextEdit* textEdit; QString defaultText; + QString userChange; }; typedef QList LineEditDataList; typedef QList TextEditDataList; -- cgit v1.2.1