Mega Code Archive

 
Categories / C++ / Qt
 

License wizard dialog

/**************************************************************************** ** ** Copyright (C) 2009 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:LGPL$ ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Commercial License Agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file.  Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights.  These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file.  Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef LICENSEWIZARD_H #define LICENSEWIZARD_H #include <QWizard> QT_BEGIN_NAMESPACE class QCheckBox; class QLabel; class QLineEdit; class QRadioButton; QT_END_NAMESPACE   class LicenseWizard : public QWizard {     Q_OBJECT public:     enum { Page_Intro, Page_Evaluate, Page_Register, Page_Details,            Page_Conclusion };     LicenseWizard(QWidget *parent = 0); private slots:     void showHelp(); };   class IntroPage : public QWizardPage {     Q_OBJECT public:     IntroPage(QWidget *parent = 0);     int nextId() const; private:     QLabel *topLabel;     QRadioButton *registerRadioButton;     QRadioButton *evaluateRadioButton; }; class EvaluatePage : public QWizardPage {     Q_OBJECT public:     EvaluatePage(QWidget *parent = 0);     int nextId() const; private:     QLabel *nameLabel;     QLabel *emailLabel;     QLineEdit *nameLineEdit;     QLineEdit *emailLineEdit; }; class RegisterPage : public QWizardPage {     Q_OBJECT public:     RegisterPage(QWidget *parent = 0);     int nextId() const; private:     QLabel *nameLabel;     QLabel *upgradeKeyLabel;     QLineEdit *nameLineEdit;     QLineEdit *upgradeKeyLineEdit; }; class DetailsPage : public QWizardPage {     Q_OBJECT public:     DetailsPage(QWidget *parent = 0);     int nextId() const; private:     QLabel *companyLabel;     QLabel *emailLabel;     QLabel *postalLabel;     QLineEdit *companyLineEdit;     QLineEdit *emailLineEdit;     QLineEdit *postalLineEdit; }; class ConclusionPage : public QWizardPage {     Q_OBJECT public:     ConclusionPage(QWidget *parent = 0);     void initializePage();     int nextId() const;     void setVisible(bool visible); private slots:     void printButtonClicked(); private:     QLabel *bottomLabel;     QCheckBox *agreeCheckBox; }; #endif #include <QtGui> #include "licensewizard.h"    LicenseWizard::LicenseWizard(QWidget *parent)     : QWizard(parent) {     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);     setStartId(Page_Intro); #ifndef Q_WS_MAC       setWizardStyle(ModernStyle); #endif       setOption(HaveHelpButton, true);       setPixmap(QWizard::LogoPixmap, QPixmap(":/images/logo.png"));     connect(this, SIGNAL(helpRequested()), this, SLOT(showHelp()));     setWindowTitle(tr("License Wizard")); }     void LicenseWizard::showHelp()   {     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;       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;       default:         message = tr("This help is likely not to be of any help.");     }     if (lastHelpMessage == message)         message = tr("Sorry, I already gave what help I could. "                      "Maybe you should try asking a human?");     QMessageBox::information(this, tr("License Wizard Help"), message);     lastHelpMessage = message; }   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>&trade; 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); }   int IntroPage::nextId() const   {     if (evaluateRadioButton->isChecked()) {         return LicenseWizard::Page_Evaluate;     } else {         return LicenseWizard::Page_Register;     } }   EvaluatePage::EvaluatePage(QWidget *parent)     : QWizardPage(parent) {     setTitle(tr("Evaluate <i>Super Product One</i>&trade;"));     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;     nameLabel->setBuddy(nameLineEdit);     emailLabel = new QLabel(tr("&Email address:"));     emailLineEdit = new QLineEdit;     emailLineEdit->setValidator(new QRegExpValidator(QRegExp(".*@.*"), this));     emailLabel->setBuddy(emailLineEdit);     registerField("evaluate.name*", nameLineEdit);     registerField("evaluate.email*", emailLineEdit);     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); } int EvaluatePage::nextId() const {     return LicenseWizard::Page_Conclusion; } RegisterPage::RegisterPage(QWidget *parent)     : QWizardPage(parent) {     setTitle(tr("Register Your Copy of <i>Super Product One</i>&trade;"));     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); } int RegisterPage::nextId() const {     if (upgradeKeyLineEdit->text().isEmpty()) {         return LicenseWizard::Page_Details;     } else {         return LicenseWizard::Page_Conclusion;     } } 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); } int DetailsPage::nextId() const {     return LicenseWizard::Page_Conclusion; } 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); } int ConclusionPage::nextId() const {     return -1; } 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); } void ConclusionPage::setVisible(bool visible) {     QWizardPage::setVisible(visible);     if (visible) {         wizard()->setButtonText(QWizard::CustomButton1, tr("&Print"));         wizard()->setOption(QWizard::HaveCustomButton1, true);         connect(wizard(), SIGNAL(customButtonClicked(int)),                 this, SLOT(printButtonClicked()));     } else {         wizard()->setOption(QWizard::HaveCustomButton1, false);         disconnect(wizard(), SIGNAL(customButtonClicked(int)),                    this, SLOT(printButtonClicked()));     } } 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.")); } #include <QApplication> #include <QTranslator> #include <QLocale> #include <QLibraryInfo> #include "licensewizard.h" int main(int argc, char *argv[]) {     Q_INIT_RESOURCE(licensewizard);     QApplication app(argc, argv);     QString translatorFileName = QLatin1String("qt_");     translatorFileName += QLocale::system().name();     QTranslator *translator = new QTranslator(&app);     if (translator->load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))         app.installTranslator(translator);          LicenseWizard wizard;     wizard.show();     return app.exec(); }