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:
thunder2 2013-01-06 02:30:10 +00:00
parent 9cfe660e11
commit f488dbd15a
30 changed files with 425 additions and 185 deletions

View file

@ -50,7 +50,8 @@ void FeedReaderConfig::load()
{
ui->updateIntervalSpinBox->setValue(rsFeedReader->getStandardUpdateInterval() / 60);
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;
uint16_t proxyPort;
@ -67,6 +68,7 @@ bool FeedReaderConfig::save(QString &/*errmsg*/)
rsFeedReader->setStandardStorageTime(ui->storageTimeSpinBox->value() * 60 *60 * 24);
rsFeedReader->setStandardProxy(ui->useProxyCheckBox->isChecked(), ui->proxyAddressLineEdit->text().toUtf8().constData(), ui->proxyPortSpinBox->value());
Settings->setValueToGroup("FeedReaderDialog", "SetMsgToReadOnActivate", ui->setMsgToReadOnActivate->isChecked());
Settings->setValueToGroup("FeedReaderDialog", "OpenAllInNewTab", ui->openAllInNewTabCheckBox->isChecked());
return true;
}

View file

@ -28,6 +28,9 @@ namespace Ui {
class FeedReaderConfig;
}
#define FeedReaderSetting_SetMsgToReadOnActivate() Settings->valueFromGroup("FeedReaderDialog", "SetMsgToReadOnActivate", true).toBool()
#define FeedReaderSetting_OpenAllInNewTab() Settings->valueFromGroup("FeedReaderDialog", "OpenAllInNewTab", true).toBool()
class FeedReaderConfig : public ConfigPage
{
Q_OBJECT

View file

@ -125,6 +125,13 @@
</property>
</widget>
</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>
</widget>
</item>

View file

@ -29,10 +29,12 @@
#include "FeedReaderMessageWidget.h"
#include "ui_FeedReaderDialog.h"
#include "FeedReaderNotify.h"
#include "FeedReaderConfig.h"
#include "AddFeedDialog.h"
#include "FeedReaderStringDefs.h"
#include "gui/common/RSTreeWidgetItem.h"
#include "gui/settings/rsharesettings.h"
#include "gui/notifyqt.h"
#include "FeedReaderUserNotify.h"
#include "interface/rsFeedReader.h"
@ -61,11 +63,14 @@ FeedReaderDialog::FeedReaderDialog(RsFeedReader *feedReader, QWidget *parent)
mProcessSettings = false;
mOpenFeedIds = NULL;
mMessageWidget = NULL;
mNotify = new FeedReaderNotify();
mFeedReader->setNotify(mNotify);
connect(mNotify, SIGNAL(notifyFeedChanged(QString,int)), this, SLOT(feedChanged(QString,int)));
connect(mNotify, SIGNAL(notifyMsgChanged(QString,QString,int)), this, SLOT(msgChanged(QString,QString,int)));
connect(mNotify, SIGNAL(feedChanged(QString,int)), this, SLOT(feedChanged(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(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(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(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->setExpanded(true);
/* set initial size the splitter */
QList<int> sizes;
sizes << 300 << width(); // Qt calculates the right sizes
ui->splitter->setSizes(sizes);
/* set initial size the splitter */
QList<int> sizes;
sizes << 300 << width(); // Qt calculates the right sizes
ui->splitter->setSizes(sizes);
/* load settings */
processSettings(true);
@ -107,9 +113,7 @@ FeedReaderDialog::FeedReaderDialog(RsFeedReader *feedReader, QWidget *parent)
ui->feedTreeWidget->installEventFilter(this);
mMessageWidget = createMessageWidget("");
// remove close button of the the first tab
ui->messageTabWidget->hideCloseButton(ui->messageTabWidget->indexOf(mMessageWidget));
settingsChanged();
feedTreeItemActivated(NULL);
}
@ -176,6 +180,22 @@ void FeedReaderDialog::processSettings(bool load)
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)
{
if (mOpenFeedIds == NULL) {
@ -279,11 +299,13 @@ void FeedReaderDialog::feedTreeCustomPopupMenu(QPoint /*point*/)
action->setEnabled(false);
}
contextMnu.addSeparator();
if (!FeedReaderSetting_OpenAllInNewTab()) {
contextMnu.addSeparator();
action = contextMnu.addAction(QIcon(""), tr("Open in new tab"), this, SLOT(openInNewTab()));
if (!item || folder || feedMessageWidget(feedId)) {
action->setEnabled(false);
action = contextMnu.addAction(QIcon(""), tr("Open in new tab"), this, SLOT(openInNewTab()));
if (!item || folder || feedMessageWidget(feedId)) {
action->setEnabled(false);
}
}
contextMnu.addSeparator();
@ -565,7 +587,7 @@ FeedReaderMessageWidget *FeedReaderDialog::feedMessageWidget(const std::string &
int tabCount = ui->messageTabWidget->count();
for (int index = 0; index < tabCount; ++index) {
FeedReaderMessageWidget *childWidget = dynamic_cast<FeedReaderMessageWidget*>(ui->messageTabWidget->widget(index));
if (childWidget == mMessageWidget) {
if (mMessageWidget && childWidget == mMessageWidget) {
continue;
}
if (childWidget && childWidget->feedId() == id) {
@ -607,17 +629,35 @@ void FeedReaderDialog::feedTreeItemActivated(QTreeWidgetItem *item)
/* search exisiting tab */
FeedReaderMessageWidget *messageWidget = feedMessageWidget(feedId);
if (!messageWidget) {
/* not found, use standard tab */
messageWidget = mMessageWidget;
messageWidget->setFeedId(feedId);
if (mMessageWidget) {
/* not found, use standard tab */
messageWidget = mMessageWidget;
messageWidget->setFeedId(feedId);
} else {
/* create new tab */
messageWidget = createMessageWidget(feedId);
}
}
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()
{
std::string feedId = currentFeedId();
openFeedInNewTab(currentFeedId());
}
void FeedReaderDialog::openFeedInNewTab(const std::string &feedId)
{
if (feedId.empty()) {
return;
}

View file

@ -50,8 +50,10 @@ protected:
bool eventFilter(QObject *obj, QEvent *ev);
private slots:
void settingsChanged();
void feedTreeCustomPopupMenu(QPoint point);
void feedTreeItemActivated(QTreeWidgetItem *item);
void feedTreeMiddleButtonClicked(QTreeWidgetItem *item);
void openInNewTab();
void newFolder();
void newFeed();
@ -75,6 +77,7 @@ private:
void getExpandedFeedIds(QList<std::string> &feedIds);
void updateFeeds(const std::string &parentId, QTreeWidgetItem *parentItem);
void updateFeedItem(QTreeWidgetItem *item, FeedInfo &info);
void openFeedInNewTab(const std::string &feedId);
void calculateFeedItems();
void calculateFeedItem(QTreeWidgetItem *item, uint32_t &unreadCount, bool &loading);

View file

@ -8,6 +8,7 @@
#include "FeedReaderMessageWidget.h"
#include "ui_FeedReaderMessageWidget.h"
#include "FeedReaderNotify.h"
#include "FeedReaderConfig.h"
#include "gui/common/RSTreeWidgetItem.h"
#include "gui/settings/rsharesettings.h"
@ -38,8 +39,8 @@ FeedReaderMessageWidget::FeedReaderMessageWidget(const std::string &feedId, RsFe
mUnreadCount = 0;
/* connect signals */
connect(mNotify, SIGNAL(notifyFeedChanged(QString,int)), this, SLOT(feedChanged(QString,int)));
connect(mNotify, SIGNAL(notifyMsgChanged(QString,QString,int)), this, SLOT(msgChanged(QString,QString,int)));
connect(mNotify, SIGNAL(feedChanged(QString,int)), this, SLOT(feedChanged(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(itemClicked(QTreeWidgetItem*,int)), this, SLOT(msgItemClicked(QTreeWidgetItem*,int)));
@ -554,7 +555,7 @@ void FeedReaderMessageWidget::updateCurrentMessage()
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 read = item->data(COLUMN_MSG_DATA, ROLE_MSG_READ).toBool();

View file

@ -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);
}

View file

@ -33,12 +33,12 @@ public:
FeedReaderNotify();
/* RsFeedReaderNotify */
virtual void feedChanged(const std::string &feedId, int type);
virtual void msgChanged(const std::string &feedId, const std::string &msgId, int type);
virtual void notifyFeedChanged(const std::string &feedId, int type);
virtual void notifyMsgChanged(const std::string &feedId, const std::string &msgId, int type);
signals:
void notifyFeedChanged(const QString &feedId, int type);
void notifyMsgChanged(const QString &feedId, const QString &msgId, int type);
void feedChanged(const QString &feedId, int type);
void msgChanged(const QString &feedId, const QString &msgId, int type);
};
#endif

View file

@ -30,7 +30,7 @@
FeedReaderUserNotify::FeedReaderUserNotify(FeedReaderDialog *feedReaderDialog, RsFeedReader *feedReader, FeedReaderNotify *notify, QObject *parent) :
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)

View file

@ -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->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(notifyMsgChanged(QString,QString,int)), this, SLOT(msgChanged(QString,QString,int)));
connect(mNotify, SIGNAL(feedChanged(QString,int)), this, SLOT(feedChanged(QString,int)));
connect(mNotify, SIGNAL(msgChanged(QString,QString,int)), this, SLOT(msgChanged(QString,QString,int)));
// ui->documentTreeWidget->setItemDelegate(new PreviewItemDelegate(ui->documentTreeWidget));
ui->structureFrame->hide();

View file

@ -164,8 +164,8 @@ class RsFeedReaderNotify
public:
RsFeedReaderNotify() {}
virtual void feedChanged(const std::string &/*feedId*/, int /*type*/) {}
virtual void msgChanged(const std::string &/*feedId*/, const std::string &/*msgId*/, int /*type*/) {}
virtual void notifyFeedChanged(const std::string &/*feedId*/, int /*type*/) {}
virtual void notifyMsgChanged(const std::string &/*feedId*/, const std::string &/*msgId*/, int /*type*/) {}
};
class RsFeedReader

View file

@ -9,147 +9,147 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="49"/>
<location filename="../gui/AddFeedDialog.ui" line="42"/>
<source>Authentication (not yet supported)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="55"/>
<location filename="../gui/AddFeedDialog.ui" line="48"/>
<source>Feed needs authentication</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="62"/>
<location filename="../gui/AddFeedDialog.ui" line="55"/>
<source>User</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="69"/>
<location filename="../gui/AddFeedDialog.ui" line="62"/>
<source>Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="89"/>
<location filename="../gui/AddFeedDialog.ui" line="82"/>
<source>Update interval</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="95"/>
<location filename="../gui/AddFeedDialog.ui" line="88"/>
<source>Use standard update interval</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="102"/>
<location filename="../gui/AddFeedDialog.ui" line="95"/>
<source>Interval in minutes (0 = manual)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="121"/>
<location filename="../gui/AddFeedDialog.ui" line="114"/>
<source>Last update</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="134"/>
<location filename="../gui/AddFeedDialog.ui" line="127"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="146"/>
<location filename="../gui/AddFeedDialog.ui" line="139"/>
<source>Storage time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="152"/>
<location filename="../gui/AddFeedDialog.ui" line="145"/>
<source>Use standard storage time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="159"/>
<location filename="../gui/AddFeedDialog.ui" line="152"/>
<source>Days (0 = off)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="182"/>
<location filename="../gui/AddFeedDialog.ui" line="175"/>
<source>Proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="188"/>
<location filename="../gui/AddFeedDialog.ui" line="181"/>
<source>Use standard proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="195"/>
<location filename="../gui/AddFeedDialog.ui" line="188"/>
<source>Server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="205"/>
<location filename="../gui/AddFeedDialog.ui" line="198"/>
<source>:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="231"/>
<location filename="../gui/AddFeedDialog.ui" line="224"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="240"/>
<location filename="../gui/AddFeedDialog.ui" line="233"/>
<source>Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="251"/>
<location filename="../gui/AddFeedDialog.ui" line="244"/>
<source>Forum</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="276"/>
<location filename="../gui/AddFeedDialog.ui" line="269"/>
<source>Local Feed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="299"/>
<location filename="../gui/AddFeedDialog.ui" line="292"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="305"/>
<location filename="../gui/AddFeedDialog.ui" line="298"/>
<source>Activated</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="312"/>
<location filename="../gui/AddFeedDialog.ui" line="305"/>
<source>Use name and description from feed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="319"/>
<location filename="../gui/AddFeedDialog.ui" line="312"/>
<source>Update forum information</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="326"/>
<location filename="../gui/AddFeedDialog.ui" line="319"/>
<source>Embed images (experimental for local feeds)</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="345"/>
<location filename="../gui/AddFeedDialog.ui" line="338"/>
<source>Description:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="359"/>
<location filename="../gui/AddFeedDialog.ui" line="352"/>
<source>RSS-Feed-URL:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AddFeedDialog.ui" line="369"/>
<location filename="../gui/AddFeedDialog.ui" line="362"/>
<source>Name:</source>
<translation type="unfinished"></translation>
</message>
@ -259,7 +259,12 @@
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
@ -272,104 +277,119 @@
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="239"/>
<location filename="../gui/FeedReaderDialog.cpp" line="292"/>
<source>New</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="240"/>
<location filename="../gui/FeedReaderDialog.cpp" line="293"/>
<source>Feed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="244"/>
<location filename="../gui/FeedReaderDialog.cpp" line="297"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="256"/>
<location filename="../gui/FeedReaderDialog.cpp" line="318"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="268"/>
<location filename="../gui/FeedReaderDialog.cpp" line="330"/>
<source>Update</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="271"/>
<location filename="../gui/FeedReaderDialog.cpp" line="333"/>
<source>Activate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="271"/>
<location filename="../gui/FeedReaderDialog.cpp" line="333"/>
<source>Deactivate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="451"/>
<location filename="../gui/FeedReaderDialog.cpp" line="513"/>
<source>No name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="588"/>
<location filename="../gui/FeedReaderDialog.cpp" line="723"/>
<source>Add new folder</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="595"/>
<location filename="../gui/FeedReaderDialog.cpp" line="648"/>
<location filename="../gui/FeedReaderDialog.cpp" line="730"/>
<location filename="../gui/FeedReaderDialog.cpp" line="783"/>
<source>Create folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="595"/>
<location filename="../gui/FeedReaderDialog.cpp" line="648"/>
<location filename="../gui/FeedReaderDialog.cpp" line="730"/>
<location filename="../gui/FeedReaderDialog.cpp" line="783"/>
<source>Cannot create folder.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="621"/>
<location filename="../gui/FeedReaderDialog.cpp" line="756"/>
<source>Remove folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="621"/>
<location filename="../gui/FeedReaderDialog.cpp" line="756"/>
<source>Remove feed</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderDialog.cpp" line="641"/>
<location filename="../gui/FeedReaderDialog.cpp" line="776"/>
<source>Edit folder</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
@ -382,90 +402,120 @@
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.ui" line="76"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="75"/>
<location filename="../gui/FeedReaderMessageWidget.ui" line="164"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="89"/>
<source>Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.ui" line="90"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="76"/>
<location filename="../gui/FeedReaderMessageWidget.ui" line="178"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="90"/>
<source>Date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.ui" line="95"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="77"/>
<location filename="../gui/FeedReaderMessageWidget.ui" line="183"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="91"/>
<source>Author</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="75"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="89"/>
<source>Search Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="76"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="90"/>
<source>Search Date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="77"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="91"/>
<source>Search Author</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="89"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="103"/>
<source>Open link in browser</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="90"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="104"/>
<source>Copy link to clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="190"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="230"/>
<source>No name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="228"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="268"/>
<source>Mark as read</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="231"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="271"/>
<source>Mark as unread</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="234"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="274"/>
<source>Mark all as read</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="238"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="279"/>
<source>Copy link</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="241"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="282"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="588"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="655"/>
<source>Hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="592"/>
<location filename="../gui/FeedReaderMessageWidget.cpp" line="659"/>
<source>Expand</source>
<translation type="unfinished"></translation>
</message>

View file

@ -340,7 +340,7 @@ RsFeedAddResult p3FeedReader::addFolder(const std::string parentId, const std::s
IndicateConfigChanged();
if (mNotify) {
mNotify->feedChanged(feedId, NOTIFY_TYPE_ADD);
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_ADD);
}
return RS_FEED_ADD_RESULT_SUCCESS;
@ -380,7 +380,7 @@ RsFeedAddResult p3FeedReader::setFolder(const std::string &feedId, const std::st
IndicateConfigChanged();
if (mNotify) {
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
}
return RS_FEED_ADD_RESULT_SUCCESS;
@ -427,7 +427,7 @@ RsFeedAddResult p3FeedReader::addFeed(const FeedInfo &feedInfo, std::string &fee
IndicateConfigChanged();
if (mNotify) {
mNotify->feedChanged(feedId, NOTIFY_TYPE_ADD);
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_ADD);
}
return RS_FEED_ADD_RESULT_SUCCESS;
@ -496,7 +496,7 @@ RsFeedAddResult p3FeedReader::setFeed(const std::string &feedId, const FeedInfo
IndicateConfigChanged();
if (mNotify) {
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
}
if (!forumId.empty()) {
@ -602,7 +602,7 @@ bool p3FeedReader::removeFeed(const std::string &feedId)
/* only notify remove of feed */
std::list<std::string>::iterator 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) {
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) {
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
mNotify->msgChanged(feedId, msgId, NOTIFY_TYPE_DEL);
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
mNotify->notifyMsgChanged(feedId, msgId, NOTIFY_TYPE_DEL);
}
return true;
@ -814,11 +814,11 @@ bool p3FeedReader::removeMsgs(const std::string &feedId, const std::list<std::st
}
if (mNotify && !removedMsgs.empty()) {
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
std::list<std::string>::iterator 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) {
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) {
IndicateConfigChanged();
if (mNotify) {
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
mNotify->msgChanged(feedId, msgId, NOTIFY_TYPE_MOD);
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
mNotify->notifyMsgChanged(feedId, msgId, NOTIFY_TYPE_MOD);
}
}
@ -1187,7 +1187,7 @@ int p3FeedReader::tick()
if (mNotify) {
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) {
std::list<std::pair<std::string, std::string> >::iterator 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) {
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
}
return true;
@ -1525,7 +1525,7 @@ void p3FeedReader::onDownloadSuccess(const std::string &feedId, const std::strin
}
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) {
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) {
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
}
return true;
@ -1832,11 +1832,11 @@ void p3FeedReader::onProcessSuccess_addMsgs(const std::string &feedId, std::list
}
if (mNotify) {
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
std::list<std::string>::iterator 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) {
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) {
mNotify->feedChanged(feedId, NOTIFY_TYPE_MOD);
mNotify->notifyFeedChanged(feedId, NOTIFY_TYPE_MOD);
}
}