Added new friend request toaster from defnax.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5120 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2012-04-25 19:19:16 +00:00
parent 586e8bc042
commit 9501a4fe2c
14 changed files with 419 additions and 52 deletions

View File

@ -1181,6 +1181,7 @@ bool AuthSSLimpl::FailedCertificate(X509 *x509, const struct sockaddr_in &add
if (incoming)
{
notifyType = RS_FEED_ITEM_SEC_CONNECT_ATTEMPT;
getPqiNotify()->AddPopupMessage(RS_POPUP_CONNECT_ATTEMPT, gpgid, sslcn, peerId);
}
else
{
@ -1198,6 +1199,7 @@ bool AuthSSLimpl::FailedCertificate(X509 *x509, const struct sockaddr_in &add
if (incoming)
{
notifyType = RS_FEED_ITEM_SEC_UNKNOWN_IN;
getPqiNotify()->AddPopupMessage(RS_POPUP_CONNECT_ATTEMPT, gpgid, sslcn, peerId);
}
else
{

View File

@ -40,14 +40,15 @@ const uint32_t RS_SYS_ERROR = 0x0001;
const uint32_t RS_SYS_WARNING = 0x0002;
const uint32_t RS_SYS_INFO = 0x0004;
const uint32_t RS_POPUP_MSG = 0x0001;
const uint32_t RS_POPUP_CHAT = 0x0002;
//const uint32_t RS_POPUP_CALL = 0x0004;
const uint32_t RS_POPUP_CONNECT = 0x0008;
const uint32_t RS_SYSTRAY_GROUP_MSG = 0x0010;
const uint32_t RS_POPUP_DOWNLOAD = 0x0020;
const uint32_t RS_POPUP_GROUPCHAT = 0x0040;
const uint32_t RS_POPUP_CHATLOBBY = 0x0080;
const uint32_t RS_POPUP_MSG = 0x0001;
const uint32_t RS_POPUP_CHAT = 0x0002;
//const uint32_t RS_POPUP_CALL = 0x0004;
const uint32_t RS_POPUP_CONNECT = 0x0008;
const uint32_t RS_SYSTRAY_GROUP_MSG = 0x0010;
const uint32_t RS_POPUP_DOWNLOAD = 0x0020;
const uint32_t RS_POPUP_GROUPCHAT = 0x0040;
const uint32_t RS_POPUP_CHATLOBBY = 0x0080;
const uint32_t RS_POPUP_CONNECT_ATTEMPT = 0x0100;
/* CHAT flags are here - so they are in the same place as
* other Notify flags... not used by libretroshare though

View File

@ -327,6 +327,7 @@ HEADERS += rshare.h \
gui/toaster/ChatToaster.h \
gui/toaster/GroupChatToaster.h \
gui/toaster/ChatLobbyToaster.h \
gui/toaster/FriendRequestToaster.h \
gui/common/vmessagebox.h \
gui/common/RsUrlHandler.h \
gui/common/RsCollectionFile.h \
@ -462,6 +463,7 @@ FORMS += gui/StartDialog.ui \
gui/toaster/ChatToaster.ui \
gui/toaster/GroupChatToaster.ui \
gui/toaster/ChatLobbyToaster.ui \
gui/toaster/FriendRequestToaster.ui \
gui/advsearch/AdvancedSearchDialog.ui \
gui/advsearch/expressionwidget.ui \
gui/NewsFeed.ui \
@ -639,6 +641,7 @@ SOURCES += main.cpp \
gui/toaster/ChatToaster.cpp \
gui/toaster/GroupChatToaster.cpp \
gui/toaster/ChatLobbyToaster.cpp \
gui/toaster/FriendRequestToaster.cpp \
gui/advsearch/advancedsearchdialog.cpp \
gui/advsearch/expressionwidget.cpp \
gui/advsearch/guiexprelement.cpp \

View File

@ -122,7 +122,7 @@ background-color: #2291E0;
</font>
</property>
<property name="text">
<string>TextLabel</string>
<string notr="true">TextLabel</string>
</property>
</widget>
</item>

View File

@ -118,14 +118,14 @@ void SecurityItem::updateItemStatic()
{
case SEC_TYPE_CONNECT_ATTEMPT:
title = tr("Connect Attempt");
request_label->show();
request_label->setText(requesttext.arg(tr("wants to be friends with you on RetroShare")));
request_label->show();
request_label->setText(requesttext.arg(tr("wants to be friend with you on RetroShare")));
avatar->setDefaultAvatar(":images/avatar_request.png");
break;
case SEC_TYPE_AUTH_DENIED:
title = tr("Not Yet Friends");
request_label->hide();
avatar->setDefaultAvatar(":images/avatar_request.png");
avatar->setDefaultAvatar(":images/avatar_request.png");
break;
case SEC_TYPE_UNKNOWN_IN:
title = tr("Unknown (Incoming) Connect Attempt");

View File

@ -119,11 +119,7 @@ border-radius: 10px}</string>
<item row="0" column="1">
<widget class="QLabel" name="request_label">
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt; color:#000000;&quot;&gt;TextLabel&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string notr="true">TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>

View File

@ -37,6 +37,7 @@
#include "toaster/ChatToaster.h"
#include "toaster/GroupChatToaster.h"
#include "toaster/ChatLobbyToaster.h"
#include "toaster/FriendRequestToaster.h"
#include "chat/ChatDialog.h"
#include "chat/ChatWidget.h"
@ -527,6 +528,15 @@ void NotifyQt::UpdateGUI()
toaster = new Toaster(new ChatLobbyToaster(id, QString::fromUtf8(title.c_str()), QString::fromUtf8(msg.c_str())));
}
break;
case RS_POPUP_CONNECT_ATTEMPT:
if (popupflags & RS_POPUP_CONNECT_ATTEMPT)
{
// id = gpgid
// title = ssl name
// msg = peer id
toaster = new Toaster(new FriendRequestToaster(id, QString::fromUtf8(title.c_str()), msg));
}
break;
}
if (toaster) {

View File

@ -75,6 +75,8 @@ NotifyPage::save(QString &/*errmsg*/)
notifyflags |= RS_POPUP_GROUPCHAT;
if (ui.popup_ChatLobby->isChecked())
notifyflags |= RS_POPUP_CHATLOBBY;
if (ui.popup_ConnectAttempt->isChecked())
notifyflags |= RS_POPUP_CONNECT_ATTEMPT;
if (ui.notify_Peers->isChecked())
newsflags |= RS_FEED_TYPE_PEER;
@ -160,6 +162,7 @@ void NotifyPage::load()
ui.popup_PrivateChat->setChecked(notifyflags & RS_POPUP_CHAT);
ui.popup_GroupChat->setChecked(notifyflags & RS_POPUP_GROUPCHAT);
ui.popup_ChatLobby->setChecked(notifyflags & RS_POPUP_CHATLOBBY);
ui.popup_ConnectAttempt->setChecked(notifyflags & RS_POPUP_CONNECT_ATTEMPT);
ui.notify_Peers->setChecked(newsflags & RS_FEED_TYPE_PEER);
ui.notify_Channels->setChecked(newsflags & RS_FEED_TYPE_CHAN);

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>516</width>
<height>425</height>
<height>474</height>
</rect>
</property>
<property name="sizePolicy">
@ -736,6 +736,13 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="popup_ConnectAttempt">
<property name="text">
<string>Connect attempt</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">

View File

@ -0,0 +1,63 @@
/*
* RetroShare
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "FriendRequestToaster.h"
#include "gui/FriendsDialog.h"
#include "gui/connect/FriendRequest.h"
#include <retroshare/rspeers.h>
FriendRequestToaster::FriendRequestToaster(const std::string &gpgId, const QString &sslName, const std::string &/*peerId*/)
: QWidget(NULL), mGpgId(gpgId)
{
/* Invoke the Qt Designer generated object setup routine */
ui.setupUi(this);
bool knownPeer = false;
RsPeerDetails details;
if (rsPeers->getGPGDetails(mGpgId, details)) {
knownPeer = true;
}
if (knownPeer) {
connect(ui.friendrequestButton, SIGNAL(clicked()), SLOT(friendrequestButtonSlot()));
} else {
ui.friendrequestButton->setEnabled(false);
}
connect(ui.closeButton, SIGNAL(clicked()), SLOT(hide()));
/* set informations */
ui.avatarWidget->setFrameType(AvatarWidget::NORMAL_FRAME);
if (knownPeer) {
ui.nameLabel->setText(QString::fromUtf8(details.name.c_str()));
ui.messageLabel->setText(tr("wants to be friend with you on RetroShare"));
ui.avatarWidget->setDefaultAvatar(":/images/avatar_request.png");
} else {
ui.nameLabel->setText(sslName);
ui.messageLabel->setText(tr("Unknown (Incoming) Connect Attempt"));
ui.avatarWidget->setDefaultAvatar(":/images/avatar_request_unknown.png");
}
}
void FriendRequestToaster::friendrequestButtonSlot()
{
FriendRequest *frDlg = new FriendRequest(mGpgId);
frDlg->show();
hide();
}

View File

@ -0,0 +1,47 @@
/*
* RetroShare
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef FRIENREQUESTTOASTER_H
#define FRIENREQUESTTOASTER_H
#include "ui_FriendRequestToaster.h"
/**
* Shows a toaster when you get from a Known Peer a Incoming Connect Attempt .
*
*
*/
class FriendRequestToaster : public QWidget
{
Q_OBJECT
public:
FriendRequestToaster(const std::string &gpgId, const QString &sslName, const std::string &peerId);
private slots:
void friendrequestButtonSlot();
private:
std::string mGpgId;
/** Qt Designer generated object */
Ui::FriendRequestToaster ui;
};
#endif //FRIENDREQUESTTOASTER_H

View File

@ -0,0 +1,222 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FriendRequestToaster</class>
<widget class="QWidget" name="FriendRequestToaster">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>300</width>
<height>100</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>300</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>300</width>
<height>100</height>
</size>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QFrame" name="windowFrame">
<property name="frameShape">
<enum>QFrame::WinPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout">
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<layout class="QGridLayout">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="horizontalSpacing">
<number>6</number>
</property>
<property name="verticalSpacing">
<number>0</number>
</property>
<item row="0" column="3">
<widget class="QPushButton" name="closeButton">
<property name="minimumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/closenormal.png</normaloff>:/images/closenormal.png</iconset>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="nameLabel">
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string notr="true">Name</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="minimumSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="../images.qrc">:/images/rstray3.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="1" column="0">
<layout class="QGridLayout">
<property name="leftMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<property name="horizontalSpacing">
<number>2</number>
</property>
<property name="verticalSpacing">
<number>3</number>
</property>
<item row="0" column="0" rowspan="3">
<widget class="AvatarWidget" name="avatarWidget" native="true">
<property name="minimumSize">
<size>
<width>70</width>
<height>70</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>70</width>
<height>70</height>
</size>
</property>
</widget>
</item>
<item row="1" column="1" rowspan="2">
<widget class="QLabel" name="messageLabel">
<property name="maximumSize">
<size>
<width>218</width>
<height>45</height>
</size>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="friendrequestButton">
<property name="font">
<font/>
</property>
<property name="text">
<string>Accept Friend Request</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>AvatarWidget</class>
<extends>QWidget</extends>
<header>gui/common/AvatarWidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>closeButton</tabstop>
</tabstops>
<resources>
<include location="../images.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -1006,7 +1006,7 @@ p, li { white-space: pre-wrap; }
<translation>Abonnieren</translation>
</message>
<message>
<location line="+179"/>
<location line="+163"/>
<source>Loading</source>
<translation>Lade</translation>
</message>
@ -1017,12 +1017,12 @@ p, li { white-space: pre-wrap; }
<translation>Alle als gelesen markieren</translation>
</message>
<message>
<location line="-276"/>
<location line="-260"/>
<source>Unsubcribe To Channel</source>
<translation>Kanal abbestellen</translation>
</message>
<message>
<location filename="../gui/ChannelFeed.cpp" line="+86"/>
<location filename="../gui/ChannelFeed.cpp" line="+87"/>
<source>Own Channels</source>
<translation>Meine Kanäle</translation>
</message>
@ -1083,19 +1083,19 @@ p, li { white-space: pre-wrap; }
<translation>Keinen Kanal gewählt</translation>
</message>
<message>
<location line="+260"/>
<location line="+270"/>
<source>Disable Auto-Download</source>
<translation>Deaktiviere Auto-Download</translation>
</message>
<message>
<location filename="../gui/ChannelFeed.ui" line="+165"/>
<location filename="../gui/ChannelFeed.ui" line="+149"/>
<location line="+3"/>
<location filename="../gui/ChannelFeed.cpp" line="+2"/>
<source>Enable Auto-Download</source>
<translation>Aktiviere Auto-Download</translation>
</message>
<message>
<location filename="../gui/ChannelFeed.cpp" line="-571"/>
<location filename="../gui/ChannelFeed.cpp" line="-581"/>
<source>Edit Channel Details</source>
<translation>Kanal-Details bearbeiten</translation>
</message>
@ -4524,7 +4524,7 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
<location line="+580"/>
<location line="+581"/>
<source>[ ... Missing Message ... ]</source>
<translation>[ ... Fehlende Nachricht ... ]</translation>
</message>
@ -4550,7 +4550,7 @@ p, li { white-space: pre-wrap; }
<translation>Du kannst einem anonymen Autor nicht antworten</translation>
</message>
<message>
<location line="-1352"/>
<location line="-1353"/>
<source>Your Forums</source>
<translation>Deine Foren</translation>
</message>
@ -4716,7 +4716,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../gui/ForumsDialog.cpp" line="+147"/>
<location line="+1126"/>
<location line="+1127"/>
<source>Start New Thread</source>
<translation>Erstelle neues Thema</translation>
</message>
@ -4742,7 +4742,7 @@ p, li { white-space: pre-wrap; }
<translation>Inhalt</translation>
</message>
<message>
<location filename="../gui/ForumsDialog.cpp" line="-1113"/>
<location filename="../gui/ForumsDialog.cpp" line="-1114"/>
<location line="+3"/>
<source>Mark as read</source>
<translation>Als gelesen markieren</translation>
@ -4763,7 +4763,7 @@ p, li { white-space: pre-wrap; }
<context>
<name>ForumsFillThread</name>
<message>
<location line="+1477"/>
<location line="+1478"/>
<location line="+114"/>
<source>Anonymous</source>
<translation>Anonym</translation>
@ -5265,6 +5265,24 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished">Vielleicht ist das Passwort falsch</translation>
</message>
</context>
<context>
<name>FriendRequestToaster</name>
<message>
<location filename="../gui/toaster/FriendRequestToaster.ui" line="+196"/>
<source>Accept Friend Request</source>
<translation>Freundschaftsanfrage bestätigen</translation>
</message>
<message>
<location filename="../gui/toaster/FriendRequestToaster.cpp" line="+49"/>
<source>wants to be friend with you on RetroShare</source>
<translation>möchte mit dir in RetroShare befreundet sein</translation>
</message>
<message>
<location line="+4"/>
<source>Unknown (Incoming) Connect Attempt</source>
<translation>Unbekannter (eingehender) Verbindungsversuch</translation>
</message>
</context>
<context>
<name>FriendSelectionWidget</name>
<message>
@ -8930,12 +8948,7 @@ p, li { white-space: pre-wrap; }
<translation>Erweitern</translation>
</message>
<message>
<location line="-102"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+23"/>
<location line="-79"/>
<source>Reply to Message</source>
<translation>Auf die Nachricht antworten</translation>
</message>
@ -9494,6 +9507,11 @@ p, li { white-space: pre-wrap; }
<source>Chat Lobby</source>
<translation>Chat Lobbie</translation>
</message>
<message>
<location line="+7"/>
<source>Connect attempt</source>
<translation>Verbindungsversuch</translation>
</message>
<message>
<location line="+15"/>
<source>Position</source>
@ -9510,9 +9528,9 @@ p, li { white-space: pre-wrap; }
<translation>Abstand Y</translation>
</message>
<message>
<location line="-203"/>
<location line="-210"/>
<location line="+125"/>
<location line="+103"/>
<location line="+110"/>
<source>Private Chat</source>
<translation>Privater Chat</translation>
</message>
@ -9542,12 +9560,12 @@ p, li { white-space: pre-wrap; }
<translation>Zeige Systemabschnitts-Nachricht an</translation>
</message>
<message>
<location line="-282"/>
<location line="-289"/>
<source>Add feeds at end</source>
<translation>Feeds am Ende anfügen</translation>
</message>
<message>
<location filename="../gui/settings/NotifyPage.cpp" line="+197"/>
<location filename="../gui/settings/NotifyPage.cpp" line="+200"/>
<source>Top Left</source>
<translation>Oben Links</translation>
</message>
@ -9575,7 +9593,7 @@ p, li { white-space: pre-wrap; }
<context>
<name>NotifyQt</name>
<message>
<location filename="../gui/notifyqt.cpp" line="+127"/>
<location filename="../gui/notifyqt.cpp" line="+128"/>
<source>GPG key passphrase</source>
<translation>GPG Schlüssel Passwort</translation>
</message>
@ -12199,7 +12217,7 @@ p, li { white-space: pre-wrap; }
<context>
<name>SecurityItem</name>
<message>
<location filename="../gui/feeds/SecurityItem.ui" line="+317"/>
<location filename="../gui/feeds/SecurityItem.ui" line="+313"/>
<location filename="../gui/feeds/SecurityItem.cpp" line="+295"/>
<source>Expand</source>
<translation>Erweitern</translation>
@ -12215,16 +12233,7 @@ p, li { white-space: pre-wrap; }
<translation>Nachbar Details</translation>
</message>
<message>
<location line="-80"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt; color:#000000;&quot;&gt;TextLabel&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+57"/>
<location line="-23"/>
<source>Accept Friend Request</source>
<translation>Freundschaftsanfrage bestätigen</translation>
</message>
@ -12308,8 +12317,12 @@ p, li { white-space: pre-wrap; }
<translation>Verbindungsversuch</translation>
</message>
<message>
<location line="+2"/>
<source>wants to be friends with you on RetroShare</source>
<translation type="obsolete">möchte mit dir in RetroShare befreundet sein</translation>
</message>
<message>
<location line="+2"/>
<source>wants to be friend with you on RetroShare</source>
<translation>möchte mit dir in RetroShare befreundet sein</translation>
</message>
<message>