diff --git a/retroshare-gui/src/gui/HomePage.cpp b/retroshare-gui/src/gui/HomePage.cpp
index 8d4414250..d3124a623 100644
--- a/retroshare-gui/src/gui/HomePage.cpp
+++ b/retroshare-gui/src/gui/HomePage.cpp
@@ -22,9 +22,12 @@
#include "HomePage.h"
#include "ui_HomePage.h"
+#include "retroshare/rsinit.h"
+
#include "gui/notifyqt.h"
#include "gui/msgs/MessageComposer.h"
#include "gui/connect/ConnectFriendWizard.h"
+#include "gui/connect/ConfCertDialog.h"
#include
#include "gui/connect/FriendRecommendDialog.h"
@@ -54,36 +57,32 @@ HomePage::HomePage(QWidget *parent) :
connect(ui->addButton, SIGNAL(clicked()), this, SLOT(addFriend()));
connect(ui->LoadCertFileButton, SIGNAL(clicked()), this, SLOT(loadCert()));
- QAction *CopyAction = new QAction(QIcon(),tr("Copy your Cert to Clipboard"), this);
- connect(CopyAction, SIGNAL(triggered()), this, SLOT(copyCert()));
-
- QAction *SaveAction = new QAction(QIcon(),tr("Save your Cert into a File"), this);
- connect(SaveAction, SIGNAL(triggered()), this, SLOT(saveCert()));
-
- QAction *SendAction = new QAction(QIcon(),tr("Send via Email"), this);
- connect(SendAction, SIGNAL(triggered()), this, SLOT(runEmailClient()));
-
QAction *WebMailAction = new QAction(QIcon(),tr("Invite via WebMail"), this);
connect(WebMailAction, SIGNAL(triggered()), this, SLOT(webMail()));
QAction *RecAction = new QAction(QIcon(),tr("Recommend friends to each others"), this);
connect(RecAction, SIGNAL(triggered()), this, SLOT(recommendFriends()));
+ QAction *SendAction = new QAction(QIcon(),tr("Send via Email"), this);
+ connect(SendAction, SIGNAL(triggered()), this, SLOT(runEmailClient()));
+
QMenu *menu = new QMenu();
- menu->addAction(CopyAction);
- menu->addAction(SaveAction);
menu->addAction(SendAction);
menu->addAction(WebMailAction);
menu->addAction(RecAction);
ui->shareButton->setMenu(menu);
+ QObject::connect(ui->userCertEdit,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(certContextMenu(QPoint)));
+
connect(ui->runStartWizard_PB,SIGNAL(clicked()), this,SLOT(runStartWizard())) ;
connect(ui->openwebhelp,SIGNAL(clicked()), this,SLOT(openWebHelp())) ;
ui->runStartWizard_PB->hide(); // until future rework
ui->LoadCertFileButton->hide(); // duplicates functionality => not good.
+ mIncludeAllIPs = false;
+
int S = QFontMetricsF(font()).height();
QString help_str = tr(
" Welcome to Retroshare!
\
@@ -99,6 +98,37 @@ HomePage::HomePage(QWidget *parent) :
registerHelpButton(ui->helpButton,help_str,"HomePage") ;
}
+void HomePage::certContextMenu(QPoint point)
+{
+ QMenu menu(this) ;
+
+ QAction *CopyAction = new QAction(QIcon(),tr("Copy your Cert to Clipboard"), this);
+ connect(CopyAction, SIGNAL(triggered()), this, SLOT(copyCert()));
+
+ QAction *SaveAction = new QAction(QIcon(),tr("Save your Cert into a File"), this);
+ connect(SaveAction, SIGNAL(triggered()), this, SLOT(saveCert()));
+
+ menu.addAction(CopyAction);
+ menu.addAction(SaveAction);
+
+ if(!RsAccounts::isHiddenNode())
+ {
+ QAction *includeIPsAct = new QAction(QIcon(), mIncludeAllIPs? tr("Include only current IP"):tr("Include all your known IPs"),this);
+ connect(includeIPsAct, SIGNAL(triggered()), this, SLOT(toggleIncludeAllIPs()));
+ includeIPsAct->setCheckable(true);
+
+ menu.addAction(includeIPsAct);
+ }
+
+ menu.exec(QCursor::pos());
+}
+
+void HomePage::toggleIncludeAllIPs()
+{
+ mIncludeAllIPs = !mIncludeAllIPs;
+ updateOwnCert();
+}
+
HomePage::~HomePage()
{
delete ui;
@@ -106,9 +136,23 @@ HomePage::~HomePage()
void HomePage::updateOwnCert()
{
- std::string invite = rsPeers->GetRetroshareInvite(false);
+ bool include_extra_locators = mIncludeAllIPs;
+
+ RsPeerDetails detail;
+
+ if (!rsPeers->getPeerDetails(rsPeers->getOwnId(), detail))
+ {
+ std::cerr << "(EE) Cannot retrieve information about own certificate. That is a real problem!!" << std::endl;
+ return ;
+ }
+
+ std::string invite = rsPeers->GetRetroshareInvite(detail.id,false,include_extra_locators);
ui->userCertEdit->setPlainText(QString::fromUtf8(invite.c_str()));
+
+ QString description = ConfCertDialog::getCertificateDescription(detail,false,include_extra_locators);
+
+ ui->userCertEdit->setToolTip(description);
}
static void sendMail(QString sAddress, QString sSubject, QString sBody)
diff --git a/retroshare-gui/src/gui/HomePage.h b/retroshare-gui/src/gui/HomePage.h
index 22937f821..8677bc832 100644
--- a/retroshare-gui/src/gui/HomePage.h
+++ b/retroshare-gui/src/gui/HomePage.h
@@ -48,6 +48,7 @@ public:
virtual QString helpText() const { return ""; } //MainPage
private slots:
+ void certContextMenu(QPoint);
void updateOwnCert();
void runEmailClient();
void copyCert();
@@ -58,10 +59,12 @@ private slots:
void runStartWizard() ;
void openWebHelp() ;
void recommendFriends();
+ void toggleIncludeAllIPs();
private:
Ui::HomePage *ui;
+ bool mIncludeAllIPs;
};
diff --git a/retroshare-gui/src/gui/HomePage.ui b/retroshare-gui/src/gui/HomePage.ui
index a83856c1f..da8d7b25d 100644
--- a/retroshare-gui/src/gui/HomePage.ui
+++ b/retroshare-gui/src/gui/HomePage.ui
@@ -25,6 +25,41 @@
2
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 11
+
+
+
+ The text below is your own Retroshare certificate. Send it to your friends
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+
+ -
+
+
+ ...
+
+
+
+ :/icons/help_64.png:/icons/help_64.png
+
+
+ true
+
+
+
-
@@ -32,6 +67,9 @@
Courier New
+
+ Qt::CustomContextMenu
+
@@ -84,41 +122,6 @@
- -
-
-
- ...
-
-
-
- :/icons/help_64.png:/icons/help_64.png
-
-
- true
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 11
-
-
-
- The text below is your own Retroshare certificate. Send it to your friends
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
-
-
-
diff --git a/retroshare-gui/src/gui/connect/ConfCertDialog.cpp b/retroshare-gui/src/gui/connect/ConfCertDialog.cpp
index 3c873fdca..c6c86a0b1 100644
--- a/retroshare-gui/src/gui/connect/ConfCertDialog.cpp
+++ b/retroshare-gui/src/gui/connect/ConfCertDialog.cpp
@@ -270,34 +270,9 @@ void ConfCertDialog::loadInvitePage()
// ui.userCertificateText_2->setFont(font);
// ui.userCertificateText_2->setText(QString::fromUtf8(pgp_key.c_str()));
- std::string invite = rsPeers->GetRetroshareInvite(detail.id,ui._shouldAddSignatures_CB->isChecked()) ; // this needs to be a SSL id
+ std::string invite = rsPeers->GetRetroshareInvite(detail.id,ui._shouldAddSignatures_CB->isChecked()) ; // this needs to be a SSL id
- QString infotext ;
-
- //infotext += tr("
Use this certificate to make new friends. Send it by email, or give it hand to hand.
") ;
- infotext += tr("This certificate contains:") ;
- infotext += "
" ;
- infotext += "- a Profile key";
- infotext += " (" + QString::fromUtf8(detail.name.c_str()) + "@" + detail.gpg_id.toStdString().c_str()+") " ;
- if(ui._shouldAddSignatures_CB->isChecked())
- infotext += tr("with")+" "+QString::number(detail.gpgSigners.size()-1)+" "+tr("external signatures
") ;
- else
- infotext += "" ;
-
- infotext += tr("- a node ID and name") +" (" + detail.id.toStdString().c_str() + ", " + QString::fromUtf8(detail.location.c_str()) +")" ;
- infotext += "
" ;
-
- infotext += "- " ;
- if(detail.isHiddenNode)
- infotext += tr("an onion address and port") +" (" + detail.hiddenNodeAddress.c_str() + ":" + QString::number(detail.hiddenNodePort)+ ")";
- else
- infotext += tr("an IP address and port") +" (" + detail.connectAddr.c_str() + ":" + QString::number(detail.connectPort)+ ")";
- infotext += "
" ;
-
- infotext += QString("
") ;
-
- if(rsPeers->getOwnId() == detail.id)
- infotext += tr("You can use this certificate to make new friends. Send it by email, or give it hand to hand.
") ;
+ QString infotext = getCertificateDescription(detail,ui._shouldAddSignatures_CB->isChecked(),true); // true, because default parameter in GetRetroshareInvite is true
ui.userCertificateText->setToolTip(infotext) ;
@@ -311,6 +286,44 @@ void ConfCertDialog::loadInvitePage()
ui.userCertificateText->setText(QString::fromUtf8(invite.c_str()));
}
+QString ConfCertDialog::getCertificateDescription(const RsPeerDetails& detail,bool signatures_included,bool include_additional_locators)
+{
+ //infotext += tr("Use this certificate to make new friends. Send it by email, or give it hand to hand.
") ;
+ QString infotext = QObject::tr("This certificate contains:") ;
+ infotext += "
" ;
+ infotext += "- a Profile key";
+ infotext += " (" + QString::fromUtf8(detail.name.c_str()) + "@" + detail.gpg_id.toStdString().c_str()+") " ;
+
+ if(signatures_included)
+ infotext += tr("with")+" "+QString::number(detail.gpgSigners.size()-1)+" "+tr("external signatures
") ;
+ else
+ infotext += "" ;
+
+ infotext += tr("- a node ID and name") +" (" + detail.id.toStdString().c_str() + ", " + QString::fromUtf8(detail.location.c_str()) +")" ;
+ infotext += "
" ;
+
+ if(detail.isHiddenNode)
+ infotext += tr("- onion address and port") +" (" + detail.hiddenNodeAddress.c_str() + ":" + QString::number(detail.hiddenNodePort)+ ")
";
+ else if(!include_additional_locators)
+ {
+ if(!detail.localAddr.empty()) infotext += tr("- IP address and port: ") + detail.localAddr.c_str() + ":" + QString::number(detail.localPort)+ "
";
+ if(!detail.extAddr.empty()) infotext += tr("- IP address and port: ") + detail.extAddr.c_str() + ":" + QString::number(detail.extPort)+ "
";
+ }
+ else for(auto it(detail.ipAddressList.begin());it!=detail.ipAddressList.end();++it)
+ {
+ infotext += "- " ;
+ infotext += tr("IP address and port: ") + QString::fromStdString(*it) ;
+ infotext += "
" ;
+ }
+
+ infotext += QString("") ;
+
+ if(rsPeers->getOwnId() == detail.id)
+ infotext += tr("You can use this certificate to make new friends. Send it by email, or give it hand to hand.
") ;
+
+ return infotext;
+}
+
void ConfCertDialog::applyDialog()
{
diff --git a/retroshare-gui/src/gui/connect/ConfCertDialog.h b/retroshare-gui/src/gui/connect/ConfCertDialog.h
index 2188d2ebb..642fcbb56 100644
--- a/retroshare-gui/src/gui/connect/ConfCertDialog.h
+++ b/retroshare-gui/src/gui/connect/ConfCertDialog.h
@@ -27,6 +27,7 @@
#include "ui_ConfCertDialog.h"
#include
+#include
class ConfCertDialog : public QDialog
{
@@ -59,6 +60,7 @@ public:
/* window will destroy itself! */
}
static void loadAll();
+ static QString getCertificateDescription(const RsPeerDetails& det,bool signatures_included,bool extra_locators_included);
signals:
void configChanged();
diff --git a/retroshare-gui/src/gui/connect/ConnectFriendWizard.ui b/retroshare-gui/src/gui/connect/ConnectFriendWizard.ui
index 6a1fd816f..b0422914c 100644
--- a/retroshare-gui/src/gui/connect/ConnectFriendWizard.ui
+++ b/retroshare-gui/src/gui/connect/ConnectFriendWizard.ui
@@ -6,8 +6,8 @@
0
0
- 760
- 538
+ 1157
+ 873
@@ -1618,8 +1618,8 @@ resources.
-
+
diff --git a/retroshare-gui/src/gui/settings/ServerPage.ui b/retroshare-gui/src/gui/settings/ServerPage.ui
index b4315a704..69935ff58 100755
--- a/retroshare-gui/src/gui/settings/ServerPage.ui
+++ b/retroshare-gui/src/gui/settings/ServerPage.ui
@@ -26,7 +26,7 @@
-
- 1
+ 0