Redesigned ConnectFriendWizard as ui file.

Added new base class DropLineEdit.
Fixed german language.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5181 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2012-05-22 22:24:10 +00:00
parent 25547d0ea8
commit 22a0f89751
9 changed files with 1962 additions and 1560 deletions

View file

@ -944,7 +944,9 @@ static void processList(const QStringList &list, const QString &textSingular, co
std::cerr << "Usign this certificate:" << std::endl;
std::cerr << RS_Certificate.toStdString() << std::endl;
ConnectFriendWizard(NULL,RS_Certificate).exec() ;
ConnectFriendWizard connectFriendWizard;
connectFriendWizard.setCertificate(RS_Certificate);
connectFriendWizard.exec();
needNotifySuccess = false;
}
break ;

View file

@ -0,0 +1,93 @@
/****************************************************************
*
* RetroShare is distributed under the following license:
*
* Copyright (C) 2012, RetroShare Team
*
* 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 <QDropEvent>
#include <QUrl>
#include <QFileInfo>
#include "DropLineEdit.h"
DropLineEdit::DropLineEdit(QWidget *parent)
: QLineEdit(parent)
{
accept.text = false;
accept.file = false;
accept.dir = false;
setAcceptDrops(true);
}
void DropLineEdit::setAcceptText(bool on)
{
accept.text = on;
}
void DropLineEdit::setAcceptFile(bool on)
{
accept.file = on;
}
void DropLineEdit::setAcceptDir(bool on)
{
accept.dir = on;
}
void DropLineEdit::dragEnterEvent(QDragEnterEvent *event)
{
if (accept.text && event->mimeData()->hasText()) {
event->acceptProposedAction();
return;
}
if ((accept.file || accept.dir) && event->mimeData()->hasUrls()) {
event->acceptProposedAction();
return;
}
}
void DropLineEdit::dropEvent(QDropEvent *event)
{
if (event->mimeData()->hasText()) {
setText(event->mimeData()->text());
}
if (event->mimeData()->hasUrls()) {
QList<QUrl> urlList = event->mimeData()->urls();
/* if just text was dropped, urlList is empty (size == 0) */
if (urlList.size() > 0) {
/* if at least one QUrl is present in list */
QString name = urlList[0].toLocalFile();
QFileInfo info;
info.setFile(name);
if (accept.file && info.isFile()) {
setText(name);
}
if (accept.dir && info.isDir()) {
setText(name);
}
}
}
event->acceptProposedAction();
}

View file

@ -0,0 +1,51 @@
/****************************************************************
*
* RetroShare is distributed under the following license:
*
* Copyright (C) 2012, RetroShare Team
*
* 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.
****************************************************************/
#ifndef DROPLINEEDIT_H
#define DROPLINEEDIT_H
#include <QLineEdit>
class DropLineEdit : public QLineEdit
{
Q_OBJECT
public:
DropLineEdit(QWidget *parent = 0);
void setAcceptText(bool on);
void setAcceptFile(bool on);
void setAcceptDir(bool on);
protected:
virtual void dropEvent(QDropEvent *event);
virtual void dragEnterEvent(QDragEnterEvent *event);
private:
struct {
bool text : 1;
bool file : 1;
bool dir : 1;
} accept;
};
#endif // DROPLINEEDIT_H

File diff suppressed because it is too large Load diff

View file

@ -1,22 +1,15 @@
#ifndef __ConnectFriendWizard__
#define __ConnectFriendWizard__
#ifndef CONNECTFRIENDWIZARD_H
#define CONNECTFRIENDWIZARD_H
#include <map>
#include <QWizard>
#include <retroshare/rspeers.h>
#include <map>
//QT_BEGIN_NAMESPACE
class QCheckBox;
class QLabel;
class QTextEdit;
class QLineEdit;
class QRadioButton;
class QVBoxLayout;
class QHBoxLayout;
class QGroupBox;
class QGridLayout;
class QComboBox;
class QTableWidget;
//QT_END_NAMESPACE
namespace Ui {
class ConnectFriendWizard;
}
//============================================================================
//! A wizard for adding friends. Based on standard QWizard component
@ -25,306 +18,79 @@ class QTableWidget;
//! /-> Use text certificates \ /-> errorpage(if went wrong)
//! intro -| |-> ->
//! \-> Use *.pqi files / \-> fill peer details
//!
//! So, there are five possible pages in this wizard.
//!
class ConnectFriendWizard : public QWizard
{//
Q_OBJECT
{
Q_OBJECT
public:
enum Page { Page_Intro, Page_Text, Page_Cert, Page_ErrorMessage, Page_Conclusion, Page_Foff, Page_Rsid, Page_Email };
enum { Page_Intro, Page_Text, Page_Cert, Page_ErrorMessage, Page_Conclusion,Page_Foff, Page_Rsid, Page_Email };
ConnectFriendWizard(QWidget *parent = 0);
~ConnectFriendWizard();
ConnectFriendWizard(QWidget *parent = 0,const QString& cert = QString());
void setCertificate(const QString &certificate);
void setGroup(const std::string &groupId);
virtual bool validateCurrentPage();
virtual int nextId() const;
virtual void accept();
void accept();
void setGroup(const std::string &id);
protected:
void initializePage(int id);
private slots:
// void showHelp(); // we'll have to implement it in future
};
/* TextPage */
void updateOwnCert();
void toggleSignatureState();
void runEmailClient();
void showHelpUserCert();
void copyCert();
void saveCert();
void cleanFriendCert();
//============================================================================
//! Introduction page for "Add friend" wizard.
class IntroPage : public QWizardPage
{
Q_OBJECT
/* CertificatePage */
void loadFriendCert();
void generateCertificateCalled();
public:
IntroPage(QWidget *parent = 0);
/* FofPage */
void updatePeersList(int index);
void signAllSelectedUsers();
int nextId() const;
/* ConclusionPage */
void groupCurrentIndexChanged(int index);
private:
QLabel *topLabel;
QRadioButton *textRadioButton;
QRadioButton *certRadioButton;
QRadioButton *foffRadioButton;
QRadioButton *rsidRadioButton;
QRadioButton *emailRadioButton;
bool error;
RsPeerDetails peerDetails;
/* FofPage */
std::map<QCheckBox*, std::string> _id_boxes;
std::map<QCheckBox*, std::string> _gpg_id_boxes;
/* ConclusionPage */
QString groupId;
Ui::ConnectFriendWizard *ui;
};
//============================================================================
//! Text page (for exchnging text certificates) for "Add friend" wizard.
class TextPage : public QWizardPage
class ConnectFriendPage : public QWizardPage
{
Q_OBJECT
friend class ConnectFriendWizard; // for access to registerField
Q_OBJECT
public:
TextPage(QWidget *parent = 0);
ConnectFriendPage(QWidget *parent = 0);
int nextId() const;
void setComplete(bool isComplete);
virtual bool isComplete() const;
private:
QLabel* userCertLabel;
QTextEdit* userCertEdit;
QHBoxLayout* userCertLayout;
QVBoxLayout* userCertButtonsLayout;
QPushButton* userCertHelpButton;
QPushButton* userCertCopyButton;
QPushButton* userCertIncludeSignaturesButton;
QPushButton* userCertSaveButton;
QPushButton* userCertMailButton;//! on Windows, click on this button
//! launches default email client
QLabel* friendCertLabel;
QTextEdit* friendCertEdit;
QPushButton* friendCertCleanButton;
QVBoxLayout* friendCertButtonsLayout;
QHBoxLayout* friendCertLayout;
QVBoxLayout* textPageLayout;
void setCurrentFileName(const QString &fileName);
void updateOwnCert() ;
bool _shouldAddSignatures ;
QString fileName;
private slots:
void showHelpUserCert();
void copyCert();
void cleanFriendCert();
void toggleSignatureState();
bool fileSave();
bool fileSaveAs();
//! launches default email client (on windows)
//! Tested on Vista, it work normally... But a bit slowly.
void runEmailClient();
bool useComplete;
bool complete;
};
//============================================================================
//! A page for exchanging *.pqi files, for "Add friend" wizard.
class CertificatePage : public QWizardPage
{
Q_OBJECT
public:
CertificatePage(QWidget *parent = 0);
int nextId() const;
bool isComplete() const ;
void dropEvent(QDropEvent *event);
void dragEnterEvent(QDragEnterEvent *event);
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();
};
//============================================================================
//! A page for signing certificates from some people on the network (e.g. friends
// of friends, people trusting me...)
//
class FofPage : public QWizardPage
{
Q_OBJECT
public:
FofPage(QWidget *parent = 0);
int nextId() const;
bool isComplete() const ;
private:
// QGroupBox* userFileFrame;
QLabel *userFileLabel;
QVBoxLayout *userFileLayout;
QComboBox *userSelectionCB;
QPushButton* makeFriendButton;
QTableWidget *selectedPeersTW;
QVBoxLayout* certPageLayout;
bool _friends_signed ;
std::map<QCheckBox*,std::string> _id_boxes ;
std::map<QCheckBox*,std::string> _gpg_id_boxes ;
private slots:
void signAllSelectedUsers() ;
void updatePeersList(int) ;
};
//============================================================================
//! Page for displaying error messages (for "Add friend" wizard).
class ErrorMessagePage : public QWizardPage
{
Q_OBJECT
public:
ErrorMessagePage(QWidget *parent = 0);
int nextId() const;
private:
QLabel *messageLabel;
QVBoxLayout* errMessLayout;
};
//============================================================================
//! Page for filling peer details in "Add friend" wizard.
//! Warning: This page duplicates functionality of the ConnectDialo class (and
//! also some pieces of code). TODO: remove this duplication
class ConclusionPage : public QWizardPage
{
Q_OBJECT
public:
ConclusionPage(QWidget *parent = 0);
void initializePage();
int nextId() const;
private slots:
// void printButtonClicked();
void groupCurrentIndexChanged(int index);
private:
QGroupBox* peerDetailsFrame;
QGridLayout* peerDetailsLayout;
QGroupBox* optionsFrame;
QGridLayout* optionsLayout;
QLabel* trustLabel;
QLabel* trustEdit;
QLabel* nameLabel;
QLabel* nameEdit;
QLabel* emailLabel;
QLabel* emailEdit;
QLabel* locLabel;
QLabel* locEdit;
QLabel* signersLabel;
QTextEdit* signersEdit;
QComboBox* groupComboBox;
QLabel* groupLabel;
QLabel* radioButtonsLabel;
QCheckBox *signGPGCheckBox;
QCheckBox *acceptNoSignGPGCheckBox;
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;
QLineEdit* peerGPGIdEdit;
QLineEdit* peerLocation;
QLineEdit* peerCertStringEdit;
QLineEdit* ext_friend_ip;
QLineEdit* ext_friend_port;
QLineEdit* local_friend_ip;
QLineEdit* local_friend_port;
QLineEdit* dyndns;
};
//============================================================================
//! A page for exchanging RSID , for "Add friend" wizard.
class RsidPage : public QWizardPage
{
Q_OBJECT
public:
RsidPage(QWidget *parent = 0);
int nextId() const;
bool isComplete() const ;
private:
QGroupBox* userRsidFrame;
QLabel *userFileLabel;
QHBoxLayout* userRsidLayout;
QLabel* friendRsidLabel;
QLineEdit *friendRsidEdit;
QHBoxLayout* friendRSIDLayout;
QVBoxLayout* RsidLayout;
private slots:
};
//============================================================================
//============================================================================
//! A page for Email Invite
class EmailPage : public QWizardPage
{
Q_OBJECT
public:
EmailPage(QWidget *parent = 0);
int nextId() const;
bool isComplete() const ;
bool validatePage();
private:
QLabel* addressLabel;
QLineEdit *addressEdit;
QLabel* subjectLabel;
QLineEdit *subjectEdit;
QTextEdit* inviteTextEdit;
QHBoxLayout* emailhbox2Layout;
QHBoxLayout* emailhbox3Layout;
QVBoxLayout* emailvboxLayout;
private slots:
};
//============================================================================
#endif
#endif // CONNECTFRIENDWIZARD_H

View file

@ -0,0 +1,635 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ConnectFriendWizard</class>
<widget class="QWizard" name="ConnectFriendWizard">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>454</width>
<height>370</height>
</rect>
</property>
<property name="windowTitle">
<string>Connect Friend Wizard</string>
</property>
<property name="windowIcon">
<iconset resource="../images.qrc">
<normaloff>:/images/rstray3.png</normaloff>:/images/rstray3.png</iconset>
</property>
<widget class="ConnectFriendPage" name="IntroPage">
<property name="title">
<string>Add a new Friend</string>
</property>
<property name="subTitle">
<string>This wizard will help you to connect to your friend(s) to RetroShare network.&lt;br&gt;These ways are possible to do this:</string>
</property>
<attribute name="pageId">
<string notr="true">ConnectFriendWizard::Page_Intro</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QRadioButton" name="textRadioButton">
<property name="text">
<string>&amp;Enter the certificate manually</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="certRadioButton">
<property name="text">
<string>&amp;You get a certificate file from your friend</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="foffRadioButton">
<property name="text">
<string>&amp;Make friend with selected friends of my friends</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rsidRadioButton">
<property name="text">
<string>&amp;Enter RetroShare ID manually</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="emailRadioButton">
<property name="text">
<string>&amp;Send a Invitation by Email
(She/He receives a email with instructions howto to download RetroShare)</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="ConnectFriendPage" name="TextPage">
<property name="title">
<string>Text certificate</string>
</property>
<property name="subTitle">
<string>Use text representation of the PGP certificates.</string>
</property>
<attribute name="pageId">
<string notr="true">ConnectFriendWizard::Page_Text</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="userCertLabel">
<property name="text">
<string>The text below is your PGP certificate. You have to provide it to your friend</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPlainTextEdit" name="userCertEdit">
<property name="font">
<font>
<family>Courier New</family>
</font>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QPushButton" name="userCertHelpButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>20</horstretch>
<verstretch>20</verstretch>
</sizepolicy>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/info16.png</normaloff>:/images/info16.png</iconset>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="userCertIncludeSignaturesButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>20</horstretch>
<verstretch>20</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Include signatures</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/gpgp_key_generate.png</normaloff>:/images/gpgp_key_generate.png</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="userCertCopyButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>20</horstretch>
<verstretch>20</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Copy your Cert to Clipboard</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/copyrslink.png</normaloff>:/images/copyrslink.png</iconset>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="userCertSaveButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>20</horstretch>
<verstretch>20</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Save your Cert into a File</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/document_save.png</normaloff>:/images/document_save.png</iconset>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="userCertMailButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>20</horstretch>
<verstretch>20</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Run Email program</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/mail_send.png</normaloff>:/images/mail_send.png</iconset>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="friendCertLabel">
<property name="text">
<string>Please, paste your friends PGP certificate into the box below</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPlainTextEdit" name="friendCertEdit">
<property name="font">
<font>
<family>Courier New</family>
</font>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QPushButton" name="friendCertCleanButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>20</horstretch>
<verstretch>20</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Clean certificate</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/accepted16.png</normaloff>:/images/accepted16.png</iconset>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="ConnectFriendPage" name="CertificatePage">
<property name="title">
<string>Certificate files</string>
</property>
<property name="subTitle">
<string>Use PGP certificates saved in files.</string>
</property>
<attribute name="pageId">
<string notr="true">ConnectFriendWizard::Page_Cert</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QGroupBox" name="userFileFrame">
<property name="title">
<string>Import friend's certificate...</string>
</property>
<property name="flat">
<bool>true</bool>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="userFileLabel">
<property name="text">
<string>You have to generate a file with your certificate and give it to your friend. Also, you can use a file generated before.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="userFileCreateButton">
<property name="text">
<string>Export my certificate...</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="friendFileLabel">
<property name="text">
<string>Drag and Drop your friends's certificate in this Window or specify path in the box below</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="DropLineEdit" name="friendFileNameEdit"/>
</item>
<item>
<widget class="QPushButton" name="friendFileNameOpenButton">
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="ConnectFriendPage" name="FofPage">
<property name="title">
<string>Friends of friends</string>
</property>
<property name="subTitle">
<string>Select now who you want to make friends with.</string>
</property>
<attribute name="pageId">
<string notr="true">ConnectFriendWizard::Page_Foff</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_11">
<item>
<widget class="QLabel" name="userFileLabel_2">
<property name="text">
<string>Show me:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="userSelectionCB"/>
</item>
<item>
<widget class="QTableWidget" name="selectedPeersTW">
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="columnCount">
<number>4</number>
</property>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<column/>
<column/>
<column/>
<column/>
</widget>
</item>
<item>
<widget class="QPushButton" name="makeFriendButton">
<property name="text">
<string>Make friend with these peers</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="ConnectFriendPage" name="RsidPage">
<property name="title">
<string>RetroShare ID</string>
</property>
<property name="subTitle">
<string>Use RetroShare ID for adding a Friend which is available in your network.</string>
</property>
<attribute name="pageId">
<string notr="true">ConnectFriendWizard::Page_Rsid</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QGroupBox" name="userRsidFrame">
<property name="title">
<string>Add Friends RetroShare ID...</string>
</property>
<property name="flat">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_8"/>
</widget>
</item>
<item>
<widget class="QLabel" name="friendRsidLabel">
<property name="text">
<string>Paste Friends RetroShare ID in the box below</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="friendRsidEdit">
<property name="whatsThis">
<string>Enter the RetroShare ID of your Friend, e.g. Peer@BDE8D16A46D938CF</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="ConnectFriendPage" name="EmailPage">
<property name="title">
<string>Invite Friends by Email</string>
</property>
<property name="subTitle">
<string>Enter your friends' email addresses (seperate each on with a semicolon)</string>
</property>
<attribute name="pageId">
<string notr="true">ConnectFriendWizard::Page_Email</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_9">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="addressLabel">
<property name="text">
<string>Your friends' email addresses:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="addressEdit">
<property name="whatsThis">
<string>Enter Friends Email addresses</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLabel" name="subjectLabel">
<property name="text">
<string>Subject:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="subjectEdit"/>
</item>
</layout>
</item>
<item>
<widget class="QPlainTextEdit" name="inviteTextEdit">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="ConnectFriendPage" name="ErrorMessagePage">
<property name="title">
<string>Sorry, some error appeared</string>
</property>
<property name="subTitle">
<string>Here is the error message:</string>
</property>
<attribute name="pageId">
<string notr="true">ConnectFriendWizard::Page_ErrorMessage</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="messageLabel">
<property name="text">
<string notr="true">error text</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="ConnectFriendPage" name="ConclusionPage">
<property name="title">
<string>Make Friend</string>
</property>
<property name="subTitle">
<string>Details about your friend:</string>
</property>
<attribute name="pageId">
<string notr="true">ConnectFriendWizard::Page_Conclusion</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_10">
<item>
<widget class="QGroupBox" name="peerDetailsFrame">
<property name="title">
<string>Peer details</string>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="0" column="0">
<widget class="QLabel" name="trustLabel">
<property name="text">
<string>Key validity:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="trustEdit">
<property name="text">
<string notr="true">Trust level</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="nameLabel">
<property name="text">
<string>Name:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="nameEdit">
<property name="text">
<string notr="true">Name</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="emailLabel">
<property name="text">
<string>Email:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="emailEdit">
<property name="text">
<string notr="true">Email</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="locationLabel">
<property name="text">
<string>Location:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="locationEdit">
<property name="text">
<string notr="true">Location</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="signersLabel">
<property name="text">
<string>Signers</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QPlainTextEdit" name="signersEdit">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QLabel" name="alreadyRegisteredLabel">
<property name="text">
<string>It seems your friend is already registered. Adding it might just set it's ip address.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="optionsFrame">
<property name="title">
<string>Options</string>
</property>
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="groupLabel">
<property name="text">
<string>Add friend to group:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="groupComboBox"/>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="signGPGCheckBox">
<property name="text">
<string>Authenticate friend (Sign GPG Key)</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="acceptNoSignGPGCheckBox">
<property name="text">
<string>Add as friend to connect with</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
<customwidgets>
<customwidget>
<class>DropLineEdit</class>
<extends>QLineEdit</extends>
<header>gui/common/DropLineEdit.h</header>
</customwidget>
<customwidget>
<class>ConnectFriendPage</class>
<extends>QWizardPage</extends>
<header>gui/connect/ConnectFriendWizard.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../images.qrc"/>
</resources>
<connections/>
</ui>