Changed style of the reply/forwarded message.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5141 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2012-05-04 23:39:36 +00:00
parent 173ce82099
commit 2611da2f72
10 changed files with 296 additions and 175 deletions

View File

@ -1517,6 +1517,27 @@ void ForumsDialog::editForumDetails()
editUi.exec();
}
static QString buildReplyHeader(const ForumMsgInfo &msgInfo)
{
RetroShareLink link;
link.createMessage(msgInfo.srcId, "");
QString from = link.toHtml();
QDateTime qtime;
qtime.setTime_t(msgInfo.ts);
QString header = QString("<span>-----%1-----").arg(QApplication::translate("ForumsDialog", "Original Message"));
header += QString("<br><font size='3'><strong>%1: </strong>%2</font><br>").arg(QApplication::translate("ForumsDialog", "From"), from);
header += QString("<br><font size='3'><strong>%1: </strong>%2</font><br>").arg(QApplication::translate("ForumsDialog", "Sent"), qtime.toString(Qt::SystemLocaleLongDate));
header += QString("<font size='3'><strong>%1: </strong>%2</font></span><br>").arg(QApplication::translate("ForumsDialog", "Subject"), QString::fromStdWString(msgInfo.title));
header += "<br>";
header += QApplication::translate("ForumsDialog", "On %1, %2 wrote:").arg(qtime.toString(Qt::SystemLocaleShortDate), from);
return header;
}
void ForumsDialog::replytomessage()
{
if (mCurrForumId.empty()) {
@ -1532,13 +1553,11 @@ void ForumsDialog::replytomessage()
if (rsPeers->getPeerName(msgInfo.srcId) !="")
{
MessageComposer *nMsgDialog = MessageComposer::newMsg();
nMsgDialog->insertTitleText(QString::fromStdWString(msgInfo.title), MessageComposer::REPLY);
nMsgDialog->setTitleText(QString::fromStdWString(msgInfo.title), MessageComposer::REPLY);
QTextDocument doc ;
doc.setHtml(QString::fromStdWString(msgInfo.msg)) ;
nMsgDialog->insertPastedText(doc.toPlainText());
nMsgDialog->setQuotedMsg(QString::fromStdWString(msgInfo.msg), buildReplyHeader(msgInfo));
nMsgDialog->addRecipient(MessageComposer::TO, msgInfo.srcId, false);
nMsgDialog->show();
nMsgDialog->activateWindow();

View File

@ -1133,7 +1133,7 @@ static void processList(QStringList &list, const QString &textSingular, const QS
MessageComposer *msg = MessageComposer::newMsg();
msg->addRecipient(MessageComposer::TO, detail.id, false);
if (link.subject().isEmpty() == false) {
msg->insertTitleText(link.subject());
msg->setTitleText(link.subject());
}
msg->show();
messageStarted.append(PeerDefs::nameWithLocation(detail));

View File

@ -1251,9 +1251,9 @@ void SearchDialog::sendLinkTo( )
return;
}
nMsgDialog->insertTitleText(tr("New RetroShare Link(s)"));
nMsgDialog->setTitleText(tr("New RetroShare Link(s)"));
nMsgDialog->setMsgText(RSLinkClipboard::toHtml(), true) ;
nMsgDialog->insertMsgText(RSLinkClipboard::toHtml()) ;
nMsgDialog->show();
/* window will destroy itself! */

View File

@ -222,8 +222,6 @@ SharedFilesDialog::SharedFilesDialog(QWidget *parent)
connect( copylinklocalhtmlAct , SIGNAL( triggered() ), this, SLOT( copyLinkhtml() ) );
sendlinkAct = new QAction(QIcon(IMAGE_COPYLINK), tr( "Send retroshare Links" ), this );
connect( sendlinkAct , SIGNAL( triggered() ), this, SLOT( sendLinkTo( ) ) );
sendhtmllinkAct = new QAction(QIcon(IMAGE_COPYLINK), tr( "Send retroshare Links (HTML)" ), this );
connect( sendhtmllinkAct , SIGNAL( triggered() ), this, SLOT( sendHtmlLinkTo( ) ) );
#ifdef RS_USE_LINKS
sendlinkCloudAct = new QAction(QIcon(IMAGE_COPYLINK), tr( "Send retroshare Links to Cloud" ), this );
connect( sendlinkCloudAct , SIGNAL( triggered() ), this, SLOT( sendLinkToCloud( ) ) );
@ -535,8 +533,8 @@ void SharedFilesDialog::sendremoteLinkTo()
* just need to set peers
*/
std::cerr << "SharedFilesDialog::sendremoteLinkTo()" << std::endl;
nMsgDialog->insertTitleText(tr("RetroShare Link"));
nMsgDialog->insertMsgText(RSLinkClipboard::toHtml());
nMsgDialog->setTitleText(tr("RetroShare Link"));
nMsgDialog->setMsgText(RSLinkClipboard::toHtml(), true);
nMsgDialog->show();
@ -558,33 +556,8 @@ void SharedFilesDialog::sendLinkTo()
* just need to set peers
*/
std::cerr << "SharedFilesDialog::sendLinkTo()" << std::endl;
nMsgDialog->insertTitleText(tr("RetroShare Link"));
nMsgDialog->insertMsgText(RSLinkClipboard::toHtml());
nMsgDialog->show();
/* window will destroy itself! */
}
void SharedFilesDialog::sendHtmlLinkTo()
{
copyLinkLocal ();
/* create a message */
MessageComposer *nMsgDialog = MessageComposer::newMsg();
if (nMsgDialog == NULL) {
return;
}
/* fill it in
* files are receommended already
* just need to set peers
*/
std::cerr << "SharedFilesDialog::sendLinkTo()" << std::endl;
nMsgDialog->insertTitleText(tr("RetroShare Link"));
// nMsgDialog->insertHtmlText(QApplication::clipboard()->text().toStdString());// not compatible with multiple links
nMsgDialog->insertMsgText(RSLinkClipboard::toHtml());
nMsgDialog->setTitleText(tr("RetroShare Link"));
nMsgDialog->setMsgText(RSLinkClipboard::toHtml(), true);
nMsgDialog->show();
@ -661,9 +634,9 @@ void SharedFilesDialog::addMsgRemoteSelected()
return;
}
nMsgDialog->insertFileList(files_info) ;
nMsgDialog->insertTitleText(tr("Recommendation(s)"));
nMsgDialog->insertMsgText(tr("Recommendation(s)"));
nMsgDialog->setFileList(files_info) ;
nMsgDialog->setTitleText(tr("Recommendation(s)"));
nMsgDialog->setMsgText(tr("Recommendation(s)"));
nMsgDialog->show();
/* window will destroy itself! */
@ -685,9 +658,9 @@ void SharedFilesDialog::recommendFilesToMsg()
return;
}
nMsgDialog->insertFileList(files_info) ;
nMsgDialog->insertTitleText(tr("Recommendation(s)"));
nMsgDialog->insertMsgText(tr("Recommendation(s)"));
nMsgDialog->setFileList(files_info) ;
nMsgDialog->setTitleText(tr("Recommendation(s)"));
nMsgDialog->setMsgText(tr("Recommendation(s)"));
nMsgDialog->show();
/* window will destroy itself! */

View File

@ -66,7 +66,6 @@ private slots:
void copyLinkhtml();
void sendLinkTo();
void sendremoteLinkTo();
void sendHtmlLinkTo();
#ifdef RS_USE_LINKS
void sendLinkToCloud();
void addLinkToCloud();
@ -121,7 +120,6 @@ private:
QAction* copyremotelinkAct;
QAction* copylinklocalAct;
QAction* sendlinkAct;
QAction* sendhtmllinkAct;
#ifdef RS_USE_LINKS
QAction* sendlinkCloudAct;
QAction* addlinkCloudAct;

View File

@ -337,11 +337,10 @@ static void optimizeHtml(QDomDocument& doc, QDomElement& currentElement, unsigne
// <p>
if (element.tagName().toLower() == "p") {
// <p style="...">
//styleNode = element.attributes().namedItem("style");
if (element.attributes().size() == 1 && styleNode.isAttr()) {
QString value = styleNode.toAttr().value().simplified();
if (value == "margin:0px 0px 0px 0px;-qt-block-indent:0;text-indent:0px;" ||
value.startsWith("-qt-paragraph-type:empty;margin:0px 0px 0px 0px;-qt-block-indent:0;text-indent:0px;")) {
QString style = styleNode.toAttr().value().simplified();
if (style == "margin:0px 0px 0px 0px;-qt-block-indent:0;text-indent:0px;" ||
style.startsWith("-qt-paragraph-type:empty;margin:0px 0px 0px 0px;-qt-block-indent:0;text-indent:0px;")) {
if (addBR) {
// add <br> after a removed <p> before a removed <p>
@ -355,6 +354,48 @@ static void optimizeHtml(QDomDocument& doc, QDomElement& currentElement, unsigne
addBR = true;
continue;
}
// check for blockquote (not ready)
// style="margin-top:12px;margin-bottom:12px;margin-left:40px;margin-right:40px;-qt-block-indent:0;text-indent:0px;"
// int count = 0; // should be 6
// QStringList styles = style.split(';');
// foreach (QString pair, styles) {
// if (!pair.trimmed().isEmpty()) {
// QStringList keyvalue = pair.split(':');
// if (keyvalue.length() == 2) {
// QString key = keyvalue.at(0).trimmed();
// QString value = keyvalue.at(1).trimmed();
// if ((key == "margin-top" || key == "margin-bottom") && value == "12px") {
// ++count;
// continue;
// }
// if (key == "margin-left" || key == "margin-right") {
// ++count;
// continue;
// }
// if (key == "-qt-block-indent" && value == "0") {
// ++count;
// continue;
// }
// if (key == "text-indent" && value == "0px") {
// ++count;
// continue;
// }
// count = 0;
// break;
// } else {
// count = 0;
// break;
// }
// }
// }
// if (count == 6) {
// // change to "blockquote"
// element.setTagName("blockquote");
// element.attributes().removeNamedItem("style");
// element.setAttribute("type", "cite");
// }
}
addBR = false;
}

View File

@ -424,7 +424,7 @@ void MessageComposer::recommendFriend(const std::list <std::string> &sslIds, con
/* create a message */
MessageComposer *pMsgDialog = MessageComposer::newMsg();
pMsgDialog->insertTitleText(tr("Friend Recommendation(s)"));
pMsgDialog->setTitleText(tr("Friend Recommendation(s)"));
if (!to.empty()) {
pMsgDialog->addRecipient(TO, to, false);
@ -433,7 +433,7 @@ void MessageComposer::recommendFriend(const std::list <std::string> &sslIds, con
QString sMsgText = msg.isEmpty() ? recommendMessage() : msg;
sMsgText += "<br><br>";
sMsgText += recommendHtml;
pMsgDialog->insertMsgText(sMsgText);
pMsgDialog->setMsgText(sMsgText);
std::list <std::string>::const_iterator peerIt;
for (peerIt = sslIds.begin(); peerIt != sslIds.end(); peerIt++) {
@ -675,7 +675,7 @@ void MessageComposer::peerStatusChanged(const QString& peer_id, int status)
}
}
void MessageComposer::insertFileList(const std::list<DirDetails>& dir_info)
void MessageComposer::setFileList(const std::list<DirDetails>& dir_info)
{
std::list<FileInfo> files_info;
std::list<DirDetails>::const_iterator it;
@ -690,10 +690,10 @@ void MessageComposer::insertFileList(const std::list<DirDetails>& dir_info)
files_info.push_back(info) ;
}
insertFileList(files_info);
setFileList(files_info);
}
void MessageComposer::insertFileList(const std::list<FileInfo>& files_info)
void MessageComposer::setFileList(const std::list<FileInfo>& files_info)
{
_recList.clear() ;
@ -860,11 +860,9 @@ MessageComposer *MessageComposer::newMsg(const std::string &msgId /* = ""*/)
// needed to send system flags with reply
//msgComposer->systemFlags = (msgInfo.msgflags & RS_MSG_SYSTEM);
msgComposer->insertTitleText(QString::fromStdWString(msgInfo.title));
msgComposer->insertMsgText(QString::fromStdWString(msgInfo.msg));
msgComposer->insertFileList(msgInfo.files);
msgComposer->setTitleText(QString::fromStdWString(msgInfo.title));
msgComposer->setMsgText(QString::fromStdWString(msgInfo.msg), true);
msgComposer->setFileList(msgInfo.files);
// get existing groups
std::list<RsGroupInfo> groupInfoList;
@ -912,6 +910,91 @@ MessageComposer *MessageComposer::newMsg(const std::string &msgId /* = ""*/)
return msgComposer;
}
QString MessageComposer::buildReplyHeader(const MessageInfo &msgInfo)
{
RetroShareLink link;
link.createMessage(msgInfo.srcId, "");
QString from = link.toHtml();
QString to;
std::list<std::string>::const_iterator it;
for (it = msgInfo.msgto.begin(); it != msgInfo.msgto.end(); it++) {
if (link.createMessage(*it, "")) {
if (!to.isEmpty()) {
to += ", ";
}
to += link.toHtml();
}
}
QString cc;
for (it = msgInfo.msgcc.begin(); it != msgInfo.msgcc.end(); it++) {
if (link.createMessage(*it, "")) {
if (!cc.isEmpty()) {
cc += ", ";
}
cc += link.toHtml();
}
}
QDateTime qtime;
qtime.setTime_t(msgInfo.ts);
QString header = QString("<span>-----%1-----").arg(tr("Original Message"));
header += QString("<br><font size='3'><strong>%1: </strong>%2</font><br>").arg(tr("From"), from);
header += QString("<font size='3'><strong>%1: </strong>%2</font><br>").arg(tr("To"), to);
if (!cc.isEmpty()) {
header += QString("<font size='3'><strong>%1: </strong>%2</font><br>").arg(tr("Cc"), cc);
}
header += QString("<br><font size='3'><strong>%1: </strong>%2</font><br>").arg(tr("Sent"), qtime.toString(Qt::SystemLocaleLongDate));
header += QString("<font size='3'><strong>%1: </strong>%2</font></span><br>").arg(tr("Subject"), QString::fromStdWString(msgInfo.title));
header += "<br>";
header += tr("On %1, %2 wrote:").arg(qtime.toString(Qt::SystemLocaleShortDate), from);
return header;
}
void MessageComposer::setQuotedMsg(const QString &msg, const QString &header)
{
ui.msgText->setUndoRedoEnabled(false);
ui.msgText->setHtml(msg);
QTextBlock block = ui.msgText->document()->firstBlock();
while (block.isValid()) {
QTextCursor cursor = ui.msgText->textCursor();
cursor.setPosition(block.position());
QTextBlockFormat format;
format.setProperty(TextFormat::IsBlockQuote, true);
format.setLeftMargin(block.blockFormat().leftMargin() + 20);
format.setRightMargin(block.blockFormat().rightMargin() + 20);
cursor.mergeBlockFormat(format);
block = block.next();
}
ui.msgText->moveCursor(QTextCursor::Start);
ui.msgText->textCursor().insertBlock();
ui.msgText->moveCursor(QTextCursor::Start);
if (header.isEmpty()) {
ui.msgText->insertHtml("<br><br>");
} else {
ui.msgText->insertHtml("<br><br>" + header + "<br>");
}
ui.msgText->moveCursor(QTextCursor::Start);
ui.msgText->setUndoRedoEnabled(true);
ui.msgText->document()->setModified(true);
ui.msgText->setFocus( Qt::OtherFocusReason );
}
MessageComposer *MessageComposer::replyMsg(const std::string &msgId, bool all)
{
MessageInfo msgInfo;
@ -925,12 +1008,9 @@ MessageComposer *MessageComposer::replyMsg(const std::string &msgId, bool all)
/* fill it in */
msgComposer->insertTitleText(QString::fromStdWString(msgInfo.title), REPLY);
msgComposer->setTitleText(QString::fromStdWString(msgInfo.title), REPLY);
msgComposer->setQuotedMsg(QString::fromStdWString(msgInfo.msg), buildReplyHeader(msgInfo));
QTextDocument doc ;
doc.setHtml(RsHtml::toHtml(QString::fromStdWString(msgInfo.msg), false));
msgComposer->insertPastedText(doc.toPlainText());
msgComposer->addRecipient(MessageComposer::TO, msgInfo.srcId, false);
if (all) {
@ -972,16 +1052,12 @@ MessageComposer *MessageComposer::forwardMsg(const std::string &msgId)
/* fill it in */
msgComposer->insertTitleText(QString::fromStdWString(msgInfo.title), FORWARD);
QTextDocument doc ;
doc.setHtml(RsHtml::toHtml(QString::fromStdWString(msgInfo.msg), false));
msgComposer->insertForwardPastedText(doc.toPlainText());
msgComposer->setTitleText(QString::fromStdWString(msgInfo.title), FORWARD);
msgComposer->setQuotedMsg(QString::fromStdWString(msgInfo.msg), buildReplyHeader(msgInfo));
std::list<FileInfo>& files_info = msgInfo.files;
msgComposer->insertFileList(files_info);
msgComposer->setFileList(files_info);
// needed to send system flags with reply
//msgComposer->systemFlags = (msgInfo.msgflags & RS_MSG_SYSTEM);
@ -993,7 +1069,7 @@ MessageComposer *MessageComposer::forwardMsg(const std::string &msgId)
return msgComposer;
}
void MessageComposer::insertTitleText(const QString &title, enumMessageType type)
void MessageComposer::setTitleText(const QString &title, enumMessageType type)
{
QString titleText;
@ -1020,37 +1096,7 @@ void MessageComposer::insertTitleText(const QString &title, enumMessageType type
ui.titleEdit->setText(misc::removeNewLine(titleText));
}
void MessageComposer::insertPastedText(QString msg)
{
msg.replace("\n", "\n<BR>> ");
ui.msgText->setHtml("<HTML><font color=\"blue\"> > " + msg + "</font><br><br></HTML>");
ui.msgText->setFocus( Qt::OtherFocusReason );
QTextCursor c = ui.msgText->textCursor();
c.movePosition(QTextCursor::End);
ui.msgText->setTextCursor(c);
ui.msgText->document()->setModified(true);
}
void MessageComposer::insertForwardPastedText(QString msg)
{
msg.replace("\n", "\n<BR>> ");
ui.msgText->setHtml("<HTML><blockquote [type=cite]><font color=\"blue\">> " + msg + "</font><br><br></blockquote></HTML>");
ui.msgText->setFocus( Qt::OtherFocusReason );
QTextCursor c = ui.msgText->textCursor();
c.movePosition(QTextCursor::End);
ui.msgText->setTextCursor(c);
ui.msgText->document()->setModified(true);
}
void MessageComposer::insertMsgText(const QString &msg, bool asHtml)
void MessageComposer::setMsgText(const QString &msg, bool asHtml)
{
if (asHtml) {
ui.msgText->setHtml(msg);
@ -1067,13 +1113,6 @@ void MessageComposer::insertMsgText(const QString &msg, bool asHtml)
ui.msgText->document()->setModified(true);
}
void MessageComposer::insertHtmlText(const QString &msg)
{
ui.msgText->setHtml("<a href='" + msg + "'> " + msg + "</a>");
ui.msgText->document()->setModified(true);
}
void MessageComposer::sendMessage()
{
if (sendMessage_internal(false)) {
@ -1087,14 +1126,13 @@ bool MessageComposer::sendMessage_internal(bool bDraftbox)
MessageInfo mi;
mi.title = misc::removeNewLine(ui.titleEdit->text()).toStdWString();
mi.msg = ui.msgText->toHtml().toStdWString();
// needed to send system flags with reply
//mi.msgflags = systemFlags;
mi.msgflags = 0;
QString text;
RsHtml::optimizeHtml(ui.msgText, text);
mi.msg = text.toStdWString() ;
mi.msg = text.toStdWString();
/* check for existing title */
if (bDraftbox == false && mi.title.empty()) {

View File

@ -32,6 +32,7 @@ class QFontComboBox;
class QTextEdit;
class QTextCharFormat;
class RSTreeWidgetItemCompareRole;
struct MessageInfo;
class MessageComposer : public QMainWindow
{
@ -57,16 +58,13 @@ public:
static MessageComposer *forwardMsg(const std::string &msgId);
/* worker fns */
void insertFileList(const std::list<DirDetails>&);
void insertFileList(const std::list<FileInfo>&);
void setFileList(const std::list<DirDetails>&);
void setFileList(const std::list<FileInfo>&);
void addFile(const FileInfo &fileInfo);
void insertTitleText(const QString &title, enumMessageType type = NORMAL);
void insertPastedText(QString msg) ;
void insertForwardPastedText(QString msg);
void insertHtmlText(const QString &msg);
void insertMsgText(const QString &msg, bool asHtml = false);
void setTitleText(const QString &title, enumMessageType type = NORMAL);
void setQuotedMsg(const QString &msg, const QString &header);
void setMsgText(const QString &msg, bool asHtml = false);
void addRecipient(enumType type, const std::string &id, bool group);
void Create_New_Image_Tag(const QString urlremoteorlocal);
public slots:
/* actions to take.... */
@ -145,6 +143,8 @@ private slots:
void tagRemoveAll();
private:
static QString buildReplyHeader(const MessageInfo &msgInfo);
void processSettings(bool bLoad);
void addContact(enumType type);
@ -176,6 +176,8 @@ private:
void clearTagLabels();
void showTagLabels();
void Create_New_Image_Tag(const QString urlremoteorlocal);
QAction *actionSave,
*actionAlignLeft,
*actionAlignCenter,

View File

@ -4555,22 +4555,47 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location line="+362"/>
<location line="+81"/>
<location line="+100"/>
<source>RetroShare</source>
<translation></translation>
</message>
<message>
<location line="-81"/>
<location line="-100"/>
<source>No Forum Selected!</source>
<translation>Kein Forum ausgewählt!</translation>
</message>
<message>
<location line="+81"/>
<location line="+61"/>
<source>Original Message</source>
<translation>Ursprüngliche Nachricht</translation>
</message>
<message>
<location line="+1"/>
<source>From</source>
<translation>Von</translation>
</message>
<message>
<location line="+2"/>
<source>Sent</source>
<translation>Gesendet</translation>
</message>
<message>
<location line="+1"/>
<source>Subject</source>
<translation>Betreff</translation>
</message>
<message>
<location line="+3"/>
<source>On %1, %2 wrote:</source>
<translation>Am %1, schrieb %2:</translation>
</message>
<message>
<location line="+32"/>
<source>You cant reply a Anonymous Author</source>
<translation>Du kannst einem anonymen Autor nicht antworten</translation>
</message>
<message>
<location line="-1353"/>
<location line="-1372"/>
<source>Your Forums</source>
<translation>Deine Foren</translation>
</message>
@ -4783,7 +4808,7 @@ p, li { white-space: pre-wrap; }
<context>
<name>ForumsFillThread</name>
<message>
<location line="+1478"/>
<location line="+1497"/>
<location line="+114"/>
<source>Anonymous</source>
<translation>Anonym</translation>
@ -5251,7 +5276,7 @@ p, li { white-space: pre-wrap; }
<location line="-20"/>
<location line="+21"/>
<source>Error : cannot get peer details.</source>
<translation type="unfinished"></translation>
<translation>Fehler : Kann Details des Freundes nicht ermitteln.</translation>
</message>
<message>
<source>Your trust in this peer is ultimate, it&apos;s probably a key you own.</source>
@ -7403,7 +7428,7 @@ Die folgenden Wege sind möglich:</translation>
<translation>%1 Freunde verbunden</translation>
</message>
<message>
<location line="+766"/>
<location line="+739"/>
<source>It seems to be an old RetroShare link. Please use copy instead.</source>
<translation>Es scheint ein alter RetroShare Link zu sein. Bitte kopiere den Link stattdessen.</translation>
</message>
@ -7413,7 +7438,7 @@ Die folgenden Wege sind möglich:</translation>
<translation>Link ist fehlerhaft.</translation>
</message>
<message>
<location line="-774"/>
<location line="-747"/>
<source>%1 friend connected</source>
<translation>%1 Freund verbunden</translation>
</message>
@ -7778,12 +7803,14 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<translation>Setzt Schriftart auf Codestil</translation>
</message>
<message>
<location filename="../gui/msgs/MessageComposer.cpp" line="+1023"/>
<location filename="../gui/msgs/MessageComposer.cpp" line="+648"/>
<location line="+413"/>
<source>To</source>
<translation>An</translation>
</message>
<message>
<location line="+1"/>
<location line="-410"/>
<location line="+411"/>
<source>Cc</source>
<translation>Cc</translation>
</message>
@ -7863,7 +7890,7 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<translation>Blockquote hinzufügen</translation>
</message>
<message>
<location filename="../gui/msgs/MessageComposer.cpp" line="-1109"/>
<location filename="../gui/msgs/MessageComposer.cpp" line="-1147"/>
<source>&amp;Left</source>
<translation>&amp;Links</translation>
</message>
@ -7894,12 +7921,12 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
</message>
<message>
<location line="+12"/>
<location line="+1522"/>
<location line="+1560"/>
<source>Save Message</source>
<translation>Nachricht speichern</translation>
</message>
<message>
<location line="-1521"/>
<location line="-1559"/>
<source>Message has not been Sent.
Do you want to save message to draft box?</source>
<translation>Nachricht wurde noch nicht gesendet.
@ -7937,7 +7964,32 @@ Möchtest Du die Nachricht in den Entwürfen speichern?</translation>
<translation>Freund-Details</translation>
</message>
<message>
<location line="+429"/>
<location line="+364"/>
<source>Original Message</source>
<translation>Ursprüngliche Nachricht</translation>
</message>
<message>
<location line="+1"/>
<source>From</source>
<translation>Von</translation>
</message>
<message>
<location line="+7"/>
<source>Sent</source>
<translation>Gesendet</translation>
</message>
<message>
<location line="+1"/>
<source>Subject</source>
<translation>Betreff</translation>
</message>
<message>
<location line="+3"/>
<source>On %1, %2 wrote:</source>
<translation>Am %1, schrieb %2:</translation>
</message>
<message>
<location line="+129"/>
<source>Re:</source>
<translation>Re:</translation>
</message>
@ -7947,7 +7999,7 @@ Möchtest Du die Nachricht in den Entwürfen speichern?</translation>
<translation>Fwd:</translation>
</message>
<message>
<location line="+86"/>
<location line="+48"/>
<location line="+122"/>
<source>RetroShare</source>
<translation></translation>
@ -8138,7 +8190,7 @@ Möchtest du die Nachricht speichern ?</translation>
<translation type="obsolete">Datei nicht gefunden oder Dateiname nicht akzeptiert.</translation>
</message>
<message>
<location line="-1736"/>
<location line="-1774"/>
<source>Friend Recommendation(s)</source>
<translation>Freundempfehlung(en)</translation>
</message>
@ -8496,12 +8548,12 @@ p, li { white-space: pre-wrap; }
<name>MessagesDialog</name>
<message>
<location filename="../gui/MessagesDialog.ui" line="+576"/>
<location filename="../gui/MessagesDialog.cpp" line="+622"/>
<location filename="../gui/MessagesDialog.cpp" line="+623"/>
<source>New Message</source>
<translation>Neue Nachricht</translation>
</message>
<message>
<location line="+762"/>
<location line="+769"/>
<source>Reply to Message</source>
<translation>Antworten nur an Absender</translation>
</message>
@ -8521,15 +8573,15 @@ p, li { white-space: pre-wrap; }
<translation>Nachricht entfernen</translation>
</message>
<message>
<location filename="../gui/MessagesDialog.ui" line="-409"/>
<location filename="../gui/MessagesDialog.cpp" line="-408"/>
<location filename="../gui/MessagesDialog.ui" line="-416"/>
<location filename="../gui/MessagesDialog.cpp" line="-409"/>
<source>Date</source>
<translation>Datum</translation>
</message>
<message>
<location line="-5"/>
<location filename="../gui/MessagesDialog.cpp" line="-1"/>
<location line="+748"/>
<location line="+749"/>
<source>From</source>
<translation>Von</translation>
</message>
@ -8598,7 +8650,7 @@ p, li { white-space: pre-wrap; }
<translation>Anhänge</translation>
</message>
<message>
<location line="+175"/>
<location line="+181"/>
<location filename="../gui/MessagesDialog.cpp" line="-66"/>
<location line="+839"/>
<location line="+10"/>
@ -8625,12 +8677,12 @@ p, li { white-space: pre-wrap; }
<translation>Gesendet</translation>
</message>
<message>
<location line="+56"/>
<location line="+120"/>
<source>Quick View</source>
<translation>Schnellansicht</translation>
</message>
<message>
<location line="+120"/>
<location line="+57"/>
<location line="+3"/>
<source>Print...</source>
<translation>Drucken...</translation>
@ -8672,8 +8724,8 @@ p, li { white-space: pre-wrap; }
<translation>Speichern unter...</translation>
</message>
<message>
<location line="-410"/>
<location filename="../gui/MessagesDialog.cpp" line="-696"/>
<location line="-417"/>
<location filename="../gui/MessagesDialog.cpp" line="-697"/>
<source>Subject</source>
<translation>Betreff</translation>
</message>
@ -8688,7 +8740,7 @@ p, li { white-space: pre-wrap; }
<translation>Gewählte Nachricht weiterleiten</translation>
</message>
<message>
<location line="+174"/>
<location line="+175"/>
<source>Starred</source>
<translation>Gekennzeichnet</translation>
</message>
@ -8708,12 +8760,12 @@ p, li { white-space: pre-wrap; }
<translation>Nachrichten entfernen</translation>
</message>
<message>
<location filename="../gui/MessagesDialog.ui" line="+537"/>
<location filename="../gui/MessagesDialog.ui" line="+544"/>
<source>Forward Message</source>
<translation>Weiterleiten</translation>
</message>
<message>
<location filename="../gui/MessagesDialog.cpp" line="-403"/>
<location filename="../gui/MessagesDialog.cpp" line="-404"/>
<source>Click to sort by attachments</source>
<translation>Klicken, um nach Anhang zu sortieren</translation>
</message>
@ -8729,12 +8781,12 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location line="+1"/>
<location line="+740"/>
<location line="+741"/>
<source>Click to sort by from</source>
<translation>Klicken, um nach Von zu sortieren</translation>
</message>
<message>
<location line="-739"/>
<location line="-740"/>
<source>Click to sort by date</source>
<translation>Klicken, um nach Datum zu sortieren</translation>
</message>
@ -8744,7 +8796,7 @@ p, li { white-space: pre-wrap; }
<translation>Klicken, um nach Schlagwörter zu sortieren</translation>
</message>
<message>
<location line="+226"/>
<location line="+227"/>
<source>System</source>
<translation>System</translation>
</message>
@ -8760,17 +8812,17 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../gui/MessagesDialog.ui" line="-9"/>
<location filename="../gui/MessagesDialog.cpp" line="-698"/>
<location filename="../gui/MessagesDialog.cpp" line="-699"/>
<source>Reply to All</source>
<translation>Allen antworten</translation>
</message>
<message>
<location line="-141"/>
<location line="-178"/>
<source>Total Inbox:</source>
<translation>Posteingang gesamt:</translation>
</message>
<message>
<location line="-272"/>
<location line="-242"/>
<location filename="../gui/MessagesDialog.cpp" line="-51"/>
<source>Content</source>
<translation>Inhalt</translation>
@ -8780,12 +8832,12 @@ p, li { white-space: pre-wrap; }
<location line="+11"/>
<location line="+3"/>
<location filename="../gui/MessagesDialog.cpp" line="-1"/>
<location line="+84"/>
<location line="+85"/>
<source>Tags</source>
<translation>Schlagwörter</translation>
</message>
<message>
<location line="+172"/>
<location line="+178"/>
<location filename="../gui/MessagesDialog.cpp" line="+612"/>
<location line="+885"/>
<location line="+5"/>
@ -8793,7 +8845,7 @@ p, li { white-space: pre-wrap; }
<translation>Papierkorb</translation>
</message>
<message>
<location line="+114"/>
<location line="+78"/>
<source>Folders</source>
<translation>Ordner</translation>
</message>
@ -8835,12 +8887,12 @@ p, li { white-space: pre-wrap; }
<translation>An</translation>
</message>
<message>
<location line="-739"/>
<location line="-740"/>
<source>Click to sort by star</source>
<translation>Klicken, um nach Kennzeichnung zu sortieren</translation>
</message>
<message>
<location line="+711"/>
<location line="+712"/>
<source>No starred messages available. Stars let you give messages a special status to make them easier to find. To star a message, click on the light grey star beside any message.</source>
<translation>Es sind keine gekennzeichneten Nachrichten vorhanden. Durch die Kennzeichnung kannst du Nachrichten mit einem speziellen Status versehen, sodass sie leichter zu finden sind. Klicke zum Kennzeichnen einer Nachricht auf den hellgrauen Stern neben der jeweiligen Nachricht.</translation>
</message>
@ -12955,7 +13007,7 @@ p, li { white-space: pre-wrap; }
<name>SharedFilesDialog</name>
<message>
<location filename="../gui/SharedFilesDialog.ui" line="+984"/>
<location filename="../gui/SharedFilesDialog.cpp" line="+389"/>
<location filename="../gui/SharedFilesDialog.cpp" line="+387"/>
<source>Download</source>
<translation>Herunterladen</translation>
</message>
@ -13039,22 +13091,22 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../gui/SharedFilesDialog.cpp" line="-154"/>
<location line="+581"/>
<location line="+556"/>
<source>Open File</source>
<translation>Datei öffnen</translation>
</message>
<message>
<location line="-579"/>
<location line="-554"/>
<source>Open Folder</source>
<translation>Ordner öffnen</translation>
</message>
<message>
<location line="+588"/>
<location line="+563"/>
<source>Set command for opening this file</source>
<translation>Setze eine Regel zum Öffnen dieser Datei</translation>
</message>
<message>
<location line="-431"/>
<location line="-406"/>
<source>Copy retroshare Link</source>
<translation>Kopiere RetroShare Link</translation>
</message>
@ -13074,7 +13126,7 @@ p, li { white-space: pre-wrap; }
<translation>Sende RetroShare Link</translation>
</message>
<message>
<location line="-178"/>
<location line="-176"/>
<source>Copy retroshare Links to Clipboard</source>
<translation>Kopiere RetroShare Links in die Zwischenablage</translation>
</message>
@ -13089,9 +13141,8 @@ p, li { white-space: pre-wrap; }
<translation>Sende RetroShare Links</translation>
</message>
<message>
<location line="+2"/>
<source>Send retroshare Links (HTML)</source>
<translation>Sende RetroShare Links (HTML)</translation>
<translation type="obsolete">Sende RetroShare Links (HTML)</translation>
</message>
<message>
<location line="+3"/>
@ -13110,19 +13161,18 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location line="+171"/>
<location line="+391"/>
<location line="+366"/>
<source>Recommend in a message to</source>
<translation>Empfehle in einer Nachricht an</translation>
</message>
<message>
<location line="-257"/>
<location line="-232"/>
<location line="+23"/>
<location line="+24"/>
<source>RetroShare Link</source>
<translation>RetroShare Link</translation>
</message>
<message>
<location line="+80"/>
<location line="+79"/>
<location line="+1"/>
<location line="+23"/>
<location line="+1"/>