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.previousButton, SIGNAL(clicked()), this, SLOT(previousMessage()));
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.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
#if 0
void ForumsDialog::removemessage()

View File

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

View File

@ -1000,7 +1000,7 @@ background: white;}</string>
</property>
</widget>
</item>
<item row="0" column="5">
<item row="0" column="6">
<widget class="QPushButton" name="expandButton">
<property name="maximumSize">
<size>
@ -1026,6 +1026,26 @@ background: white;}</string>
</property>
</widget>
</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>
</item>
<item row="0" column="0">

View File

@ -1345,7 +1345,7 @@ padding: 4px;
<property name="spacing">
<number>6</number>
</property>
<item row="0" column="1">
<item row="0" column="2">
<widget class="QLabel" name="label_6">
<property name="text">
<string/>
@ -1355,7 +1355,7 @@ padding: 4px;
</property>
</widget>
</item>
<item row="0" column="2">
<item row="0" column="3">
<widget class="QLabel" name="label_2">
<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;
@ -1365,7 +1365,7 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="0" column="3">
<item row="0" column="4">
<widget class="QLabel" name="filesText">
<property name="font">
<font>
@ -1378,26 +1378,6 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</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>
</item>
<item>
@ -1419,17 +1399,31 @@ p, li { white-space: pre-wrap; }
<enum>Qt::NoFocus</enum>
</property>
<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;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Arial'; 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;</string>
<string>Download all Recommended Files</string>
</property>
<property name="icon">
<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 name="text">
<string/>
</property>
<property name="icon">
<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>
</widget>
</item>

View File

@ -852,6 +852,29 @@ bool RetroShareLink::process(int flag)
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)
{
QString res ;

View File

@ -38,7 +38,7 @@
#include <QUrl>
#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
@ -93,6 +93,8 @@ class RetroShareLink
bool process(int flag);
static int process(QStringList &urls, RetroShareLink::enumType type = RetroShareLink::TYPE_UNKNOWN, bool notify = true);
private:
void fromString(const QString &url);
void fromUrl(const QUrl &url);

View File

@ -42,33 +42,6 @@ void EmbedInHtmlImg::InitFromAwkwardHash(const QHash< QString, QString >& hash)
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.
* 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] 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
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

View File

@ -109,8 +109,7 @@ public:
extern EmbedInHtmlImg defEmbedImg;
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

View File

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