Added a new button in the forums dialog to download all links in the selected forum message.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4202 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2011-05-15 20:21:14 +00:00
parent ddba6d35db
commit 650ef12af6
10 changed files with 234 additions and 100 deletions

View File

@ -148,6 +148,7 @@ ForumsDialog::ForumsDialog(QWidget *parent)
connect(ui.expandButton, SIGNAL(clicked()), this, SLOT(togglethreadview())); connect(ui.expandButton, SIGNAL(clicked()), this, SLOT(togglethreadview()));
connect(ui.previousButton, SIGNAL(clicked()), this, SLOT(previousMessage())); connect(ui.previousButton, SIGNAL(clicked()), this, SLOT(previousMessage()));
connect(ui.nextButton, SIGNAL(clicked()), this, SLOT(nextMessage())); connect(ui.nextButton, SIGNAL(clicked()), this, SLOT(nextMessage()));
connect(ui.downloadButton, SIGNAL(clicked()), this, SLOT(downloadAllFiles()));
connect(ui.clearButton, SIGNAL(clicked()), this, SLOT(clearFilter())); connect(ui.clearButton, SIGNAL(clicked()), this, SLOT(clearFilter()));
connect(ui.filterPatternLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(filterRegExpChanged())); connect(ui.filterPatternLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(filterRegExpChanged()));
@ -1251,6 +1252,20 @@ void ForumsDialog::nextMessage ()
} }
} }
void ForumsDialog::downloadAllFiles()
{
QStringList urls;
if (RsHtml::findAnchors(ui.postText->toHtml(), urls) == false) {
return;
}
if (urls.count() == 0) {
return;
}
RetroShareLink::process(urls, RetroShareLink::TYPE_FILE, true);
}
// TODO // TODO
#if 0 #if 0
void ForumsDialog::removemessage() void ForumsDialog::removemessage()

View File

@ -83,6 +83,7 @@ private slots:
void previousMessage (); void previousMessage ();
void nextMessage (); void nextMessage ();
void downloadAllFiles();
void changedViewBox(); void changedViewBox();

View File

@ -1000,7 +1000,7 @@ background: white;}</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="5"> <item row="0" column="6">
<widget class="QPushButton" name="expandButton"> <widget class="QPushButton" name="expandButton">
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
@ -1026,6 +1026,26 @@ background: white;}</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="5">
<widget class="QPushButton" name="downloadButton">
<property name="maximumSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>Download all files</string>
</property>
<property name="icon">
<iconset resource="images.qrc">
<normaloff>:/images/down.png</normaloff>:/images/down.png</iconset>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item row="0" column="0"> <item row="0" column="0">

View File

@ -1345,7 +1345,7 @@ padding: 4px;
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<item row="0" column="1"> <item row="0" column="2">
<widget class="QLabel" name="label_6"> <widget class="QLabel" name="label_6">
<property name="text"> <property name="text">
<string/> <string/>
@ -1355,7 +1355,7 @@ padding: 4px;
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="2"> <item row="0" column="3">
<widget class="QLabel" name="label_2"> <widget class="QLabel" name="label_2">
<property name="text"> <property name="text">
<string>&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; <string>&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;
@ -1365,7 +1365,7 @@ p, li { white-space: pre-wrap; }
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="3"> <item row="0" column="4">
<widget class="QLabel" name="filesText"> <widget class="QLabel" name="filesText">
<property name="font"> <property name="font">
<font> <font>
@ -1378,26 +1378,6 @@ p, li { white-space: pre-wrap; }
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="0">
<widget class="QPushButton" name="expandFilesButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="images.qrc">
<normaloff>:/images/edit_remove24.png</normaloff>:/images/edit_remove24.png</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>
@ -1419,17 +1399,31 @@ p, li { white-space: pre-wrap; }
<enum>Qt::NoFocus</enum> <enum>Qt::NoFocus</enum>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>&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; <string>Download all Recommended Files</string>
p, li { white-space: pre-wrap; } </property>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt; <property name="icon">
&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;Download all Recommended Files&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <iconset resource="images.qrc">
<normaloff>:/images/down.png</normaloff>:/images/down.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="expandFilesButton">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property> </property>
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="images.qrc"> <iconset resource="images.qrc">
<normaloff>:/images/down.png</normaloff>:/images/down.png</iconset> <normaloff>:/images/edit_remove24.png</normaloff>:/images/edit_remove24.png</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -852,6 +852,29 @@ bool RetroShareLink::process(int flag)
return false; return false;
} }
/*static*/ int RetroShareLink::process(QStringList &urls, RetroShareLink::enumType type /*= RetroShareLink::TYPE_UNKNOWN*/, bool notify /*= true*/)
{
int processed = 0;
for (QStringList::iterator it = urls.begin(); it != urls.end(); it++) {
RetroShareLink link(*it);
if (link.valid() && (type == RetroShareLink::TYPE_UNKNOWN || link.type() == type)) {
if (link.process(0)) {
processed++;
}
}
}
if (notify) {
QString text = QObject::tr("%1 of %2 RetroShare links processed.").arg(processed).arg(urls.count());
QMessageBox mb(QObject::tr("Request Confirmation"), text, QMessageBox::Information, QMessageBox::Ok, 0, 0);
mb.setWindowIcon(QIcon(QString::fromUtf8(":/images/rstray3.png")));
mb.exec();
}
return processed;
}
void RSLinkClipboard::copyLinks(const std::vector<RetroShareLink>& links) void RSLinkClipboard::copyLinks(const std::vector<RetroShareLink>& links)
{ {
QString res ; QString res ;

View File

@ -38,7 +38,7 @@
#include <QUrl> #include <QUrl>
#define RSLINK_PROCESS_NOTIFY_SUCCESS 1 // notify on success #define RSLINK_PROCESS_NOTIFY_SUCCESS 1 // notify on success
#define RSLINK_PROCESS_NOTIFY_ERROR 2 // notify on error #define RSLINK_PROCESS_NOTIFY_ERROR 2 // notify on error
#define RSLINK_PROCESS_NOTIFY_ALL -1 #define RSLINK_PROCESS_NOTIFY_ALL -1
@ -93,6 +93,8 @@ class RetroShareLink
bool process(int flag); bool process(int flag);
static int process(QStringList &urls, RetroShareLink::enumType type = RetroShareLink::TYPE_UNKNOWN, bool notify = true);
private: private:
void fromString(const QString &url); void fromString(const QString &url);
void fromUrl(const QUrl &url); void fromUrl(const QUrl &url);

View File

@ -42,33 +42,6 @@ void EmbedInHtmlImg::InitFromAwkwardHash(const QHash< QString, QString >& hash)
myRE.setPattern(newRE); myRE.setPattern(newRE);
} }
QString formatText(const QString &text, unsigned int flag)
{
if (flag == 0) {
// nothing to do
return text;
}
QDomDocument doc;
if (doc.setContent(text) == false) {
// convert text with QTextBrowser
QTextBrowser textBrowser;
textBrowser.setText(text);
doc.setContent(textBrowser.toHtml());
}
QDomElement body = doc.documentElement();
if (flag & RSHTML_FORMATTEXT_EMBED_SMILEYS) {
embedHtml(doc, body, defEmbedImg);
}
if (flag & RSHTML_FORMATTEXT_EMBED_LINKS) {
EmbedInHtmlAhref defEmbedAhref;
embedHtml(doc, body, defEmbedAhref);
}
return doc.toString(-1); // -1 removes any annoying carriage return misinterpreted by QTextEdit
}
/** /**
* Parses a DOM tree and replaces text by HTML tags. * Parses a DOM tree and replaces text by HTML tags.
* The tree is traversed depth-first, but only through children of Element type * The tree is traversed depth-first, but only through children of Element type
@ -86,7 +59,7 @@ QString formatText(const QString &text, unsigned int flag)
* @param[in,out] currentElement The current node (which is of type Element) * @param[in,out] currentElement The current node (which is of type Element)
* @param[in] embedInfos The regular expression and the type of embedding to use * @param[in] embedInfos The regular expression and the type of embedding to use
*/ */
void embedHtml(QDomDocument& doc, QDomElement& currentElement, EmbedInHtml& embedInfos) static void embedHtml(QDomDocument& doc, QDomElement& currentElement, EmbedInHtml& embedInfos)
{ {
if(embedInfos.myRE.pattern().length() == 0) // we'll get stuck with an empty regexp if(embedInfos.myRE.pattern().length() == 0) // we'll get stuck with an empty regexp
return; return;
@ -174,4 +147,72 @@ void embedHtml(QDomDocument& doc, QDomElement& currentElement, EmbedInHtml& embe
} }
} }
QString formatText(const QString &text, unsigned int flag)
{
if (flag == 0) {
// nothing to do
return text;
}
QDomDocument doc;
if (doc.setContent(text) == false) {
// convert text with QTextBrowser
QTextBrowser textBrowser;
textBrowser.setText(text);
doc.setContent(textBrowser.toHtml());
}
QDomElement body = doc.documentElement();
if (flag & RSHTML_FORMATTEXT_EMBED_SMILEYS) {
embedHtml(doc, body, defEmbedImg);
}
if (flag & RSHTML_FORMATTEXT_EMBED_LINKS) {
EmbedInHtmlAhref defEmbedAhref;
embedHtml(doc, body, defEmbedAhref);
}
return doc.toString(-1); // -1 removes any annoying carriage return misinterpreted by QTextEdit
}
static void findElements(QDomDocument& doc, QDomElement& currentElement, const QString& nodeName, const QString& nodeAttribute, QStringList &elements)
{
if(nodeName.isEmpty()) {
return;
}
QDomNodeList children = currentElement.childNodes();
for (uint index = 0; index < children.length(); index++) {
QDomNode node = children.item(index);
if (node.isElement()) {
QDomElement element = node.toElement();
if (QString::compare(element.tagName(), nodeName, Qt::CaseInsensitive) == 0) {
if (nodeAttribute.isEmpty()) {
// use text
elements.append(element.text());
} else {
QString attribute = element.attribute(nodeAttribute);
if (attribute.isEmpty() == false) {
elements.append(attribute);
}
}
continue;
}
findElements(doc, element, nodeName, nodeAttribute, elements);
}
}
}
bool findAnchors(const QString &text, QStringList& urls)
{
QDomDocument doc;
if (doc.setContent(text) == false) {
return false;
}
QDomElement body = doc.documentElement();
findElements(doc, body, "a", "href", urls);
return true;
}
} // namespace RsHtml } // namespace RsHtml

View File

@ -109,8 +109,7 @@ public:
extern EmbedInHtmlImg defEmbedImg; extern EmbedInHtmlImg defEmbedImg;
QString formatText(const QString &text, unsigned int flag); QString formatText(const QString &text, unsigned int flag);
void embedHtml(QDomDocument& doc, QDomElement& currentElement, EmbedInHtml& embedInfos); bool findAnchors(const QString &text, QStringList& urls);
} // namespace RsHtml } // namespace RsHtml

View File

@ -1063,7 +1063,7 @@ p, li { white-space: pre-wrap; }
<translation>Alle als gelesen markieren</translation> <translation>Alle als gelesen markieren</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+33"/>
<source>Enable Auto-download</source> <source>Enable Auto-download</source>
<translation>Aktiviere Auto-Download</translation> <translation>Aktiviere Auto-Download</translation>
</message> </message>
@ -1073,7 +1073,7 @@ p, li { white-space: pre-wrap; }
<translation>Kanal erstellen</translation> <translation>Kanal erstellen</translation>
</message> </message>
<message> <message>
<location line="-199"/> <location line="-225"/>
<source>Unsubscribe</source> <source>Unsubscribe</source>
<translation>Abbestellen</translation> <translation>Abbestellen</translation>
</message> </message>
@ -2341,7 +2341,23 @@ p, li { white-space: pre-wrap; }
<translation>Drag&apos;n&apos;Drop Dateien aus den Suchergebnissen</translation> <translation>Drag&apos;n&apos;Drop Dateien aus den Suchergebnissen</translation>
</message> </message>
<message> <message>
<location filename="../gui/channels/CreateChannelMsg.cpp" line="+300"/> <location filename="../gui/channels/CreateChannelMsg.cpp" line="+162"/>
<location line="+6"/>
<source>Drop file error.</source>
<translation type="unfinished">Dateifehler bei Drag&apos;n&apos;Drop.</translation>
</message>
<message>
<location line="-6"/>
<source>Directory can&apos;t be dropped, only files are accepted.</source>
<translation type="unfinished">Ordner können nicht für Drag&apos;n&apos;Drop genutzt werden. Nur Dateien werden akzeptiert.</translation>
</message>
<message>
<location line="+6"/>
<source>File not found or file name not accepted.</source>
<translation type="unfinished">Datei nicht gefunden oder Dateiname nicht akzeptiert.</translation>
</message>
<message>
<location line="+141"/>
<source>Add Extra File</source> <source>Add Extra File</source>
<translation>Zusätzlich eine Datei hinzufügen</translation> <translation>Zusätzlich eine Datei hinzufügen</translation>
</message> </message>
@ -2538,17 +2554,17 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location filename="../gui/forums/CreateForumMsg.cpp" line="+88"/> <location filename="../gui/forums/CreateForumMsg.cpp" line="+88"/>
<location line="+4"/> <location line="+6"/>
<source>Drop file error.</source> <source>Drop file error.</source>
<translation>Dateifehler bei Drag&apos;n&apos;Drop.</translation> <translation>Dateifehler bei Drag&apos;n&apos;Drop.</translation>
</message> </message>
<message> <message>
<location line="-4"/> <location line="+0"/>
<source>File not found or file name not accepted.</source> <source>File not found or file name not accepted.</source>
<translation>Datei nicht gefunden oder Dateiname nicht akzeptiert.</translation> <translation>Datei nicht gefunden oder Dateiname nicht akzeptiert.</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="-6"/>
<source>Directory can&apos;t be dropped, only files are accepted.</source> <source>Directory can&apos;t be dropped, only files are accepted.</source>
<translation>Ordner können nicht für Drag&apos;n&apos;Drop genutzt werden. Nur Dateien werden akzeptiert.</translation> <translation>Ordner können nicht für Drag&apos;n&apos;Drop genutzt werden. Nur Dateien werden akzeptiert.</translation>
</message> </message>
@ -3551,7 +3567,7 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>ForumMsgItem</name> <name>ForumMsgItem</name>
<message> <message>
<location filename="../gui/feeds/ForumMsgItem.ui" line="+164"/> <location filename="../gui/feeds/ForumMsgItem.ui" line="+266"/>
<source>Remove Item</source> <source>Remove Item</source>
<translation>Eintrag entfernen</translation> <translation>Eintrag entfernen</translation>
</message> </message>
@ -3561,8 +3577,8 @@ p, li { white-space: pre-wrap; }
<translation>Erweitern</translation> <translation>Erweitern</translation>
</message> </message>
<message> <message>
<location line="+57"/> <location line="-85"/>
<location line="+182"/> <location line="+189"/>
<location line="+167"/> <location line="+167"/>
<source>Subject: </source> <source>Subject: </source>
<translation>Betreff:</translation> <translation>Betreff:</translation>
@ -3572,17 +3588,17 @@ p, li { white-space: pre-wrap; }
<translation type="obsolete">Gehe zum Forumbeitrag</translation> <translation type="obsolete">Gehe zum Forumbeitrag</translation>
</message> </message>
<message> <message>
<location line="-287"/> <location line="-311"/>
<source>Unsubscribe To Forum</source> <source>Unsubscribe To Forum</source>
<translation>Forum abbestellen</translation> <translation>Forum abbestellen</translation>
</message> </message>
<message> <message>
<location line="+36"/> <location line="+20"/>
<source>Reply</source> <source>Reply</source>
<translation>Antwort</translation> <translation>Antwort</translation>
</message> </message>
<message> <message>
<location line="+343"/> <location line="+383"/>
<source>Send</source> <source>Send</source>
<translation>Senden</translation> <translation>Senden</translation>
</message> </message>
@ -3592,7 +3608,7 @@ p, li { white-space: pre-wrap; }
<translation>Unterzeichnen</translation> <translation>Unterzeichnen</translation>
</message> </message>
<message> <message>
<location filename="../gui/feeds/ForumMsgItem.cpp" line="+91"/> <location filename="../gui/feeds/ForumMsgItem.cpp" line="+93"/>
<source>Forum Post</source> <source>Forum Post</source>
<translation>Beitrag</translation> <translation>Beitrag</translation>
</message> </message>
@ -3672,7 +3688,7 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>ForumsDialog</name> <name>ForumsDialog</name>
<message> <message>
<location filename="../gui/ForumsDialog.cpp" line="+275"/> <location filename="../gui/ForumsDialog.cpp" line="+276"/>
<source>Subscribe to Forum</source> <source>Subscribe to Forum</source>
<translation>Forum abonnieren</translation> <translation>Forum abonnieren</translation>
</message> </message>
@ -3771,7 +3787,7 @@ p, li { white-space: pre-wrap; }
<translation>keine</translation> <translation>keine</translation>
</message> </message>
<message> <message>
<location line="+542"/> <location line="+556"/>
<location line="+81"/> <location line="+81"/>
<source>RetroShare</source> <source>RetroShare</source>
<translation></translation> <translation></translation>
@ -3787,7 +3803,7 @@ p, li { white-space: pre-wrap; }
<translation>Du kannst einem anonymen Autor nicht antworten</translation> <translation>Du kannst einem anonymen Autor nicht antworten</translation>
</message> </message>
<message> <message>
<location line="-1363"/> <location line="-1377"/>
<source>Your Forums</source> <source>Your Forums</source>
<translation>Deine Foren</translation> <translation>Deine Foren</translation>
</message> </message>
@ -3864,24 +3880,24 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location line="+36"/> <location line="+36"/>
<location line="+276"/> <location line="+296"/>
<source>Date</source> <source>Date</source>
<translation>Datum</translation> <translation>Datum</translation>
</message> </message>
<message> <message>
<location line="-290"/> <location line="-310"/>
<location line="+295"/> <location line="+315"/>
<source>Title</source> <source>Title</source>
<translation>Titel</translation> <translation>Titel</translation>
</message> </message>
<message> <message>
<location line="-276"/> <location line="-296"/>
<location line="+281"/> <location line="+301"/>
<source>Author</source> <source>Author</source>
<translation>Autor</translation> <translation>Autor</translation>
</message> </message>
<message> <message>
<location line="-276"/> <location line="-296"/>
<source>Signed</source> <source>Signed</source>
<translation>Unterzeichnet</translation> <translation>Unterzeichnet</translation>
</message> </message>
@ -3909,7 +3925,12 @@ p, li { white-space: pre-wrap; }
<translation>Nächster Beitrag</translation> <translation>Nächster Beitrag</translation>
</message> </message>
<message> <message>
<location line="+187"/> <location line="+49"/>
<source>Download all files</source>
<translation>Alle Dateien runterladen</translation>
</message>
<message>
<location line="+158"/>
<source>Reply Message</source> <source>Reply Message</source>
<translation>Auf Beitrag antworten</translation> <translation>Auf Beitrag antworten</translation>
</message> </message>
@ -3930,7 +3951,7 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location filename="../gui/ForumsDialog.cpp" line="+123"/> <location filename="../gui/ForumsDialog.cpp" line="+123"/>
<location line="+1161"/> <location line="+1175"/>
<source>Start New Thread</source> <source>Start New Thread</source>
<translation>Erstelle neues Thema</translation> <translation>Erstelle neues Thema</translation>
</message> </message>
@ -3958,7 +3979,7 @@ p, li { white-space: pre-wrap; }
<translation>Inhalt</translation> <translation>Inhalt</translation>
</message> </message>
<message> <message>
<location filename="../gui/ForumsDialog.cpp" line="-1148"/> <location filename="../gui/ForumsDialog.cpp" line="-1162"/>
<location line="+3"/> <location line="+3"/>
<source>Mark as read</source> <source>Mark as read</source>
<translation>Als gelesen markieren</translation> <translation>Als gelesen markieren</translation>
@ -5633,7 +5654,7 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<name>MessageComposer</name> <name>MessageComposer</name>
<message> <message>
<location filename="../gui/msgs/MessageComposer.ui" line="+17"/> <location filename="../gui/msgs/MessageComposer.ui" line="+17"/>
<location filename="../gui/msgs/MessageComposer.cpp" line="+798"/> <location filename="../gui/msgs/MessageComposer.cpp" line="+791"/>
<source>Compose</source> <source>Compose</source>
<translation>Verfassen</translation> <translation>Verfassen</translation>
</message> </message>
@ -5860,7 +5881,7 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<translation>Blockquote hinzufügen</translation> <translation>Blockquote hinzufügen</translation>
</message> </message>
<message> <message>
<location filename="../gui/msgs/MessageComposer.cpp" line="-1123"/> <location filename="../gui/msgs/MessageComposer.cpp" line="-1116"/>
<source>&amp;Left</source> <source>&amp;Left</source>
<translation>&amp;Links</translation> <translation>&amp;Links</translation>
</message> </message>
@ -5880,7 +5901,7 @@ Bitte gib etwas Speicher frei und drücke OK.</translation>
<translation>&amp;Blocksatz</translation> <translation>&amp;Blocksatz</translation>
</message> </message>
<message> <message>
<location line="+213"/> <location line="+206"/>
<location line="+1605"/> <location line="+1605"/>
<source>Save Message</source> <source>Save Message</source>
<translation>Nachricht speichern</translation> <translation>Nachricht speichern</translation>
@ -6217,12 +6238,12 @@ Willst Du die Nachricht speichern ?</translation>
<translation>Von</translation> <translation>Von</translation>
</message> </message>
<message> <message>
<location line="+849"/> <location line="+843"/>
<source>Size</source> <source>Size</source>
<translation>Grösse</translation> <translation>Grösse</translation>
</message> </message>
<message> <message>
<location line="-452"/> <location line="-446"/>
<source>&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; <source>&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; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:8pt; font-weight:400; font-style:normal; text-decoration:none;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:8pt; font-weight:400; font-style:normal; text-decoration:none;&quot;&gt;
@ -6322,7 +6343,12 @@ p, li { white-space: pre-wrap; }
<translation>Gesendet</translation> <translation>Gesendet</translation>
</message> </message>
<message> <message>
<location line="+532"/> <location line="+241"/>
<source>Download all Recommended Files</source>
<translation>Alle Dateien runterladen</translation>
</message>
<message>
<location line="+285"/>
<source>Cc:</source> <source>Cc:</source>
<translation>Cc:</translation> <translation>Cc:</translation>
</message> </message>
@ -6384,13 +6410,13 @@ p, li { white-space: pre-wrap; }
<translation>Dokument drucken</translation> <translation>Dokument drucken</translation>
</message> </message>
<message> <message>
<location filename="../gui/MessagesDialog.ui" line="-910"/> <location filename="../gui/MessagesDialog.ui" line="-904"/>
<location filename="../gui/MessagesDialog.cpp" line="-1585"/> <location filename="../gui/MessagesDialog.cpp" line="-1585"/>
<source>Subject</source> <source>Subject</source>
<translation>Betreff</translation> <translation>Betreff</translation>
</message> </message>
<message> <message>
<location line="+532"/> <location line="+526"/>
<source>Subject:</source> <source>Subject:</source>
<translation>Betreff:</translation> <translation>Betreff:</translation>
</message> </message>
@ -6415,7 +6441,7 @@ p, li { white-space: pre-wrap; }
<translation>Prüfsumme</translation> <translation>Prüfsumme</translation>
</message> </message>
<message> <message>
<location line="-999"/> <location line="-993"/>
<source>Print</source> <source>Print</source>
<translation>Drucken</translation> <translation>Drucken</translation>
</message> </message>
@ -6476,15 +6502,14 @@ p, li { white-space: pre-wrap; }
<translation>Allen antworten</translation> <translation>Allen antworten</translation>
</message> </message>
<message> <message>
<location filename="../gui/MessagesDialog.ui" line="+603"/>
<source>&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; <source>&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; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:8pt; 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;Download all Recommended Files&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> &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;Download all Recommended Files&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&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;Arial&apos;; font-size:8pt; 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;Alle Dateien runterladen&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation type="obsolete">&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;Arial&apos;; font-size:8pt; 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;Alle Dateien runterladen&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location line="-171"/> <location filename="../gui/MessagesDialog.ui" line="+432"/>
<source>Total Inbox:</source> <source>Total Inbox:</source>
<translation>Posteingang gesamt:</translation> <translation>Posteingang gesamt:</translation>
</message> </message>
@ -8958,7 +8983,7 @@ Lockdatei:
<translation>Vielleicht ist das Passwort falsch</translation> <translation>Vielleicht ist das Passwort falsch</translation>
</message> </message>
<message> <message>
<location filename="../gui/RetroShareLink.cpp" line="+626"/> <location filename="../gui/RetroShareLink.cpp" line="+657"/>
<source>File Request Confirmation</source> <source>File Request Confirmation</source>
<translation>Bestätigung der Dateianforderung</translation> <translation>Bestätigung der Dateianforderung</translation>
</message> </message>
@ -9043,12 +9068,26 @@ Lockdatei:
<source>The receipient of the message is unknown.</source> <source>The receipient of the message is unknown.</source>
<translation>Der Empfänger der Nachricht ist unbekannt.</translation> <translation>Der Empfänger der Nachricht ist unbekannt.</translation>
</message> </message>
<message>
<location line="+34"/>
<source>%1 of %2 RetroShare links processed.</source>
<translation>%1 von %2 RetroShare Links verarbeitet.</translation>
</message>
<message>
<source>%1 of %2 RetroShare links processed</source>
<translation type="obsolete">%1 von %2 RetroShare Links verarbeitet.</translation>
</message>
<message>
<location line="+1"/>
<source>Request Confirmation</source>
<translation>Anfrage bestätigen</translation>
</message>
<message> <message>
<source>The forum message could not be found.</source> <source>The forum message could not be found.</source>
<translation type="obsolete">Der Forumbeitrag &quot;%1&quot; konnte nicht gefunden werden.</translation> <translation type="obsolete">Der Forumbeitrag &quot;%1&quot; konnte nicht gefunden werden.</translation>
</message> </message>
<message> <message>
<location line="-69"/> <location line="-104"/>
<location line="+11"/> <location line="+11"/>
<source>Channel Request canceled</source> <source>Channel Request canceled</source>
<translation>Kanalanfrage abgebrochen</translation> <translation>Kanalanfrage abgebrochen</translation>
@ -11989,7 +12028,7 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<location filename="../gui/TrustView.cpp" line="+241"/> <location filename="../gui/TrustView.cpp" line="+243"/>
<source>Showing: whole network</source> <source>Showing: whole network</source>
<translation>Anzeige: Ganzes Netzwerk</translation> <translation>Anzeige: Ganzes Netzwerk</translation>
</message> </message>