From afcc1d76d247c9d6bc9678a80e8c0452ab3ebfec Mon Sep 17 00:00:00 2001 From: beardog_uk Date: Thu, 26 Mar 2009 16:58:06 +0000 Subject: [PATCH] Wizard for adding friends. Almost stable, but code needs cleanup. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1101 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- retroshare-gui/src/RetroShare.pro | 2 + retroshare-gui/src/gui/MainWindow.cpp | 10 +- .../src/gui/connect/ConnectFriendWizard.cpp | 639 ++++++++++++++++++ .../src/gui/connect/ConnectFriendWizard.h | 186 +++++ retroshare-gui/src/gui/images.qrc | 7 + .../images/connect/connectFriendBanner.png | Bin 0 -> 481 bytes .../gui/images/connect/connectFriendLogo.png | Bin 0 -> 8884 bytes .../gui/images/connect/connectFriendLogo2.png | Bin 0 -> 4387 bytes .../images/connect/connectFriendWatermark.png | Bin 0 -> 49495 bytes .../src/gui/images/connect/info16.png | Bin 0 -> 3642 bytes .../src/gui/images/connect/mail_send.png | Bin 0 -> 3583 bytes 11 files changed, 843 insertions(+), 1 deletion(-) create mode 100755 retroshare-gui/src/gui/connect/ConnectFriendWizard.cpp create mode 100755 retroshare-gui/src/gui/connect/ConnectFriendWizard.h create mode 100644 retroshare-gui/src/gui/images/connect/connectFriendBanner.png create mode 100644 retroshare-gui/src/gui/images/connect/connectFriendLogo.png create mode 100644 retroshare-gui/src/gui/images/connect/connectFriendLogo2.png create mode 100644 retroshare-gui/src/gui/images/connect/connectFriendWatermark.png create mode 100644 retroshare-gui/src/gui/images/connect/info16.png create mode 100644 retroshare-gui/src/gui/images/connect/mail_send.png diff --git a/retroshare-gui/src/RetroShare.pro b/retroshare-gui/src/RetroShare.pro index 50da73758..1ed028d54 100644 --- a/retroshare-gui/src/RetroShare.pro +++ b/retroshare-gui/src/RetroShare.pro @@ -246,6 +246,7 @@ HEADERS += rshare.h \ gui/feeds/BlogMsgItem.h \ gui/feeds/SubFileItem.h \ gui/feeds/SubDestItem.h \ + gui/connect/ConnectFriendWizard.h FORMS += gui/ChatDialog.ui \ @@ -463,6 +464,7 @@ SOURCES += main.cpp \ gui/feeds/BlogMsgItem.cpp \ gui/feeds/SubFileItem.cpp \ gui/feeds/SubDestItem.cpp \ + gui/connect/ConnectFriendWizard.cpp RESOURCES += gui/images.qrc lang/lang.qrc gui/help/content/content.qrc diff --git a/retroshare-gui/src/gui/MainWindow.cpp b/retroshare-gui/src/gui/MainWindow.cpp index 636c2f034..49dd8cd5e 100644 --- a/retroshare-gui/src/gui/MainWindow.cpp +++ b/retroshare-gui/src/gui/MainWindow.cpp @@ -63,6 +63,7 @@ #include "gui/connect/InviteDialog.h" #include "gui/connect/AddFriendDialog.h" +#include "gui/connect/ConnectFriendWizard.h" #include #include @@ -508,13 +509,20 @@ void MainWindow::addFriend() } virtual int NeighLoadPEMString(std::string pem, std::string &id) = 0; #else - +/* static AddFriendDialog *addDialog = new AddFriendDialog(networkDialog, this); std::string invite = ""; addDialog->setInfo(invite); addDialog->show(); + */ + + static ConnectFriendWizard* connwiz = new ConnectFriendWizard(this); + connwiz->restart(); + connwiz->show(); + + //delete connwiz; #endif } diff --git a/retroshare-gui/src/gui/connect/ConnectFriendWizard.cpp b/retroshare-gui/src/gui/connect/ConnectFriendWizard.cpp new file mode 100755 index 000000000..676f1adac --- /dev/null +++ b/retroshare-gui/src/gui/connect/ConnectFriendWizard.cpp @@ -0,0 +1,639 @@ +/**************************************************************** + * RetroShare is distributed under the following license: + * + * Copyright (C) 2009 The RetroShare Team, Oleksiy Bilyanskyy + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + ****************************************************************/ + +#include "ConnectFriendWizard.h" + +#include "rsiface/rspeers.h" //for rsPeers variable +#include "rsiface/rsiface.h" + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include + +#include +#include + +#include + +//============================================================================ +//! +ConnectFriendWizard::ConnectFriendWizard(QWidget *parent) + : QWizard(parent) +{ + setPage(Page_Intro, new IntroPage); + setPage(Page_Text, new TextPage); + setPage(Page_Cert, new CertificatePage); + setPage(Page_ErrorMessage, new ErrorMessagePage); + setPage(Page_Conclusion, new ConclusionPage); + + setStartId(Page_Intro); + +// this define comes from Qt example. I don't have mac, so it wasn't tested +#ifndef Q_WS_MAC + setWizardStyle(ModernStyle); +#endif + + setOption(HaveHelpButton, true); + connect(this, SIGNAL(helpRequested()), this, SLOT(showHelp())); + + setPixmap(QWizard::LogoPixmap, + QPixmap(":/images/connect/connectFriendLogo.png")); +// setPixmap(QWizard::WatermarkPixmap, +// QPixmap(":/images/connectFriendWatermark.png")); + setPixmap(QWizard::BannerPixmap, + QPixmap(":/images/connect/connectFriendBanner.png")) ; + + setWindowTitle(tr("Connect Friend Wizard")); + + // setDefaultProperty("QTextEdit", "plainText", "textChanged"); +} + +//============================================================================ +//! +void ConnectFriendWizard::showHelp() +{ +// static QString lastHelpMessage; + + QString message = "Sorry, help wasn't implemented :("; +/* + 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("Connect Friend Wizard Help"), message); +//! [14] + +// lastHelpMessage = message; +//! [15] +} + +//============================================================================ + +void +ConnectFriendWizard::accept() +{ + if ( hasVisitedPage(Page_Conclusion) ) + { + std::string authId = field("idField").toString().toStdString(); + std::string authCode = field("authCode").toString().toStdString(); + + rsPeers->AuthCertificate(authId, authCode ); + rsPeers->addFriend(authId); + rsicontrol->getNotify().notifyListChange(NOTIFY_LIST_NEIGHBOURS,1) ; + } + + QDialog::accept(); +} + +//============================================================================ +//============================================================================ +//============================================================================ +// +IntroPage::IntroPage(QWidget *parent) + : QWizardPage(parent) +{ + QString titleStr("%1"); + setTitle( titleStr.arg( tr("Add a new Friend") ) ) ; + + setSubTitle(tr("This wizard will help you to connect your friend " + "to RetroShare network. There are two possible ways " + "to do this:")) ; + //topLabel = new QLabel(; + //topLabel->setWordWrap(true); + + textRadioButton = new QRadioButton(tr("&Enter the certificate manually")); + certRadioButton = new QRadioButton(tr("&Use *.pqi files with " + "certificates" )); + textRadioButton->setChecked(true); + + QVBoxLayout *layout = new QVBoxLayout; + //layout->addWidget(topLabel); + layout->addWidget(textRadioButton); + layout->addWidget(certRadioButton); + setLayout(layout); +} +// +//============================================================================ +// +int IntroPage::nextId() const +{ + if (textRadioButton->isChecked()) { + return ConnectFriendWizard::Page_Text; + } else { + return ConnectFriendWizard::Page_Cert; + } +} +// +//============================================================================ +//============================================================================ +//============================================================================ +// +TextPage::TextPage(QWidget *parent) + : QWizardPage(parent) +{ + QString titleStr("%1"); + setTitle( titleStr.arg( tr("Text certificate") ) ) ; + + setSubTitle(tr("Use text representation of the XPGP certificates.")); + + userCertLabel = new QLabel(tr("The text below is your XPGP certificate. " + "You have to provide it to your friend ")); + + userCertEdit = new QTextEdit; + std::string invite = rsPeers->GetRetroshareInvite(); + userCertEdit->setText(QString::fromStdString(invite)); + userCertEdit->setReadOnly(true); + + userCertHelpButton = new QPushButton; + userCertHelpButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + userCertHelpButton->setFixedSize(20,20); + userCertHelpButton->setFlat(true); + userCertHelpButton->setIcon( QIcon(":images/connect/info16.png") ); + connect (userCertHelpButton, SIGNAL( clicked()), + this, SLOT( showHelpUserCert()) ); +#if defined(Q_OS_WIN) + userCertMailButton = new QPushButton; + userCertMailButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + userCertMailButton->setFixedSize(20,20); + userCertMailButton->setFlat(true); + userCertMailButton->setIcon( QIcon(":images/connect/mail_send.png") ); + userCertMailButton->setToolTip(tr("Run Email program")); + connect (userCertMailButton, SIGNAL( clicked()), + this, SLOT( runEmailClient()) ); +#endif + userCertButtonsLayout = new QVBoxLayout(); + userCertButtonsLayout->addWidget(userCertHelpButton); +#if defined(Q_OS_WIN) + userCertButtonsLayout->addWidget(userCertMailButton); +#endif + userCertLayout = new QHBoxLayout(); + userCertLayout->addWidget(userCertEdit); + userCertLayout->addLayout(userCertButtonsLayout); + + friendCertLabel = new QLabel(tr("Please, paste your friends XPGP " + "certificate into the box below" )) ; + + friendCertEdit = new QTextEdit; + registerField("aaabbb", friendCertEdit, "plainText");//, "textChanged"); + + //=== add all widgets to one layout + textPageLayout = new QVBoxLayout(); + textPageLayout->addWidget(userCertLabel); + textPageLayout->addLayout(userCertLayout); + textPageLayout->addWidget(friendCertLabel); + textPageLayout->addWidget(friendCertEdit); +// + setLayout(textPageLayout); +} +// +//============================================================================ +// +#if defined(Q_OS_WIN) + +#include +#include + +void +TextPage::runEmailClient() +{ + std::string mailstr = "mailto:"; + mailstr += "?subject=RetroShare Invite"; + + mailstr += "&body="; + + mailstr += (userCertEdit->toPlainText()).toStdString(); + + /* search and replace the end of lines with: "%0D%0A" */ + std::cerr << "MAIL STRING:" << mailstr.c_str() << std::endl; + size_t loc; + while((loc = mailstr.find("\n")) != mailstr.npos) + { + /* sdfkasdflkjh */ + mailstr.replace(loc, 1, "%0D%0A"); + } + + HINSTANCE hInst = ShellExecuteA(0, "open", mailstr.c_str(), + NULL, NULL, SW_SHOW); + + if(reinterpret_cast(hInst) <= 32) + { + /* error */ + std::cerr << "ShellExecute Error: " << reinterpret_cast(hInst); + std::cerr << std::endl; + } +} +#endif +// +//============================================================================ +// +void +TextPage::showHelpUserCert() +{ + QMessageBox::information(this, + tr("Connect Friend Help"), + tr("You can copy this text and send it to your " + "friend via email, ICQ or some other way")); + +} +// +//============================================================================ +// +int +TextPage::nextId() const +{ + std::string id; + std::string certstr; + + certstr = friendCertEdit->toPlainText().toStdString(); + + if ( rsPeers->LoadCertificateFromString(certstr, id) ) + { + wizard()->setField("idField", QString::fromStdString(id)); + return ConnectFriendWizard::Page_Conclusion ; + } + else + { + // error message + wizard()->setField("errorMessage", tr("Certificate Load Failed") ); + return ConnectFriendWizard::Page_ErrorMessage; + } + + return ConnectFriendWizard::Page_ErrorMessage; +} +// +//============================================================================ +//============================================================================ +//============================================================================ + +CertificatePage::CertificatePage(QWidget *parent) + : QWizardPage(parent) +{ + QString titleStr("%1"); + setTitle( titleStr.arg( tr("Certificate files") ) ) ; + + setSubTitle(tr("Use XPGP certificates saved in files.")); + + userFileLabel = new QLabel(tr("You have to generate a file with your " + "certificate and give it to your friend. " + "Also, you can use a file generated " + "before.")); + userFileLabel->setWordWrap(true); + + userFileCreateButton = new QPushButton; + userFileCreateButton->setText("Generate certificate"); + connect(userFileCreateButton, SIGNAL( clicked() ), + this, SLOT( generateCertificateCalled())); + + userFileLayout = new QHBoxLayout; + userFileLayout->addWidget(userFileLabel); + userFileLayout->addWidget(userFileCreateButton); + + userFileFrame = new QGroupBox; + userFileFrame->setFlat(true); + userFileFrame->setTitle("Generate certificate"); + userFileFrame->setLayout(userFileLayout); + + friendFileLabel = new QLabel(tr("Specify path to your friend's " + "certificate in the box below " ) ); + friendFileNameEdit = new QLineEdit; + registerField("friendCertificateFile*", friendFileNameEdit); + + friendFileNameOpenButton= new QPushButton; + friendFileNameOpenButton->setText("..."); + connect(friendFileNameOpenButton, SIGNAL( clicked()), + this , SLOT( loadFriendCert())); + + friendFileLayout = new QHBoxLayout; + friendFileLayout->addWidget(friendFileNameEdit) ; + friendFileLayout->addWidget(friendFileNameOpenButton); + + certPageLayout = new QVBoxLayout; + certPageLayout->addWidget(userFileFrame); + certPageLayout->addWidget(friendFileLabel); + certPageLayout->addLayout(friendFileLayout); + + setLayout(certPageLayout); +} + +//============================================================================ + +void +CertificatePage::loadFriendCert() +{ + QString fileName = + QFileDialog::getOpenFileName(this, tr("Select Certificate"), + "", tr("Certificates (*.pqi *.pem)")); + + if (!fileName.isNull()) + { + friendFileNameEdit->setText(fileName); + emit completeChanged(); + } +} + +//============================================================================ + +void +CertificatePage::generateCertificateCalled() +{ + qDebug() << " generateCertificateCalled"; + + QString qdir = QFileDialog::getSaveFileName(this, + "Please choose a filename", + QDir::homePath(), + "RetroShare Certificate (*.pqi)"); + + if ( rsPeers->SaveCertificateToFile(rsPeers->getOwnId(), qdir.toStdString()) ) + { + QMessageBox::information(this, tr("RetroShare"), + tr("Certificate file successfully created"), + QMessageBox::Ok, QMessageBox::Ok); + } + else + { + QMessageBox::information(this, tr("RetroShare"), + tr("Sorry, certificate file creation failed"), + QMessageBox::Ok, QMessageBox::Ok); + } +} + +//============================================================================ + +bool +CertificatePage::isComplete() const +{ + return !( (friendFileNameEdit->text()).isEmpty() ); +} + +//============================================================================ + +int +CertificatePage::nextId() const +{ + std::string id; + + QString fn = friendFileNameEdit->text(); + if (QFile::exists(fn)) + { + std::string fnstr = fn.toStdString(); + if ( rsPeers->LoadCertificateFromFile(fnstr, id) ) + { + wizard()->setField("idField", QString::fromStdString(id)); + + return ConnectFriendWizard::Page_Conclusion; + } + else + { + wizard()->setField("errorMessage", + QString(tr("Certificate Load Failed:something is wrong with %1 ")).arg(fn) ); + return ConnectFriendWizard::Page_ErrorMessage; + } + } + else + { + QString mess = + QString(tr("Certificate Load Failed:file %1 not found")) + .arg(fn); + + wizard()->setField("errorMessage", mess); + + return ConnectFriendWizard::Page_ErrorMessage; + } +} +// +//============================================================================ +//============================================================================ +//============================================================================ + +ErrorMessagePage::ErrorMessagePage(QWidget *parent) + : QWizardPage(parent) +{ + QString titleStr("%1"); + setTitle( titleStr.arg( tr("Sorry, some error appeared") ) ) ; + setSubTitle( tr("Here is the error message: ") ); + + messageLabel = new QLabel("zooloo"); + registerField("errorMessage", messageLabel, "text"); + + errMessLayout = new QVBoxLayout; + errMessLayout->addWidget(messageLabel); + setLayout(errMessLayout); +} + +//============================================================================ +// +int ErrorMessagePage::nextId() const +{ + return -1; +} +// +//============================================================================ +//============================================================================ +//============================================================================ + +ConclusionPage::ConclusionPage(QWidget *parent) + : QWizardPage(parent) +{ + QString titleStr("%1"); + setTitle( titleStr.arg( tr("Make Friend") ) ) ; + + setSubTitle(tr("Fill details about your friend here")); + + peerDetailsFrame = new QGroupBox; + peerDetailsFrame->setTitle( tr("Peer details") ); + + peerDetailsLayout = new QGridLayout(); + + trustLabel = new QLabel( tr("Trust:") ); + peerDetailsLayout->addWidget(trustLabel, 0,0,1,1); + trustEdit = new QLineEdit(); + peerDetailsLayout->addWidget(trustEdit, 0,1,1,1); + nameLabel = new QLabel( tr("Name:") ); + peerDetailsLayout->addWidget(nameLabel, 1,0,1,1); + nameEdit = new QLineEdit(); + peerDetailsLayout->addWidget(nameEdit, 1,1,1,1); + orgLabel = new QLabel( tr("Org:") ); + peerDetailsLayout->addWidget(orgLabel, 2,0,1,1); + orgEdit = new QLineEdit(); + peerDetailsLayout->addWidget(orgEdit, 2,1,1,1); + locLabel = new QLabel( tr("Loc:") ); + peerDetailsLayout->addWidget(locLabel, 3,0,1,1); + locEdit = new QLineEdit(); + peerDetailsLayout->addWidget(locEdit, 3,1,1,1); + countryLabel = new QLabel( tr("Country:") ); + peerDetailsLayout->addWidget(countryLabel, 4,0,1,1); + countryEdit = new QLineEdit(); + peerDetailsLayout->addWidget(countryEdit, 4,1,1,1); + signersLabel = new QLabel( tr("Signers") ); + peerDetailsLayout->addWidget(signersLabel, 5,0,1,1); + signersEdit = new QTextEdit(); + peerDetailsLayout->addWidget(signersEdit, 5,1,1,1); + + peerDetailsFrame->setLayout(peerDetailsLayout); + + authCodeLabel = new QLabel( tr("AUTH CODE") ); + authCodeEdit = new QLineEdit(); + registerField("authCode", authCodeEdit); + + authCodeLayout = new QHBoxLayout(); + authCodeLayout->addWidget(authCodeLabel); + authCodeLayout->addWidget(authCodeEdit); + authCodeLayout->addStretch(); + + conclusionPageLayout = new QVBoxLayout(); + conclusionPageLayout->addWidget(peerDetailsFrame); + conclusionPageLayout->addLayout(authCodeLayout); + + setLayout(conclusionPageLayout); + + peerIdEdit = new QLineEdit(this); + peerIdEdit->setVisible(false); + registerField("idField",peerIdEdit); +} + +//============================================================================ +// +int ConclusionPage::nextId() const +{ + return -1; +} +// +//============================================================================ +// +void +ConclusionPage::initializePage() +{ + std::string id = field("idField").toString().toStdString(); + + RsPeerDetails detail; + if (!rsPeers->getPeerDetails(id, detail)) + { + rsiface->unlockData(); /* UnLock Interface */ + return ;//false; + } + + std::string trustString; + + switch(detail.trustLvl) + { + case RS_TRUST_LVL_GOOD: + trustString = "Good"; + break; + case RS_TRUST_LVL_MARGINAL: + trustString = "Marginal"; + break; + case RS_TRUST_LVL_UNKNOWN: + default: + trustString = "No Trust"; + break; + } + +// std::ostringstream out; + +// std::list::iterator it; +// for(it = detail.signers.begin(); it != detail.signers.end(); it++) +// { +// out << rsPeers->getPeerName(*it) << " <" << *it << ">"; +// out << std::endl; +// } + + QString ts; + std::list::iterator it; + for(it = detail.signers.begin(); it != detail.signers.end(); it++) + { + ts.append(QString::fromStdString( rsPeers->getPeerName(*it) )); + ts.append( "<" ) ; + ts.append( QString::fromStdString(*it) ); + ts.append( ">" ); + ts.append( "\n" ); + } + + + /* setup the gui */ +//--- setInfo(detail.name, trustString, detail.org, +//--- detail.location, detail.email, out.str()); + nameEdit->setText( QString::fromStdString( detail.name ) ) ; + trustEdit->setText(QString::fromStdString( trustString ) ) ; + orgEdit->setText(QString::fromStdString( detail.org ) ); + locEdit->setText( QString::fromStdString( detail.location ) ); + countryEdit->setText( QString::fromStdString( detail.email ) ); + signersEdit->setPlainText( ts ); + + //setAuthCode(id, detail.authcode); + authCodeEdit->setText( QString::fromStdString(detail.authcode) ); +} +// +//============================================================================ +// + +// +//============================================================================ + + + +//============================================================================ + diff --git a/retroshare-gui/src/gui/connect/ConnectFriendWizard.h b/retroshare-gui/src/gui/connect/ConnectFriendWizard.h new file mode 100755 index 000000000..bae5c1ea0 --- /dev/null +++ b/retroshare-gui/src/gui/connect/ConnectFriendWizard.h @@ -0,0 +1,186 @@ +#ifndef __ConnectFriendWizard__ +#define __ConnectFriendWizard__ + +#include + +QT_BEGIN_NAMESPACE +class QCheckBox; +class QLabel; +class QTextEdit; +class QLineEdit; +class QRadioButton; +class QVBoxLayout; +class QHBoxLayout; +class QGroupBox; +class QGridLayout; +QT_END_NAMESPACE + +//============================================================================ +// +class ConnectFriendWizard : public QWizard +{ +// + Q_OBJECT + +public: + + enum { Page_Intro, Page_Text, Page_Cert, Page_ErrorMessage, + Page_Conclusion }; + + ConnectFriendWizard(QWidget *parent = 0); + + void accept(); + +private slots: + void showHelp(); +//! +}; + +//============================================================================ +//! +class IntroPage : public QWizardPage +{ + Q_OBJECT + +public: + IntroPage(QWidget *parent = 0); + + int nextId() const; + +private: + QLabel *topLabel; + QRadioButton *textRadioButton; + QRadioButton *certRadioButton; +}; + +//============================================================================ +//! +class TextPage : public QWizardPage +{ + Q_OBJECT + +public: + TextPage(QWidget *parent = 0); + + int nextId() const; + +private: + QLabel* userCertLabel; + QTextEdit* userCertEdit; + QHBoxLayout* userCertLayout; + QVBoxLayout* userCertButtonsLayout; + QPushButton* userCertHelpButton; + #if defined(Q_OS_WIN) + QPushButton* userCertMailButton;//! on Windows, click on this button + //! launches default email client + #endif + QLabel* friendCertLabel; + QTextEdit* friendCertEdit; + + QVBoxLayout* textPageLayout; + +private slots: + void showHelpUserCert(); + + #if defined(Q_OS_WIN) + //! launches default email client (on windows) + + //! Tested on Vista, it work normally... But a bit slowly. + void runEmailClient(); + #endif +}; + +//============================================================================ +//! +class CertificatePage : public QWizardPage +{ + Q_OBJECT + +public: + CertificatePage(QWidget *parent = 0); + + int nextId() const; + bool isComplete() const ; + +private: + QGroupBox* userFileFrame; + QLabel *userFileLabel; + QPushButton* userFileCreateButton; + QHBoxLayout* userFileLayout; + + QLabel* friendFileLabel; + QLineEdit *friendFileNameEdit; + QPushButton* friendFileNameOpenButton; + QHBoxLayout* friendFileLayout; + + QVBoxLayout* certPageLayout; + +private slots: + void generateCertificateCalled(); + void loadFriendCert(); +}; + +//============================================================================ + +class ErrorMessagePage : public QWizardPage +{ + Q_OBJECT + +public: + ErrorMessagePage(QWidget *parent = 0); + + int nextId() const; + +private: + QLabel *messageLabel; + QVBoxLayout* errMessLayout; +}; + +//============================================================================ +//! +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: + QGroupBox* peerDetailsFrame; + QLabel* trustLabel; + QLineEdit* trustEdit; + QLabel* nameLabel; + QLineEdit* nameEdit; + QLabel* orgLabel; + QLineEdit* orgEdit; + QLabel* locLabel; + QLineEdit* locEdit; + QLabel* countryLabel; + QLineEdit* countryEdit; + QLabel* signersLabel; + QTextEdit* signersEdit; + QGridLayout* peerDetailsLayout; + + QLabel* authCodeLabel; + QLineEdit* authCodeEdit; + QHBoxLayout* authCodeLayout; + + QVBoxLayout* conclusionPageLayout; + + //! peer id + + //! It's a hack; This widget is used only to register "id" field in the + //! wizard. Really the widget isn't displayed. + QLineEdit* peerIdEdit; +}; + +//============================================================================ + +#endif diff --git a/retroshare-gui/src/gui/images.qrc b/retroshare-gui/src/gui/images.qrc index 51ca75060..a5ab32a7e 100644 --- a/retroshare-gui/src/gui/images.qrc +++ b/retroshare-gui/src/gui/images.qrc @@ -393,5 +393,12 @@ smileys/wink.png smileys/wondering.png smileys/emotes.acs + + images/connect/connectFriendWatermark.png + images/connect/connectFriendLogo.png + images/connect/connectFriendBanner.png + images/connect/info16.png + images/connect/mail_send.png + diff --git a/retroshare-gui/src/gui/images/connect/connectFriendBanner.png b/retroshare-gui/src/gui/images/connect/connectFriendBanner.png new file mode 100644 index 0000000000000000000000000000000000000000..0b07445bf0e0aa086bc2ae1387aa1ac35c149f0b GIT binary patch literal 481 zcmeAS@N?(olHy`uVBq!ia0y~yV3Go|y*QYFWYMXt^+1ZVz$3Dlfq`2Pgc<8o;wLgN zFi!S#aSW-L^Y-rT+#?18%nr6MynQuw?=J69Eif<$Zu}?q#OvF?KmT+YW}LM8eLJ1u z!Piaaetwf=sIYy>($KW#PX2txhU>v)i~$owAG0)Q0tK0XG?V#m28|QDE^#sh12L;5 zkVw86_K~6IX-uj(L+~j*2CkxBVTNNxQ)3x=Jk=RQRO}cz4@9g>?_ubXo zk19xmCeR>{9-z`s5|XGOX@P=$|0eDR&E3L4@r~Au2|iYg z3l5wGsVdye-Czi`mKCJOCYfb{!%bF)#&V#oKwCt9gxfH%0&Nm`q7IZ_HYJupB;qJ@ zfC9)BGC=QuywvmrXt~c*EueL$r}{BS82bTz_w^l1!^Szea~KS!?gr}ed0JJ@bRgoJ znIFT9Q+L0Eg9>Dsg8NO@0}SAATKwW`Rqa%~) fK+Lwgz<~O%mdpIexg*;S7-tNgu6{1-oD!M<^VF;d literal 0 HcmV?d00001 diff --git a/retroshare-gui/src/gui/images/connect/connectFriendLogo.png b/retroshare-gui/src/gui/images/connect/connectFriendLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..d5ac0af388df8295321a3364df8b827ed7ab14ea GIT binary patch literal 8884 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 literal 0 HcmV?d00001 diff --git a/retroshare-gui/src/gui/images/connect/connectFriendWatermark.png b/retroshare-gui/src/gui/images/connect/connectFriendWatermark.png new file mode 100644 index 0000000000000000000000000000000000000000..d68db6277188ebaca0406e1594d4a512f1b216ac GIT binary patch literal 49495 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 QV*mgE07*qoM6N<$f{xC+p8x;= literal 0 HcmV?d00001 diff --git a/retroshare-gui/src/gui/images/connect/info16.png b/retroshare-gui/src/gui/images/connect/info16.png new file mode 100644 index 0000000000000000000000000000000000000000..fb3b689e99af38f769c3c72a6957782f617c034b GIT binary patch literal 3642 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 M07*qoM6N<$f^h=b761SM literal 0 HcmV?d00001 diff --git a/retroshare-gui/src/gui/images/connect/mail_send.png b/retroshare-gui/src/gui/images/connect/mail_send.png new file mode 100644 index 0000000000000000000000000000000000000000..0366228e927c761b95ebe12b907d506d1babc8e9 GIT binary patch literal 3583 zcmVKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}0009TNkl_8=iU|>W@NK7mUi4h@z1QA<>7+CpHS5T{}{IyUi)Co=FII-gR z=WNI4yZb(dLRA=fmiJxWSC3gJ6kc*1=R&8`Q2;^+{+s`FDJ4oNgb)l54;#C?yVqG> zUU^^tPv%d}zhl;Fhmq%XDBZtLI+MY1Qb=K-QU5YQ3pAQ$qfWV8VR5lQ{jeUHLTEiS zG=Q6Nxp(h((rK5e{1k>^@b?rUAdD2dG_^vu6p8j*uY~mzF4; zoTU7qM5o(DYmM*wj|>cH(ChUnZEgaZiOETl@g$K_jE|3#ur!e$u=a7gm(fk$y|kGK z++zr13?T%jl)|hx>YSXL!*v}VqZG)9t*w1^IC{#iBcqyix%h9R*`L#Hxsf3GU7Pq*`<{@gihEN2-1MN`vfXbC7^x??Up7vC^+1zB7VK`jlX^S zHKSN8`YX#TP1ki>x!hPw3{1A}9xS!U=CAgrPRw_`Rym3yOC|M1GV{t`;V)KUBFtYz0xD%NOULd(*KFU%j?j^N1s#JWxu} zIqFkw^f-|n;PW@mF+DmMpB}b&epGY*X+>_t5tkOm;$OaABprvx20;*z%T4j#TdPzX zeP(hgj%Q=E+r4mpM0Mp*8%sc1z=7xK7bcT@^}!l{4FDd+jsfi$=otV2002ovPDHLk FV1nVluIm5* literal 0 HcmV?d00001