mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-13 19:42:28 -04:00
Added new option for GxsForums and FeedReader - Open all forums/feeds in new tab.
Option=on (standard) - no standard tab - new tab by single click - no menu entry "Open in new tab" Option=off: - standard tab (not closeable) - open in standard tab by single click - menu entry "Open in new tab" - open new tab with middle mouse button git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6060 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
9cfe660e11
commit
f488dbd15a
30 changed files with 425 additions and 185 deletions
|
@ -50,7 +50,8 @@ void FeedReaderConfig::load()
|
||||||
{
|
{
|
||||||
ui->updateIntervalSpinBox->setValue(rsFeedReader->getStandardUpdateInterval() / 60);
|
ui->updateIntervalSpinBox->setValue(rsFeedReader->getStandardUpdateInterval() / 60);
|
||||||
ui->storageTimeSpinBox->setValue(rsFeedReader->getStandardStorageTime() / (60 * 60 *24));
|
ui->storageTimeSpinBox->setValue(rsFeedReader->getStandardStorageTime() / (60 * 60 *24));
|
||||||
ui->setMsgToReadOnActivate->setChecked(Settings->valueFromGroup("FeedReaderDialog", "SetMsgToReadOnActivate", true).toBool());
|
ui->setMsgToReadOnActivate->setChecked(FeedReaderSetting_SetMsgToReadOnActivate());
|
||||||
|
ui->openAllInNewTabCheckBox->setChecked(FeedReaderSetting_OpenAllInNewTab());
|
||||||
|
|
||||||
std::string proxyAddress;
|
std::string proxyAddress;
|
||||||
uint16_t proxyPort;
|
uint16_t proxyPort;
|
||||||
|
@ -67,6 +68,7 @@ bool FeedReaderConfig::save(QString &/*errmsg*/)
|
||||||
rsFeedReader->setStandardStorageTime(ui->storageTimeSpinBox->value() * 60 *60 * 24);
|
rsFeedReader->setStandardStorageTime(ui->storageTimeSpinBox->value() * 60 *60 * 24);
|
||||||
rsFeedReader->setStandardProxy(ui->useProxyCheckBox->isChecked(), ui->proxyAddressLineEdit->text().toUtf8().constData(), ui->proxyPortSpinBox->value());
|
rsFeedReader->setStandardProxy(ui->useProxyCheckBox->isChecked(), ui->proxyAddressLineEdit->text().toUtf8().constData(), ui->proxyPortSpinBox->value());
|
||||||
Settings->setValueToGroup("FeedReaderDialog", "SetMsgToReadOnActivate", ui->setMsgToReadOnActivate->isChecked());
|
Settings->setValueToGroup("FeedReaderDialog", "SetMsgToReadOnActivate", ui->setMsgToReadOnActivate->isChecked());
|
||||||
|
Settings->setValueToGroup("FeedReaderDialog", "OpenAllInNewTab", ui->openAllInNewTabCheckBox->isChecked());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,9 @@ namespace Ui {
|
||||||
class FeedReaderConfig;
|
class FeedReaderConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define FeedReaderSetting_SetMsgToReadOnActivate() Settings->valueFromGroup("FeedReaderDialog", "SetMsgToReadOnActivate", true).toBool()
|
||||||
|
#define FeedReaderSetting_OpenAllInNewTab() Settings->valueFromGroup("FeedReaderDialog", "OpenAllInNewTab", true).toBool()
|
||||||
|
|
||||||
class FeedReaderConfig : public ConfigPage
|
class FeedReaderConfig : public ConfigPage
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
|
@ -125,6 +125,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QCheckBox" name="openAllInNewTabCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Open all feeds in new tab</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -29,10 +29,12 @@
|
||||||
#include "FeedReaderMessageWidget.h"
|
#include "FeedReaderMessageWidget.h"
|
||||||
#include "ui_FeedReaderDialog.h"
|
#include "ui_FeedReaderDialog.h"
|
||||||
#include "FeedReaderNotify.h"
|
#include "FeedReaderNotify.h"
|
||||||
|
#include "FeedReaderConfig.h"
|
||||||
#include "AddFeedDialog.h"
|
#include "AddFeedDialog.h"
|
||||||
#include "FeedReaderStringDefs.h"
|
#include "FeedReaderStringDefs.h"
|
||||||
#include "gui/common/RSTreeWidgetItem.h"
|
#include "gui/common/RSTreeWidgetItem.h"
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
|
#include "gui/notifyqt.h"
|
||||||
#include "FeedReaderUserNotify.h"
|
#include "FeedReaderUserNotify.h"
|
||||||
|
|
||||||
#include "interface/rsFeedReader.h"
|
#include "interface/rsFeedReader.h"
|
||||||
|
@ -61,11 +63,14 @@ FeedReaderDialog::FeedReaderDialog(RsFeedReader *feedReader, QWidget *parent)
|
||||||
|
|
||||||
mProcessSettings = false;
|
mProcessSettings = false;
|
||||||
mOpenFeedIds = NULL;
|
mOpenFeedIds = NULL;
|
||||||
|
mMessageWidget = NULL;
|
||||||
|
|
||||||
mNotify = new FeedReaderNotify();
|
mNotify = new FeedReaderNotify();
|
||||||
mFeedReader->setNotify(mNotify);
|
mFeedReader->setNotify(mNotify);
|
||||||
connect(mNotify, SIGNAL(notifyFeedChanged(QString,int)), this, SLOT(feedChanged(QString,int)));
|
connect(mNotify, SIGNAL(feedChanged(QString,int)), this, SLOT(feedChanged(QString,int)));
|
||||||
connect(mNotify, SIGNAL(notifyMsgChanged(QString,QString,int)), this, SLOT(msgChanged(QString,QString,int)));
|
connect(mNotify, SIGNAL(msgChanged(QString,QString,int)), this, SLOT(msgChanged(QString,QString,int)));
|
||||||
|
|
||||||
|
connect(NotifyQt::getInstance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged()));
|
||||||
|
|
||||||
/* connect signals */
|
/* connect signals */
|
||||||
connect(ui->feedTreeWidget, SIGNAL(itemActivated(QTreeWidgetItem*,int)), this, SLOT(feedTreeItemActivated(QTreeWidgetItem*)));
|
connect(ui->feedTreeWidget, SIGNAL(itemActivated(QTreeWidgetItem*,int)), this, SLOT(feedTreeItemActivated(QTreeWidgetItem*)));
|
||||||
|
@ -74,6 +79,7 @@ FeedReaderDialog::FeedReaderDialog(RsFeedReader *feedReader, QWidget *parent)
|
||||||
connect(ui->feedTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(feedTreeItemActivated(QTreeWidgetItem*)));
|
connect(ui->feedTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(feedTreeItemActivated(QTreeWidgetItem*)));
|
||||||
}
|
}
|
||||||
connect(ui->feedTreeWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(feedTreeCustomPopupMenu(QPoint)));
|
connect(ui->feedTreeWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(feedTreeCustomPopupMenu(QPoint)));
|
||||||
|
connect(ui->feedTreeWidget, SIGNAL(signalMouseMiddleButtonClicked(QTreeWidgetItem*)), this, SLOT(feedTreeMiddleButtonClicked(QTreeWidgetItem*)));
|
||||||
|
|
||||||
connect(ui->messageTabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(messageTabCloseRequested(int)));
|
connect(ui->messageTabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(messageTabCloseRequested(int)));
|
||||||
connect(ui->messageTabWidget, SIGNAL(currentChanged(int)), this, SLOT(messageTabChanged(int)));
|
connect(ui->messageTabWidget, SIGNAL(currentChanged(int)), this, SLOT(messageTabChanged(int)));
|
||||||
|
@ -94,10 +100,10 @@ FeedReaderDialog::FeedReaderDialog(RsFeedReader *feedReader, QWidget *parent)
|
||||||
mRootItem->setData(COLUMN_FEED_DATA, ROLE_FEED_ICON, QIcon(":/images/Root.png"));
|
mRootItem->setData(COLUMN_FEED_DATA, ROLE_FEED_ICON, QIcon(":/images/Root.png"));
|
||||||
mRootItem->setExpanded(true);
|
mRootItem->setExpanded(true);
|
||||||
|
|
||||||
/* set initial size the splitter */
|
/* set initial size the splitter */
|
||||||
QList<int> sizes;
|
QList<int> sizes;
|
||||||
sizes << 300 << width(); // Qt calculates the right sizes
|
sizes << 300 << width(); // Qt calculates the right sizes
|
||||||
ui->splitter->setSizes(sizes);
|
ui->splitter->setSizes(sizes);
|
||||||
|
|
||||||
/* load settings */
|
/* load settings */
|
||||||
processSettings(true);
|
processSettings(true);
|
||||||
|
@ -107,9 +113,7 @@ FeedReaderDialog::FeedReaderDialog(RsFeedReader *feedReader, QWidget *parent)
|
||||||
|
|
||||||
ui->feedTreeWidget->installEventFilter(this);
|
ui->feedTreeWidget->installEventFilter(this);
|
||||||
|
|
||||||
mMessageWidget = createMessageWidget("");
|
settingsChanged();
|
||||||
// remove close button of the the first tab
|
|
||||||
ui->messageTabWidget->hideCloseButton(ui->messageTabWidget->indexOf(mMessageWidget));
|
|
||||||
|
|
||||||
feedTreeItemActivated(NULL);
|
feedTreeItemActivated(NULL);
|
||||||
}
|
}
|
||||||
|
@ -176,6 +180,22 @@ void FeedReaderDialog::processSettings(bool load)
|
||||||
mProcessSettings = false;
|
mProcessSettings = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FeedReaderDialog::settingsChanged()
|
||||||
|
{
|
||||||
|
if (FeedReaderSetting_OpenAllInNewTab()) {
|
||||||
|
if (mMessageWidget) {
|
||||||
|
delete(mMessageWidget);
|
||||||
|
mMessageWidget = NULL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!mMessageWidget) {
|
||||||
|
mMessageWidget = createMessageWidget("");
|
||||||
|
// remove close button of the the first tab
|
||||||
|
ui->messageTabWidget->hideCloseButton(ui->messageTabWidget->indexOf(mMessageWidget));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void FeedReaderDialog::addFeedToExpand(const std::string &feedId)
|
void FeedReaderDialog::addFeedToExpand(const std::string &feedId)
|
||||||
{
|
{
|
||||||
if (mOpenFeedIds == NULL) {
|
if (mOpenFeedIds == NULL) {
|
||||||
|
@ -279,11 +299,13 @@ void FeedReaderDialog::feedTreeCustomPopupMenu(QPoint /*point*/)
|
||||||
action->setEnabled(false);
|
action->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
contextMnu.addSeparator();
|
if (!FeedReaderSetting_OpenAllInNewTab()) {
|
||||||
|
contextMnu.addSeparator();
|
||||||
|
|
||||||
action = contextMnu.addAction(QIcon(""), tr("Open in new tab"), this, SLOT(openInNewTab()));
|
action = contextMnu.addAction(QIcon(""), tr("Open in new tab"), this, SLOT(openInNewTab()));
|
||||||
if (!item || folder || feedMessageWidget(feedId)) {
|
if (!item || folder || feedMessageWidget(feedId)) {
|
||||||
action->setEnabled(false);
|
action->setEnabled(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
contextMnu.addSeparator();
|
contextMnu.addSeparator();
|
||||||
|
@ -565,7 +587,7 @@ FeedReaderMessageWidget *FeedReaderDialog::feedMessageWidget(const std::string &
|
||||||
int tabCount = ui->messageTabWidget->count();
|
int tabCount = ui->messageTabWidget->count();
|
||||||
for (int index = 0; index < tabCount; ++index) {
|
for (int index = 0; index < tabCount; ++index) {
|
||||||
FeedReaderMessageWidget *childWidget = dynamic_cast<FeedReaderMessageWidget*>(ui->messageTabWidget->widget(index));
|
FeedReaderMessageWidget *childWidget = dynamic_cast<FeedReaderMessageWidget*>(ui->messageTabWidget->widget(index));
|
||||||
if (childWidget == mMessageWidget) {
|
if (mMessageWidget && childWidget == mMessageWidget) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (childWidget && childWidget->feedId() == id) {
|
if (childWidget && childWidget->feedId() == id) {
|
||||||
|
@ -607,17 +629,35 @@ void FeedReaderDialog::feedTreeItemActivated(QTreeWidgetItem *item)
|
||||||
/* search exisiting tab */
|
/* search exisiting tab */
|
||||||
FeedReaderMessageWidget *messageWidget = feedMessageWidget(feedId);
|
FeedReaderMessageWidget *messageWidget = feedMessageWidget(feedId);
|
||||||
if (!messageWidget) {
|
if (!messageWidget) {
|
||||||
/* not found, use standard tab */
|
if (mMessageWidget) {
|
||||||
messageWidget = mMessageWidget;
|
/* not found, use standard tab */
|
||||||
messageWidget->setFeedId(feedId);
|
messageWidget = mMessageWidget;
|
||||||
|
messageWidget->setFeedId(feedId);
|
||||||
|
} else {
|
||||||
|
/* create new tab */
|
||||||
|
messageWidget = createMessageWidget(feedId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->messageTabWidget->setCurrentWidget(messageWidget);
|
ui->messageTabWidget->setCurrentWidget(messageWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FeedReaderDialog::feedTreeMiddleButtonClicked(QTreeWidgetItem *item)
|
||||||
|
{
|
||||||
|
if (!item) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
openFeedInNewTab(item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toString().toStdString());
|
||||||
|
}
|
||||||
|
|
||||||
void FeedReaderDialog::openInNewTab()
|
void FeedReaderDialog::openInNewTab()
|
||||||
{
|
{
|
||||||
std::string feedId = currentFeedId();
|
openFeedInNewTab(currentFeedId());
|
||||||
|
}
|
||||||
|
|
||||||
|
void FeedReaderDialog::openFeedInNewTab(const std::string &feedId)
|
||||||
|
{
|
||||||
if (feedId.empty()) {
|
if (feedId.empty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,8 +50,10 @@ protected:
|
||||||
bool eventFilter(QObject *obj, QEvent *ev);
|
bool eventFilter(QObject *obj, QEvent *ev);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void settingsChanged();
|
||||||
void feedTreeCustomPopupMenu(QPoint point);
|
void feedTreeCustomPopupMenu(QPoint point);
|
||||||
void feedTreeItemActivated(QTreeWidgetItem *item);
|
void feedTreeItemActivated(QTreeWidgetItem *item);
|
||||||
|
void feedTreeMiddleButtonClicked(QTreeWidgetItem *item);
|
||||||
void openInNewTab();
|
void openInNewTab();
|
||||||
void newFolder();
|
void newFolder();
|
||||||
void newFeed();
|
void newFeed();
|
||||||
|
@ -75,6 +77,7 @@ private:
|
||||||
void getExpandedFeedIds(QList<std::string> &feedIds);
|
void getExpandedFeedIds(QList<std::string> &feedIds);
|
||||||
void updateFeeds(const std::string &parentId, QTreeWidgetItem *parentItem);
|
void updateFeeds(const std::string &parentId, QTreeWidgetItem *parentItem);
|
||||||
void updateFeedItem(QTreeWidgetItem *item, FeedInfo &info);
|
void updateFeedItem(QTreeWidgetItem *item, FeedInfo &info);
|
||||||
|
void openFeedInNewTab(const std::string &feedId);
|
||||||
|
|
||||||
void calculateFeedItems();
|
void calculateFeedItems();
|
||||||
void calculateFeedItem(QTreeWidgetItem *item, uint32_t &unreadCount, bool &loading);
|
void calculateFeedItem(QTreeWidgetItem *item, uint32_t &unreadCount, bool &loading);
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "FeedReaderMessageWidget.h"
|
#include "FeedReaderMessageWidget.h"
|
||||||
#include "ui_FeedReaderMessageWidget.h"
|
#include "ui_FeedReaderMessageWidget.h"
|
||||||
#include "FeedReaderNotify.h"
|
#include "FeedReaderNotify.h"
|
||||||
|
#include "FeedReaderConfig.h"
|
||||||
|
|
||||||
#include "gui/common/RSTreeWidgetItem.h"
|
#include "gui/common/RSTreeWidgetItem.h"
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
|
@ -38,8 +39,8 @@ FeedReaderMessageWidget::FeedReaderMessageWidget(const std::string &feedId, RsFe
|
||||||
mUnreadCount = 0;
|
mUnreadCount = 0;
|
||||||
|
|
||||||
/* connect signals */
|
/* connect signals */
|
||||||
connect(mNotify, SIGNAL(notifyFeedChanged(QString,int)), this, SLOT(feedChanged(QString,int)));
|
connect(mNotify, SIGNAL(feedChanged(QString,int)), this, SLOT(feedChanged(QString,int)));
|
||||||
connect(mNotify, SIGNAL(notifyMsgChanged(QString,QString,int)), this, SLOT(msgChanged(QString,QString,int)));
|
connect(mNotify, SIGNAL(msgChanged(QString,QString,int)), this, SLOT(msgChanged(QString,QString,int)));
|
||||||
|
|
||||||
connect(ui->msgTreeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(msgItemChanged()));
|
connect(ui->msgTreeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(msgItemChanged()));
|
||||||
connect(ui->msgTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(msgItemClicked(QTreeWidgetItem*,int)));
|
connect(ui->msgTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(msgItemClicked(QTreeWidgetItem*,int)));
|
||||||
|
@ -554,7 +555,7 @@ void FeedReaderMessageWidget::updateCurrentMessage()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool setToReadOnActive = Settings->valueFromGroup("FeedReaderDialog", "SetMsgToReadOnActivate", true).toBool();
|
bool setToReadOnActive = FeedReaderSetting_SetMsgToReadOnActivate();
|
||||||
bool isnew = item->data(COLUMN_MSG_DATA, ROLE_MSG_NEW).toBool();
|
bool isnew = item->data(COLUMN_MSG_DATA, ROLE_MSG_NEW).toBool();
|
||||||
bool read = item->data(COLUMN_MSG_DATA, ROLE_MSG_READ).toBool();
|
bool read = item->data(COLUMN_MSG_DATA, ROLE_MSG_READ).toBool();
|
||||||
|
|
||||||
|
|
|
@ -25,12 +25,12 @@ FeedReaderNotify::FeedReaderNotify() : QObject()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedReaderNotify::feedChanged(const std::string &feedId, int type)
|
void FeedReaderNotify::notifyFeedChanged(const std::string &feedId, int type)
|
||||||
{
|
{
|
||||||
emit notifyFeedChanged(QString::fromStdString(feedId), type);
|
emit feedChanged(QString::fromStdString(feedId), type);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedReaderNotify::msgChanged(const std::string &feedId, const std::string &msgId, int type)
|
void FeedReaderNotify::notifyMsgChanged(const std::string &feedId, const std::string &msgId, int type)
|
||||||
{
|
{
|
||||||
emit notifyMsgChanged(QString::fromStdString(feedId), QString::fromStdString(msgId), type);
|
emit msgChanged(QString::fromStdString(feedId), QString::fromStdString(msgId), type);
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,12 +33,12 @@ public:
|
||||||
FeedReaderNotify();
|
FeedReaderNotify();
|
||||||
|
|
||||||
/* RsFeedReaderNotify */
|
/* RsFeedReaderNotify */
|
||||||
virtual void feedChanged(const std::string &feedId, int type);
|
virtual void notifyFeedChanged(const std::string &feedId, int type);
|
||||||
virtual void msgChanged(const std::string &feedId, const std::string &msgId, int type);
|
virtual void notifyMsgChanged(const std::string &feedId, const std::string &msgId, int type);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void notifyFeedChanged(const QString &feedId, int type);
|
void feedChanged(const QString &feedId, int type);
|
||||||
void notifyMsgChanged(const QString &feedId, const QString &msgId, int type);
|
void msgChanged(const QString &feedId, const QString &msgId, int type);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
FeedReaderUserNotify::FeedReaderUserNotify(FeedReaderDialog *feedReaderDialog, RsFeedReader *feedReader, FeedReaderNotify *notify, QObject *parent) :
|
FeedReaderUserNotify::FeedReaderUserNotify(FeedReaderDialog *feedReaderDialog, RsFeedReader *feedReader, FeedReaderNotify *notify, QObject *parent) :
|
||||||
UserNotify(parent), mFeedReaderDialog(feedReaderDialog), mFeedReader(feedReader), mNotify(notify)
|
UserNotify(parent), mFeedReaderDialog(feedReaderDialog), mFeedReader(feedReader), mNotify(notify)
|
||||||
{
|
{
|
||||||
connect(mNotify, SIGNAL(notifyMsgChanged(QString,QString,int)), this, SLOT(updateIcon()), Qt::QueuedConnection);
|
connect(mNotify, SIGNAL(msgChanged(QString,QString,int)), this, SLOT(updateIcon()), Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FeedReaderUserNotify::hasSetting(QString &name)
|
bool FeedReaderUserNotify::hasSetting(QString &name)
|
||||||
|
|
|
@ -160,8 +160,8 @@ PreviewFeedDialog::PreviewFeedDialog(RsFeedReader *feedReader, FeedReaderNotify
|
||||||
connect(ui->xpathUseListWidget->itemDelegate(), SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(xpathCloseEditor(QWidget*,QAbstractItemDelegate::EndEditHint)));
|
connect(ui->xpathUseListWidget->itemDelegate(), SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(xpathCloseEditor(QWidget*,QAbstractItemDelegate::EndEditHint)));
|
||||||
connect(ui->xpathRemoveListWidget->itemDelegate(), SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(xpathCloseEditor(QWidget*,QAbstractItemDelegate::EndEditHint)));
|
connect(ui->xpathRemoveListWidget->itemDelegate(), SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(xpathCloseEditor(QWidget*,QAbstractItemDelegate::EndEditHint)));
|
||||||
|
|
||||||
connect(mNotify, SIGNAL(notifyFeedChanged(QString,int)), this, SLOT(feedChanged(QString,int)));
|
connect(mNotify, SIGNAL(feedChanged(QString,int)), this, SLOT(feedChanged(QString,int)));
|
||||||
connect(mNotify, SIGNAL(notifyMsgChanged(QString,QString,int)), this, SLOT(msgChanged(QString,QString,int)));
|
connect(mNotify, SIGNAL(msgChanged(QString,QString,int)), this, SLOT(msgChanged(QString,QString,int)));
|
||||||
|
|
||||||
// ui->documentTreeWidget->setItemDelegate(new PreviewItemDelegate(ui->documentTreeWidget));
|
// ui->documentTreeWidget->setItemDelegate(new PreviewItemDelegate(ui->documentTreeWidget));
|
||||||
ui->structureFrame->hide();
|
ui->structureFrame->hide();
|
||||||
|
|
|
@ -164,8 +164,8 @@ class RsFeedReaderNotify
|
||||||
public:
|
public:
|
||||||
RsFeedReaderNotify() {}
|
RsFeedReaderNotify() {}
|
||||||
|
|
||||||
virtual void feedChanged(const std::string &/*feedId*/, int /*type*/) {}
|
virtual void notifyFeedChanged(const std::string &/*feedId*/, int /*type*/) {}
|
||||||
virtual void msgChanged(const std::string &/*feedId*/, const std::string &/*msgId*/, int /*type*/) {}
|
virtual void notifyMsgChanged(const std::string &/*feedId*/, const std::string &/*msgId*/, int /*type*/) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class RsFeedReader
|
class RsFeedReader
|
||||||
|
|
|
@ -9,147 +9,147 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="49"/>
|
<location filename="../gui/AddFeedDialog.ui" line="42"/>
|
||||||
<source>Authentication (not yet supported)</source>
|
<source>Authentication (not yet supported)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="55"/>
|
<location filename="../gui/AddFeedDialog.ui" line="48"/>
|
||||||
<source>Feed needs authentication</source>
|
<source>Feed needs authentication</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="62"/>
|
<location filename="../gui/AddFeedDialog.ui" line="55"/>
|
||||||
<source>User</source>
|
<source>User</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="69"/>
|
<location filename="../gui/AddFeedDialog.ui" line="62"/>
|
||||||
<source>Password</source>
|
<source>Password</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="89"/>
|
<location filename="../gui/AddFeedDialog.ui" line="82"/>
|
||||||
<source>Update interval</source>
|
<source>Update interval</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="95"/>
|
<location filename="../gui/AddFeedDialog.ui" line="88"/>
|
||||||
<source>Use standard update interval</source>
|
<source>Use standard update interval</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="102"/>
|
<location filename="../gui/AddFeedDialog.ui" line="95"/>
|
||||||
<source>Interval in minutes (0 = manual)</source>
|
<source>Interval in minutes (0 = manual)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="121"/>
|
<location filename="../gui/AddFeedDialog.ui" line="114"/>
|
||||||
<source>Last update</source>
|
<source>Last update</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="134"/>
|
<location filename="../gui/AddFeedDialog.ui" line="127"/>
|
||||||
<source>Never</source>
|
<source>Never</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="146"/>
|
<location filename="../gui/AddFeedDialog.ui" line="139"/>
|
||||||
<source>Storage time</source>
|
<source>Storage time</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="152"/>
|
<location filename="../gui/AddFeedDialog.ui" line="145"/>
|
||||||
<source>Use standard storage time</source>
|
<source>Use standard storage time</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="159"/>
|
<location filename="../gui/AddFeedDialog.ui" line="152"/>
|
||||||
<source>Days (0 = off)</source>
|
<source>Days (0 = off)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="182"/>
|
<location filename="../gui/AddFeedDialog.ui" line="175"/>
|
||||||
<source>Proxy</source>
|
<source>Proxy</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="188"/>
|
<location filename="../gui/AddFeedDialog.ui" line="181"/>
|
||||||
<source>Use standard proxy</source>
|
<source>Use standard proxy</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="195"/>
|
<location filename="../gui/AddFeedDialog.ui" line="188"/>
|
||||||
<source>Server</source>
|
<source>Server</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="205"/>
|
<location filename="../gui/AddFeedDialog.ui" line="198"/>
|
||||||
<source>:</source>
|
<source>:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="231"/>
|
<location filename="../gui/AddFeedDialog.ui" line="224"/>
|
||||||
<source>Preview</source>
|
<source>Preview</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="240"/>
|
<location filename="../gui/AddFeedDialog.ui" line="233"/>
|
||||||
<source>Type</source>
|
<source>Type</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="251"/>
|
<location filename="../gui/AddFeedDialog.ui" line="244"/>
|
||||||
<source>Forum</source>
|
<source>Forum</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="276"/>
|
<location filename="../gui/AddFeedDialog.ui" line="269"/>
|
||||||
<source>Local Feed</source>
|
<source>Local Feed</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="299"/>
|
<location filename="../gui/AddFeedDialog.ui" line="292"/>
|
||||||
<source>Misc</source>
|
<source>Misc</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="305"/>
|
<location filename="../gui/AddFeedDialog.ui" line="298"/>
|
||||||
<source>Activated</source>
|
<source>Activated</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="312"/>
|
<location filename="../gui/AddFeedDialog.ui" line="305"/>
|
||||||
<source>Use name and description from feed</source>
|
<source>Use name and description from feed</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="319"/>
|
<location filename="../gui/AddFeedDialog.ui" line="312"/>
|
||||||
<source>Update forum information</source>
|
<source>Update forum information</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="326"/>
|
<location filename="../gui/AddFeedDialog.ui" line="319"/>
|
||||||
<source>Embed images (experimental for local feeds)</source>
|
<source>Embed images (experimental for local feeds)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="333"/>
|
<location filename="../gui/AddFeedDialog.ui" line="326"/>
|
||||||
<source>Save complete web page (experimental for local feeds)</source>
|
<source>Save complete web page (experimental for local feeds)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="345"/>
|
<location filename="../gui/AddFeedDialog.ui" line="338"/>
|
||||||
<source>Description:</source>
|
<source>Description:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="359"/>
|
<location filename="../gui/AddFeedDialog.ui" line="352"/>
|
||||||
<source>RSS-Feed-URL:</source>
|
<source>RSS-Feed-URL:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/AddFeedDialog.ui" line="369"/>
|
<location filename="../gui/AddFeedDialog.ui" line="362"/>
|
||||||
<source>Name:</source>
|
<source>Name:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -259,7 +259,12 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderConfig.h" line="47"/>
|
<location filename="../gui/FeedReaderConfig.ui" line="131"/>
|
||||||
|
<source>Open all feeds in new tab</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../gui/FeedReaderConfig.h" line="50"/>
|
||||||
<source>FeedReader</source>
|
<source>FeedReader</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -272,104 +277,119 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="81"/>
|
<location filename="../gui/FeedReaderDialog.ui" line="91"/>
|
||||||
|
<source>Add new feed</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../gui/FeedReaderDialog.ui" line="108"/>
|
||||||
|
<source>Update feed</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../gui/FeedReaderDialog.cpp" line="95"/>
|
||||||
<source>Message Folders</source>
|
<source>Message Folders</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="239"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="292"/>
|
||||||
<source>New</source>
|
<source>New</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="240"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="293"/>
|
||||||
<source>Feed</source>
|
<source>Feed</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="244"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="297"/>
|
||||||
<source>Folder</source>
|
<source>Folder</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="251"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="305"/>
|
||||||
|
<source>Open in new tab</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../gui/FeedReaderDialog.cpp" line="313"/>
|
||||||
<source>Edit</source>
|
<source>Edit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="256"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="318"/>
|
||||||
<source>Delete</source>
|
<source>Delete</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="268"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="330"/>
|
||||||
<source>Update</source>
|
<source>Update</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="271"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="333"/>
|
||||||
<source>Activate</source>
|
<source>Activate</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="271"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="333"/>
|
||||||
<source>Deactivate</source>
|
<source>Deactivate</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="451"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="513"/>
|
||||||
<source>No name</source>
|
<source>No name</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="588"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="723"/>
|
||||||
<source>Add new folder</source>
|
<source>Add new folder</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="589"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="724"/>
|
||||||
<source>Please enter a name for the folder</source>
|
<source>Please enter a name for the folder</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="595"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="730"/>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="648"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="783"/>
|
||||||
<source>Create folder</source>
|
<source>Create folder</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="595"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="730"/>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="648"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="783"/>
|
||||||
<source>Cannot create folder.</source>
|
<source>Cannot create folder.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="621"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="756"/>
|
||||||
<source>Remove folder</source>
|
<source>Remove folder</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="621"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="756"/>
|
||||||
<source>Remove feed</source>
|
<source>Remove feed</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="621"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="756"/>
|
||||||
<source>Do you want to remove the folder %1?</source>
|
<source>Do you want to remove the folder %1?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="621"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="756"/>
|
||||||
<source>Do you want to remove the feed %1?</source>
|
<source>Do you want to remove the feed %1?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="641"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="776"/>
|
||||||
<source>Edit folder</source>
|
<source>Edit folder</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderDialog.cpp" line="642"/>
|
<location filename="../gui/FeedReaderDialog.cpp" line="777"/>
|
||||||
<source>Please enter a new name for the folder</source>
|
<source>Please enter a new name for the folder</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -382,90 +402,120 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.ui" line="45"/>
|
<location filename="../gui/FeedReaderMessageWidget.ui" line="48"/>
|
||||||
|
<source>Mark messages as read</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../gui/FeedReaderMessageWidget.ui" line="51"/>
|
||||||
|
<source>...</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../gui/FeedReaderMessageWidget.ui" line="68"/>
|
||||||
|
<source>Mark messages as unread</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../gui/FeedReaderMessageWidget.ui" line="85"/>
|
||||||
|
<source>Mark all messages as read</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../gui/FeedReaderMessageWidget.ui" line="102"/>
|
||||||
|
<source>Remove messages</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../gui/FeedReaderMessageWidget.ui" line="119"/>
|
||||||
|
<source>Update feed</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../gui/FeedReaderMessageWidget.ui" line="133"/>
|
||||||
<source>Search forums</source>
|
<source>Search forums</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.ui" line="76"/>
|
<location filename="../gui/FeedReaderMessageWidget.ui" line="164"/>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="75"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="89"/>
|
||||||
<source>Title</source>
|
<source>Title</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.ui" line="90"/>
|
<location filename="../gui/FeedReaderMessageWidget.ui" line="178"/>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="76"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="90"/>
|
||||||
<source>Date</source>
|
<source>Date</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.ui" line="95"/>
|
<location filename="../gui/FeedReaderMessageWidget.ui" line="183"/>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="77"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="91"/>
|
||||||
<source>Author</source>
|
<source>Author</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="75"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="89"/>
|
||||||
<source>Search Title</source>
|
<source>Search Title</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="76"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="90"/>
|
||||||
<source>Search Date</source>
|
<source>Search Date</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="77"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="91"/>
|
||||||
<source>Search Author</source>
|
<source>Search Author</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="89"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="103"/>
|
||||||
<source>Open link in browser</source>
|
<source>Open link in browser</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="90"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="104"/>
|
||||||
<source>Copy link to clipboard</source>
|
<source>Copy link to clipboard</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="190"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="230"/>
|
||||||
<source>No name</source>
|
<source>No name</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="228"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="268"/>
|
||||||
<source>Mark as read</source>
|
<source>Mark as read</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="231"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="271"/>
|
||||||
<source>Mark as unread</source>
|
<source>Mark as unread</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="234"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="274"/>
|
||||||
<source>Mark all as read</source>
|
<source>Mark all as read</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="238"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="279"/>
|
||||||
<source>Copy link</source>
|
<source>Copy link</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="241"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="282"/>
|
||||||
<source>Remove</source>
|
<source>Remove</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="588"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="655"/>
|
||||||
<source>Hide</source>
|
<source>Hide</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/FeedReaderMessageWidget.cpp" line="592"/>
|
<location filename="../gui/FeedReaderMessageWidget.cpp" line="659"/>
|
||||||
<source>Expand</source>
|
<source>Expand</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -340,7 +340,7 @@ RsFeedAddResult p3FeedReader::addFolder(const std::string parentId, const std::s
|
||||||
IndicateConfigChanged();
|
IndicateConfigChanged();
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_ADD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_ADD);
|
||||||
}
|
}
|
||||||
|
|
||||||
return RS_FEED_ADD_RESULT_SUCCESS;
|
return RS_FEED_ADD_RESULT_SUCCESS;
|
||||||
|
@ -380,7 +380,7 @@ RsFeedAddResult p3FeedReader::setFolder(const std::string &feedId, const std::st
|
||||||
IndicateConfigChanged();
|
IndicateConfigChanged();
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
|
||||||
}
|
}
|
||||||
|
|
||||||
return RS_FEED_ADD_RESULT_SUCCESS;
|
return RS_FEED_ADD_RESULT_SUCCESS;
|
||||||
|
@ -427,7 +427,7 @@ RsFeedAddResult p3FeedReader::addFeed(const FeedInfo &feedInfo, std::string &fee
|
||||||
IndicateConfigChanged();
|
IndicateConfigChanged();
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_ADD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_ADD);
|
||||||
}
|
}
|
||||||
|
|
||||||
return RS_FEED_ADD_RESULT_SUCCESS;
|
return RS_FEED_ADD_RESULT_SUCCESS;
|
||||||
|
@ -496,7 +496,7 @@ RsFeedAddResult p3FeedReader::setFeed(const std::string &feedId, const FeedInfo
|
||||||
IndicateConfigChanged();
|
IndicateConfigChanged();
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!forumId.empty()) {
|
if (!forumId.empty()) {
|
||||||
|
@ -602,7 +602,7 @@ bool p3FeedReader::removeFeed(const std::string &feedId)
|
||||||
/* only notify remove of feed */
|
/* only notify remove of feed */
|
||||||
std::list<std::string>::iterator it;
|
std::list<std::string>::iterator it;
|
||||||
for (it = removedFeedIds.begin(); it != removedFeedIds.end(); ++it) {
|
for (it = removedFeedIds.begin(); it != removedFeedIds.end(); ++it) {
|
||||||
mNotify->feedChanged(*it, NOTIFY_TYPE_DEL);
|
mNotify->notifyFeedChanged(*it, NOTIFY_TYPE_DEL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -648,7 +648,7 @@ bool p3FeedReader::addPreviewFeed(const FeedInfo &feedInfo, std::string &feedId)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_ADD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_ADD);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -766,8 +766,8 @@ bool p3FeedReader::removeMsg(const std::string &feedId, const std::string &msgId
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
|
||||||
mNotify->msgChanged(feedId, msgId, NOTIFY_TYPE_DEL);
|
mNotify->notifyMsgChanged(feedId, msgId, NOTIFY_TYPE_DEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -814,11 +814,11 @@ bool p3FeedReader::removeMsgs(const std::string &feedId, const std::list<std::st
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mNotify && !removedMsgs.empty()) {
|
if (mNotify && !removedMsgs.empty()) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
|
||||||
|
|
||||||
std::list<std::string>::iterator it;
|
std::list<std::string>::iterator it;
|
||||||
for (it = removedMsgs.begin(); it != removedMsgs.end(); ++it) {
|
for (it = removedMsgs.begin(); it != removedMsgs.end(); ++it) {
|
||||||
mNotify->msgChanged(feedId, *it, NOTIFY_TYPE_DEL);
|
mNotify->notifyMsgChanged(feedId, *it, NOTIFY_TYPE_DEL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1061,7 +1061,7 @@ bool p3FeedReader::processFeed(const std::string &feedId)
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
for (it = notifyIds.begin(); it != notifyIds.end(); ++it) {
|
for (it = notifyIds.begin(); it != notifyIds.end(); ++it) {
|
||||||
mNotify->feedChanged(*it, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(*it, NOTIFY_TYPE_MOD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1110,8 +1110,8 @@ bool p3FeedReader::setMessageRead(const std::string &feedId, const std::string &
|
||||||
if (changed) {
|
if (changed) {
|
||||||
IndicateConfigChanged();
|
IndicateConfigChanged();
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
|
||||||
mNotify->msgChanged(feedId, msgId, NOTIFY_TYPE_MOD);
|
mNotify->notifyMsgChanged(feedId, msgId, NOTIFY_TYPE_MOD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1187,7 +1187,7 @@ int p3FeedReader::tick()
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
for (it = notifyIds.begin(); it != notifyIds.end(); ++it) {
|
for (it = notifyIds.begin(); it != notifyIds.end(); ++it) {
|
||||||
mNotify->feedChanged(*it, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(*it, NOTIFY_TYPE_MOD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1244,7 +1244,7 @@ void p3FeedReader::cleanFeeds()
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
std::list<std::pair<std::string, std::string> >::iterator it;
|
std::list<std::pair<std::string, std::string> >::iterator it;
|
||||||
for (it = removedMsgIds.begin(); it != removedMsgIds.end(); ++it) {
|
for (it = removedMsgIds.begin(); it != removedMsgIds.end(); ++it) {
|
||||||
mNotify->msgChanged(it->first, it->second, NOTIFY_TYPE_DEL);
|
mNotify->notifyMsgChanged(it->first, it->second, NOTIFY_TYPE_DEL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1474,7 +1474,7 @@ bool p3FeedReader::getFeedToDownload(RsFeedReaderFeed &feed, const std::string &
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -1525,7 +1525,7 @@ void p3FeedReader::onDownloadSuccess(const std::string &feedId, const std::strin
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1562,7 +1562,7 @@ void p3FeedReader::onDownloadError(const std::string &feedId, RsFeedReaderErrorS
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1617,7 +1617,7 @@ bool p3FeedReader::getFeedToProcess(RsFeedReaderFeed &feed, const std::string &n
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -1832,11 +1832,11 @@ void p3FeedReader::onProcessSuccess_addMsgs(const std::string &feedId, std::list
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
|
||||||
|
|
||||||
std::list<std::string>::iterator it;
|
std::list<std::string>::iterator it;
|
||||||
for (it = addedMsgs.begin(); it != addedMsgs.end(); ++it) {
|
for (it = addedMsgs.begin(); it != addedMsgs.end(); ++it) {
|
||||||
mNotify->msgChanged(feedId, *it, NOTIFY_TYPE_ADD);
|
mNotify->notifyMsgChanged(feedId, *it, NOTIFY_TYPE_ADD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1874,7 +1874,7 @@ void p3FeedReader::onProcessError(const std::string &feedId, RsFeedReaderErrorSt
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1930,7 +1930,7 @@ void p3FeedReader::setFeedInfo(const std::string &feedId, const std::string &nam
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mNotify) {
|
if (mNotify) {
|
||||||
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
|
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1765,7 +1765,7 @@ ForumsFillThread::ForumsFillThread(ForumsDialog *parent)
|
||||||
stopped = false;
|
stopped = false;
|
||||||
compareRole = NULL;
|
compareRole = NULL;
|
||||||
|
|
||||||
expandNewMessages = Settings->getExpandNewMessages();
|
expandNewMessages = Settings->getForumExpandNewMessages();
|
||||||
fillComplete = false;
|
fillComplete = false;
|
||||||
|
|
||||||
filterColumn = 0;
|
filterColumn = 0;
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "settings/rsharesettings.h"
|
#include "settings/rsharesettings.h"
|
||||||
#include "RetroShareLink.h"
|
#include "RetroShareLink.h"
|
||||||
#include "channels/ShareKey.h"
|
#include "channels/ShareKey.h"
|
||||||
|
#include "common/RSTreeWidget.h"
|
||||||
#include "notifyqt.h"
|
#include "notifyqt.h"
|
||||||
|
|
||||||
// These should be in retroshare/ folder.
|
// These should be in retroshare/ folder.
|
||||||
|
@ -69,13 +70,16 @@ GxsForumsDialog::GxsForumsDialog(QWidget *parent)
|
||||||
|
|
||||||
/* Setup Queue */
|
/* Setup Queue */
|
||||||
mForumQueue = new TokenQueue(rsGxsForums->getTokenService(), this);
|
mForumQueue = new TokenQueue(rsGxsForums->getTokenService(), this);
|
||||||
|
mThreadWidget = NULL;
|
||||||
|
|
||||||
connect(ui.forumTreeWidget, SIGNAL(treeCustomContextMenuRequested(QPoint)), this, SLOT(forumListCustomPopupMenu(QPoint)));
|
connect(ui.forumTreeWidget, SIGNAL(treeCustomContextMenuRequested(QPoint)), this, SLOT(forumListCustomPopupMenu(QPoint)));
|
||||||
connect(ui.newForumButton, SIGNAL(clicked()), this, SLOT(newforum()));
|
connect(ui.newForumButton, SIGNAL(clicked()), this, SLOT(newforum()));
|
||||||
connect(ui.forumTreeWidget, SIGNAL(treeItemActivated(QString)), this, SLOT(changedForum(QString)));
|
connect(ui.forumTreeWidget, SIGNAL(treeItemActivated(QString)), this, SLOT(changedForum(QString)));
|
||||||
|
connect(ui.forumTreeWidget->treeWidget(), SIGNAL(signalMouseMiddleButtonClicked(QTreeWidgetItem*)), this, SLOT(forumTreeMiddleButtonClicked(QTreeWidgetItem*)));
|
||||||
connect(ui.threadTabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(threadTabCloseRequested(int)));
|
connect(ui.threadTabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(threadTabCloseRequested(int)));
|
||||||
connect(ui.threadTabWidget, SIGNAL(currentChanged(int)), this, SLOT(threadTabChanged(int)));
|
connect(ui.threadTabWidget, SIGNAL(currentChanged(int)), this, SLOT(threadTabChanged(int)));
|
||||||
connect(NotifyQt::getInstance(), SIGNAL(forumMsgReadSatusChanged(QString,QString,int)), this, SLOT(forumMsgReadSatusChanged(QString,QString,int)));
|
connect(NotifyQt::getInstance(), SIGNAL(forumMsgReadSatusChanged(QString,QString,int)), this, SLOT(forumMsgReadSatusChanged(QString,QString,int)));
|
||||||
|
connect(NotifyQt::getInstance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged()));
|
||||||
|
|
||||||
// HACK - TEMPORARY HIJACKING THIS BUTTON FOR REFRESH.
|
// HACK - TEMPORARY HIJACKING THIS BUTTON FOR REFRESH.
|
||||||
connect(ui.refreshButton, SIGNAL(clicked()), this, SLOT(forceUpdateDisplay()));
|
connect(ui.refreshButton, SIGNAL(clicked()), this, SLOT(forceUpdateDisplay()));
|
||||||
|
@ -97,9 +101,7 @@ GxsForumsDialog::GxsForumsDialog(QWidget *parent)
|
||||||
// load settings
|
// load settings
|
||||||
processSettings(true);
|
processSettings(true);
|
||||||
|
|
||||||
mThreadWidget = createThreadWidget("");
|
settingsChanged();
|
||||||
// remove close button of the the first tab
|
|
||||||
ui.threadTabWidget->hideCloseButton(ui.threadTabWidget->indexOf(mThreadWidget));
|
|
||||||
|
|
||||||
/* Hide platform specific features */
|
/* Hide platform specific features */
|
||||||
#ifdef Q_WS_WIN
|
#ifdef Q_WS_WIN
|
||||||
|
@ -120,11 +122,11 @@ GxsForumsDialog::~GxsForumsDialog()
|
||||||
// return new GxsForumUserNotify(parent);
|
// return new GxsForumUserNotify(parent);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
void GxsForumsDialog::processSettings(bool bLoad)
|
void GxsForumsDialog::processSettings(bool load)
|
||||||
{
|
{
|
||||||
Settings->beginGroup(QString("GxsForumsDialog"));
|
Settings->beginGroup(QString("GxsForumsDialog"));
|
||||||
|
|
||||||
if (bLoad) {
|
if (load) {
|
||||||
// load settings
|
// load settings
|
||||||
|
|
||||||
// state of splitter
|
// state of splitter
|
||||||
|
@ -136,11 +138,27 @@ void GxsForumsDialog::processSettings(bool bLoad)
|
||||||
Settings->setValue("Splitter", ui.splitter->saveState());
|
Settings->setValue("Splitter", ui.splitter->saveState());
|
||||||
}
|
}
|
||||||
|
|
||||||
ui.forumTreeWidget->processSettings(Settings, bLoad);
|
ui.forumTreeWidget->processSettings(Settings, load);
|
||||||
|
|
||||||
Settings->endGroup();
|
Settings->endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GxsForumsDialog::settingsChanged()
|
||||||
|
{
|
||||||
|
if (Settings->getForumOpenAllInNewTab()) {
|
||||||
|
if (mThreadWidget) {
|
||||||
|
delete(mThreadWidget);
|
||||||
|
mThreadWidget = NULL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!mThreadWidget) {
|
||||||
|
mThreadWidget = createThreadWidget("");
|
||||||
|
// remove close button of the the first tab
|
||||||
|
ui.threadTabWidget->hideCloseButton(ui.threadTabWidget->indexOf(mThreadWidget));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GxsForumsDialog::forumListCustomPopupMenu(QPoint /*point*/)
|
void GxsForumsDialog::forumListCustomPopupMenu(QPoint /*point*/)
|
||||||
{
|
{
|
||||||
int subscribeFlags = ui.forumTreeWidget->subscribeFlags(QString::fromStdString(mForumId));
|
int subscribeFlags = ui.forumTreeWidget->subscribeFlags(QString::fromStdString(mForumId));
|
||||||
|
@ -153,9 +171,11 @@ void GxsForumsDialog::forumListCustomPopupMenu(QPoint /*point*/)
|
||||||
action = contextMnu.addAction(QIcon(IMAGE_UNSUBSCRIBE), tr("Unsubscribe to Forum"), this, SLOT(unsubscribeToForum()));
|
action = contextMnu.addAction(QIcon(IMAGE_UNSUBSCRIBE), tr("Unsubscribe to Forum"), this, SLOT(unsubscribeToForum()));
|
||||||
action->setEnabled (!mForumId.empty() && IS_GROUP_SUBSCRIBED(subscribeFlags));
|
action->setEnabled (!mForumId.empty() && IS_GROUP_SUBSCRIBED(subscribeFlags));
|
||||||
|
|
||||||
action = contextMnu.addAction(QIcon(""), tr("Open in new tab"), this, SLOT(openInNewTab()));
|
if (!Settings->getForumOpenAllInNewTab()) {
|
||||||
if (mForumId.empty() || forumThreadWidget(mForumId)) {
|
action = contextMnu.addAction(QIcon(""), tr("Open in new tab"), this, SLOT(openInNewTab()));
|
||||||
action->setEnabled(false);
|
if (mForumId.empty() || forumThreadWidget(mForumId)) {
|
||||||
|
action->setEnabled(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
contextMnu.addSeparator();
|
contextMnu.addSeparator();
|
||||||
|
@ -335,7 +355,7 @@ GxsForumThreadWidget *GxsForumsDialog::forumThreadWidget(const std::string &foru
|
||||||
int tabCount = ui.threadTabWidget->count();
|
int tabCount = ui.threadTabWidget->count();
|
||||||
for (int index = 0; index < tabCount; ++index) {
|
for (int index = 0; index < tabCount; ++index) {
|
||||||
GxsForumThreadWidget *childWidget = dynamic_cast<GxsForumThreadWidget*>(ui.threadTabWidget->widget(index));
|
GxsForumThreadWidget *childWidget = dynamic_cast<GxsForumThreadWidget*>(ui.threadTabWidget->widget(index));
|
||||||
if (childWidget == mThreadWidget) {
|
if (mThreadWidget && childWidget == mThreadWidget) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (childWidget && childWidget->forumId() == forumId) {
|
if (childWidget && childWidget->forumId() == forumId) {
|
||||||
|
@ -370,25 +390,40 @@ void GxsForumsDialog::changedForum(const QString &forumId)
|
||||||
GxsForumThreadWidget *threadWidget = forumThreadWidget(mForumId);
|
GxsForumThreadWidget *threadWidget = forumThreadWidget(mForumId);
|
||||||
|
|
||||||
if (!threadWidget) {
|
if (!threadWidget) {
|
||||||
/* not found, use standard tab */
|
if (mThreadWidget) {
|
||||||
threadWidget = mThreadWidget;
|
/* not found, use standard tab */
|
||||||
threadWidget->setForumId(mForumId);
|
threadWidget = mThreadWidget;
|
||||||
|
threadWidget->setForumId(mForumId);
|
||||||
|
} else {
|
||||||
|
/* create new tab */
|
||||||
|
threadWidget = createThreadWidget(mForumId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ui.threadTabWidget->setCurrentWidget(threadWidget);
|
ui.threadTabWidget->setCurrentWidget(threadWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GxsForumsDialog::forumTreeMiddleButtonClicked(QTreeWidgetItem *item)
|
||||||
|
{
|
||||||
|
openForumInNewTab(ui.forumTreeWidget->itemId(item).toStdString());
|
||||||
|
}
|
||||||
|
|
||||||
void GxsForumsDialog::openInNewTab()
|
void GxsForumsDialog::openInNewTab()
|
||||||
{
|
{
|
||||||
if (mForumId.empty()) {
|
openForumInNewTab(mForumId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GxsForumsDialog::openForumInNewTab(const std::string &forumId)
|
||||||
|
{
|
||||||
|
if (forumId.empty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* search exisiting tab */
|
/* search exisiting tab */
|
||||||
GxsForumThreadWidget *threadWidget = forumThreadWidget(mForumId);
|
GxsForumThreadWidget *threadWidget = forumThreadWidget(forumId);
|
||||||
if (!threadWidget) {
|
if (!threadWidget) {
|
||||||
/* not found, create new tab */
|
/* not found, create new tab */
|
||||||
threadWidget = createThreadWidget(mForumId);
|
threadWidget = createThreadWidget(forumId);
|
||||||
}
|
}
|
||||||
|
|
||||||
ui.threadTabWidget->setCurrentWidget(threadWidget);
|
ui.threadTabWidget->setCurrentWidget(threadWidget);
|
||||||
|
|
|
@ -57,6 +57,7 @@ public:
|
||||||
virtual void loadRequest(const TokenQueue *queue, const TokenRequest &req);
|
virtual void loadRequest(const TokenQueue *queue, const TokenRequest &req);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void settingsChanged();
|
||||||
void forceUpdateDisplay(); // TEMP HACK FN.
|
void forceUpdateDisplay(); // TEMP HACK FN.
|
||||||
|
|
||||||
/** Create the context popup menu and it's submenus */
|
/** Create the context popup menu and it's submenus */
|
||||||
|
@ -66,6 +67,7 @@ private slots:
|
||||||
void newforum();
|
void newforum();
|
||||||
|
|
||||||
void changedForum(const QString &forumId);
|
void changedForum(const QString &forumId);
|
||||||
|
void forumTreeMiddleButtonClicked(QTreeWidgetItem *item);
|
||||||
void openInNewTab();
|
void openInNewTab();
|
||||||
void threadTabCloseRequested(int index);
|
void threadTabCloseRequested(int index);
|
||||||
void threadTabChanged(int index);
|
void threadTabChanged(int index);
|
||||||
|
@ -93,6 +95,7 @@ private:
|
||||||
// void forumInfoToGroupItemInfo(const ForumInfo &forumInfo, GroupItemInfo &groupItemInfo);
|
// void forumInfoToGroupItemInfo(const ForumInfo &forumInfo, GroupItemInfo &groupItemInfo);
|
||||||
void forumInfoToGroupItemInfo(const RsGroupMetaData &forumInfo, GroupItemInfo &groupItemInfo);
|
void forumInfoToGroupItemInfo(const RsGroupMetaData &forumInfo, GroupItemInfo &groupItemInfo);
|
||||||
|
|
||||||
|
void openForumInNewTab(const std::string &forumId);
|
||||||
void forumSubscribe(bool subscribe);
|
void forumSubscribe(bool subscribe);
|
||||||
|
|
||||||
void processSettings(bool load);
|
void processSettings(bool load);
|
||||||
|
|
|
@ -434,6 +434,11 @@ QTreeWidgetItem *GroupTreeWidget::activateId(const QString &id, bool focus)
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RSTreeWidget *GroupTreeWidget::treeWidget()
|
||||||
|
{
|
||||||
|
return ui->treeWidget;
|
||||||
|
}
|
||||||
|
|
||||||
int GroupTreeWidget::subscribeFlags(const QString &id)
|
int GroupTreeWidget::subscribeFlags(const QString &id)
|
||||||
{
|
{
|
||||||
QTreeWidgetItem *item = getItemFromId(id);
|
QTreeWidgetItem *item = getItemFromId(id);
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
class QToolButton;
|
class QToolButton;
|
||||||
class RshareSettings;
|
class RshareSettings;
|
||||||
class RSTreeWidgetItemCompareRole;
|
class RSTreeWidgetItemCompareRole;
|
||||||
|
class RSTreeWidget;
|
||||||
|
|
||||||
#define GROUPTREEWIDGET_COLOR_STANDARD -1
|
#define GROUPTREEWIDGET_COLOR_STANDARD -1
|
||||||
#define GROUPTREEWIDGET_COLOR_CATEGORY 0
|
#define GROUPTREEWIDGET_COLOR_CATEGORY 0
|
||||||
|
@ -89,6 +90,8 @@ public:
|
||||||
QTreeWidgetItem *getItemFromId(const QString &id);
|
QTreeWidgetItem *getItemFromId(const QString &id);
|
||||||
QTreeWidgetItem *activateId(const QString &id, bool focus);
|
QTreeWidgetItem *activateId(const QString &id, bool focus);
|
||||||
|
|
||||||
|
RSTreeWidget *treeWidget();
|
||||||
|
|
||||||
QColor textColorCategory() const { return mTextColor[GROUPTREEWIDGET_COLOR_CATEGORY]; }
|
QColor textColorCategory() const { return mTextColor[GROUPTREEWIDGET_COLOR_CATEGORY]; }
|
||||||
QColor textColorPrivateKey() const { return mTextColor[GROUPTREEWIDGET_COLOR_PRIVATEKEY]; }
|
QColor textColorPrivateKey() const { return mTextColor[GROUPTREEWIDGET_COLOR_PRIVATEKEY]; }
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<widget class="LineEditClear" name="filterLineEdit"/>
|
<widget class="LineEditClear" name="filterLineEdit"/>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTreeWidget" name="treeWidget">
|
<widget class="RSTreeWidget" name="treeWidget">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
|
@ -72,6 +72,11 @@
|
||||||
<extends>QLineEdit</extends>
|
<extends>QLineEdit</extends>
|
||||||
<header location="global">gui/common/LineEditClear.h</header>
|
<header location="global">gui/common/LineEditClear.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>RSTreeWidget</class>
|
||||||
|
<extends>QTreeWidget</extends>
|
||||||
|
<header>gui/common/RSTreeWidget.h</header>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
|
||||||
#include "RSTreeWidget.h"
|
#include "RSTreeWidget.h"
|
||||||
|
|
||||||
|
@ -29,7 +30,7 @@ RSTreeWidget::RSTreeWidget(QWidget *parent) : QTreeWidget(parent)
|
||||||
|
|
||||||
void RSTreeWidget::setPlaceholderText(const QString &text)
|
void RSTreeWidget::setPlaceholderText(const QString &text)
|
||||||
{
|
{
|
||||||
placeholderText = text;
|
mPlaceholderText = text;
|
||||||
viewport()->repaint();
|
viewport()->repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +38,7 @@ void RSTreeWidget::paintEvent(QPaintEvent *event)
|
||||||
{
|
{
|
||||||
QTreeWidget::paintEvent(event);
|
QTreeWidget::paintEvent(event);
|
||||||
|
|
||||||
if (placeholderText.isEmpty() == false && model() && model()->rowCount() == 0) {
|
if (mPlaceholderText.isEmpty() == false && model() && model()->rowCount() == 0) {
|
||||||
QWidget *vieportWidget = viewport();
|
QWidget *vieportWidget = viewport();
|
||||||
QPainter painter(vieportWidget);
|
QPainter painter(vieportWidget);
|
||||||
|
|
||||||
|
@ -47,6 +48,22 @@ void RSTreeWidget::paintEvent(QPaintEvent *event)
|
||||||
pen.setColor(color);
|
pen.setColor(color);
|
||||||
painter.setPen(pen);
|
painter.setPen(pen);
|
||||||
|
|
||||||
painter.drawText(QRect(QPoint(), vieportWidget->size()), Qt::AlignHCenter | Qt::AlignVCenter | Qt::TextWordWrap, placeholderText);
|
painter.drawText(QRect(QPoint(), vieportWidget->size()), Qt::AlignHCenter | Qt::AlignVCenter | Qt::TextWordWrap, mPlaceholderText);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RSTreeWidget::mousePressEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
if (event->buttons() & Qt::MiddleButton) {
|
||||||
|
if (receivers(SIGNAL(signalMouseMiddleButtonClicked(QTreeWidgetItem*))) > 0) {
|
||||||
|
QTreeWidgetItem *item = itemAt(event->pos());
|
||||||
|
if (item) {
|
||||||
|
setCurrentItem(item);
|
||||||
|
emit signalMouseMiddleButtonClicked(item);
|
||||||
|
}
|
||||||
|
return; // eat event
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QTreeWidget::mousePressEvent(event);
|
||||||
|
}
|
||||||
|
|
|
@ -34,10 +34,14 @@ public:
|
||||||
|
|
||||||
void setPlaceholderText(const QString &text);
|
void setPlaceholderText(const QString &text);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void signalMouseMiddleButtonClicked(QTreeWidgetItem *item);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paintEvent(QPaintEvent *event);
|
void paintEvent(QPaintEvent *event);
|
||||||
|
virtual void mousePressEvent(QMouseEvent *event);
|
||||||
|
|
||||||
QString placeholderText;
|
QString mPlaceholderText;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -958,7 +958,7 @@ void GxsForumThreadWidget::insertForumThreads(const RsGroupMetaData &fi)
|
||||||
mFillThread->mFilterColumn = ui->filterLineEdit->currentFilter();
|
mFillThread->mFilterColumn = ui->filterLineEdit->currentFilter();
|
||||||
mFillThread->mFilterColumn = COLUMN_THREAD_TITLE;
|
mFillThread->mFilterColumn = COLUMN_THREAD_TITLE;
|
||||||
mFillThread->mSubscribeFlags = mSubscribeFlags;
|
mFillThread->mSubscribeFlags = mSubscribeFlags;
|
||||||
mFillThread->mExpandNewMessages = Settings->getExpandNewMessages();
|
mFillThread->mExpandNewMessages = Settings->getForumExpandNewMessages();
|
||||||
mFillThread->mViewType = ui->viewBox->currentIndex();
|
mFillThread->mViewType = ui->viewBox->currentIndex();
|
||||||
if (mLastViewType != mFillThread->mViewType || mLastForumID != mForumId) {
|
if (mLastViewType != mFillThread->mViewType || mLastForumID != mForumId) {
|
||||||
mFillThread->mFillComplete = true;
|
mFillThread->mFillComplete = true;
|
||||||
|
|
|
@ -837,6 +837,11 @@ void NotifyQt::notifyChatStyleChanged(int /*ChatStyle::enumStyleType*/ styleType
|
||||||
emit chatStyleChanged(styleType);
|
emit chatStyleChanged(styleType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NotifyQt::notifySettingsChanged()
|
||||||
|
{
|
||||||
|
emit settingsChanged();
|
||||||
|
}
|
||||||
|
|
||||||
void NotifyQt::startWaitingToasters()
|
void NotifyQt::startWaitingToasters()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
|
|
|
@ -66,6 +66,8 @@ class NotifyQt: public QObject, public NotifyBase
|
||||||
|
|
||||||
void testToaster(uint notifyFlags, /*RshareSettings::enumToasterPosition*/ int position, QPoint margin);
|
void testToaster(uint notifyFlags, /*RshareSettings::enumToasterPosition*/ int position, QPoint margin);
|
||||||
|
|
||||||
|
void notifySettingsChanged();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
// It's beneficial to send info to the GUI using signals, because signals are thread-safe
|
// It's beneficial to send info to the GUI using signals, because signals are thread-safe
|
||||||
// as they get queued by Qt.
|
// as they get queued by Qt.
|
||||||
|
@ -107,6 +109,7 @@ class NotifyQt: public QObject, public NotifyBase
|
||||||
|
|
||||||
/* Notify from GUI */
|
/* Notify from GUI */
|
||||||
void chatStyleChanged(int /*ChatStyle::enumStyleType*/ styleType);
|
void chatStyleChanged(int /*ChatStyle::enumStyleType*/ styleType);
|
||||||
|
void settingsChanged();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void UpdateGUI(); /* called by timer */
|
void UpdateGUI(); /* called by timer */
|
||||||
|
|
|
@ -42,7 +42,8 @@ bool
|
||||||
ForumPage::save(QString &/*errmsg*/)
|
ForumPage::save(QString &/*errmsg*/)
|
||||||
{
|
{
|
||||||
Settings->setForumMsgSetToReadOnActivate(ui.setMsgToReadOnActivate->isChecked());
|
Settings->setForumMsgSetToReadOnActivate(ui.setMsgToReadOnActivate->isChecked());
|
||||||
Settings->setExpandNewMessages(ui.expandNewMessages->isChecked());
|
Settings->setForumExpandNewMessages(ui.expandNewMessages->isChecked());
|
||||||
|
Settings->setForumOpenAllInNewTab(ui.openAllInNewTabCheckBox->isChecked());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -52,5 +53,6 @@ void
|
||||||
ForumPage::load()
|
ForumPage::load()
|
||||||
{
|
{
|
||||||
ui.setMsgToReadOnActivate->setChecked(Settings->getForumMsgSetToReadOnActivate());
|
ui.setMsgToReadOnActivate->setChecked(Settings->getForumMsgSetToReadOnActivate());
|
||||||
ui.expandNewMessages->setChecked(Settings->getExpandNewMessages());
|
ui.expandNewMessages->setChecked(Settings->getForumExpandNewMessages());
|
||||||
|
ui.openAllInNewTabCheckBox->setChecked(Settings->getForumOpenAllInNewTab());
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="2" column="0">
|
||||||
<spacer name="verticalSpacer">
|
<spacer name="verticalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
|
@ -47,6 +47,22 @@
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QGroupBox" name="gxsGroupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>New forum</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="openAllInNewTabCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Open all forums in new tab</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
#include "ForumPage.h"
|
#include "ForumPage.h"
|
||||||
#include "PluginsPage.h"
|
#include "PluginsPage.h"
|
||||||
#include "rsharesettings.h"
|
#include "rsharesettings.h"
|
||||||
|
#include "gui/notifyqt.h"
|
||||||
|
|
||||||
#define IMAGE_GENERAL ":/images/kcmsystem24.png"
|
#define IMAGE_GENERAL ":/images/kcmsystem24.png"
|
||||||
|
|
||||||
|
@ -202,5 +203,9 @@ RSettingsWin::saveChanges()
|
||||||
/* call to RsIface save function.... */
|
/* call to RsIface save function.... */
|
||||||
//rsicontrol -> ConfigSave();
|
//rsicontrol -> ConfigSave();
|
||||||
|
|
||||||
|
if (NotifyQt::getInstance()) {
|
||||||
|
NotifyQt::getInstance()->notifySettingsChanged();
|
||||||
|
}
|
||||||
|
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
|
@ -698,9 +698,9 @@ bool RshareSettings::getMsgSetToReadOnActivate ()
|
||||||
return valueFromGroup("MessageDialog", "SetMsgToReadOnActivate", true).toBool();
|
return valueFromGroup("MessageDialog", "SetMsgToReadOnActivate", true).toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RshareSettings::setMsgSetToReadOnActivate (bool bValue)
|
void RshareSettings::setMsgSetToReadOnActivate (bool value)
|
||||||
{
|
{
|
||||||
setValueToGroup("MessageDialog", "SetMsgToReadOnActivate", bValue);
|
setValueToGroup("MessageDialog", "SetMsgToReadOnActivate", value);
|
||||||
}
|
}
|
||||||
|
|
||||||
RshareSettings::enumMsgOpen RshareSettings::getMsgOpen()
|
RshareSettings::enumMsgOpen RshareSettings::getMsgOpen()
|
||||||
|
@ -735,19 +735,29 @@ bool RshareSettings::getForumMsgSetToReadOnActivate ()
|
||||||
return valueFromGroup("ForumDialog", "SetMsgToReadOnActivate", true).toBool();
|
return valueFromGroup("ForumDialog", "SetMsgToReadOnActivate", true).toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RshareSettings::setForumMsgSetToReadOnActivate (bool bValue)
|
void RshareSettings::setForumMsgSetToReadOnActivate(bool value)
|
||||||
{
|
{
|
||||||
setValueToGroup("ForumDialog", "SetMsgToReadOnActivate", bValue);
|
setValueToGroup("ForumDialog", "SetMsgToReadOnActivate", value);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RshareSettings::getExpandNewMessages()
|
bool RshareSettings::getForumExpandNewMessages()
|
||||||
{
|
{
|
||||||
return valueFromGroup("ForumDialog", "ExpandNewMessages", true).toBool();
|
return valueFromGroup("ForumDialog", "ExpandNewMessages", true).toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RshareSettings::setExpandNewMessages (bool bValue)
|
void RshareSettings::setForumExpandNewMessages(bool value)
|
||||||
{
|
{
|
||||||
setValueToGroup("ForumDialog", "ExpandNewMessages", bValue);
|
setValueToGroup("ForumDialog", "ExpandNewMessages", value);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RshareSettings::getForumOpenAllInNewTab()
|
||||||
|
{
|
||||||
|
return valueFromGroup("ForumDialog", "OpenAllInNewTab", true).toBool();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RshareSettings::setForumOpenAllInNewTab(bool value)
|
||||||
|
{
|
||||||
|
setValueToGroup("ForumDialog", "OpenAllInNewTab", value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* time before idle */
|
/* time before idle */
|
||||||
|
|
|
@ -236,21 +236,23 @@ public:
|
||||||
void setStatusBarFlag(uint flag, bool enable);
|
void setStatusBarFlag(uint flag, bool enable);
|
||||||
|
|
||||||
/* Messages */
|
/* Messages */
|
||||||
bool getMsgSetToReadOnActivate ();
|
bool getMsgSetToReadOnActivate();
|
||||||
void setMsgSetToReadOnActivate (bool bValue);
|
void setMsgSetToReadOnActivate(bool value);
|
||||||
|
|
||||||
enumMsgOpen getMsgOpen();
|
enumMsgOpen getMsgOpen();
|
||||||
void setMsgOpen(enumMsgOpen value);
|
void setMsgOpen(enumMsgOpen value);
|
||||||
|
|
||||||
/* Forums */
|
/* Forums */
|
||||||
bool getForumMsgSetToReadOnActivate ();
|
bool getForumMsgSetToReadOnActivate();
|
||||||
void setForumMsgSetToReadOnActivate (bool bValue);
|
void setForumMsgSetToReadOnActivate(bool value);
|
||||||
bool getExpandNewMessages ();
|
bool getForumExpandNewMessages();
|
||||||
void setExpandNewMessages (bool bValue);
|
void setForumExpandNewMessages(bool value);
|
||||||
|
bool getForumOpenAllInNewTab();
|
||||||
|
bool setForumOpenAllInNewTab(bool value);
|
||||||
|
|
||||||
/* time before idle */
|
/* time before idle */
|
||||||
uint getMaxTimeBeforeIdle();
|
uint getMaxTimeBeforeIdle();
|
||||||
void setMaxTimeBeforeIdle(uint nValue);
|
void setMaxTimeBeforeIdle(uint value);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Default constructor. */
|
/** Default constructor. */
|
||||||
|
|
|
@ -4172,6 +4172,14 @@ p, li { white-space: pre-wrap; }
|
||||||
<source>Forum</source>
|
<source>Forum</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>New forum</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open all forums in new tab</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ForumUserNotify</name>
|
<name>ForumUserNotify</name>
|
||||||
|
@ -5885,6 +5893,10 @@ p, li { white-space: pre-wrap; }
|
||||||
<source>Search Content</source>
|
<source>Search Content</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No name</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>GxsForumsDialog</name>
|
<name>GxsForumsDialog</name>
|
||||||
|
@ -5988,6 +6000,10 @@ p, li { white-space: pre-wrap; }
|
||||||
<source>On %1, %2 wrote:</source>
|
<source>On %1, %2 wrote:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open in new tab</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>GxsForumsFillThread</name>
|
<name>GxsForumsFillThread</name>
|
||||||
|
@ -6315,6 +6331,14 @@ p, li { white-space: pre-wrap; }
|
||||||
<source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
<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">
|
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||||
p, li { white-space: pre-wrap; }
|
p, li { white-space: pre-wrap; }
|
||||||
|
</style></head><body style=" font-size:8pt; 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;"><span style=" font-size:9pt; font-weight:600;">About RetroShare</span></p></body></html></source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<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:'MS Shell Dlg 2'; font-size:9pt; font-weight:400; font-style:normal;">
|
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:9pt; font-weight:400; font-style:normal;">
|
||||||
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">RetroShare is an Open Source cross-platform, </span></p>
|
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">RetroShare is an Open Source cross-platform, </span></p>
|
||||||
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">private and secure decentralized commmunication platform. </span></p>
|
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">private and secure decentralized commmunication platform. </span></p>
|
||||||
|
@ -6323,11 +6347,12 @@ p, li { white-space: pre-wrap; }
|
||||||
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">RetroShare provides file sharing, chat, messages and channels</span></p>
|
<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">RetroShare provides file sharing, chat, messages and channels</span></p>
|
||||||
<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p>
|
<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Useful external links to more information:</span></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Useful external links to more information:</span></p>
|
||||||
<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-size:8pt;" align="justify" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://retroshare.sourceforge.net"><span style=" text-decoration: underline; color:#0000ff;">Retroshare Webpage</span></a></li>
|
<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-size:8pt;" align="justify" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://retroshare.sourceforge.net"><span style=" font-size:12pt; text-decoration: underline; color:#0000ff;">Retroshare Webpage</span></a></li>
|
||||||
<li style=" font-size:8pt;" align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://retroshare.sourceforge.net/wiki/index.php/Main_Page"><span style=" text-decoration: underline; color:#0000ff;">Retroshare Wiki</span></a></li>
|
<li style=" font-size:12pt; text-decoration: underline; color:#0000ff;" align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://retroshare.sourceforge.net">Retroshare Wiki</a></li>
|
||||||
<li style=" font-size:8pt; text-decoration: underline; color:#0000ff;" align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://retroshare.sourceforge.net/forum/">RetroShare's Forum</a></li>
|
<li style=" font-size:12pt; text-decoration: underline; color:#0000ff;" align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://retroshare.sourceforge.net">RetroShare's Forum</a></li>
|
||||||
<li style=" font-size:8pt;" align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://sourceforge.net/projects/retroshare/"><span style=" text-decoration: underline; color:#0000ff;">Retroshare Project Page</span></a></li>
|
<li style=" font-size:12pt; text-decoration: underline; color:#0000ff;" align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://retroshare.sourceforge.net">Retroshare Project Page</a></li>
|
||||||
<li style=" font-size:8pt;" align="justify" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.lunamutt.com"><span style=" text-decoration: underline; color:#0000ff;">Lunamutt Homepage.</span></a></li></ul></body></html></source>
|
<li style=" font-size:12pt; text-decoration: underline; color:#0000ff;" align="justify" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://retroshare.sourceforge.net">RetroShare Team Blog</a></li>
|
||||||
|
<li style=" font-size:12pt; text-decoration: underline; color:#0000ff;" align="justify" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://retroshare.sourceforge.net">RetroShare Dev Twiter</a></li></ul></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
@ -6340,21 +6365,15 @@ p, li { white-space: pre-wrap; }
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">French</span><span style=" font-size:8pt;">:Temet</span></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">French</span><span style=" font-size:8pt;">:Temet</span></p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Polish: </span><span style=" font-size:8pt;">Jarek</span></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Polish: </span><span style=" font-size:8pt;">Jarek</span></p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Serbian</span><span style=" font-size:8pt;">: Kunalagon Umuhanik &lt;kunalagon@gmail.com&gt;</span></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Serbian</span><span style=" font-size:8pt;">: Kunalagon Umuhanik &lt;kunalagon@gmail.com&gt;</span></p>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Spanish: </span><span style=" font-family:'Courier New,courier';">Manuel Montero &lt;Senpai&gt; </span><a href="http://pagina.de/senpai&amp;gt"><span style=" font-family:'Courier New,courier'; text-decoration: underline; color:#0000ff;">http://pagina.de/senpai</span></a></p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Swedish:</span><span style=" font-size:8pt;"> dnylander</span></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Swedish:</span><span style=" font-size:8pt;"> dnylander</span></p>
|
||||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p>
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p>
|
||||||
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">RetroShare Website Translators:</span></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">RetroShare Website Translators:</span></p>
|
||||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt; font-weight:600;"></p>
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt; font-weight:600;"></p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Swedish: </span><span style=" font-size:8pt;"> Daniel Wester</span><span style=" font-size:8pt; font-weight:600;"> &lt;</span><span style=" font-size:8pt;">wester@speedmail.se</span><span style=" font-size:8pt; font-weight:600;">&gt;</span></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Swedish: </span><span style=" font-size:8pt;"> Daniel Wester</span><span style=" font-size:8pt; font-weight:600;"> &lt;</span><span style=" font-size:8pt;">wester@speedmail.se</span><span style=" font-size:8pt; font-weight:600;">&gt;</span></p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">German: </span><span style=" font-size:8pt;">Jan</span><span style=" font-size:8pt; font-weight:600;"> </span><span style=" font-size:8pt;">Keller</span><span style=""> &lt;</span><span style=" font-size:8pt;">trilarion@users.sourceforge.net</span><span style="">&gt;</span></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">German: </span><span style=" font-size:8pt;">Jan</span><span style=" font-size:8pt; font-weight:600;"> </span><span style=" font-size:8pt;">Keller</span> &lt;<span style=" font-size:8pt;">trilarion@users.sourceforge.net</span>&gt;</p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Polish: </span><span style="">Maciej Mrug</span></p></body></html></source>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Polish: </span>Maciej Mrug</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<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-size:8pt; 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;"><span style=" font-size:9pt; font-weight:600;">About RetroShare</span></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue