From cf653b380faa5d2bf9b80943c82199b4170bc727 Mon Sep 17 00:00:00 2001 From: csoler Date: Sat, 15 Feb 2014 10:55:38 +0000 Subject: [PATCH] ID cleaning. Saving progress git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-IdCleaning@7119 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- retroshare-gui/src/gui/ChatLobbyWidget.cpp | 2 +- retroshare-gui/src/gui/NetworkDialog.cpp | 4 +- .../src/gui/chat/ChatUserNotify.cpp | 2 +- .../src/gui/chat/CreateLobbyDialog.cpp | 11 +- .../src/gui/chat/CreateLobbyDialog.h | 3 +- retroshare-gui/src/gui/common/AvatarWidget.h | 2 +- .../src/gui/common/FriendSelectionWidget.h | 23 ++- .../src/gui/connect/ConfCertDialog.cpp | 139 +++++++++--------- .../src/gui/connect/ConfCertDialog.h | 35 ++++- 9 files changed, 127 insertions(+), 94 deletions(-) diff --git a/retroshare-gui/src/gui/ChatLobbyWidget.cpp b/retroshare-gui/src/gui/ChatLobbyWidget.cpp index 7b5fad30b..f2b491e2d 100644 --- a/retroshare-gui/src/gui/ChatLobbyWidget.cpp +++ b/retroshare-gui/src/gui/ChatLobbyWidget.cpp @@ -548,7 +548,7 @@ void ChatLobbyWidget::createChatLobby() privacyLevel = action->data().toInt(); } - std::list friends; + std::list friends; CreateLobbyDialog(friends, privacyLevel).exec(); } diff --git a/retroshare-gui/src/gui/NetworkDialog.cpp b/retroshare-gui/src/gui/NetworkDialog.cpp index d8dc96265..795af52e4 100644 --- a/retroshare-gui/src/gui/NetworkDialog.cpp +++ b/retroshare-gui/src/gui/NetworkDialog.cpp @@ -321,7 +321,7 @@ void NetworkDialog::denyFriend() void NetworkDialog::makeFriend() { - ConfCertDialog::showIt(getCurrentNeighbour()->text(COLUMN_PEERID).toStdString(), ConfCertDialog::PageTrust); + ConfCertDialog::showIt(RsPgpId(getCurrentNeighbour()->text(COLUMN_PEERID).toStdString()), ConfCertDialog::PageTrust); } /** Shows Peer Information/Auth Dialog */ @@ -331,7 +331,7 @@ void NetworkDialog::peerdetails() if (item == NULL) { return; } - ConfCertDialog::showIt(item->text(COLUMN_PEERID).toStdString(), ConfCertDialog::PageDetails); + ConfCertDialog::showIt(RsPgpId(item->text(COLUMN_PEERID).toStdString()), ConfCertDialog::PageDetails); } void NetworkDialog::copyLink() diff --git a/retroshare-gui/src/gui/chat/ChatUserNotify.cpp b/retroshare-gui/src/gui/chat/ChatUserNotify.cpp index 701eec7c8..7e59ce1e0 100644 --- a/retroshare-gui/src/gui/chat/ChatUserNotify.cpp +++ b/retroshare-gui/src/gui/chat/ChatUserNotify.cpp @@ -101,7 +101,7 @@ unsigned int ChatUserNotify::getNewCount() void ChatUserNotify::iconClicked() { ChatDialog *chatDialog = NULL; - std::list ids; + std::list ids; if (rsMsgs->getPrivateChatQueueIds(true, ids) && ids.size()) { chatDialog = ChatDialog::getChat(ids.front(), RS_CHAT_OPEN | RS_CHAT_FOCUS); } diff --git a/retroshare-gui/src/gui/chat/CreateLobbyDialog.cpp b/retroshare-gui/src/gui/chat/CreateLobbyDialog.cpp index ba7b1a464..b43938580 100644 --- a/retroshare-gui/src/gui/chat/CreateLobbyDialog.cpp +++ b/retroshare-gui/src/gui/chat/CreateLobbyDialog.cpp @@ -27,11 +27,12 @@ #include #include +#include #include "gui/common/PeerDefs.h" #include "ChatDialog.h" -CreateLobbyDialog::CreateLobbyDialog(const std::list& peer_list, int privacyLevel, QWidget *parent) : +CreateLobbyDialog::CreateLobbyDialog(const std::list& peer_list, int privacyLevel, QWidget *parent) : QDialog(parent, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint) { ui = new Ui::CreateLobbyDialog() ; @@ -60,7 +61,7 @@ CreateLobbyDialog::CreateLobbyDialog(const std::list& peer_list, in ui->keyShareList->setModus(FriendSelectionWidget::MODUS_CHECK); ui->keyShareList->setShowType(FriendSelectionWidget::SHOW_GROUP | FriendSelectionWidget::SHOW_SSL); ui->keyShareList->start(); - ui->keyShareList->setSelectedSslIds(peer_list, false); + ui->keyShareList->setSelectedIds(peer_list, false); if (privacyLevel) { ui->security_CB->setCurrentIndex((privacyLevel == RS_CHAT_LOBBY_PRIVACY_LEVEL_PUBLIC) ? 0 : 1); @@ -98,8 +99,8 @@ void CreateLobbyDialog::checkTextFields() void CreateLobbyDialog::createLobby() { - std::list shareList; - ui->keyShareList->selectedSslIds(shareList, false); + std::list shareList; + ui->keyShareList->selectedIds(shareList, false); // if (shareList.empty()) { // QMessageBox::warning(this, "RetroShare", tr("Please select at least one friend"), QMessageBox::Ok, QMessageBox::Ok); @@ -123,7 +124,7 @@ void CreateLobbyDialog::createLobby() rsMsgs->setNickNameForChatLobby(id,ui->nickName_LE->text().toUtf8().constData()) ; // open chat window !! - std::string vpid ; + RsPeerId vpid ; if(rsMsgs->getVirtualPeerId(id,vpid)) ChatDialog::chatFriend(vpid) ; diff --git a/retroshare-gui/src/gui/chat/CreateLobbyDialog.h b/retroshare-gui/src/gui/chat/CreateLobbyDialog.h index 87d89762a..49a0b7337 100644 --- a/retroshare-gui/src/gui/chat/CreateLobbyDialog.h +++ b/retroshare-gui/src/gui/chat/CreateLobbyDialog.h @@ -4,6 +4,7 @@ #include #include "ui_CreateLobbyDialog.h" +#include class CreateLobbyDialog : public QDialog { Q_OBJECT @@ -12,7 +13,7 @@ public: /* *@param chanId The channel id to send request for */ - CreateLobbyDialog(const std::list& friends_list, int privacyLevel = 0, QWidget *parent = 0); + CreateLobbyDialog(const std::list& friends_list, int privacyLevel = 0, QWidget *parent = 0); ~CreateLobbyDialog(); protected: diff --git a/retroshare-gui/src/gui/common/AvatarWidget.h b/retroshare-gui/src/gui/common/AvatarWidget.h index e28cd5e94..8837399bf 100644 --- a/retroshare-gui/src/gui/common/AvatarWidget.h +++ b/retroshare-gui/src/gui/common/AvatarWidget.h @@ -47,7 +47,7 @@ public: QString frameState(); void setFrameType(FrameType type); - void setId(const std::string& id, bool isGpg); + void setId(const std::string &id, bool isGpg); void setOwnId(); void setDefaultAvatar(const QString &avatar); diff --git a/retroshare-gui/src/gui/common/FriendSelectionWidget.h b/retroshare-gui/src/gui/common/FriendSelectionWidget.h index e80b62dff..b4ff0d4e6 100644 --- a/retroshare-gui/src/gui/common/FriendSelectionWidget.h +++ b/retroshare-gui/src/gui/common/FriendSelectionWidget.h @@ -76,14 +76,23 @@ public: void start(); int selectedItemCount(); - std::string selectedId(IdType &idType); - void selectedSslIds(std::list &sslIds, bool onlyDirectSelected) { selectedIds(IDTYPE_SSL, sslIds, onlyDirectSelected); } - void selectedGpgIds(std::list &gpgIds, bool onlyDirectSelected) { selectedIds(IDTYPE_GPG, gpgIds, onlyDirectSelected); } - void selectedGroupIds(std::list &groupIds) { selectedIds(IDTYPE_GROUP, groupIds, true); } + std::string selectedId(IdType &idType); - void setSelectedSslIds(const std::list &sslIds, bool add) { setSelectedIds(IDTYPE_SSL, sslIds, add); } - void setSelectedGpgIds(const std::list &gpgIds, bool add) { setSelectedIds(IDTYPE_GPG, gpgIds, add); } - void setSelectedGroupIds(const std::list &groupIds, bool add) { setSelectedIds(IDTYPE_GROUP, groupIds, add); } + template void selectedIds(std::list& ids, bool onlyDirectSelected) + { + std::list tmpids ; + selectedIds(TYPE, tmpids, onlyDirectSelected); + ids.clear() ; + for(std::list::const_iterator it(tmpids.begin());it!=tmpids.end();++it) + ids.push_back(ID_CLASS(*it)) ; + } + template void setSelectedIds(const std::list& ids, bool add) + { + std::list tmpids ; + for(typename std::list::const_iterator it(ids.begin());it!=ids.end();++it) + tmpids.push_back((*it).toStdString()) ; + setSelectedIds(TYPE, tmpids, add); + } void itemsFromId(IdType idType, const std::string &id, QList &items); void items(QList &items, IdType = IDTYPE_NONE); diff --git a/retroshare-gui/src/gui/connect/ConfCertDialog.cpp b/retroshare-gui/src/gui/connect/ConfCertDialog.cpp index 64f4d072a..f57e097b1 100644 --- a/retroshare-gui/src/gui/connect/ConfCertDialog.cpp +++ b/retroshare-gui/src/gui/connect/ConfCertDialog.cpp @@ -44,24 +44,42 @@ #include "util/DateTime.h" #include "util/misc.h" -static QMap instances; +static QMap instances_ssl; +static QMap instances_pgp; -ConfCertDialog *ConfCertDialog::instance(const std::string& peer_id) +ConfCertDialog *ConfCertDialog::instance(const RsPeerId& peer_id) { - ConfCertDialog *d = instances[peer_id]; + + ConfCertDialog *d = instances_ssl[peer_id]; if (d) { return d; } - d = new ConfCertDialog(peer_id); - instances[peer_id] = d; + RsPeerDetails details ; + if(!rsPeers->getPeerDetails(peer_id,details)) + return NULL ; + + d = new ConfCertDialog(peer_id,details.gpg_id); + instances_ssl[peer_id] = d; return d; } +ConfCertDialog *ConfCertDialog::instance(const RsPgpId& pgp_id) +{ + ConfCertDialog *d = instances_pgp[pgp_id]; + if (d) { + return d; + } + + d = new ConfCertDialog(RsPeerId(),pgp_id); + instances_pgp[pgp_id] = d; + + return d; +} /** Default constructor */ -ConfCertDialog::ConfCertDialog(const std::string& id, QWidget *parent, Qt::WindowFlags flags) - : QDialog(parent, flags), mId(id) +ConfCertDialog::ConfCertDialog(const RsPeerId& id, const RsPgpId &pgp_id, QWidget *parent, Qt::WindowFlags flags) + : QDialog(parent, flags), peerId(id), pgpId(pgp_id) { /* Invoke Qt Designer generated QObject setup routine */ ui.setupUi(this); @@ -97,64 +115,46 @@ ConfCertDialog::ConfCertDialog(const std::string& id, QWidget *parent, Qt::Windo ConfCertDialog::~ConfCertDialog() { - QMap::iterator it = instances.find(mId); - if (it != instances.end()) { - instances.erase(it); + if(peerId.isNull()) + { + QMap::iterator it = instances_ssl.find(peerId); + if (it != instances_ssl.end()) + instances_ssl.erase(it); + } + else + { + QMap::iterator it = instances_pgp.find(pgpId); + if (it != instances_pgp.end()) + instances_pgp.erase(it); } } -void ConfCertDialog::showIt(const std::string& peer_id, enumPage page) -{ - ConfCertDialog *confdialog = instance(peer_id); - - switch (page) { - case PageDetails: - confdialog->ui.stabWidget->setCurrentIndex(0); - break; - case PageTrust: - confdialog->ui.stabWidget->setCurrentIndex(1); - break; - case PageCertificate: - confdialog->ui.stabWidget->setCurrentIndex(2); - break; - } - - confdialog->load(); - confdialog->show(); - confdialog->raise(); - confdialog->activateWindow(); - - /* window will destroy itself! */ -} void ConfCertDialog::setServiceFlags() { - RsPeerDetails detail; - if (!rsPeers->getPeerDetails(mId, detail)) - return ; + ServicePermissionFlags flags(0) ; - ServicePermissionFlags flags(0) ; + if(ui._anonymous_routing_CB->isChecked()) flags = flags | RS_SERVICE_PERM_TURTLE ; + if( ui._discovery_CB->isChecked()) flags = flags | RS_SERVICE_PERM_DISCOVERY ; + if( ui._forums_channels_CB->isChecked()) flags = flags | RS_SERVICE_PERM_DISTRIB ; + if( ui._direct_transfer_CB->isChecked()) flags = flags | RS_SERVICE_PERM_DIRECT_DL ; - if(ui._anonymous_routing_CB->isChecked()) flags = flags | RS_SERVICE_PERM_TURTLE ; - if( ui._discovery_CB->isChecked()) flags = flags | RS_SERVICE_PERM_DISCOVERY ; - if( ui._forums_channels_CB->isChecked()) flags = flags | RS_SERVICE_PERM_DISTRIB ; - if( ui._direct_transfer_CB->isChecked()) flags = flags | RS_SERVICE_PERM_DIRECT_DL ; - - rsPeers->setServicePermissionFlags(detail.gpg_id,flags) ; + rsPeers->setServicePermissionFlags(pgpId,flags) ; } void ConfCertDialog::loadAll() { - QMap::iterator it; - for (it = instances.begin(); it != instances.end(); it++) { - it.value()->load(); - } + for(QMap::iterator it = instances_ssl.begin(); it != instances_ssl.end(); it++) it.value()->load(); + for(QMap::iterator it = instances_pgp.begin(); it != instances_pgp.end(); it++) it.value()->load(); } void ConfCertDialog::load() { RsPeerDetails detail; - if (!rsPeers->getPeerDetails(mId, detail)) + + bool ok = false ; + + if(!(rsPeers->getPeerDetails(peerId, detail) || rsPeers->getGPGDetails(pgpId, detail))) { QMessageBox::information(this, tr("RetroShare"), @@ -163,7 +163,7 @@ void ConfCertDialog::load() return; } - if(detail.isOnlyGPGdetail && !rsPeers->isKeySupported(mId)) + if(detail.isOnlyGPGdetail && !rsPeers->isKeySupported(pgpId)) { ui.make_friend_button->setEnabled(false) ; ui.make_friend_button->setToolTip(tr("The supplied key algorithm is not supported by RetroShare\n(Only RSA keys are supported at the moment)")) ; @@ -180,17 +180,17 @@ void ConfCertDialog::load() ui._direct_transfer_CB->setChecked( detail.service_perm_flags & RS_SERVICE_PERM_DIRECT_DL ) ; ui.name->setText(QString::fromUtf8(detail.name.c_str())); - ui.peerid->setText(QString::fromStdString(detail.id)); + ui.peerid->setText(QString::fromStdString(detail.id.toStdString())); RetroShareLink link; - link.createPerson(detail.id); + link.createPerson(detail.gpg_id); ui.rsid->setText(link.toHtml()); - ui.pgpfingerprint->setText(misc::fingerPrintStyleSplit(QString::fromStdString(detail.fpr))); + ui.pgpfingerprint->setText(misc::fingerPrintStyleSplit(QString::fromStdString(detail.fpr.toStdString()))); ui.rsid->setToolTip(link.title()); if (!detail.isOnlyGPGdetail) { - ui.avatar->setId(mId, false); + ui.avatar->setId(peerId.toStdString(), false); ui.loc->setText(QString::fromUtf8(detail.location.c_str())); // Dont Show a timestamp in RS calculate the day @@ -259,7 +259,7 @@ void ConfCertDialog::load() ui.pgpfingerprint->show(); ui.pgpfingerprint_label->show(); } else { - ui.avatar->setId(mId, true); + ui.avatar->setId(pgpId.toStdString(), true); ui.rsid->show(); ui.peerid->hide(); @@ -387,7 +387,7 @@ void ConfCertDialog::load() } QString text; - for(std::list::const_iterator it(detail.gpgSigners.begin());it!=detail.gpgSigners.end();++it) { + for(std::list::const_iterator it(detail.gpgSigners.begin());it!=detail.gpgSigners.end();++it) { link.createPerson(*it); if (link.valid()) { text += link.toHtml() + "
"; @@ -401,7 +401,7 @@ void ConfCertDialog::load() void ConfCertDialog::loadInvitePage() { RsPeerDetails detail; - if (!rsPeers->getPeerDetails(mId, detail)) + if (!rsPeers->getPeerDetails(peerId, detail)) { QMessageBox::information(this, tr("RetroShare"), @@ -427,9 +427,9 @@ void ConfCertDialog::applyDialog() { std::cerr << "ConfCertDialog::applyDialog() called" << std::endl ; RsPeerDetails detail; - if (!rsPeers->getPeerDetails(mId, detail)) + if (!rsPeers->getPeerDetails(peerId, detail)) { - if (!rsPeers->getGPGDetails(mId, detail)) { + if (!rsPeers->getGPGDetails(pgpId, detail)) { QMessageBox::information(this, tr("RetroShare"), tr("Error : cannot get peer details.")); @@ -441,11 +441,11 @@ void ConfCertDialog::applyDialog() //check the GPG trustlvl if (ui.radioButton_trust_fully->isChecked() && detail.trustLvl != RS_TRUST_LVL_FULL) { //trust has changed to fully - rsPeers->trustGPGCertificate(detail.id, RS_TRUST_LVL_FULL); + rsPeers->trustGPGCertificate(pgpId, RS_TRUST_LVL_FULL); } else if (ui.radioButton_trust_marginnaly->isChecked() && detail.trustLvl != RS_TRUST_LVL_MARGINAL) { - rsPeers->trustGPGCertificate(detail.id, RS_TRUST_LVL_MARGINAL); + rsPeers->trustGPGCertificate(pgpId, RS_TRUST_LVL_MARGINAL); } else if (ui.radioButton_trust_never->isChecked() && detail.trustLvl != RS_TRUST_LVL_NEVER) { - rsPeers->trustGPGCertificate(detail.id, RS_TRUST_LVL_NEVER); + rsPeers->trustGPGCertificate(pgpId, RS_TRUST_LVL_NEVER); } if (!detail.isOnlyGPGdetail) { @@ -466,13 +466,13 @@ void ConfCertDialog::applyDialog() /* now we can action the changes */ if (localChanged) - rsPeers->setLocalAddress(mId, ui.localAddress->text().toStdString(), ui.localPort->value()); + rsPeers->setLocalAddress(peerId, ui.localAddress->text().toStdString(), ui.localPort->value()); if (extChanged) - rsPeers->setExtAddress(mId,ui.extAddress->text().toStdString(), ui.extPort->value()); + rsPeers->setExtAddress(peerId,ui.extAddress->text().toStdString(), ui.extPort->value()); if (dnsChanged) - rsPeers->setDynDNS(mId, ui.dynDNS->text().toStdString()); + rsPeers->setDynDNS(peerId, ui.dynDNS->text().toStdString()); if(localChanged || extChanged || dnsChanged) emit configChanged(); @@ -486,12 +486,11 @@ void ConfCertDialog::applyDialog() void ConfCertDialog::makeFriend() { - std::string gpg_id = rsPeers->getGPGId(mId); if (ui.signGPGKeyCheckBox->isChecked()) { - rsPeers->signGPGCertificate(gpg_id); + rsPeers->signGPGCertificate(pgpId); } - rsPeers->addFriend(mId, gpg_id); + rsPeers->addFriend(peerId, pgpId); setServiceFlags() ; loadAll(); @@ -500,8 +499,7 @@ void ConfCertDialog::makeFriend() void ConfCertDialog::denyFriend() { - std::string gpg_id = rsPeers->getGPGId(mId); - rsPeers->removeFriend(gpg_id); + rsPeers->removeFriend(pgpId); loadAll(); emit configChanged(); @@ -509,8 +507,7 @@ void ConfCertDialog::denyFriend() void ConfCertDialog::signGPGKey() { - std::string gpg_id = rsPeers->getGPGId(mId); - if (!rsPeers->signGPGCertificate(gpg_id)) { + if (!rsPeers->signGPGCertificate(pgpId)) { QMessageBox::warning ( NULL, tr("Signature Failure"), tr("Maybe password is wrong"), diff --git a/retroshare-gui/src/gui/connect/ConfCertDialog.h b/retroshare-gui/src/gui/connect/ConfCertDialog.h index 06fac139a..90a3d7260 100644 --- a/retroshare-gui/src/gui/connect/ConfCertDialog.h +++ b/retroshare-gui/src/gui/connect/ConfCertDialog.h @@ -26,6 +26,7 @@ #include #include "ui_ConfCertDialog.h" +#include class ConfCertDialog : public QDialog { @@ -34,7 +35,29 @@ class ConfCertDialog : public QDialog public: enum enumPage { PageDetails, PageTrust, PageCertificate }; - static void showIt(const std::string& id, enumPage page); + template static void showIt(const ID_CLASS& id, enumPage page) + { + ConfCertDialog *confdialog = instance(id); + + switch (page) { + case PageDetails: + confdialog->ui.stabWidget->setCurrentIndex(0); + break; + case PageTrust: + confdialog->ui.stabWidget->setCurrentIndex(1); + break; + case PageCertificate: + confdialog->ui.stabWidget->setCurrentIndex(2); + break; + } + + confdialog->load(); + confdialog->show(); + confdialog->raise(); + confdialog->activateWindow(); + + /* window will destroy itself! */ + } static void loadAll(); signals: @@ -42,11 +65,12 @@ signals: private: /** Default constructor */ - ConfCertDialog(const std::string& id, QWidget *parent = 0, Qt::WindowFlags flags = 0); + ConfCertDialog(const RsPeerId &id,const RsPgpId& pgp_id, QWidget *parent = 0, Qt::WindowFlags flags = 0); /** Default destructor */ ~ConfCertDialog(); - static ConfCertDialog *instance(const std::string& peer_id); + static ConfCertDialog *instance(const RsPeerId &peer_id); + static ConfCertDialog *instance(const RsPgpId &pgp_id); void load(); @@ -63,8 +87,9 @@ private slots: void showHelpDialog(const QString &topic); private: - std::string mId; - + RsPeerId peerId; + RsPgpId pgpId; + /** Qt Designer generated object */ Ui::ConfCertDialog ui; };