From 3b314e3a69ba3f009ccbe83fc3323a96925eb13d Mon Sep 17 00:00:00 2001 From: thunder2 Date: Thu, 9 Feb 2012 19:18:15 +0000 Subject: [PATCH] Added multi friend recommendation dialog. You can start it from the tools menu in FriendsDialog. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4913 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- retroshare-gui/src/RetroShare.pro | 3 + .../src/gui/FriendRecommendDialog.cpp | 90 ++++++++++++++++++ .../src/gui/FriendRecommendDialog.h | 49 ++++++++++ .../src/gui/FriendRecommendDialog.ui | 89 +++++++++++++++++ retroshare-gui/src/gui/FriendsDialog.cpp | 8 ++ retroshare-gui/src/gui/FriendsDialog.h | 1 + retroshare-gui/src/gui/FriendsDialog.ui | 5 + .../src/gui/msgs/MessageComposer.cpp | 53 ++++++++--- retroshare-gui/src/gui/msgs/MessageComposer.h | 5 +- retroshare-gui/src/lang/retroshare_de.qm | Bin 413724 -> 414551 bytes retroshare-gui/src/lang/retroshare_de.ts | 58 +++++++++-- 11 files changed, 336 insertions(+), 25 deletions(-) create mode 100644 retroshare-gui/src/gui/FriendRecommendDialog.cpp create mode 100644 retroshare-gui/src/gui/FriendRecommendDialog.h create mode 100644 retroshare-gui/src/gui/FriendRecommendDialog.ui diff --git a/retroshare-gui/src/RetroShare.pro b/retroshare-gui/src/RetroShare.pro index 0099eb072..a3d265950 100644 --- a/retroshare-gui/src/RetroShare.pro +++ b/retroshare-gui/src/RetroShare.pro @@ -224,6 +224,7 @@ HEADERS += rshare.h \ gui/TrustView.h \ gui/MessengerWindow.h \ gui/FriendsDialog.h \ + gui/FriendRecommendDialog.h \ gui/RemoteDirModel.h \ gui/RetroShareLink.h \ gui/SearchTreeWidget.h \ @@ -405,6 +406,7 @@ FORMS += gui/StartDialog.ui \ gui/HelpDialog.ui \ gui/InfoDialog.ui \ gui/DetailsDialog.ui \ + gui/FriendRecommendDialog.ui \ gui/bwgraph/bwgraph.ui \ gui/profile/ProfileWidget.ui \ gui/profile/StatusMessage.ui \ @@ -498,6 +500,7 @@ SOURCES += main.cpp \ gui/TrustView.cpp \ gui/MessengerWindow.cpp \ gui/FriendsDialog.cpp \ + gui/FriendRecommendDialog.cpp \ gui/RemoteDirModel.cpp \ gui/RsAutoUpdatePage.cpp \ gui/RetroShareLink.cpp \ diff --git a/retroshare-gui/src/gui/FriendRecommendDialog.cpp b/retroshare-gui/src/gui/FriendRecommendDialog.cpp new file mode 100644 index 000000000..c3ea71a90 --- /dev/null +++ b/retroshare-gui/src/gui/FriendRecommendDialog.cpp @@ -0,0 +1,90 @@ +/**************************************************************** + * 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 + +#include "FriendRecommendDialog.h" +#include "ui_FriendRecommendDialog.h" +#include "msgs/MessageComposer.h" +#include "settings/rsharesettings.h" + +void FriendRecommendDialog::showYourself(QWidget *parent) +{ + FriendRecommendDialog *dlg = new FriendRecommendDialog(parent); + dlg->show(); +} + +FriendRecommendDialog::FriendRecommendDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::FriendRecommendDialog) +{ + ui->setupUi(this); + + setAttribute(Qt::WA_DeleteOnClose, true); + + Settings->loadWidgetInformation(this); + + connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(sendMsg())); + connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(reject())); + + ui->recommendList->setHeaderText(tr("Recommend friends")); + ui->recommendList->setModus(FriendSelectionWidget::MODUS_CHECK); + ui->recommendList->start(); + + ui->toList->setHeaderText(tr("To")); + ui->toList->setModus(FriendSelectionWidget::MODUS_CHECK); + ui->toList->start(); + + ui->messageEdit->setText(MessageComposer::recommendMessage()); +} + +FriendRecommendDialog::~FriendRecommendDialog() +{ + Settings->saveWidgetInformation(this); + + delete ui; +} + +void FriendRecommendDialog::sendMsg() +{ + std::list recommendIds; + ui->recommendList->selectedSslIds(recommendIds, false); + + if (recommendIds.empty()) { + QMessageBox::warning(this, "RetroShare", tr("Please select at least one friend for recommendation."), QMessageBox::Ok, QMessageBox::Ok); + return; + } + + std::list toIds; + ui->toList->selectedSslIds(toIds, false); + + if (toIds.empty()) { + QMessageBox::warning(this, "RetroShare", tr("Please select at least one friend as recipient."), QMessageBox::Ok, QMessageBox::Ok); + return; + } + + std::list::iterator toId; + for (toId = toIds.begin(); toId != toIds.end(); toId++) { + MessageComposer::recommendFriend(recommendIds, *toId, ui->messageEdit->toHtml(), true); + } + + done(Accepted); +} diff --git a/retroshare-gui/src/gui/FriendRecommendDialog.h b/retroshare-gui/src/gui/FriendRecommendDialog.h new file mode 100644 index 000000000..37061535f --- /dev/null +++ b/retroshare-gui/src/gui/FriendRecommendDialog.h @@ -0,0 +1,49 @@ +/**************************************************************** + * 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 FRIENDRECOMMENDDIALOG_H +#define FRIENDRECOMMENDDIALOG_H + +#include + +namespace Ui { +class FriendRecommendDialog; +} + +class FriendRecommendDialog : public QDialog +{ + Q_OBJECT + +public: + ~FriendRecommendDialog(); + + static void showYourself(QWidget *parent = 0); + +private slots: + void sendMsg(); + +private: + FriendRecommendDialog(QWidget *parent = 0); + + Ui::FriendRecommendDialog *ui; +}; + +#endif // FRIENDRECOMMENDDIALOG_H diff --git a/retroshare-gui/src/gui/FriendRecommendDialog.ui b/retroshare-gui/src/gui/FriendRecommendDialog.ui new file mode 100644 index 000000000..e97789c2d --- /dev/null +++ b/retroshare-gui/src/gui/FriendRecommendDialog.ui @@ -0,0 +1,89 @@ + + + FriendRecommendDialog + + + + 0 + 0 + 493 + 362 + + + + Friend Recommendations + + + + :/images/rstray3.png:/images/rstray3.png + + + true + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + + Message: + + + + + + + + 0 + 0 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + FriendSelectionWidget + QWidget +
gui/common/FriendSelectionWidget.h
+ 1 +
+
+ + + + +
diff --git a/retroshare-gui/src/gui/FriendsDialog.cpp b/retroshare-gui/src/gui/FriendsDialog.cpp index 21f70f4f2..9571ef387 100644 --- a/retroshare-gui/src/gui/FriendsDialog.cpp +++ b/retroshare-gui/src/gui/FriendsDialog.cpp @@ -56,6 +56,7 @@ #include "settings/rsharesettings.h" #include "util/misc.h" #include "chat/CreateLobbyDialog.h" +#include "FriendRecommendDialog.h" #include "FriendsDialog.h" @@ -88,6 +89,7 @@ FriendsDialog::FriendsDialog(QWidget *parent) connect( ui.addfileButton, SIGNAL(clicked() ), this , SLOT(addExtraFile())); connect( ui.actionAdd_Friend, SIGNAL(triggered()), this, SLOT(addFriend())); connect( ui.actionCreate_new_Chat_lobby, SIGNAL(triggered()), this, SLOT(createChatLobby())); + connect( ui.actionFriendRecommendations, SIGNAL(triggered()), this, SLOT(recommendFriends())); ui.avatar->setFrameType(AvatarWidget::STATUS_FRAME); ui.avatar->setOwnId(); @@ -159,6 +161,7 @@ FriendsDialog::FriendsDialog(QWidget *parent) menu->addAction(ui.actionAdd_Friend); menu->addAction(ui.actionAdd_Group); menu->addAction(ui.actionCreate_new_Chat_lobby); + menu->addAction(ui.actionFriendRecommendations); menu->addSeparator(); menu->addAction(ui.actionCreate_New_Forum); @@ -830,6 +833,11 @@ void FriendsDialog::createChatLobby() CreateLobbyDialog(friends).exec(); } +void FriendsDialog::recommendFriends() +{ + FriendRecommendDialog::showYourself(); +} + /*static*/ ChatTabWidget *FriendsDialog::getTabWidget() { return instance ? instance->ui.tabWidget : NULL; diff --git a/retroshare-gui/src/gui/FriendsDialog.h b/retroshare-gui/src/gui/FriendsDialog.h index e2a0941de..e07792cfb 100644 --- a/retroshare-gui/src/gui/FriendsDialog.h +++ b/retroshare-gui/src/gui/FriendsDialog.h @@ -113,6 +113,7 @@ private slots: void newsFeedChanged(int count); void createChatLobby(); + void recommendFriends(); signals: void notifyGroupChat(const QString&,const QString&) ; diff --git a/retroshare-gui/src/gui/FriendsDialog.ui b/retroshare-gui/src/gui/FriendsDialog.ui index 5a094c9c0..8983a6a50 100644 --- a/retroshare-gui/src/gui/FriendsDialog.ui +++ b/retroshare-gui/src/gui/FriendsDialog.ui @@ -1442,6 +1442,11 @@ background: white;} Create new Chat lobby + + + Friend Recommendations + + diff --git a/retroshare-gui/src/gui/msgs/MessageComposer.cpp b/retroshare-gui/src/gui/msgs/MessageComposer.cpp index 02eadc3c8..a6df01697 100644 --- a/retroshare-gui/src/gui/msgs/MessageComposer.cpp +++ b/retroshare-gui/src/gui/msgs/MessageComposer.cpp @@ -346,7 +346,7 @@ void MessageComposer::processSettings(bool bLoad) Settings->endGroup(); } -/*static*/ void MessageComposer::msgFriend(std::string id, bool group) +/*static*/ void MessageComposer::msgFriend(const std::string &id, bool group) { // std::cerr << "MessageComposer::msgfriend()" << std::endl; @@ -382,13 +382,16 @@ void MessageComposer::processSettings(bool bLoad) /* window will destroy itself! */ } -static QString buildRecommendHtml(std::list &sslIds) +static QString buildRecommendHtml(const std::list &sslIds, const std::string &excludeId = "") { QString text; /* process ssl ids */ - std::list ::iterator sslIt; + std::list ::const_iterator sslIt; for (sslIt = sslIds.begin(); sslIt != sslIds.end(); sslIt++) { + if (*sslIt == excludeId) { + continue; + } RetroShareLink link; if (link.createCertificate(*sslIt)) { text += link.toHtml() + "
"; @@ -398,7 +401,12 @@ static QString buildRecommendHtml(std::list &sslIds) return text; } -void MessageComposer::recommendFriend(std::list &sslIds) +QString MessageComposer::recommendMessage() +{ + return tr("I recommend a good friend of me, you can trust him too when you trust me.
Copy friend link and paste to Friends list"); +} + +void MessageComposer::recommendFriend(const std::list &sslIds, const std::string &to, const QString &msg, bool autoSend) { // std::cerr << "MessageComposer::recommendFriend()" << std::endl; @@ -406,21 +414,40 @@ void MessageComposer::recommendFriend(std::list &sslIds) return; } + QString recommendHtml = buildRecommendHtml(sslIds, to); + if (recommendHtml.isEmpty()) { + return; + } + /* create a message */ MessageComposer *pMsgDialog = MessageComposer::newMsg(); pMsgDialog->insertTitleText(tr("Friend Recommendation(s)")); - QString sMsgText = tr("I recommend a good friend of me, you can trust him too when you trust me.
Copy friend link and paste to Friends list"); + if (!to.empty()) { + pMsgDialog->addRecipient(TO, to, false); + } + + QString sMsgText = msg.isEmpty() ? recommendMessage() : msg; sMsgText += "

"; - sMsgText += buildRecommendHtml(sslIds); + sMsgText += recommendHtml; pMsgDialog->insertMsgText(sMsgText); - std::list ::iterator peerIt; + std::list ::const_iterator peerIt; for (peerIt = sslIds.begin(); peerIt != sslIds.end(); peerIt++) { + if (*peerIt == to) { + continue; + } pMsgDialog->addRecipient(CC, *peerIt, false); } + if (autoSend) { + if (pMsgDialog->sendMessage_internal(false)) { + pMsgDialog->close(); + return; + } + } + pMsgDialog->show(); /* window will destroy itself! */ @@ -917,7 +944,7 @@ MessageComposer *MessageComposer::forwardMsg(const std::string &msgId) return msgComposer; } -void MessageComposer::insertTitleText(const QString &title, enumMessageType type) +void MessageComposer::insertTitleText(const QString &title, enumMessageType type) { QString titleText; @@ -944,7 +971,7 @@ void MessageComposer::insertTitleText(const QString &title, enumMessageType typ ui.titleEdit->setText(misc::removeNewLine(titleText)); } -void MessageComposer::insertPastedText(QString msg) +void MessageComposer::insertPastedText(QString msg) { msg.replace("\n", "\n
> "); @@ -959,7 +986,7 @@ void MessageComposer::insertPastedText(QString msg) ui.msgText->document()->setModified(true); } -void MessageComposer::insertForwardPastedText(QString msg) +void MessageComposer::insertForwardPastedText(QString msg) { msg.replace("\n", "\n
> "); @@ -974,7 +1001,7 @@ void MessageComposer::insertForwardPastedText(QString msg) ui.msgText->document()->setModified(true); } -void MessageComposer::insertMsgText(const QString &msg) +void MessageComposer::insertMsgText(const QString &msg) { ui.msgText->setText(msg); @@ -987,14 +1014,14 @@ void MessageComposer::insertMsgText(const QString &msg) ui.msgText->document()->setModified(true); } -void MessageComposer::insertHtmlText(const QString &msg) +void MessageComposer::insertHtmlText(const QString &msg) { ui.msgText->setHtml(" " + msg + ""); ui.msgText->document()->setModified(true); } -void MessageComposer::sendMessage() +void MessageComposer::sendMessage() { if (sendMessage_internal(false)) { close(); diff --git a/retroshare-gui/src/gui/msgs/MessageComposer.h b/retroshare-gui/src/gui/msgs/MessageComposer.h index baacbdd5d..4c17afb71 100644 --- a/retroshare-gui/src/gui/msgs/MessageComposer.h +++ b/retroshare-gui/src/gui/msgs/MessageComposer.h @@ -47,8 +47,9 @@ public: MessageComposer(QWidget *parent = 0, Qt::WFlags flags = 0); ~MessageComposer(); - static void msgFriend(std::string id, bool group); - static void recommendFriend(std::list &sslIds); + static void msgFriend(const std::string &id, bool group); + static QString recommendMessage(); + static void recommendFriend(const std::list &sslIds, const std::string &to = "", const QString &msg = "", bool autoSend = false); static MessageComposer *newMsg(const std::string &msgId = ""); static MessageComposer *replyMsg(const std::string &msgId, bool all); diff --git a/retroshare-gui/src/lang/retroshare_de.qm b/retroshare-gui/src/lang/retroshare_de.qm index dfd38ed195eeff36837fc1838d5c8bc6a2cc2798..6512aa7aabe691604d961829500895432df804ec 100644 GIT binary patch delta 17194 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%0AX^{h^olsO19)h>t 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 Be_;Rs diff --git a/retroshare-gui/src/lang/retroshare_de.ts b/retroshare-gui/src/lang/retroshare_de.ts index 1cdd91bc6..82b8e49b2 100644 --- a/retroshare-gui/src/lang/retroshare_de.ts +++ b/retroshare-gui/src/lang/retroshare_de.ts @@ -4959,6 +4959,39 @@ p, li { white-space: pre-wrap; } Spalten + + FriendRecommendDialog + + + Friend Recommendations + Freundempfehlungen + + + + Message: + Nachricht: + + + + Recommend friends + Freunde empfehlen + + + + To + An + + + + Please select at least one friend for recommendation. + Bitte mindestens einen Freund als Empfehlung wählen. + + + + Please select at least one friend as recipient. + Bitte mindestens einen Empfänger wählen. + + FriendSelectionWidget @@ -5147,6 +5180,11 @@ p, li { white-space: pre-wrap; } Create new Chat lobby Neue Chat Lobby erstellen + + + Friend Recommendations + Freundempfehlungen + Hide Offline Friends Verstecke offline Freunde @@ -5168,7 +5206,7 @@ p, li { white-space: pre-wrap; } Status ausblenden - + Add a new Group Neue Gruppe hinzufügen @@ -5196,7 +5234,7 @@ p, li { white-space: pre-wrap; } Löscht den gespeicherten und angezeigten Chat Verlauf - + Chat lobbies Chat Lobbies @@ -5216,7 +5254,7 @@ p, li { white-space: pre-wrap; } Willkommen bei RetroShare's Gruppenchat. - + me ich @@ -7237,7 +7275,7 @@ Bitte gib etwas Speicher frei und drücke OK. MessageComposer - + Compose Verfassen @@ -7256,7 +7294,7 @@ Bitte gib etwas Speicher frei und drücke OK. Zurücksetzen - + Send To: Senden an: @@ -7387,7 +7425,7 @@ Bitte gib etwas Speicher frei und drücke OK. Setzt Schriftart auf Codestil - + To An @@ -7472,7 +7510,7 @@ Bitte gib etwas Speicher frei und drücke OK. Blockquote hinzufügen - + &Left &Links @@ -7492,7 +7530,7 @@ Bitte gib etwas Speicher frei und drücke OK. &Blocksatz - + Save Message Nachricht speichern @@ -7737,12 +7775,12 @@ Möchtest du die Nachricht speichern ? Datei nicht gefunden oder Dateiname nicht akzeptiert. - + Friend Recommendation(s) Freundempfehlung(en) - + I recommend a good friend of me, you can trust him too when you trust me. <br> Copy friend link and paste to Friends list Ich empfehle Dir einen guten Freund von mir. Du kannst ihm vertrauen, wenn Du mir vertraust. <br> Kopiere den Link und füge ihn in der Freundesliste ein