/****************************************************************************+ −
**+ −
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).+ −
** All rights reserved.+ −
** Contact: Nokia Corporation (qt-info@nokia.com)+ −
**+ −
** This file is part of the examples of the Qt Toolkit.+ −
**+ −
** $QT_BEGIN_LICENSE:BSD$+ −
** You may use this file under the terms of the BSD license as follows:+ −
**+ −
** "Redistribution and use in source and binary forms, with or without+ −
** modification, are permitted provided that the following conditions are+ −
** met:+ −
** * Redistributions of source code must retain the above copyright+ −
** notice, this list of conditions and the following disclaimer.+ −
** * Redistributions in binary form must reproduce the above copyright+ −
** notice, this list of conditions and the following disclaimer in+ −
** the documentation and/or other materials provided with the+ −
** distribution.+ −
** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor+ −
** the names of its contributors may be used to endorse or promote+ −
** products derived from this software without specific prior written+ −
** permission.+ −
**+ −
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+ −
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+ −
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+ −
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+ −
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+ −
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+ −
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+ −
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+ −
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+ −
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+ −
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."+ −
** $QT_END_LICENSE$+ −
**+ −
****************************************************************************/+ −
+ −
#include <QtGui>+ −
+ −
#include "licensewizard.h"+ −
+ −
//! [0] //! [1] //! [2]+ −
LicenseWizard::LicenseWizard(QWidget *parent)+ −
: QWizard(parent)+ −
{+ −
//! [0]+ −
setPage(Page_Intro, new IntroPage);+ −
setPage(Page_Evaluate, new EvaluatePage);+ −
setPage(Page_Register, new RegisterPage);+ −
setPage(Page_Details, new DetailsPage);+ −
setPage(Page_Conclusion, new ConclusionPage);+ −
//! [1]+ −
+ −
setStartId(Page_Intro);+ −
//! [2]+ −
+ −
//! [3]+ −
#ifndef Q_WS_MAC+ −
//! [3] //! [4]+ −
setWizardStyle(ModernStyle);+ −
#endif+ −
//! [4] //! [5]+ −
setOption(HaveHelpButton, true);+ −
//! [5] //! [6]+ −
setPixmap(QWizard::LogoPixmap, QPixmap(":/images/logo.png"));+ −
+ −
//! [7]+ −
connect(this, SIGNAL(helpRequested()), this, SLOT(showHelp()));+ −
//! [7]+ −
+ −
setWindowTitle(tr("License Wizard"));+ −
//! [8]+ −
}+ −
//! [6] //! [8]+ −
+ −
//! [9] //! [10]+ −
void LicenseWizard::showHelp()+ −
//! [9] //! [11]+ −
{+ −
static QString lastHelpMessage;+ −
+ −
QString message;+ −
+ −
switch (currentId()) {+ −
case Page_Intro:+ −
message = tr("The decision you make here will affect which page you "+ −
"get to see next.");+ −
break;+ −
//! [10] //! [11]+ −
case Page_Evaluate:+ −
message = tr("Make sure to provide a valid email address, such as "+ −
"toni.buddenbrook@example.de.");+ −
break;+ −
case Page_Register:+ −
message = tr("If you don't provide an upgrade key, you will be "+ −
"asked to fill in your details.");+ −
break;+ −
case Page_Details:+ −
message = tr("Make sure to provide a valid email address, such as "+ −
"thomas.gradgrind@example.co.uk.");+ −
break;+ −
case Page_Conclusion:+ −
message = tr("You must accept the terms and conditions of the "+ −
"license to proceed.");+ −
break;+ −
//! [12] //! [13]+ −
default:+ −
message = tr("This help is likely not to be of any help.");+ −
}+ −
//! [12]+ −
+ −
if (lastHelpMessage == message)+ −
message = tr("Sorry, I already gave what help I could. "+ −
"Maybe you should try asking a human?");+ −
+ −
//! [14]+ −
QMessageBox::information(this, tr("License Wizard Help"), message);+ −
//! [14]+ −
+ −
lastHelpMessage = message;+ −
//! [15]+ −
}+ −
//! [13] //! [15]+ −
+ −
//! [16]+ −
IntroPage::IntroPage(QWidget *parent)+ −
: QWizardPage(parent)+ −
{+ −
setTitle(tr("Introduction"));+ −
setPixmap(QWizard::WatermarkPixmap, QPixmap(":/images/watermark.png"));+ −
+ −
topLabel = new QLabel(tr("This wizard will help you register your copy of "+ −
"<i>Super Product One</i>™ or start "+ −
"evaluating the product."));+ −
topLabel->setWordWrap(true);+ −
+ −
registerRadioButton = new QRadioButton(tr("&Register your copy"));+ −
evaluateRadioButton = new QRadioButton(tr("&Evaluate the product for 30 "+ −
"days"));+ −
registerRadioButton->setChecked(true);+ −
+ −
QVBoxLayout *layout = new QVBoxLayout;+ −
layout->addWidget(topLabel);+ −
layout->addWidget(registerRadioButton);+ −
layout->addWidget(evaluateRadioButton);+ −
setLayout(layout);+ −
}+ −
//! [16] //! [17]+ −
+ −
//! [18]+ −
int IntroPage::nextId() const+ −
//! [17] //! [19]+ −
{+ −
if (evaluateRadioButton->isChecked()) {+ −
return LicenseWizard::Page_Evaluate;+ −
} else {+ −
return LicenseWizard::Page_Register;+ −
}+ −
}+ −
//! [18] //! [19]+ −
+ −
//! [20]+ −
EvaluatePage::EvaluatePage(QWidget *parent)+ −
: QWizardPage(parent)+ −
{+ −
setTitle(tr("Evaluate <i>Super Product One</i>™"));+ −
setSubTitle(tr("Please fill both fields. Make sure to provide a valid "+ −
"email address (e.g., john.smith@example.com)."));+ −
+ −
nameLabel = new QLabel(tr("N&ame:"));+ −
nameLineEdit = new QLineEdit;+ −
//! [20]+ −
nameLabel->setBuddy(nameLineEdit);+ −
+ −
emailLabel = new QLabel(tr("&Email address:"));+ −
emailLineEdit = new QLineEdit;+ −
emailLineEdit->setValidator(new QRegExpValidator(QRegExp(".*@.*"), this));+ −
emailLabel->setBuddy(emailLineEdit);+ −
+ −
//! [21]+ −
registerField("evaluate.name*", nameLineEdit);+ −
registerField("evaluate.email*", emailLineEdit);+ −
//! [21]+ −
+ −
QGridLayout *layout = new QGridLayout;+ −
layout->addWidget(nameLabel, 0, 0);+ −
layout->addWidget(nameLineEdit, 0, 1);+ −
layout->addWidget(emailLabel, 1, 0);+ −
layout->addWidget(emailLineEdit, 1, 1);+ −
setLayout(layout);+ −
//! [22]+ −
}+ −
//! [22]+ −
+ −
//! [23]+ −
int EvaluatePage::nextId() const+ −
{+ −
return LicenseWizard::Page_Conclusion;+ −
}+ −
//! [23]+ −
+ −
RegisterPage::RegisterPage(QWidget *parent)+ −
: QWizardPage(parent)+ −
{+ −
setTitle(tr("Register Your Copy of <i>Super Product One</i>™"));+ −
setSubTitle(tr("If you have an upgrade key, please fill in "+ −
"the appropriate field."));+ −
+ −
nameLabel = new QLabel(tr("N&ame:"));+ −
nameLineEdit = new QLineEdit;+ −
nameLabel->setBuddy(nameLineEdit);+ −
+ −
upgradeKeyLabel = new QLabel(tr("&Upgrade key:"));+ −
upgradeKeyLineEdit = new QLineEdit;+ −
upgradeKeyLabel->setBuddy(upgradeKeyLineEdit);+ −
+ −
registerField("register.name*", nameLineEdit);+ −
registerField("register.upgradeKey", upgradeKeyLineEdit);+ −
+ −
QGridLayout *layout = new QGridLayout;+ −
layout->addWidget(nameLabel, 0, 0);+ −
layout->addWidget(nameLineEdit, 0, 1);+ −
layout->addWidget(upgradeKeyLabel, 1, 0);+ −
layout->addWidget(upgradeKeyLineEdit, 1, 1);+ −
setLayout(layout);+ −
}+ −
+ −
//! [24]+ −
int RegisterPage::nextId() const+ −
{+ −
if (upgradeKeyLineEdit->text().isEmpty()) {+ −
return LicenseWizard::Page_Details;+ −
} else {+ −
return LicenseWizard::Page_Conclusion;+ −
}+ −
}+ −
//! [24]+ −
+ −
DetailsPage::DetailsPage(QWidget *parent)+ −
: QWizardPage(parent)+ −
{+ −
setTitle(tr("Fill In Your Details"));+ −
setSubTitle(tr("Please fill all three fields. Make sure to provide a valid "+ −
"email address (e.g., tanaka.aya@example.co.jp)."));+ −
+ −
companyLabel = new QLabel(tr("&Company name:"));+ −
companyLineEdit = new QLineEdit;+ −
companyLabel->setBuddy(companyLineEdit);+ −
+ −
emailLabel = new QLabel(tr("&Email address:"));+ −
emailLineEdit = new QLineEdit;+ −
emailLineEdit->setValidator(new QRegExpValidator(QRegExp(".*@.*"), this));+ −
emailLabel->setBuddy(emailLineEdit);+ −
+ −
postalLabel = new QLabel(tr("&Postal address:"));+ −
postalLineEdit = new QLineEdit;+ −
postalLabel->setBuddy(postalLineEdit);+ −
+ −
registerField("details.company*", companyLineEdit);+ −
registerField("details.email*", emailLineEdit);+ −
registerField("details.postal*", postalLineEdit);+ −
+ −
QGridLayout *layout = new QGridLayout;+ −
layout->addWidget(companyLabel, 0, 0);+ −
layout->addWidget(companyLineEdit, 0, 1);+ −
layout->addWidget(emailLabel, 1, 0);+ −
layout->addWidget(emailLineEdit, 1, 1);+ −
layout->addWidget(postalLabel, 2, 0);+ −
layout->addWidget(postalLineEdit, 2, 1);+ −
setLayout(layout);+ −
}+ −
+ −
//! [25]+ −
int DetailsPage::nextId() const+ −
{+ −
return LicenseWizard::Page_Conclusion;+ −
}+ −
//! [25]+ −
+ −
ConclusionPage::ConclusionPage(QWidget *parent)+ −
: QWizardPage(parent)+ −
{+ −
setTitle(tr("Complete Your Registration"));+ −
setPixmap(QWizard::WatermarkPixmap, QPixmap(":/images/watermark.png"));+ −
+ −
bottomLabel = new QLabel;+ −
bottomLabel->setWordWrap(true);+ −
+ −
agreeCheckBox = new QCheckBox(tr("I agree to the terms of the license"));+ −
+ −
registerField("conclusion.agree*", agreeCheckBox);+ −
+ −
QVBoxLayout *layout = new QVBoxLayout;+ −
layout->addWidget(bottomLabel);+ −
layout->addWidget(agreeCheckBox);+ −
setLayout(layout);+ −
}+ −
+ −
//! [26]+ −
int ConclusionPage::nextId() const+ −
{+ −
return -1;+ −
}+ −
//! [26]+ −
+ −
//! [27]+ −
void ConclusionPage::initializePage()+ −
{+ −
QString licenseText;+ −
+ −
if (wizard()->hasVisitedPage(LicenseWizard::Page_Evaluate)) {+ −
licenseText = tr("<u>Evaluation License Agreement:</u> "+ −
"You can use this software for 30 days and make one "+ −
"backup, but you are not allowed to distribute it.");+ −
} else if (wizard()->hasVisitedPage(LicenseWizard::Page_Details)) {+ −
licenseText = tr("<u>First-Time License Agreement:</u> "+ −
"You can use this software subject to the license "+ −
"you will receive by email.");+ −
} else {+ −
licenseText = tr("<u>Upgrade License Agreement:</u> "+ −
"This software is licensed under the terms of your "+ −
"current license.");+ −
}+ −
bottomLabel->setText(licenseText);+ −
}+ −
//! [27]+ −
+ −
//! [28]+ −
void ConclusionPage::setVisible(bool visible)+ −
{+ −
QWizardPage::setVisible(visible);+ −
+ −
if (visible) {+ −
//! [29]+ −
wizard()->setButtonText(QWizard::CustomButton1, tr("&Print"));+ −
wizard()->setOption(QWizard::HaveCustomButton1, true);+ −
connect(wizard(), SIGNAL(customButtonClicked(int)),+ −
this, SLOT(printButtonClicked()));+ −
//! [29]+ −
} else {+ −
wizard()->setOption(QWizard::HaveCustomButton1, false);+ −
disconnect(wizard(), SIGNAL(customButtonClicked(int)),+ −
this, SLOT(printButtonClicked()));+ −
}+ −
}+ −
//! [28]+ −
+ −
void ConclusionPage::printButtonClicked()+ −
{+ −
QPrinter printer;+ −
QPrintDialog dialog(&printer, this);+ −
if (dialog.exec())+ −
QMessageBox::warning(this, tr("Print License"),+ −
tr("As an environmentally friendly measure, the "+ −
"license text will not actually be printed."));+ −
}+ −