commit d82d738850715a3b58e6014c037effd20f7a7e1a Author: Tomás Touceda chiiph@torproject.org Date: Mon Apr 2 13:55:00 2012 -0300
Add missing files --- src/vidalia/FirstRunWizard.cpp | 151 ++++++++++++++++++++++++++++++++++++++++ src/vidalia/FirstRunWizard.h | 66 +++++++++++++++++ 2 files changed, 217 insertions(+), 0 deletions(-)
diff --git a/src/vidalia/FirstRunWizard.cpp b/src/vidalia/FirstRunWizard.cpp new file mode 100644 index 0000000..5e59d7a --- /dev/null +++ b/src/vidalia/FirstRunWizard.cpp @@ -0,0 +1,151 @@ +/* +** This file is part of Vidalia, and is subject to the license terms in the +** LICENSE file, found in the top level directory of this distribution. If you +** did not receive the LICENSE file with this file, you may obtain it from the +** Vidalia source package distributed by the Vidalia Project at +** http://www.torproject.org/projects/vidalia.html. No part of Vidalia, +** including this file, may be copied, modified, propagated, or distributed +** except according to the terms described in the LICENSE file. +*/ + +/* +** \file FirstRunWizard.cpp +** \brief Wizard for the first time Vidalia is executed under certain circumstances +*/ + +#include "FirstRunWizard.h" +#include "MainWindow.h" +#include "AdvancedPage.h" +#include "NetworkPage.h" +#include "VMessageBox.h" + +#include <QtGui> + +FirstRunWizard::FirstRunWizard(QWidget *parent, bool withPanic, bool withNetwork) + : _withPanic(withPanic), _withNetwork(withNetwork), QWizard(parent), + _panicPage(0), _ap(0), _networkPage(0), _np(0) +{ + createPages(); +} + +FirstRunWizard::~FirstRunWizard() +{ + if(_ap) delete _ap; + if(_np) delete _np; +} + +void +FirstRunWizard::handleNext() +{ + QString errmsg; + + switch(currentId()) { + case IntroPageID: + case PanicPageID: + next(); + break; + case NetworkPageID: + if(_ap->save(errmsg)) { + next(); + } else { + VMessageBox::warning(0, tr("There was a problem saving your Panic settings"), + tr("Error: %1").arg(errmsg), + VMessageBox::Ok|VMessageBox::Default); + } + case DonePageID: + if(_np->save(errmsg) and _np->apply(errmsg)) { + next(); + } else { + back(); + VMessageBox::warning(0, tr("There was a problem saving your network settings"), + tr("Error: %1").arg(errmsg), + VMessageBox::Ok|VMessageBox::Default); + } + } +} + +void +FirstRunWizard::createPages() +{ + QPushButton *bt = new QPushButton("Continue"); + setButton(QWizard::NextButton, bt); + disconnect(bt, 0, 0, 0); + connect(bt, SIGNAL(clicked()), + this, SLOT(handleNext())); + + _introPage = new QWizardPage; + _introPage->setTitle(tr("Welcome to Vidalia")); + + QLabel *label = new QLabel(tr("Welcome to Vidalia, the Tor Controller. " + "This wizard will guide you through the first " + "run configuration, please <b>read the directions " + "carefully.</b>")); + label->setWordWrap(true); + + QVBoxLayout *layout = new QVBoxLayout; + layout->addWidget(label); + _introPage->setLayout(layout); + + setPage(IntroPageID, _introPage); + + _panicPage = new QWizardPage; + _panicPage->setTitle(tr("Panic! configuration")); + label = new QLabel(tr("You have the Panic! button enabled. This " + "means that you will have a button on the " + "main toolbar that will allow you to remove " + "Vidalia and all its components quickly.\n" + "<b>WARNING:</b> This will also remove your " + "bookmarks and everything you save inside " + "the configured path.\n\n" + "If you would like to disable this feature, " + "please uncheck where it says "Enable panic" and " + "click "%1"").arg(buttonText(QWizard::NextButton))); + label->setWordWrap(true); + + _ap = new AdvancedPage(); + _ap->hideGroup(AdvancedPage::Control); + _ap->hideGroup(AdvancedPage::ConfigurationFile); + _ap->hideGroup(AdvancedPage::DataDirectory); + _ap->load(); + + layout = new QVBoxLayout; + layout->addWidget(label); + layout->addWidget(_ap); + _panicPage->setLayout(layout); + + if(_withPanic) + setPage(PanicPageID, _panicPage); + + _networkPage = new QWizardPage; + _networkPage->setTitle(tr("Network configuration")); + label = new QLabel(tr("You should configure your network now. Please " + "provide the bridges to use or uncheck the option.\n\n" + "If you would like to change these settings, " + "please edit the values and click "%1"") + .arg(buttonText(QWizard::NextButton))); + label->setWordWrap(true); + + _np = new NetworkPage(); + _np->load(); + + layout = new QVBoxLayout; + layout->addWidget(label); + layout->addWidget(_np); + _networkPage->setLayout(layout); + + if(_withNetwork) + setPage(NetworkPageID, _networkPage); + + _donePage = new QWizardPage; + _donePage->setTitle(tr("That's it!")); + + label = new QLabel(tr("We hope you enjoy using Tor! Consider becoming a Relay, " + "read more here: https://torproject.org/relay")); + label->setWordWrap(true); + + layout = new QVBoxLayout; + layout->addWidget(label); + _donePage->setLayout(layout); + + setPage(DonePageID, _donePage); +} diff --git a/src/vidalia/FirstRunWizard.h b/src/vidalia/FirstRunWizard.h new file mode 100644 index 0000000..437fff8 --- /dev/null +++ b/src/vidalia/FirstRunWizard.h @@ -0,0 +1,66 @@ +/* +** This file is part of Vidalia, and is subject to the license terms in the +** LICENSE file, found in the top level directory of this distribution. If you +** did not receive the LICENSE file with this file, you may obtain it from the +** Vidalia source package distributed by the Vidalia Project at +** http://www.torproject.org/projects/vidalia.html. No part of Vidalia, +** including this file, may be copied, modified, propagated, or distributed +** except according to the terms described in the LICENSE file. +*/ + +/* +** \file FirstRunWizard.cpp +** \brief Wizard for the first time Vidalia is executed under certain circumstances +*/ + +#ifndef FIRSTRUNWIZARD_H +#define FIRSTRUNWIZARD_H + +class QWizardPage; +class MainWindow; +class AdvancedPage; +class NetworkPage; + +#include <QWizard> + +class FirstRunWizard : public QWizard +{ + Q_OBJECT + + public: + /** Default constructor */ + FirstRunWizard(QWidget *parent = 0, + bool withPanic = false, + bool withNetwork = false); + /** Default destructor */ + virtual ~FirstRunWizard(); + + public slots: + /** Slot that handles the transition between pages */ + void handleNext(); + + private: + /** Ids for the pages */ + enum IDs { + IntroPageID = 0, + PanicPageID, + NetworkPageID, + DonePageID + }; + + /** Wizard pages */ + QWizardPage *_introPage, *_panicPage; + QWizardPage *_networkPage, *_donePage; + QPushButton *_btnNext; + /** Boolean values that identify the pages to display */ + bool _withPanic, _withNetwork; + + /** Configuration pages that will be used in the wizard */ + AdvancedPage *_ap; + NetworkPage *_np; + + /** Called at the beginning. It creates the whole wizard */ + void createPages(); +}; + +#endif