mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-01-15 09:27:09 -05:00
Added new RetroShare link formats:
retroshare://forum? retroshare://channel?... Added "Go to" from the news feed of forums and channels. Added "Copy RetroShare Link" to the forum/channel tree and messagees. Fixed style sheet of the auto download button in ChannelFeed. Fixed german language. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4162 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
d058bf9511
commit
e5f3518225
@ -40,10 +40,9 @@
|
||||
#include "channels/EditChanDetails.h"
|
||||
#include "channels/ShareKey.h"
|
||||
#include "notifyqt.h"
|
||||
#include "RetroShareLink.h"
|
||||
|
||||
#define CHAN_DEFAULT_IMAGE ":/images/channels.png"
|
||||
#define ENABLE_AUTO_DL "Enable Auto-Download"
|
||||
#define DISABLE_AUTO_DL "Disable Auto-Download"
|
||||
|
||||
#define WARNING_LIMIT 3600*24*2
|
||||
|
||||
@ -188,6 +187,9 @@ void ChannelFeed::channelListCustomPopupMenu( QPoint point )
|
||||
contextMnu.addAction( restoreKeysAct );
|
||||
}
|
||||
|
||||
QAction *action = contextMnu.addAction(QIcon(":/images/copyrslink.png"), tr("Copy RetroShare Link"), this, SLOT(copyChannelLink()));
|
||||
action->setEnabled(!mChannelId.empty());
|
||||
|
||||
contextMnu.exec(QCursor::pos());
|
||||
}
|
||||
|
||||
@ -221,6 +223,23 @@ void ChannelFeed::shareKey()
|
||||
shareUi.exec();
|
||||
}
|
||||
|
||||
void ChannelFeed::copyChannelLink()
|
||||
{
|
||||
if (mChannelId.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ChannelInfo ci;
|
||||
if (rsChannels->getChannelInfo(mChannelId, ci)) {
|
||||
RetroShareLink link(RetroShareLink::TYPE_CHANNEL, QString::fromStdWString(ci.channelName), QString::fromStdString(ci.channelId), "");
|
||||
if (link.valid() && link.type() == RetroShareLink::TYPE_CHANNEL) {
|
||||
std::vector<RetroShareLink> urls;
|
||||
urls.push_back(link);
|
||||
RSLinkClipboard::copyLinks(urls);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ChannelFeed::createMsg()
|
||||
{
|
||||
if (mChannelId.empty()) {
|
||||
@ -245,10 +264,7 @@ void ChannelFeed::selectChannel(const QString &id)
|
||||
bool autoDl = false;
|
||||
rsChannels->channelGetAutoDl(mChannelId, autoDl);
|
||||
|
||||
if(autoDl)
|
||||
autoDownload->setText(QString(DISABLE_AUTO_DL));
|
||||
else
|
||||
autoDownload->setText(QString(ENABLE_AUTO_DL));
|
||||
setAutoDownloadButton(autoDl);
|
||||
|
||||
updateChannelMsgs();
|
||||
}
|
||||
@ -427,6 +443,7 @@ void ChannelFeed::updateChannelMsgs()
|
||||
subscribeButton->setEnabled(false);
|
||||
unsubscribeButton->setEnabled(false);
|
||||
setAllAsReadButton->setEnabled(false);
|
||||
autoDownload->setEnabled(false);
|
||||
nameLabel->setText(tr("No Channel Selected"));
|
||||
iconLabel->setPixmap(QPixmap(":/images/channels.png"));
|
||||
iconLabel->setEnabled(false);
|
||||
@ -577,14 +594,58 @@ void ChannelFeed::toggleAutoDownload(){
|
||||
// if auto dl is set true, then set false
|
||||
if(autoDl){
|
||||
rsChannels->channelSetAutoDl(mChannelId, false);
|
||||
autoDownload->setText(QString(ENABLE_AUTO_DL));
|
||||
}else{
|
||||
rsChannels->channelSetAutoDl(mChannelId, true);
|
||||
autoDownload->setText(QString(DISABLE_AUTO_DL));
|
||||
}
|
||||
setAutoDownloadButton(!autoDl);
|
||||
}
|
||||
else{
|
||||
std::cerr << "Auto Download failed to set"
|
||||
<< std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
bool ChannelFeed::navigate(const std::string& channelId, const std::string& msgId)
|
||||
{
|
||||
if (channelId.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (treeWidget->activateId(QString::fromStdString(channelId), msgId.empty()) == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Messages are filled in selectChannel */
|
||||
if (mChannelId != channelId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (msgId.empty()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Search exisiting item */
|
||||
std::list<ChanMsgItem*>::iterator mit;
|
||||
for (mit = mChanMsgItems.begin(); mit != mChanMsgItems.end(); mit++) {
|
||||
ChanMsgItem *item = *mit;
|
||||
if (item->msgId() == msgId) {
|
||||
// the next two lines are necessary to calculate the layout of the widgets in the scroll area (maybe there is a better solution)
|
||||
item->show();
|
||||
QCoreApplication::processEvents();
|
||||
|
||||
scrollArea->ensureWidgetVisible(item, 0, 0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void ChannelFeed::setAutoDownloadButton(bool autoDl)
|
||||
{
|
||||
if (autoDl) {
|
||||
autoDownload->setText(tr("Disable Auto-Download"));
|
||||
}else{
|
||||
autoDownload->setText(tr("Enable Auto-Download"));
|
||||
}
|
||||
}
|
||||
|
@ -49,6 +49,8 @@ public:
|
||||
virtual void deleteFeedItem(QWidget *item, uint32_t type);
|
||||
virtual void openChat(std::string peerId);
|
||||
|
||||
bool navigate(const std::string& channelId, const std::string& msgId);
|
||||
|
||||
/* overloaded from RsAuthUpdatePage */
|
||||
virtual void updateDisplay();
|
||||
|
||||
@ -69,6 +71,7 @@ private slots:
|
||||
void restoreChannelKeys();
|
||||
void editChannelDetail();
|
||||
void shareKey();
|
||||
void copyChannelLink();
|
||||
|
||||
void channelMsgReadSatusChanged(const QString& channelId, const QString& msgId, int status);
|
||||
|
||||
@ -79,6 +82,8 @@ private:
|
||||
|
||||
void processSettings(bool load);
|
||||
|
||||
void setAutoDownloadButton(bool autoDl);
|
||||
|
||||
std::string mChannelId; /* current Channel */
|
||||
|
||||
/* Layout Pointers */
|
||||
|
@ -507,7 +507,27 @@ border-image: url(:/images/btn_26_pressed.png) 4;
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5">
|
||||
<widget class="QPushButton" name="autoDownload">
|
||||
<widget class="QToolButton" name="autoDownload">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QToolButton, QPushButton, QComboBox {
|
||||
border-image: url(:/images/btn_26.png) 4;
|
||||
border-width: 4;
|
||||
padding: 0px 6px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
QToolButton:hover, QPushButton:hover, QComboBox:hover {
|
||||
border-image: url(:/images/btn_26_hover.png) 4;
|
||||
}
|
||||
|
||||
QToolButton:disabled, QPushButton:disabled, QComboBox::disabled {
|
||||
color:gray;
|
||||
}
|
||||
|
||||
QToolButton:pressed, QPushButton:pressed{
|
||||
border-image: url(:/images/btn_26_pressed.png) 4;
|
||||
}</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Enable Auto-download</string>
|
||||
</property>
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include "common/Emoticons.h"
|
||||
#include "common/RSItemDelegate.h"
|
||||
#include "common/PopularityDefs.h"
|
||||
#include "RetroShareLink.h"
|
||||
|
||||
#include <retroshare/rspeers.h>
|
||||
#include <retroshare/rsforums.h>
|
||||
@ -60,6 +61,7 @@
|
||||
#define IMAGE_INFO ":/images/info16.png"
|
||||
#define IMAGE_NEWFORUM ":/images/new_forum16.png"
|
||||
#define IMAGE_FORUMAUTHD ":/images/konv_message2.png"
|
||||
#define IMAGE_COPYLINK ":/images/copyrslink.png"
|
||||
|
||||
#define VIEW_LAST_POST 0
|
||||
#define VIEW_THREADED 1
|
||||
@ -274,8 +276,6 @@ void ForumsDialog::forumListCustomPopupMenu( QPoint point )
|
||||
action = contextMnu.addAction(QIcon(IMAGE_UNSUBSCRIBE), tr("Unsubscribe to Forum"), this, SLOT(unsubscribeToForum()));
|
||||
action->setEnabled (!mCurrForumId.empty() && m_bIsForumSubscribed);
|
||||
|
||||
|
||||
|
||||
contextMnu.addSeparator();
|
||||
|
||||
contextMnu.addAction(QIcon(IMAGE_NEWFORUM), tr("New Forum"), this, SLOT(newforum()));
|
||||
@ -286,13 +286,15 @@ void ForumsDialog::forumListCustomPopupMenu( QPoint point )
|
||||
action = contextMnu.addAction(QIcon(":/images/settings16.png"), tr("Edit Forum Details"), this, SLOT(editForumDetails()));
|
||||
action->setEnabled (!mCurrForumId.empty () && m_bIsForumAdmin);
|
||||
|
||||
|
||||
QAction *restoreKeysAct = new QAction(QIcon(":/images/settings16.png"), tr("Restore Publish Rights for Forum" ), &contextMnu);
|
||||
connect( restoreKeysAct , SIGNAL( triggered() ), this, SLOT( restoreForumKeys() ) );
|
||||
|
||||
restoreKeysAct->setEnabled(!mCurrForumId.empty() && !m_bIsForumAdmin);
|
||||
contextMnu.addAction( restoreKeysAct);
|
||||
|
||||
action = contextMnu.addAction(QIcon(IMAGE_COPYLINK), tr("Copy RetroShare Link"), this, SLOT(copyForumLink()));
|
||||
action->setEnabled(!mCurrForumId.empty());
|
||||
|
||||
contextMnu.addSeparator();
|
||||
|
||||
action = contextMnu.addAction(QIcon(":/images/message-mail-read.png"), tr("Mark all as read"), this, SLOT(markMsgAsReadAll()));
|
||||
@ -336,8 +338,6 @@ void ForumsDialog::threadListCustomPopupMenu( QPoint point )
|
||||
QAction *markMsgAsUnreadChildren = new QAction(QIcon(":/images/message-mail.png"), tr("Mark as unread") + " (" + tr ("with children") + ")", &contextMnu);
|
||||
connect(markMsgAsUnreadChildren , SIGNAL(triggered()), this, SLOT(markMsgAsUnreadChildren()));
|
||||
|
||||
|
||||
|
||||
if (m_bIsForumSubscribed) {
|
||||
QList<QTreeWidgetItem*> Rows;
|
||||
QList<QTreeWidgetItem*> RowsRead;
|
||||
@ -385,6 +385,8 @@ void ForumsDialog::threadListCustomPopupMenu( QPoint point )
|
||||
contextMnu.addAction( replyAct);
|
||||
contextMnu.addAction( newthreadAct);
|
||||
contextMnu.addAction( replyauthorAct);
|
||||
QAction* action = contextMnu.addAction(QIcon(IMAGE_COPYLINK), tr( "Copy RetroShare Link"), this, SLOT(copyMessageLink()));
|
||||
action->setEnabled(!mCurrForumId.empty() && !mCurrThreadId.empty());
|
||||
contextMnu.addSeparator();
|
||||
contextMnu.addAction(markMsgAsRead);
|
||||
contextMnu.addAction(markMsgAsReadChildren);
|
||||
@ -1395,6 +1397,40 @@ void ForumsDialog::markMsgAsUnreadAll()
|
||||
markMsgAsReadUnread(false, true, true);
|
||||
}
|
||||
|
||||
void ForumsDialog::copyForumLink()
|
||||
{
|
||||
if (mCurrForumId.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ForumInfo fi;
|
||||
if (rsForums->getForumInfo(mCurrForumId, fi)) {
|
||||
RetroShareLink link(RetroShareLink::TYPE_FORUM, QString::fromStdWString(fi.forumName), QString::fromStdString(fi.forumId), "");
|
||||
if (link.valid() && link.type() == RetroShareLink::TYPE_FORUM) {
|
||||
std::vector<RetroShareLink> urls;
|
||||
urls.push_back(link);
|
||||
RSLinkClipboard::copyLinks(urls);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ForumsDialog::copyMessageLink()
|
||||
{
|
||||
if (mCurrForumId.empty() || mCurrThreadId.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ForumInfo fi;
|
||||
if (rsForums->getForumInfo(mCurrForumId, fi)) {
|
||||
RetroShareLink link(RetroShareLink::TYPE_FORUM, QString::fromStdWString(fi.forumName), QString::fromStdString(mCurrForumId), QString::fromStdString(mCurrThreadId));
|
||||
if (link.valid() && link.type() == RetroShareLink::TYPE_FORUM) {
|
||||
std::vector<RetroShareLink> urls;
|
||||
urls.push_back(link);
|
||||
RSLinkClipboard::copyLinks(urls);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ForumsDialog::newforum()
|
||||
{
|
||||
CreateForum cf (this);
|
||||
@ -1622,3 +1658,38 @@ void ForumsDialog::updateMessageSummaryList(std::string forumId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool ForumsDialog::navigate(const std::string& forumId, const std::string& msgId)
|
||||
{
|
||||
if (forumId.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ui.forumTreeWidget->activateId(QString::fromStdString(forumId), msgId.empty()) == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Threads are filled in changedForum */
|
||||
if (mCurrForumId != forumId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (msgId.empty()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Search exisiting item */
|
||||
QTreeWidgetItemIterator itemIterator(ui.threadTreeWidget);
|
||||
QTreeWidgetItem *item = NULL;
|
||||
while ((item = *itemIterator) != NULL) {
|
||||
itemIterator++;
|
||||
|
||||
if (item->data(COLUMN_THREAD_DATA, ROLE_THREAD_MSGID).toString().toStdString() == msgId) {
|
||||
ui.threadTreeWidget->setCurrentItem(item);
|
||||
ui.threadTreeWidget->setFocus();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -36,6 +36,8 @@ public:
|
||||
ForumsDialog(QWidget *parent = 0);
|
||||
~ForumsDialog();
|
||||
|
||||
bool navigate(const std::string& forumId, const std::string& msgId);
|
||||
|
||||
/* overloaded from RsAuthUpdatePage */
|
||||
virtual void updateDisplay();
|
||||
|
||||
@ -61,6 +63,8 @@ private slots:
|
||||
void markMsgAsUnread();
|
||||
void markMsgAsUnreadAll();
|
||||
void markMsgAsUnreadChildren();
|
||||
void copyForumLink();
|
||||
void copyMessageLink();
|
||||
|
||||
/* handle splitter */
|
||||
void togglethreadview();
|
||||
|
@ -29,16 +29,24 @@
|
||||
#include <QObject>
|
||||
|
||||
#include "RetroShareLink.h"
|
||||
#include "MainWindow.h"
|
||||
#include "ForumsDialog.h"
|
||||
#include "ChannelFeed.h"
|
||||
#include "util/misc.h"
|
||||
#include "common/PeerDefs.h"
|
||||
|
||||
#include <retroshare/rsfiles.h>
|
||||
#include <retroshare/rspeers.h>
|
||||
#include <retroshare/rsforums.h>
|
||||
#include <retroshare/rschannels.h>
|
||||
|
||||
//#define DEBUG_RSLINK 1
|
||||
|
||||
#define HOST_FILE "file"
|
||||
#define HOST_PERSON "person"
|
||||
#define HOST_FORUM "forum"
|
||||
#define HOST_CHANNEL "channel"
|
||||
#define HOST_REGEXP "file|person|forum|channel"
|
||||
|
||||
#define FILE_NAME "name"
|
||||
#define FILE_SIZE "size"
|
||||
@ -47,6 +55,14 @@
|
||||
#define PERSON_NAME "name"
|
||||
#define PERSON_HASH "hash"
|
||||
|
||||
#define FORUM_NAME "name"
|
||||
#define FORUM_ID "id"
|
||||
#define FORUM_MSGID "msgid"
|
||||
|
||||
#define CHANNEL_NAME "name"
|
||||
#define CHANNEL_ID "id"
|
||||
#define CHANNEL_MSGID "msgid"
|
||||
|
||||
RetroShareLink::RetroShareLink(const QUrl& url)
|
||||
{
|
||||
fromUrl(url);
|
||||
@ -150,6 +166,26 @@ void RetroShareLink::fromUrl(const QUrl& url)
|
||||
return;
|
||||
}
|
||||
|
||||
if (url.host() == HOST_FORUM) {
|
||||
_type = TYPE_FORUM;
|
||||
_name = url.queryItemValue(FORUM_NAME);
|
||||
_hash = url.queryItemValue(FORUM_ID);
|
||||
_msgId = url.queryItemValue(FORUM_MSGID);
|
||||
_size = 0;
|
||||
check();
|
||||
return;
|
||||
}
|
||||
|
||||
if (url.host() == HOST_CHANNEL) {
|
||||
_type = TYPE_CHANNEL;
|
||||
_name = url.queryItemValue(CHANNEL_NAME);
|
||||
_hash = url.queryItemValue(CHANNEL_ID);
|
||||
_msgId = url.queryItemValue(CHANNEL_MSGID);
|
||||
_size = 0;
|
||||
check();
|
||||
return;
|
||||
}
|
||||
|
||||
// bad link
|
||||
|
||||
#ifdef DEBUG_RSLINK
|
||||
@ -158,6 +194,7 @@ void RetroShareLink::fromUrl(const QUrl& url)
|
||||
clear();
|
||||
}
|
||||
|
||||
// file
|
||||
RetroShareLink::RetroShareLink(const QString & name, uint64_t size, const QString & hash)
|
||||
: _name(name),_size(size),_hash(hash)
|
||||
{
|
||||
@ -166,6 +203,7 @@ RetroShareLink::RetroShareLink(const QString & name, uint64_t size, const QStrin
|
||||
check() ;
|
||||
}
|
||||
|
||||
// person
|
||||
RetroShareLink::RetroShareLink(const QString & name, const QString & hash)
|
||||
: _name(name),_size(0),_hash(hash)
|
||||
{
|
||||
@ -174,6 +212,28 @@ RetroShareLink::RetroShareLink(const QString & name, const QString & hash)
|
||||
check() ;
|
||||
}
|
||||
|
||||
// forum, channel
|
||||
RetroShareLink::RetroShareLink(enumType type, const QString& name, const QString& id, const QString& msgId)
|
||||
: _name(name),_size(0),_hash(id),_msgId(msgId)
|
||||
{
|
||||
_valid = false;
|
||||
_type = TYPE_UNKNOWN;
|
||||
|
||||
switch (type) {
|
||||
case TYPE_UNKNOWN:
|
||||
case TYPE_FILE:
|
||||
case TYPE_PERSON:
|
||||
// wrong type
|
||||
break;
|
||||
case TYPE_FORUM:
|
||||
case TYPE_CHANNEL:
|
||||
_type = type;
|
||||
break;
|
||||
}
|
||||
|
||||
check() ;
|
||||
}
|
||||
|
||||
void RetroShareLink::clear()
|
||||
{
|
||||
_valid = false;
|
||||
@ -208,6 +268,26 @@ void RetroShareLink::check()
|
||||
if(_name.isEmpty())
|
||||
_valid = false;
|
||||
|
||||
if(_hash.isEmpty())
|
||||
_valid = false;
|
||||
break;
|
||||
case TYPE_FORUM:
|
||||
if(_size != 0)
|
||||
_valid = false;
|
||||
|
||||
if(_name.isEmpty())
|
||||
_valid = false;
|
||||
|
||||
if(_hash.isEmpty())
|
||||
_valid = false;
|
||||
break;
|
||||
case TYPE_CHANNEL:
|
||||
if(_size != 0)
|
||||
_valid = false;
|
||||
|
||||
if(_name.isEmpty())
|
||||
_valid = false;
|
||||
|
||||
if(_hash.isEmpty())
|
||||
_valid = false;
|
||||
break;
|
||||
@ -254,6 +334,40 @@ QString RetroShareLink::toString(bool encoded /*= true*/) const
|
||||
return url.toEncoded();
|
||||
}
|
||||
|
||||
return url.toString();
|
||||
}
|
||||
case TYPE_FORUM:
|
||||
{
|
||||
QUrl url;
|
||||
url.setScheme(RSLINK_SCHEME);
|
||||
url.setHost(HOST_FORUM);
|
||||
url.addQueryItem(FORUM_NAME, _name);
|
||||
url.addQueryItem(FORUM_ID, _hash);
|
||||
if (!_msgId.isEmpty()) {
|
||||
url.addQueryItem(FORUM_MSGID, _msgId);
|
||||
}
|
||||
|
||||
if (encoded) {
|
||||
return url.toEncoded();
|
||||
}
|
||||
|
||||
return url.toString();
|
||||
}
|
||||
case TYPE_CHANNEL:
|
||||
{
|
||||
QUrl url;
|
||||
url.setScheme(RSLINK_SCHEME);
|
||||
url.setHost(HOST_CHANNEL);
|
||||
url.addQueryItem(CHANNEL_NAME, _name);
|
||||
url.addQueryItem(CHANNEL_ID, _hash);
|
||||
if (!_msgId.isEmpty()) {
|
||||
url.addQueryItem(CHANNEL_MSGID, _msgId);
|
||||
}
|
||||
|
||||
if (encoded) {
|
||||
return url.toEncoded();
|
||||
}
|
||||
|
||||
return url.toString();
|
||||
}
|
||||
}
|
||||
@ -425,6 +539,80 @@ bool RetroShareLink::process(int flag)
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
case TYPE_FORUM:
|
||||
{
|
||||
#ifdef DEBUG_RSLINK
|
||||
std::cerr << " RetroShareLink::process ForumRequest : name : " << name().toStdString() << ". id : " << hash().toStdString() << ". msgId : " << msgId().toStdString() << std::endl;
|
||||
#endif
|
||||
|
||||
ForumInfo fi;
|
||||
if (!rsForums->getForumInfo(id().toStdString(), fi)) {
|
||||
if (flag & RSLINK_PROCESS_NOTIFY_ERROR) {
|
||||
QMessageBox mb(QObject::tr("Forum Request canceled"), QObject::tr("The forum \"%1\" could not be found.").arg(name()),QMessageBox::Critical,QMessageBox::Ok,0,0);
|
||||
mb.setWindowIcon(QIcon(QString::fromUtf8(":/images/rstray3.png")));
|
||||
mb.exec();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
ForumMsgInfo msg;
|
||||
if (!msgId().isEmpty()) {
|
||||
if (!rsForums->getForumMessage(fi.forumId, msgId().toStdString(), msg)) {
|
||||
if (flag & RSLINK_PROCESS_NOTIFY_ERROR) {
|
||||
QMessageBox mb(QObject::tr("Forum Request canceled"), QObject::tr("The forum message in forum \"%1\" could not be found.").arg(name()),QMessageBox::Critical,QMessageBox::Ok,0,0);
|
||||
mb.setWindowIcon(QIcon(QString::fromUtf8(":/images/rstray3.png")));
|
||||
mb.exec();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
MainWindow::showWindow(MainWindow::Forums);
|
||||
ForumsDialog *forumsDialog = dynamic_cast<ForumsDialog*>(MainWindow::getPage(MainWindow::Forums));
|
||||
if (!forumsDialog) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return forumsDialog->navigate(fi.forumId, msg.msgId);
|
||||
}
|
||||
|
||||
case TYPE_CHANNEL:
|
||||
{
|
||||
#ifdef DEBUG_RSLINK
|
||||
std::cerr << " RetroShareLink::process ChannelRequest : name : " << name().toStdString() << ". id : " << hash().toStdString() << ". msgId : " << msgId().toStdString() << std::endl;
|
||||
#endif
|
||||
|
||||
ChannelInfo ci;
|
||||
if (!rsChannels->getChannelInfo(id().toStdString(), ci)) {
|
||||
if (flag & RSLINK_PROCESS_NOTIFY_ERROR) {
|
||||
QMessageBox mb(QObject::tr("Channel Request canceled"), QObject::tr("The channel \"%1\" could not be found.").arg(name()),QMessageBox::Critical,QMessageBox::Ok,0,0);
|
||||
mb.setWindowIcon(QIcon(QString::fromUtf8(":/images/rstray3.png")));
|
||||
mb.exec();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
ChannelMsgInfo msg;
|
||||
if (!msgId().isEmpty()) {
|
||||
if (!rsChannels->getChannelMessage(ci.channelId, msgId().toStdString(), msg)) {
|
||||
if (flag & RSLINK_PROCESS_NOTIFY_ERROR) {
|
||||
QMessageBox mb(QObject::tr("Channel Request canceled"), QObject::tr("The channel message in channel \"%1\" could not be found.").arg(name()),QMessageBox::Critical,QMessageBox::Ok,0,0);
|
||||
mb.setWindowIcon(QIcon(QString::fromUtf8(":/images/rstray3.png")));
|
||||
mb.exec();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
MainWindow::showWindow(MainWindow::Channels);
|
||||
ChannelFeed *channelFeed = dynamic_cast<ChannelFeed*>(MainWindow::getPage(MainWindow::Channels));
|
||||
if (!channelFeed) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return channelFeed->navigate(ci.channelId, msg.msgId);
|
||||
}
|
||||
}
|
||||
|
||||
std::cerr << " RetroShareLink::process unknown type: " << type() << std::endl;
|
||||
@ -460,7 +648,7 @@ void RSLinkClipboard::parseClipboard(std::vector<RetroShareLink> &links)
|
||||
|
||||
std::cerr << "Parsing clipboard:" << text.toStdString() << std::endl ;
|
||||
|
||||
QRegExp rx("retroshare://(file|person)[^\r\n]+") ;
|
||||
QRegExp rx(QString("retroshare://(%1)[^\r\n]+").arg(HOST_REGEXP));
|
||||
|
||||
int pos = 0;
|
||||
|
||||
|
@ -47,7 +47,7 @@
|
||||
class RetroShareLink
|
||||
{
|
||||
public:
|
||||
enum enumType { TYPE_UNKNOWN, TYPE_FILE, TYPE_PERSON };
|
||||
enum enumType { TYPE_UNKNOWN, TYPE_FILE, TYPE_PERSON, TYPE_FORUM, TYPE_CHANNEL };
|
||||
|
||||
public:
|
||||
RetroShareLink(const QUrl& url);
|
||||
@ -56,11 +56,15 @@ class RetroShareLink
|
||||
RetroShareLink(const QString& name, uint64_t size, const QString& hash);
|
||||
// person
|
||||
RetroShareLink(const QString& name, const QString& hash);
|
||||
// forum, channel
|
||||
RetroShareLink(enumType type, const QString& name, const QString& id, const QString& msgId);
|
||||
|
||||
enumType type() const {return _type; }
|
||||
uint64_t size() const { return _size ; }
|
||||
const QString& name() const { return _name ; }
|
||||
const QString& hash() const { return _hash ; }
|
||||
const QString& id() const { return _hash ; }
|
||||
const QString& msgId() const { return _msgId ; }
|
||||
|
||||
// get nice name for anchor
|
||||
QString niceName() const;
|
||||
@ -97,7 +101,8 @@ class RetroShareLink
|
||||
enumType _type;
|
||||
QString _name;
|
||||
uint64_t _size;
|
||||
QString _hash;
|
||||
QString _hash; // or id (forum, channel)
|
||||
QString _msgId; // id of the message (forum, channel)
|
||||
};
|
||||
|
||||
/// This class handles the copy/paste of links. Every member is static to ensure unicity.
|
||||
|
@ -342,6 +342,41 @@ void GroupTreeWidget::setUnreadCount(QTreeWidgetItem *item, int unreadCount)
|
||||
|
||||
}
|
||||
|
||||
QTreeWidgetItem *GroupTreeWidget::getItemFromId(const QString &id)
|
||||
{
|
||||
if (id.isEmpty()) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Search exisiting item */
|
||||
QTreeWidgetItemIterator itemIterator(ui->treeWidget);
|
||||
QTreeWidgetItem *item;
|
||||
while ((item = *itemIterator) != NULL) {
|
||||
itemIterator++;
|
||||
|
||||
if (item->parent() == NULL) {
|
||||
continue;
|
||||
}
|
||||
if (item->data(COLUMN_DATA, ROLE_ID).toString() == id) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QTreeWidgetItem *GroupTreeWidget::activateId(const QString &id, bool focus)
|
||||
{
|
||||
QTreeWidgetItem *item = getItemFromId(id);
|
||||
if (item == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ui->treeWidget->setCurrentItem(item);
|
||||
if (focus) {
|
||||
ui->treeWidget->setFocus();
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
void GroupTreeWidget::calculateScore(QTreeWidgetItem *item)
|
||||
{
|
||||
if (item) {
|
||||
|
@ -76,6 +76,9 @@ public:
|
||||
// Set the unread count of an item
|
||||
void setUnreadCount(QTreeWidgetItem *item, int unreadCount);
|
||||
|
||||
QTreeWidgetItem *getItemFromId(const QString &id);
|
||||
QTreeWidgetItem *activateId(const QString &id, bool focus);
|
||||
|
||||
signals:
|
||||
void treeCustomContextMenuRequested(const QPoint &pos);
|
||||
void treeCurrentItemChanged(const QString &id);
|
||||
|
@ -28,6 +28,9 @@
|
||||
#include "SubFileItem.h"
|
||||
#include "gui/notifyqt.h"
|
||||
#include "util/misc.h"
|
||||
#include "gui/MainWindow.h"
|
||||
#include "gui/ChannelFeed.h"
|
||||
#include "gui/RetroShareLink.h"
|
||||
|
||||
#include <retroshare/rschannels.h>
|
||||
|
||||
@ -53,11 +56,13 @@ ChanMsgItem::ChanMsgItem(FeedHolder *parent, uint32_t feedId, std::string chanId
|
||||
/* general ones */
|
||||
connect( expandButton, SIGNAL( clicked( void ) ), this, SLOT( toggle ( void ) ) );
|
||||
connect( clearButton, SIGNAL( clicked( void ) ), this, SLOT( removeItem ( void ) ) );
|
||||
connect( gotoButton, SIGNAL( clicked( void ) ), this, SLOT( gotoHome ( void ) ) );
|
||||
|
||||
/* specific */
|
||||
connect( unsubscribeButton, SIGNAL( clicked( void ) ), this, SLOT( unsubscribeChannel ( void ) ) );
|
||||
connect( downloadButton, SIGNAL( clicked( void ) ), this, SLOT( download ( void ) ) );
|
||||
connect( playButton, SIGNAL( clicked( void ) ), this, SLOT( play ( void ) ) );
|
||||
connect( copyLinkButton, SIGNAL( clicked( void ) ), this, SLOT( copyLink ( void ) ) );
|
||||
|
||||
connect( readButton, SIGNAL( toggled(bool) ), this, SLOT( readToggled(bool) ) );
|
||||
connect( NotifyQt::getInstance(), SIGNAL(channelMsgReadSatusChanged(QString,QString,int)), this, SLOT(channelMsgReadSatusChanged(QString,QString,int)), Qt::QueuedConnection);
|
||||
@ -76,7 +81,6 @@ ChanMsgItem::ChanMsgItem(FeedHolder *parent, uint32_t feedId, std::string chanId
|
||||
updateItem();
|
||||
}
|
||||
|
||||
|
||||
void ChanMsgItem::updateItemStatic()
|
||||
{
|
||||
/* fill in */
|
||||
@ -93,8 +97,6 @@ void ChanMsgItem::updateItemStatic()
|
||||
if (!rsChannels->getChannelMessage(mChanId, mMsgId, cmi))
|
||||
return;
|
||||
|
||||
|
||||
|
||||
m_inUpdateItemStatic = true;
|
||||
|
||||
QString title;
|
||||
@ -114,8 +116,10 @@ void ChanMsgItem::updateItemStatic()
|
||||
} else {
|
||||
unsubscribeButton->setEnabled(false);
|
||||
}
|
||||
readButton->setVisible(false);
|
||||
newLabel->setVisible(false);
|
||||
readButton->hide();
|
||||
newLabel->hide();
|
||||
gotoButton->show();
|
||||
copyLinkButton->hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -128,6 +132,8 @@ void ChanMsgItem::updateItemStatic()
|
||||
unsubscribeButton->setEnabled(false);
|
||||
clearButton->hide();
|
||||
unsubscribeButton->hide();
|
||||
gotoButton->hide();
|
||||
copyLinkButton->show();
|
||||
|
||||
if ((ci.channelFlags & RS_DISTRIB_SUBSCRIBED) || (ci.channelFlags & RS_DISTRIB_ADMIN)) {
|
||||
readButton->setVisible(true);
|
||||
@ -205,7 +211,6 @@ void ChanMsgItem::updateItemStatic()
|
||||
m_inUpdateItemStatic = false;
|
||||
}
|
||||
|
||||
|
||||
void ChanMsgItem::setFileCleanUpWarning(uint32_t time_left)
|
||||
{
|
||||
int hours = (int)time_left/3600;
|
||||
@ -224,7 +229,6 @@ void ChanMsgItem::setFileCleanUpWarning(uint32_t time_left)
|
||||
|
||||
}
|
||||
|
||||
|
||||
void ChanMsgItem::updateItem()
|
||||
{
|
||||
/* fill in */
|
||||
@ -337,11 +341,16 @@ void ChanMsgItem::gotoHome()
|
||||
std::cerr << "ChanMsgItem::gotoHome()";
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
|
||||
MainWindow::showWindow(MainWindow::Channels);
|
||||
ChannelFeed *channelFeed = dynamic_cast<ChannelFeed*>(MainWindow::getPage(MainWindow::Channels));
|
||||
if (channelFeed) {
|
||||
channelFeed->navigate(mChanId, mMsgId);
|
||||
}
|
||||
}
|
||||
|
||||
/*********** SPECIFIC FUNCTIONS ***********************/
|
||||
|
||||
|
||||
void ChanMsgItem::unsubscribeChannel()
|
||||
{
|
||||
#ifdef DEBUG_ITEM
|
||||
@ -403,3 +412,20 @@ void ChanMsgItem::channelMsgReadSatusChanged(const QString& channelId, const QSt
|
||||
updateItemStatic();
|
||||
}
|
||||
}
|
||||
|
||||
void ChanMsgItem::copyLink()
|
||||
{
|
||||
if (mChanId.empty() || mMsgId.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ChannelInfo ci;
|
||||
if (rsChannels->getChannelInfo(mChanId, ci)) {
|
||||
RetroShareLink link(RetroShareLink::TYPE_CHANNEL, QString::fromStdWString(ci.channelName), QString::fromStdString(ci.channelId), QString::fromStdString(mMsgId));
|
||||
if (link.valid() && link.type() == RetroShareLink::TYPE_CHANNEL) {
|
||||
std::vector<RetroShareLink> urls;
|
||||
urls.push_back(link);
|
||||
RSLinkClipboard::copyLinks(urls);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -36,12 +36,12 @@ public:
|
||||
/** Default Constructor */
|
||||
ChanMsgItem(FeedHolder *parent, uint32_t feedId, std::string chanId, std::string msgId, bool isHome);
|
||||
|
||||
/** Default Destructor */
|
||||
|
||||
void updateItemStatic();
|
||||
void small();
|
||||
void setFileCleanUpWarning(uint32_t time_left);
|
||||
|
||||
const std::string &msgId() { return mMsgId; }
|
||||
|
||||
private slots:
|
||||
/* default stuff */
|
||||
void gotoHome();
|
||||
@ -51,6 +51,7 @@ private slots:
|
||||
void unsubscribeChannel();
|
||||
void download();
|
||||
void play();
|
||||
void copyLink();
|
||||
|
||||
void readToggled(bool checked);
|
||||
void channelMsgReadSatusChanged(const QString& channelId, const QString& msgId, int status);
|
||||
|
@ -6,7 +6,7 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>528</width>
|
||||
<width>583</width>
|
||||
<height>208</height>
|
||||
</rect>
|
||||
</property>
|
||||
@ -152,7 +152,7 @@ p, li { white-space: pre-wrap; }
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5" rowspan="2" colspan="4">
|
||||
<item row="0" column="8" rowspan="2" colspan="5">
|
||||
<widget class="QLabel" name="datetimelabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
@ -170,7 +170,7 @@ p, li { white-space: pre-wrap; }
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="6" colspan="3">
|
||||
<item row="2" column="9" colspan="4">
|
||||
<widget class="QLabel" name="filelabel">
|
||||
<property name="font">
|
||||
<font>
|
||||
@ -185,7 +185,7 @@ p, li { white-space: pre-wrap; }
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="6">
|
||||
<item row="2" column="0" colspan="9">
|
||||
<widget class="QLabel" name="subjectLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
|
||||
@ -220,11 +220,7 @@ p, li { white-space: pre-wrap; }
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
</style></head><body style=" font-family:'Sans'; font-weight:400; font-style:normal;">
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Toggle Message Read Status</p></body></html></string>
|
||||
<string>Toggle Message Read Status</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../images.qrc">
|
||||
@ -313,7 +309,24 @@ border-radius: 3px}</string>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="4" column="5" colspan="2">
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="warn_image_label">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap resource="../images.qrc">:/images/status_unknown.png</pixmap>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1" colspan="9">
|
||||
<widget class="QLabel" name="warning_label">
|
||||
<property name="text">
|
||||
<string notr="true">TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="8" colspan="2">
|
||||
<widget class="QPushButton" name="unsubscribeButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
@ -339,7 +352,7 @@ border-radius: 3px}</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="7">
|
||||
<item row="4" column="11">
|
||||
<widget class="QPushButton" name="clearButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
@ -365,7 +378,7 @@ border-radius: 3px}</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="8">
|
||||
<item row="4" column="12">
|
||||
<widget class="QPushButton" name="expandButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
@ -394,20 +407,55 @@ border-radius: 3px}</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="warn_image_label">
|
||||
<item row="4" column="6">
|
||||
<widget class="QPushButton" name="gotoButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>24</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Go to Channel Message</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap resource="../images.qrc">:/images/status_unknown.png</pixmap>
|
||||
<property name="icon">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/find-16.png</normaloff>:/images/find-16.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1" colspan="6">
|
||||
<widget class="QLabel" name="warning_label">
|
||||
<item row="4" column="7">
|
||||
<widget class="QPushButton" name="copyLinkButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>24</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Copy RetroShare Link</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">TextLabel</string>
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/copyrslink.png</normaloff>:/images/copyrslink.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -476,23 +524,6 @@ border-radius: 10px;}</string>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
@ -21,6 +21,8 @@
|
||||
|
||||
#include "ChanNewItem.h"
|
||||
#include "FeedHolder.h"
|
||||
#include "gui/MainWindow.h"
|
||||
#include "gui/ChannelFeed.h"
|
||||
|
||||
#include <retroshare/rschannels.h>
|
||||
|
||||
@ -43,7 +45,7 @@ ChanNewItem::ChanNewItem(FeedHolder *parent, uint32_t feedId, std::string chanId
|
||||
/* general ones */
|
||||
connect( expandButton, SIGNAL( clicked( void ) ), this, SLOT( toggle ( void ) ) );
|
||||
connect( clearButton, SIGNAL( clicked( void ) ), this, SLOT( removeItem ( void ) ) );
|
||||
//connect( gotoButton, SIGNAL( clicked( void ) ), this, SLOT( gotoHome ( void ) ) );
|
||||
connect( gotoButton, SIGNAL( clicked( void ) ), this, SLOT( gotoHome ( void ) ) );
|
||||
|
||||
/* specific ones */
|
||||
connect( subscribeButton, SIGNAL( clicked( void ) ), this, SLOT( subscribeChannel ( void ) ) );
|
||||
@ -175,6 +177,12 @@ void ChanNewItem::gotoHome()
|
||||
std::cerr << "ChanNewItem::gotoHome()";
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
|
||||
MainWindow::showWindow(MainWindow::Channels);
|
||||
ChannelFeed *channelFeed = dynamic_cast<ChannelFeed*>(MainWindow::getPage(MainWindow::Channels));
|
||||
if (channelFeed) {
|
||||
channelFeed->navigate(mChanId, "");
|
||||
}
|
||||
}
|
||||
|
||||
/*********** SPECIFIC FUNCTIOSN ***********************/
|
||||
|
@ -117,6 +117,26 @@ border-radius: 2px;}</string>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="gotoButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Go to Channel</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/find-16.png</normaloff>:/images/find-16.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="subscribeButton">
|
||||
<property name="sizePolicy">
|
||||
|
@ -24,6 +24,8 @@
|
||||
|
||||
#include "ForumMsgItem.h"
|
||||
#include "FeedHolder.h"
|
||||
#include "gui/MainWindow.h"
|
||||
#include "gui/ForumsDialog.h"
|
||||
|
||||
#include <retroshare/rsforums.h>
|
||||
#include <retroshare/rsmsgs.h>
|
||||
@ -52,7 +54,7 @@ ForumMsgItem::ForumMsgItem(FeedHolder *parent, uint32_t feedId, const std::strin
|
||||
/* general ones */
|
||||
connect( expandButton, SIGNAL( clicked( void ) ), this, SLOT( toggle ( void ) ) );
|
||||
connect( clearButton, SIGNAL( clicked( void ) ), this, SLOT( removeItem ( void ) ) );
|
||||
//connect( gotoButton, SIGNAL( clicked( void ) ), this, SLOT( gotoHome ( void ) ) );
|
||||
connect( gotoButton, SIGNAL( clicked( void ) ), this, SLOT( gotoHome ( void ) ) );
|
||||
|
||||
/* specific ones */
|
||||
connect( unsubscribeButton, SIGNAL( clicked( void ) ), this, SLOT( unsubscribeForum ( void ) ) );
|
||||
@ -290,6 +292,12 @@ void ForumMsgItem::gotoHome()
|
||||
std::cerr << "ForumMsgItem::gotoHome()";
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
|
||||
MainWindow::showWindow(MainWindow::Forums);
|
||||
ForumsDialog *forumsDialog = dynamic_cast<ForumsDialog*>(MainWindow::getPage(MainWindow::Forums));
|
||||
if (forumsDialog) {
|
||||
forumsDialog->navigate(mForumId, mPostId);
|
||||
}
|
||||
}
|
||||
|
||||
/*********** SPECIFIC FUNCTIOSN ***********************/
|
||||
|
@ -245,6 +245,26 @@ border-radius: 10px}</string>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="gotoButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Go to Forum Message</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/find-16.png</normaloff>:/images/find-16.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="unsubscribeButton">
|
||||
<property name="sizePolicy">
|
||||
|
@ -21,6 +21,8 @@
|
||||
|
||||
#include "ForumNewItem.h"
|
||||
#include "FeedHolder.h"
|
||||
#include "gui/MainWindow.h"
|
||||
#include "gui/ForumsDialog.h"
|
||||
|
||||
#include <retroshare/rsforums.h>
|
||||
#include "gui/forums/CreateForumMsg.h"
|
||||
@ -42,7 +44,7 @@ ForumNewItem::ForumNewItem(FeedHolder *parent, uint32_t feedId, std::string foru
|
||||
/* general ones */
|
||||
connect( expandButton, SIGNAL( clicked( void ) ), this, SLOT( toggle ( void ) ) );
|
||||
connect( clearButton, SIGNAL( clicked( void ) ), this, SLOT( removeItem ( void ) ) );
|
||||
//connect( gotoButton, SIGNAL( clicked( void ) ), this, SLOT( gotoHome ( void ) ) );
|
||||
connect( gotoButton, SIGNAL( clicked( void ) ), this, SLOT( gotoHome ( void ) ) );
|
||||
|
||||
/* specific ones */
|
||||
connect( subscribeButton, SIGNAL( clicked( void ) ), this, SLOT( subscribeForum ( void ) ) );
|
||||
@ -166,6 +168,12 @@ void ForumNewItem::gotoHome()
|
||||
std::cerr << "ForumNewItem::gotoHome()";
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
|
||||
MainWindow::showWindow(MainWindow::Forums);
|
||||
ForumsDialog *forumsDialog = dynamic_cast<ForumsDialog*>(MainWindow::getPage(MainWindow::Forums));
|
||||
if (forumsDialog) {
|
||||
forumsDialog->navigate(mForumId, "");
|
||||
}
|
||||
}
|
||||
|
||||
/*********** SPECIFIC FUNCTIOSN ***********************/
|
||||
|
@ -124,6 +124,26 @@ border-radius: 10px}</string>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="gotoButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Go to Forum</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/find-16.png</normaloff>:/images/find-16.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="subscribeButton">
|
||||
<property name="sizePolicy">
|
||||
|
Binary file not shown.
@ -853,52 +853,66 @@ p, li { white-space: pre-wrap; }
|
||||
<context>
|
||||
<name>ChanMsgItem</name>
|
||||
<message>
|
||||
<location filename="../gui/feeds/ChanMsgItem.ui" line="+357"/>
|
||||
<location filename="../gui/feeds/ChanMsgItem.ui" line="+370"/>
|
||||
<source>Remove Item</source>
|
||||
<translation>Eintrag entfernen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+26"/>
|
||||
<location filename="../gui/feeds/ChanMsgItem.cpp" line="+316"/>
|
||||
<location filename="../gui/feeds/ChanMsgItem.cpp" line="+320"/>
|
||||
<source>Expand</source>
|
||||
<translation>Erweitern</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-107"/>
|
||||
<location line="-124"/>
|
||||
<source>Download</source>
|
||||
<translation>Herunterladen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
<location line="-49"/>
|
||||
<source>Toggle Message Read Status</source>
|
||||
<translation>Setze Gelesen-Status des Beitrages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+65"/>
|
||||
<source>Play</source>
|
||||
<translation>Abspielen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-69"/>
|
||||
<source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
</style></head><body style=" font-family:'Sans'; font-weight:400; font-style:normal;">
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Toggle Message Read Status</p></body></html></source>
|
||||
<translation type="unfinished">Gelesen Status umschalten</translation>
|
||||
<translation type="obsolete">Gelesen Status umschalten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+41"/>
|
||||
<location line="-28"/>
|
||||
<source>New</source>
|
||||
<translation>Neu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+67"/>
|
||||
<location line="+84"/>
|
||||
<source>Unsubscribe From Channel</source>
|
||||
<translation>Kanal abbestellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/feeds/ChanMsgItem.cpp" line="-102"/>
|
||||
<location line="+81"/>
|
||||
<source>Go to Channel Message</source>
|
||||
<translation>Gehe zum Kanalbeitrag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+26"/>
|
||||
<source>Copy RetroShare Link</source>
|
||||
<translation>Kopiere RetroShare Link</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/feeds/ChanMsgItem.cpp" line="-101"/>
|
||||
<source>Warning! You have less than %1 hours and %2 minute before this file is delted Consider saving it.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+96"/>
|
||||
<location line="+95"/>
|
||||
<source>Hide</source>
|
||||
<translation>Verbergen</translation>
|
||||
</message>
|
||||
@ -906,7 +920,7 @@ p, li { white-space: pre-wrap; }
|
||||
<context>
|
||||
<name>ChanNewItem</name>
|
||||
<message>
|
||||
<location filename="../gui/feeds/ChanNewItem.ui" line="+169"/>
|
||||
<location filename="../gui/feeds/ChanNewItem.ui" line="+189"/>
|
||||
<source>Remove Item</source>
|
||||
<translation>Eintrag entfernen</translation>
|
||||
</message>
|
||||
@ -916,7 +930,12 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Kanal abonnieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+20"/>
|
||||
<location line="-20"/>
|
||||
<source>Go to Channel</source>
|
||||
<translation>Gehe zum Kanal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+40"/>
|
||||
<source>Expand</source>
|
||||
<translation>Erweitern</translation>
|
||||
</message>
|
||||
@ -1026,9 +1045,9 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Alle als gelesen markieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+7"/>
|
||||
<location line="+27"/>
|
||||
<source>Enable Auto-download</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Aktiviere Auto-Download</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+88"/>
|
||||
@ -1036,7 +1055,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Kanal erstellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-199"/>
|
||||
<location line="-219"/>
|
||||
<source>Unsubscribe</source>
|
||||
<translation>Abbestellen</translation>
|
||||
</message>
|
||||
@ -1056,7 +1075,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Kanal abbestellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/ChannelFeed.cpp" line="+85"/>
|
||||
<location filename="../gui/ChannelFeed.cpp" line="+84"/>
|
||||
<source>Own Channels</source>
|
||||
<translation>Meine Kanäle</translation>
|
||||
</message>
|
||||
@ -1107,12 +1126,27 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Verteile Kanal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+267"/>
|
||||
<location line="+28"/>
|
||||
<source>Copy RetroShare Link</source>
|
||||
<translation>Kopiere RetroShare Link</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+257"/>
|
||||
<source>No Channel Selected</source>
|
||||
<translation>Keinen Kanal gewählt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-270"/>
|
||||
<location line="+200"/>
|
||||
<source>Disable Auto-Download</source>
|
||||
<translation>Deaktiviere Auto-Download</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Enable Auto-Download</source>
|
||||
<translation>Aktiviere Auto-Download</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-490"/>
|
||||
<source>Edit Channel Details</source>
|
||||
<translation>Kanal-Details bearbeiten</translation>
|
||||
</message>
|
||||
@ -3329,7 +3363,7 @@ p, li { white-space: pre-wrap; }
|
||||
<context>
|
||||
<name>FlatStyle_RDM</name>
|
||||
<message>
|
||||
<location filename="../gui/RemoteDirModel.cpp" line="+653"/>
|
||||
<location filename="../gui/RemoteDirModel.cpp" line="+664"/>
|
||||
<source>Friends Directories</source>
|
||||
<translation type="unfinished">Dateien von Freunden</translation>
|
||||
</message>
|
||||
@ -3510,13 +3544,18 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location line="+57"/>
|
||||
<location line="+176"/>
|
||||
<location line="+196"/>
|
||||
<location line="+161"/>
|
||||
<source>Subject: </source>
|
||||
<translation>Betreff:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-278"/>
|
||||
<location line="-298"/>
|
||||
<source>Go to Forum Message</source>
|
||||
<translation>Gehe zum Forumbeitrag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+20"/>
|
||||
<source>Unsubscribe To Forum</source>
|
||||
<translation>Forum abbestellen</translation>
|
||||
</message>
|
||||
@ -3536,7 +3575,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Unterzeichnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/feeds/ForumMsgItem.cpp" line="+89"/>
|
||||
<location filename="../gui/feeds/ForumMsgItem.cpp" line="+91"/>
|
||||
<source>Forum Post</source>
|
||||
<translation>Beitrag</translation>
|
||||
</message>
|
||||
@ -3558,7 +3597,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Als Antwort auf</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+174"/>
|
||||
<location line="+180"/>
|
||||
<source>Please give a Text Message</source>
|
||||
<translation>Bitte Nachricht eingeben</translation>
|
||||
</message>
|
||||
@ -3571,7 +3610,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Formular</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+189"/>
|
||||
<location line="+209"/>
|
||||
<source>Remove Item</source>
|
||||
<translation>Eintrag entfernen</translation>
|
||||
</message>
|
||||
@ -3581,7 +3620,12 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Forum abonnieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+47"/>
|
||||
<location line="-20"/>
|
||||
<source>Go to Forum</source>
|
||||
<translation>Gehe zum Forum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+67"/>
|
||||
<source>Expand</source>
|
||||
<translation>Erweitern</translation>
|
||||
</message>
|
||||
@ -3612,7 +3656,7 @@ p, li { white-space: pre-wrap; }
|
||||
<context>
|
||||
<name>ForumsDialog</name>
|
||||
<message>
|
||||
<location filename="../gui/ForumsDialog.cpp" line="+271"/>
|
||||
<location filename="../gui/ForumsDialog.cpp" line="+273"/>
|
||||
<source>Subscribe to Forum</source>
|
||||
<translation>Forum abonnieren</translation>
|
||||
</message>
|
||||
@ -3622,7 +3666,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Forum abbestellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+7"/>
|
||||
<location line="+5"/>
|
||||
<source>New Forum</source>
|
||||
<translation>Neues Forum</translation>
|
||||
</message>
|
||||
@ -3637,12 +3681,18 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Forum-Details bearbeiten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+3"/>
|
||||
<source>Restore Publish Rights for Forum</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+8"/>
|
||||
<location line="+6"/>
|
||||
<location line="+93"/>
|
||||
<source>Copy RetroShare Link</source>
|
||||
<translation type="unfinished">Kopiere RetroShare Link</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-88"/>
|
||||
<source>Mark all as read</source>
|
||||
<translation>Alle als gelesen markieren</translation>
|
||||
</message>
|
||||
@ -3705,7 +3755,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>keine</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+508"/>
|
||||
<location line="+542"/>
|
||||
<location line="+81"/>
|
||||
<source>RetroShare</source>
|
||||
<translation></translation>
|
||||
@ -3721,7 +3771,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Du kannst einem anonymen Autor nicht antworten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-1310"/>
|
||||
<location line="-1344"/>
|
||||
<source>Your Forums</source>
|
||||
<translation>Deine Foren</translation>
|
||||
</message>
|
||||
@ -3864,7 +3914,7 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/ForumsDialog.cpp" line="+121"/>
|
||||
<location line="+1110"/>
|
||||
<location line="+1144"/>
|
||||
<source>Start New Thread</source>
|
||||
<translation>Erstelle neues Thema</translation>
|
||||
</message>
|
||||
@ -3892,7 +3942,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Inhalt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/ForumsDialog.cpp" line="-1097"/>
|
||||
<location filename="../gui/ForumsDialog.cpp" line="-1131"/>
|
||||
<location line="+3"/>
|
||||
<source>Mark as read</source>
|
||||
<translation>Als gelesen markieren</translation>
|
||||
@ -8833,19 +8883,19 @@ p, li { white-space: pre-wrap; }
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<location filename="../main.cpp" line="+84"/>
|
||||
<location line="+123"/>
|
||||
<location filename="../main.cpp" line="+85"/>
|
||||
<location line="+126"/>
|
||||
<source>RetroShare</source>
|
||||
<translation>RetroShare</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-117"/>
|
||||
<location line="-120"/>
|
||||
<source>Inititialize failed. Wrong or missing installation of gpg.</source>
|
||||
<translation>Initialisierung fehlgeschlagen. GPG fehlt oder es ist eine falsche Version installiert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<location line="+112"/>
|
||||
<location line="+115"/>
|
||||
<source>An unexpected error occured. Please report 'RsInit::InitRetroShare unexpected return code %1'.</source>
|
||||
<translation>Ein unerwarteter Fehler ist aufgetreten. Bitte melde 'RsInit::InitRetroShare unexpected return code %1'.</translation>
|
||||
</message>
|
||||
@ -8892,7 +8942,7 @@ Lockdatei:
|
||||
<translation>Vielleicht ist das Passwort falsch</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/RetroShareLink.cpp" line="+366"/>
|
||||
<location filename="../gui/RetroShareLink.cpp" line="+480"/>
|
||||
<source>File Request Confirmation</source>
|
||||
<translation>Bestätigung der Dateianforderung</translation>
|
||||
</message>
|
||||
@ -8952,7 +9002,43 @@ Lockdatei:
|
||||
<translation>Der Freund konnte nicht gefunden werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+16"/>
|
||||
<location line="+11"/>
|
||||
<source>Forum Request canceled</source>
|
||||
<translation>Forumanfrage abgebrochen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-11"/>
|
||||
<source>The forum "%1" could not be found.</source>
|
||||
<translation>Das Forum "%1" konnte nicht gefunden werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<source>The forum message in forum "%1" could not be found.</source>
|
||||
<translation>Der Forumbeitrag im Forum "%1" konnte nicht gefunden werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+37"/>
|
||||
<source>The channel message in channel "%1" could not be found.</source>
|
||||
<translation>Der Kanalbeitrag im Kanal "%1" konnte nicht gefunden werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The forum message could not be found.</source>
|
||||
<translation type="obsolete">Der Forumbeitrag "%1" konnte nicht gefunden werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-11"/>
|
||||
<location line="+11"/>
|
||||
<source>Channel Request canceled</source>
|
||||
<translation>Kanalanfrage abgebrochen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-11"/>
|
||||
<source>The channel "%1" could not be found.</source>
|
||||
<translation>Der Kanal "%1" konnte nicht gefunden werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+32"/>
|
||||
<source>File Request Error</source>
|
||||
<translation>Fehler bei der Dateianforderung</translation>
|
||||
</message>
|
||||
@ -8977,12 +9063,11 @@ Lockdatei:
|
||||
<translation>Nachbar Details</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../util/EventReceiver.cpp" line="+91"/>
|
||||
<source>No running instance of RetroShare found.</source>
|
||||
<translation>Kein laufendes RetroShare gefunden.</translation>
|
||||
<translation type="obsolete">Kein laufendes RetroShare gefunden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+33"/>
|
||||
<location filename="../util/EventReceiver.cpp" line="+120"/>
|
||||
<source>Start with a RetroShare link is only supported for Windows.</source>
|
||||
<translation>Der Start mit einem RetroShare Link wird nur unter Windows unterstützt.</translation>
|
||||
</message>
|
||||
@ -9570,7 +9655,7 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location line="+319"/>
|
||||
<location filename="../gui/SearchDialog.cpp" line="+280"/>
|
||||
<location filename="../gui/SearchDialog.cpp" line="+281"/>
|
||||
<source>Download</source>
|
||||
<translation>Herunterladen</translation>
|
||||
</message>
|
||||
@ -9610,7 +9695,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Alle entfernen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+342"/>
|
||||
<location line="+351"/>
|
||||
<location line="+68"/>
|
||||
<source>Folder</source>
|
||||
<translation>Ordner</translation>
|
||||
@ -9671,7 +9756,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Such ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/SearchDialog.cpp" line="-957"/>
|
||||
<location filename="../gui/SearchDialog.cpp" line="-966"/>
|
||||
<source>Download Notice</source>
|
||||
<translation>Download</translation>
|
||||
</message>
|
||||
@ -10311,7 +10396,7 @@ p, li { white-space: pre-wrap; }
|
||||
<name>SharedFilesDialog</name>
|
||||
<message>
|
||||
<location filename="../gui/SharedFilesDialog.ui" line="+984"/>
|
||||
<location filename="../gui/SharedFilesDialog.cpp" line="+365"/>
|
||||
<location filename="../gui/SharedFilesDialog.cpp" line="+386"/>
|
||||
<source>Download</source>
|
||||
<translation>Herunterladen</translation>
|
||||
</message>
|
||||
@ -10394,23 +10479,23 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Prüfe Dateien</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/SharedFilesDialog.cpp" line="-133"/>
|
||||
<location line="+549"/>
|
||||
<location filename="../gui/SharedFilesDialog.cpp" line="-154"/>
|
||||
<location line="+569"/>
|
||||
<source>Open File</source>
|
||||
<translation>Datei öffnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-547"/>
|
||||
<location line="-567"/>
|
||||
<source>Open Folder</source>
|
||||
<translation>Ordner öffnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+556"/>
|
||||
<location line="+576"/>
|
||||
<source>Set command for opening this file</source>
|
||||
<translation>Setze eine Regel zum Öffnen dieser Datei</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-420"/>
|
||||
<location line="-419"/>
|
||||
<source>Copy retroshare Link</source>
|
||||
<translation>Kopiere RetroShare Link</translation>
|
||||
</message>
|
||||
@ -10430,7 +10515,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Sende RetroShare Link</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-155"/>
|
||||
<location line="-176"/>
|
||||
<source>Copy retroshare Links to Clipboard</source>
|
||||
<translation>Kopiere RetroShare Links in die Zwischenablage</translation>
|
||||
</message>
|
||||
@ -10460,13 +10545,13 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Füge die Links zur Verknüpfungs-Wolke hinzu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+151"/>
|
||||
<location line="+380"/>
|
||||
<location line="+172"/>
|
||||
<location line="+379"/>
|
||||
<source>Recommend in a message to</source>
|
||||
<translation>Empfehle in einer Nachricht an</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-254"/>
|
||||
<location line="-253"/>
|
||||
<location line="+23"/>
|
||||
<location line="+24"/>
|
||||
<source>RetroShare Link</source>
|
||||
@ -10481,7 +10566,7 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>Empfehlung(en)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+192"/>
|
||||
<location line="+191"/>
|
||||
<source><strong>My Shared Files</strong></source>
|
||||
<translation><strong>Meine Dateien</strong></translation>
|
||||
</message>
|
||||
|
Loading…
Reference in New Issue
Block a user