Fixed compile of FeedReader plugin

This commit is contained in:
thunder2 2020-11-08 13:22:59 +01:00
parent e88dfecc55
commit 026cadfe13
23 changed files with 366 additions and 345 deletions

View file

@ -42,6 +42,9 @@ AddFeedDialog::AddFeedDialog(RsFeedReader *feedReader, FeedReaderNotify *notify,
/* Setup UI helper */
mStateHelper = new UIStateHelper(this);
mFeedId = 0;
mParentId = 0;
mStateHelper->addWidget(TOKEN_TYPE_FORUM_GROUPS, ui->forumComboBox, UISTATE_LOADING_DISABLED);
mStateHelper->addWidget(TOKEN_TYPE_FORUM_GROUPS, ui->buttonBox->button(QDialogButtonBox::Ok), UISTATE_LOADING_DISABLED);
@ -197,19 +200,19 @@ void AddFeedDialog::validate()
mStateHelper->setWidgetEnabled(ui->buttonBox->button(QDialogButtonBox::Ok), ok);
}
void AddFeedDialog::setParent(const std::string &parentId)
void AddFeedDialog::setParent(uint32_t parentId)
{
mParentId = parentId;
}
bool AddFeedDialog::fillFeed(const std::string &feedId)
bool AddFeedDialog::fillFeed(uint32_t feedId)
{
mFeedId = feedId;
if (!mFeedId.empty()) {
if (mFeedId) {
FeedInfo feedInfo;
if (!mFeedReader->getFeedInfo(mFeedId, feedInfo)) {
mFeedId.clear();
mFeedId = 0;
return false;
}
@ -326,7 +329,7 @@ void AddFeedDialog::getFeedInfo(FeedInfo &feedInfo)
void AddFeedDialog::createFeed()
{
FeedInfo feedInfo;
if (!mFeedId.empty()) {
if (mFeedId) {
if (!mFeedReader->getFeedInfo(mFeedId, feedInfo)) {
QMessageBox::critical(this, tr("Edit feed"), tr("Can't edit feed. Feed does not exist."));
return;
@ -335,7 +338,7 @@ void AddFeedDialog::createFeed()
getFeedInfo(feedInfo);
if (mFeedId.empty()) {
if (mFeedId == 0) {
/* add new feed */
RsFeedAddResult result = mFeedReader->addFeed(feedInfo, mFeedId);
if (FeedReaderStringDefs::showError(this, result, tr("Create feed"), tr("Cannot create feed."))) {
@ -365,7 +368,7 @@ void AddFeedDialog::preview()
void AddFeedDialog::clearMessageCache()
{
if (mFeedId.empty()) {
if (mFeedId == 0) {
return;
}

View file

@ -41,8 +41,8 @@ public:
AddFeedDialog(RsFeedReader *feedReader, FeedReaderNotify *notify, QWidget *parent);
~AddFeedDialog();
void setParent(const std::string &parentId);
bool fillFeed(const std::string &feedId);
void setParent(uint32_t parentId);
bool fillFeed(uint32_t feedId);
/* TokenResponse */
virtual void loadRequest(const TokenQueue *queue, const TokenRequest &req);
@ -70,8 +70,8 @@ private:
private:
RsFeedReader *mFeedReader;
FeedReaderNotify *mNotify;
std::string mFeedId;
std::string mParentId;
uint32_t mFeedId;
uint32_t mParentId;
std::string mFillForumId;
RsFeedTransformationType mTransformationType;

View file

@ -65,8 +65,7 @@ FeedReaderDialog::FeedReaderDialog(RsFeedReader *feedReader, FeedReaderNotify *n
mOpenFeedIds = NULL;
mMessageWidget = NULL;
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(mNotify, &FeedReaderNotify::feedChanged, this, &FeedReaderDialog::feedChanged, Qt::QueuedConnection);
connect(NotifyQt::getInstance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged()));
@ -153,7 +152,7 @@ void FeedReaderDialog::processSettings(bool load)
int arrayIndex = Settings->beginReadArray("Feeds");
for (int index = 0; index < arrayIndex; index++) {
Settings->setArrayIndex(index);
addFeedToExpand(Settings->value("open").toString().toStdString());
addFeedToExpand(Settings->value("open").toUInt());
}
Settings->endArray();
} else {
@ -165,11 +164,11 @@ void FeedReaderDialog::processSettings(bool load)
// open groups
Settings->beginWriteArray("Feeds");
int arrayIndex = 0;
QList<std::string> expandedFeedIds;
QList<uint32_t> expandedFeedIds;
getExpandedFeedIds(expandedFeedIds);
foreach (std::string feedId, expandedFeedIds) {
foreach (uint32_t feedId, expandedFeedIds) {
Settings->setArrayIndex(arrayIndex++);
Settings->setValue("open", QString::fromStdString(feedId));
Settings->setValue("open", feedId);
}
Settings->endArray();
}
@ -187,17 +186,17 @@ void FeedReaderDialog::settingsChanged()
}
} else {
if (!mMessageWidget) {
mMessageWidget = createMessageWidget("");
mMessageWidget = createMessageWidget(0);
// 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(uint32_t feedId)
{
if (mOpenFeedIds == NULL) {
mOpenFeedIds = new QList<std::string>;
mOpenFeedIds = new QList<uint32_t>;
}
if (mOpenFeedIds->contains(feedId)) {
return;
@ -205,7 +204,7 @@ void FeedReaderDialog::addFeedToExpand(const std::string &feedId)
mOpenFeedIds->push_back(feedId);
}
void FeedReaderDialog::getExpandedFeedIds(QList<std::string> &feedIds)
void FeedReaderDialog::getExpandedFeedIds(QList<uint32_t> &feedIds)
{
QTreeWidgetItemIterator it(ui->feedTreeWidget);
QTreeWidgetItem *item;
@ -217,8 +216,8 @@ void FeedReaderDialog::getExpandedFeedIds(QList<std::string> &feedIds)
if (!item->data(COLUMN_FEED_DATA, ROLE_FEED_FOLDER).toBool()) {
continue;
}
std::string feedId = item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toString().toStdString();
if (feedId.empty()) {
uint32_t feedId = item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toUInt();
if (feedId == 0) {
continue;
}
feedIds.push_back(feedId);
@ -227,7 +226,7 @@ void FeedReaderDialog::getExpandedFeedIds(QList<std::string> &feedIds)
void FeedReaderDialog::showEvent(QShowEvent */*event*/)
{
updateFeeds("", mRootItem);
updateFeeds(0, mRootItem);
}
bool FeedReaderDialog::eventFilter(QObject *obj, QEvent *event)
@ -248,26 +247,26 @@ bool FeedReaderDialog::eventFilter(QObject *obj, QEvent *event)
return MainPage::eventFilter(obj, event);
}
std::string FeedReaderDialog::currentFeedId()
uint32_t FeedReaderDialog::currentFeedId()
{
QTreeWidgetItem *item = ui->feedTreeWidget->currentItem();
if (!item) {
return "";
return 0;
}
return item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toString().toStdString();
return item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toUInt();
}
void FeedReaderDialog::setCurrentFeedId(const std::string &feedId)
void FeedReaderDialog::setCurrentFeedId(uint32_t feedId)
{
if (feedId.empty()) {
if (feedId == 0) {
return;
}
QTreeWidgetItemIterator it(ui->feedTreeWidget);
QTreeWidgetItem *item;
while ((item = *it) != NULL) {
if (item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toString().toStdString() == feedId) {
if (item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toUInt() == feedId) {
ui->feedTreeWidget->setCurrentItem(item);
break;
}
@ -280,11 +279,11 @@ void FeedReaderDialog::feedTreeCustomPopupMenu(QPoint /*point*/)
QMenu contextMnu(this);
bool folder = false;
std::string feedId;
uint32_t feedId;
QTreeWidgetItem *item = ui->feedTreeWidget->currentItem();
if (item) {
folder = item->data(COLUMN_FEED_DATA, ROLE_FEED_FOLDER).toBool();
feedId = item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toString().toStdString();
feedId = item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toUInt();
}
QMenu *menu = contextMnu.addMenu(QIcon(""), tr("New"));
@ -336,7 +335,7 @@ void FeedReaderDialog::feedTreeCustomPopupMenu(QPoint /*point*/)
contextMnu.exec(QCursor::pos());
}
void FeedReaderDialog::updateFeeds(const std::string &parentId, QTreeWidgetItem *parentItem)
void FeedReaderDialog::updateFeeds(uint32_t parentId, QTreeWidgetItem *parentItem)
{
if (!parentItem) {
return;
@ -353,7 +352,7 @@ void FeedReaderDialog::updateFeeds(const std::string &parentId, QTreeWidgetItem
/* update existing and delete not existing feeds */
while (index < parentItem->childCount()) {
item = parentItem->child(index);
std::string feedId = item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toString().toStdString();
uint32_t feedId = item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toUInt();
/* search existing feed */
int found = -1;
@ -534,27 +533,27 @@ void FeedReaderDialog::updateFeedItem(QTreeWidgetItem *item, const FeedInfo &fee
item->setData(COLUMN_FEED_DATA, ROLE_FEED_UNREAD, unreadCount);
item->setData(COLUMN_FEED_DATA, ROLE_FEED_NEW, newCount);
item->setData(COLUMN_FEED_DATA, ROLE_FEED_LOADING, feedInfo.workstate != FeedInfo::WAITING);
item->setData(COLUMN_FEED_DATA, ROLE_FEED_ID, QString::fromStdString(feedInfo.feedId));
item->setData(COLUMN_FEED_DATA, ROLE_FEED_ID, feedInfo.feedId);
item->setData(COLUMN_FEED_DATA, ROLE_FEED_FOLDER, feedInfo.flag.folder);
item->setData(COLUMN_FEED_DATA, ROLE_FEED_DEACTIVATED, feedInfo.flag.deactivated);
item->setData(COLUMN_FEED_DATA, ROLE_FEED_ERROR, (bool) (feedInfo.errorState != RS_FEED_ERRORSTATE_OK));
item->setToolTip(COLUMN_FEED_NAME, (feedInfo.errorState != RS_FEED_ERRORSTATE_OK) ? FeedReaderStringDefs::errorString(feedInfo) : "");
}
void FeedReaderDialog::feedChanged(const QString &feedId, int type)
void FeedReaderDialog::feedChanged(uint32_t feedId, int type)
{
if (!isVisible()) {
/* complete update in showEvent */
return;
}
if (feedId.isEmpty()) {
if (feedId == 0) {
return;
}
FeedInfo feedInfo;
if (type != NOTIFY_TYPE_DEL) {
if (!mFeedReader->getFeedInfo(feedId.toStdString(), feedInfo)) {
if (!mFeedReader->getFeedInfo(feedId, feedInfo)) {
return;
}
@ -567,7 +566,7 @@ void FeedReaderDialog::feedChanged(const QString &feedId, int type)
QTreeWidgetItemIterator it(ui->feedTreeWidget);
QTreeWidgetItem *item;
while ((item = *it) != NULL) {
if (item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toString() == feedId) {
if (item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toUInt() == feedId) {
if (type == NOTIFY_TYPE_MOD) {
updateFeedItem(item, feedInfo);
} else {
@ -580,12 +579,10 @@ void FeedReaderDialog::feedChanged(const QString &feedId, int type)
}
if (type == NOTIFY_TYPE_ADD) {
QString id = QString::fromStdString(feedInfo.parentId);
QTreeWidgetItemIterator it(ui->feedTreeWidget);
QTreeWidgetItem *itemParent;
while ((itemParent = *it) != NULL) {
if (itemParent->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toString() == id) {
if (itemParent->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toUInt() == feedInfo.parentId) {
QTreeWidgetItem *item = new RSTreeWidgetItem(mFeedCompareRole);
itemParent->addChild(item);
updateFeedItem(item, feedInfo);
@ -597,7 +594,7 @@ void FeedReaderDialog::feedChanged(const QString &feedId, int type)
calculateFeedItems();
}
FeedReaderMessageWidget *FeedReaderDialog::feedMessageWidget(const std::string &id)
FeedReaderMessageWidget *FeedReaderDialog::feedMessageWidget(uint32_t id)
{
int tabCount = ui->messageTabWidget->count();
for (int index = 0; index < tabCount; ++index) {
@ -613,7 +610,7 @@ FeedReaderMessageWidget *FeedReaderDialog::feedMessageWidget(const std::string &
return NULL;
}
FeedReaderMessageWidget *FeedReaderDialog::createMessageWidget(const std::string &feedId)
FeedReaderMessageWidget *FeedReaderDialog::createMessageWidget(uint32_t feedId)
{
FeedReaderMessageWidget *messageWidget = new FeedReaderMessageWidget(feedId, mFeedReader, mNotify);
int index = ui->messageTabWidget->addTab(messageWidget, messageWidget->feedName(true));
@ -640,7 +637,7 @@ void FeedReaderDialog::feedTreeItemActivated(QTreeWidgetItem *item)
ui->feedAddButton->setEnabled(false);
std::string feedId = item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toString().toStdString();
uint32_t feedId = item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toUInt();
/* search exisiting tab */
FeedReaderMessageWidget *messageWidget = feedMessageWidget(feedId);
if (!messageWidget) {
@ -663,7 +660,7 @@ void FeedReaderDialog::feedTreeMiddleButtonClicked(QTreeWidgetItem *item)
return;
}
openFeedInNewTab(item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toString().toStdString());
openFeedInNewTab(item->data(COLUMN_FEED_DATA, ROLE_FEED_ID).toUInt());
}
void FeedReaderDialog::openInNewTab()
@ -671,9 +668,9 @@ void FeedReaderDialog::openInNewTab()
openFeedInNewTab(currentFeedId());
}
void FeedReaderDialog::openFeedInNewTab(const std::string &feedId)
void FeedReaderDialog::openFeedInNewTab(uint32_t feedId)
{
if (feedId.empty()) {
if (feedId == 0) {
return;
}
@ -723,7 +720,7 @@ void FeedReaderDialog::messageTabInfoChanged(QWidget *widget)
return;
}
if (messageWidget != mMessageWidget && messageWidget->feedId().empty()) {
if (messageWidget != mMessageWidget && messageWidget->feedId() == 0) {
messageWidget->deleteLater();
return;
}
@ -740,7 +737,7 @@ void FeedReaderDialog::newFolder()
dialog.setWindowIcon(QIcon(":/images/FeedReader.png"));
if (dialog.exec() == QDialog::Accepted && !dialog.textValue().isEmpty()) {
std::string feedId;
uint32_t feedId;
RsFeedAddResult result = mFeedReader->addFolder(currentFeedId(), dialog.textValue().toUtf8().constData(), feedId);
FeedReaderStringDefs::showError(this, result, tr("Create folder"), tr("Cannot create folder."));
}
@ -755,8 +752,8 @@ void FeedReaderDialog::newFeed()
void FeedReaderDialog::removeFeed()
{
std::string feedId = currentFeedId();
if (feedId.empty()) {
uint32_t feedId = currentFeedId();
if (feedId == 0) {
return;
}
@ -775,8 +772,8 @@ void FeedReaderDialog::removeFeed()
void FeedReaderDialog::editFeed()
{
std::string feedId = currentFeedId();
if (feedId.empty()) {
uint32_t feedId = currentFeedId();
if (feedId == 0) {
return;
}
@ -809,8 +806,8 @@ void FeedReaderDialog::editFeed()
void FeedReaderDialog::activateFeed()
{
std::string feedId = currentFeedId();
if (feedId.empty()) {
uint32_t feedId = currentFeedId();
if (feedId == 0) {
return;
}
@ -830,7 +827,7 @@ void FeedReaderDialog::activateFeed()
void FeedReaderDialog::processFeed()
{
std::string feedId = currentFeedId();
uint32_t feedId = currentFeedId();
/* empty feed id process all feeds */
mFeedReader->processFeed(feedId);

View file

@ -67,26 +67,27 @@ private slots:
void messageTabInfoChanged(QWidget *widget);
/* FeedReaderNotify */
void feedChanged(const QString &feedId, int type);
void feedChanged(uint32_t feedId, int type);
private:
std::string currentFeedId();
void setCurrentFeedId(const std::string &feedId);
uint32_t currentFeedId();
void setCurrentFeedId(uint32_t feedId);
void processSettings(bool load);
void addFeedToExpand(const std::string &feedId);
void getExpandedFeedIds(QList<std::string> &feedIds);
void updateFeeds(const std::string &parentId, QTreeWidgetItem *parentItem);
void addFeedToExpand(uint32_t feedId);
void getExpandedFeedIds(QList<uint32_t> &feedIds);
void updateFeeds(uint32_t parentId, QTreeWidgetItem *parentItem);
void updateFeedItem(QTreeWidgetItem *item, const FeedInfo &feedInfo);
void openFeedInNewTab(const std::string &feedId);
void openFeedInNewTab(uint32_t feedId);
void calculateFeedItems();
void calculateFeedItem(QTreeWidgetItem *item, uint32_t &unreadCount, uint32_t &newCount, bool &loading);
FeedReaderMessageWidget *feedMessageWidget(const std::string &feedId);
FeedReaderMessageWidget *createMessageWidget(const std::string &feedId);
FeedReaderMessageWidget *feedMessageWidget(uint32_t feedId);
FeedReaderMessageWidget *createMessageWidget(uint32_t feedId);
private:
bool mProcessSettings;
QList<std::string> *mOpenFeedIds;
QList<uint32_t> *mOpenFeedIds;
QTreeWidgetItem *mRootItem;
RSTreeWidgetItemCompareRole *mFeedCompareRole;
FeedReaderMessageWidget *mMessageWidget;

View file

@ -34,8 +34,8 @@
#include "gui/feeds/FeedHolder.h"
/** Constructor */
FeedReaderFeedItem::FeedReaderFeedItem(RsFeedReader *feedReader, FeedReaderNotify *notify, FeedHolder *parent, const FeedInfo &feedInfo, const FeedMsgInfo &msgInfo)
: FeedItem(NULL), mFeedReader(feedReader), mNotify(notify), mParent(parent), ui(new Ui::FeedReaderFeedItem)
FeedReaderFeedItem::FeedReaderFeedItem(RsFeedReader *feedReader, FeedReaderNotify *notify, const FeedInfo &feedInfo, const FeedMsgInfo &msgInfo)
: FeedItem(NULL, feedInfo.feedId), mFeedReader(feedReader), mNotify(notify), ui(new Ui::FeedReaderFeedItem)
{
/* Invoke the Qt Designer generated object setup routine */
ui->setupUi(this);
@ -51,7 +51,6 @@ FeedReaderFeedItem::FeedReaderFeedItem(RsFeedReader *feedReader, FeedReaderNotif
ui->expandFrame->hide();
mFeedId = feedInfo.feedId;
mMsgId = msgInfo.msgId;
if (feedInfo.icon.empty()) {
@ -101,8 +100,8 @@ void FeedReaderFeedItem::toggle()
void FeedReaderFeedItem::doExpand(bool open)
{
if (mParent) {
mParent->lockLayout(this, true);
if (mFeedHolder) {
mFeedHolder->lockLayout(this, true);
}
if (open) {
@ -119,19 +118,8 @@ void FeedReaderFeedItem::doExpand(bool open)
emit sizeChanged(this);
if (mParent) {
mParent->lockLayout(this, false);
}
}
void FeedReaderFeedItem::removeItem()
{
mParent->lockLayout(this, true);
hide();
mParent->lockLayout(this, false);
if (mParent) {
mParent->deleteFeedItem(this, 0);
if (mFeedHolder) {
mFeedHolder->lockLayout(this, false);
}
}
@ -150,9 +138,9 @@ void FeedReaderFeedItem::setMsgRead()
connect(mNotify, SIGNAL(msgChanged(QString,QString,int)), this, SLOT(msgChanged(QString,QString,int)), Qt::QueuedConnection);
}
void FeedReaderFeedItem::msgChanged(const QString &feedId, const QString &msgId, int /*type*/)
void FeedReaderFeedItem::msgChanged(uint32_t feedId, const QString &msgId, int /*type*/)
{
if (feedId.toStdString() != mFeedId) {
if (feedId != mFeedId) {
return;
}

View file

@ -38,9 +38,11 @@ class FeedReaderFeedItem : public FeedItem
Q_OBJECT
public:
FeedReaderFeedItem(RsFeedReader *feedReader, FeedReaderNotify *notify, FeedHolder *parent, const FeedInfo &feedInfo, const FeedMsgInfo &msgInfo);
FeedReaderFeedItem(RsFeedReader *feedReader, FeedReaderNotify *notify, const FeedInfo &feedInfo, const FeedMsgInfo &msgInfo);
~FeedReaderFeedItem();
virtual uint64_t uniqueIdentifier() const override { return hash_64bits("FeedReaderFeedItem " + mMsgId); }
protected:
/* FeedItem */
virtual void doExpand(bool open);
@ -53,7 +55,7 @@ private slots:
void copyLink();
void openLink();
void msgChanged(const QString &feedId, const QString &msgId, int type);
void msgChanged(uint32_t feedId, const QString &msgId, int type);
private:
void setMsgRead();

View file

@ -65,9 +65,9 @@ void FeedReaderFeedNotify::setNotifyEnabled(bool enabled)
}
}
void FeedReaderFeedNotify::msgChanged(const QString &feedId, const QString &msgId, int type)
void FeedReaderFeedNotify::msgChanged(uint32_t feedId, const QString &msgId, int type)
{
if (feedId.isEmpty() || msgId.isEmpty()) {
if (feedId == 0 || msgId.isEmpty()) {
return;
}
@ -101,8 +101,8 @@ FeedItem *FeedReaderFeedNotify::feedItem(FeedHolder *parent)
FeedItemData feedItemData = mPendingNewsFeed.front();
mPendingNewsFeed.pop_front();
if (mFeedReader->getFeedInfo(feedItemData.mFeedId.toStdString(), feedInfo) &&
mFeedReader->getMsgInfo(feedItemData.mFeedId.toStdString(), feedItemData.mMsgId.toStdString(), msgInfo)) {
if (mFeedReader->getFeedInfo(feedItemData.mFeedId, feedInfo) &&
mFeedReader->getMsgInfo(feedItemData.mFeedId, feedItemData.mMsgId.toStdString(), msgInfo)) {
if (msgInfo.flag.isnew) {
msgPending = true;
break;
@ -115,7 +115,8 @@ FeedItem *FeedReaderFeedNotify::feedItem(FeedHolder *parent)
return NULL;
}
return new FeedReaderFeedItem(mFeedReader, mNotify, parent, feedInfo, msgInfo);
//TODO: parent?
return new FeedReaderFeedItem(mFeedReader, mNotify, feedInfo, msgInfo);
}
FeedItem *FeedReaderFeedNotify::testFeedItem(FeedHolder *parent)
@ -136,5 +137,6 @@ FeedItem *FeedReaderFeedNotify::testFeedItem(FeedHolder *parent)
msgInfo.description = tr("This is a test message.").toUtf8().constData();
msgInfo.pubDate = QDateTime::currentDateTime().toTime_t();
return new FeedReaderFeedItem(mFeedReader, mNotify, parent, feedInfo, msgInfo);
//TODO: parent?
return new FeedReaderFeedItem(mFeedReader, mNotify, feedInfo, msgInfo);
}

View file

@ -36,10 +36,13 @@ protected:
class FeedItemData
{
public:
FeedItemData() {}
FeedItemData()
{
mFeedId = 0;
}
public:
QString mFeedId;
uint32_t mFeedId;
QString mMsgId;
};
@ -54,7 +57,7 @@ public:
virtual FeedItem *testFeedItem(FeedHolder *parent);
private slots:
void msgChanged(const QString &feedId, const QString &msgId, int type);
void msgChanged(uint32_t feedId, const QString &msgId, int type);
private:
RsFeedReader *mFeedReader;

View file

@ -52,18 +52,19 @@
#define ROLE_MSG_READ Qt::UserRole + 3
#define ROLE_MSG_LINK Qt::UserRole + 4
FeedReaderMessageWidget::FeedReaderMessageWidget(const std::string &feedId, RsFeedReader *feedReader, FeedReaderNotify *notify, QWidget *parent) :
FeedReaderMessageWidget::FeedReaderMessageWidget(uint32_t feedId, RsFeedReader *feedReader, FeedReaderNotify *notify, QWidget *parent) :
QWidget(parent), mFeedReader(feedReader), mNotify(notify), ui(new Ui::FeedReaderMessageWidget)
{
ui->setupUi(this);
mFeedId = 0;
mProcessSettings = false;
mUnreadCount = 0;
mNewCount = 0;
/* connect signals */
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(mNotify, &FeedReaderNotify::feedChanged, this, &FeedReaderMessageWidget::feedChanged, Qt::QueuedConnection);
connect(mNotify, &FeedReaderNotify::msgChanged, this, &FeedReaderMessageWidget::msgChanged, Qt::QueuedConnection);
connect(ui->msgTreeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(msgItemChanged()));
connect(ui->msgTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(msgItemClicked(QTreeWidgetItem*,int)));
@ -217,30 +218,30 @@ bool FeedReaderMessageWidget::eventFilter(QObject *obj, QEvent *event)
return QWidget::eventFilter(obj, event);
}
void FeedReaderMessageWidget::setFeedId(const std::string &feedId)
void FeedReaderMessageWidget::setFeedId(uint32_t feedId)
{
if (mFeedId == feedId) {
if (!feedId.empty()) {
if (feedId) {
return;
}
}
mFeedId = feedId;
ui->feedProcessButton->setEnabled(!mFeedId.empty());
ui->feedProcessButton->setEnabled(mFeedId);
if (!mFeedId.empty()) {
if (mFeedId) {
if (mFeedReader->getFeedInfo(mFeedId, mFeedInfo)) {
mFeedReader->getMessageCount(mFeedId, NULL, &mNewCount, &mUnreadCount);
} else {
mFeedId.clear();
mFeedId = 0;
mFeedInfo = FeedInfo();
}
} else {
mFeedInfo = FeedInfo();
}
if (mFeedId.empty()) {
if (mFeedId == 0) {
ui->msgReadAllButton->setEnabled(false);
ui->msgTreeWidget->setPlaceholderText("");
} else {
@ -279,7 +280,7 @@ QIcon FeedReaderMessageWidget::feedIcon()
icon = icon.pixmap(QSize(16, 16), QIcon::Disabled);
}
if (!mFeedId.empty()) {
if (mFeedId) {
QImage overlayIcon;
if (mFeedInfo.workstate != FeedInfo::WAITING) {
@ -329,7 +330,7 @@ void FeedReaderMessageWidget::msgTreeCustomPopupMenu(QPoint /*point*/)
action->setEnabled(!selectedItems.empty());
action = contextMnu.addAction(QIcon(""), tr("Mark all as read"), this, SLOT(markAllAsReadMsg()));
action->setEnabled(!mFeedId.empty());
action->setEnabled(mFeedId);
contextMnu.addSeparator();
@ -349,7 +350,7 @@ void FeedReaderMessageWidget::msgTreeCustomPopupMenu(QPoint /*point*/)
void FeedReaderMessageWidget::updateMsgs()
{
if (mFeedId.empty()) {
if (mFeedId == 0) {
ui->msgTreeWidget->clear();
return;
}
@ -434,7 +435,7 @@ void FeedReaderMessageWidget::updateMsgItem(QTreeWidgetItem *item, FeedMsgInfo &
qdatetime.setTime_t(info.pubDate);
/* add string to all data */
QString sort = QString("%1_%2_%2").arg(title, qdatetime.toString("yyyyMMdd_hhmmss"), QString::fromStdString(info.feedId));
QString sort = QString("%1_%2_%3").arg(title, qdatetime.toString("yyyyMMdd_hhmmss")).arg(info.feedId);
item->setText(COLUMN_MSG_TITLE, title);
item->setData(COLUMN_MSG_TITLE, ROLE_MSG_SORT, sort);
@ -459,24 +460,24 @@ void FeedReaderMessageWidget::updateMsgItem(QTreeWidgetItem *item, FeedMsgInfo &
calculateMsgIconsAndFonts(item);
}
void FeedReaderMessageWidget::feedChanged(const QString &feedId, int type)
void FeedReaderMessageWidget::feedChanged(uint32_t feedId, int type)
{
if (feedId.isEmpty()) {
if (feedId == 0) {
return;
}
if (feedId.toStdString() != mFeedId) {
if (feedId != mFeedId) {
return;
}
if (type == NOTIFY_TYPE_DEL) {
setFeedId("");
setFeedId(0);
return;
}
if (type == NOTIFY_TYPE_MOD) {
if (!mFeedReader->getFeedInfo(mFeedId, mFeedInfo)) {
setFeedId("");
setFeedId(0);
return;
}
@ -484,13 +485,13 @@ void FeedReaderMessageWidget::feedChanged(const QString &feedId, int type)
}
}
void FeedReaderMessageWidget::msgChanged(const QString &feedId, const QString &msgId, int type)
void FeedReaderMessageWidget::msgChanged(uint32_t feedId, const QString &msgId, int type)
{
if (feedId.isEmpty() || msgId.isEmpty()) {
if (feedId == 0 || msgId.isEmpty()) {
return;
}
if (feedId.toStdString() != mFeedId) {
if (feedId != mFeedId) {
return;
}
@ -510,7 +511,7 @@ void FeedReaderMessageWidget::msgChanged(const QString &feedId, const QString &m
FeedMsgInfo msgInfo;
if (type != NOTIFY_TYPE_DEL) {
if (!mFeedReader->getMsgInfo(feedId.toStdString(), msgId.toStdString(), msgInfo)) {
if (!mFeedReader->getMsgInfo(feedId, msgId.toStdString(), msgInfo)) {
return;
}
}
@ -578,7 +579,7 @@ void FeedReaderMessageWidget::updateCurrentMessage()
std::string msgId = currentMsgId();
if (mFeedId.empty() || msgId.empty()) {
if (mFeedId == 0 || msgId.empty()) {
ui->msgTitle->clear();
// ui->msgLink->clear();
ui->msgText->clear();
@ -646,7 +647,7 @@ void FeedReaderMessageWidget::setMsgAsReadUnread(QList<QTreeWidgetItem *> &rows,
{
QList<QTreeWidgetItem*>::iterator rowIt;
if (mFeedId.empty()) {
if (mFeedId == 0) {
return;
}
@ -773,7 +774,7 @@ void FeedReaderMessageWidget::copySelectedLinksMsg()
void FeedReaderMessageWidget::removeMsg()
{
if (mFeedId.empty()) {
if (mFeedId == 0) {
return;
}
@ -789,7 +790,7 @@ void FeedReaderMessageWidget::removeMsg()
void FeedReaderMessageWidget::retransformMsg()
{
if (mFeedId.empty()) {
if (mFeedId == 0) {
return;
}
@ -803,7 +804,7 @@ void FeedReaderMessageWidget::retransformMsg()
void FeedReaderMessageWidget::processFeed()
{
if (mFeedId.empty()) {
if (mFeedId == 0) {
return;
}

View file

@ -41,11 +41,11 @@ class FeedReaderMessageWidget : public QWidget
Q_OBJECT
public:
explicit FeedReaderMessageWidget(const std::string &feedId, RsFeedReader *feedReader, FeedReaderNotify *notify, QWidget *parent = 0);
explicit FeedReaderMessageWidget(uint32_t feedId, RsFeedReader *feedReader, FeedReaderNotify *notify, QWidget *parent = 0);
~FeedReaderMessageWidget();
std::string feedId() { return mFeedId; }
void setFeedId(const std::string &feedId);
uint32_t feedId() { return mFeedId; }
void setFeedId(uint32_t feedId);
QString feedName(bool withUnreadCount);
QIcon feedIcon();
@ -75,8 +75,8 @@ private slots:
void retransformMsg();
/* FeedReaderNotify */
void feedChanged(const QString &feedId, int type);
void msgChanged(const QString &feedId, const QString &msgId, int type);
void feedChanged(uint32_t feedId, int type);
void msgChanged(uint32_t feedId, const QString &msgId, int type);
private:
std::string currentMsgId();
@ -91,7 +91,7 @@ private:
bool mProcessSettings;
RSTreeWidgetItemCompareRole *mMsgCompareRole;
std::string mFeedId;
uint32_t mFeedId;
unsigned int mUnreadCount;
unsigned int mNewCount;
QTimer *mTimer;

View file

@ -24,12 +24,12 @@ FeedReaderNotify::FeedReaderNotify() : QObject()
{
}
void FeedReaderNotify::notifyFeedChanged(const std::string &feedId, int type)
void FeedReaderNotify::notifyFeedChanged(uint32_t feedId, int type)
{
emit feedChanged(QString::fromStdString(feedId), type);
emit feedChanged(feedId, type);
}
void FeedReaderNotify::notifyMsgChanged(const std::string &feedId, const std::string &msgId, int type)
void FeedReaderNotify::notifyMsgChanged(uint32_t feedId, const std::string &msgId, int type)
{
emit msgChanged(QString::fromStdString(feedId), QString::fromStdString(msgId), type);
emit msgChanged(feedId, QString::fromStdString(msgId), type);
}

View file

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

View file

@ -30,8 +30,8 @@
FeedReaderUserNotify::FeedReaderUserNotify(FeedReaderDialog *feedReaderDialog, RsFeedReader *feedReader, FeedReaderNotify *notify, QObject *parent) :
UserNotify(parent), mFeedReaderDialog(feedReaderDialog), mFeedReader(feedReader), mNotify(notify)
{
connect(mNotify, SIGNAL(feedChanged(QString,int)), this, SLOT(feedChanged(QString,int)), Qt::QueuedConnection);
connect(mNotify, SIGNAL(msgChanged(QString,QString,int)), this, SLOT(updateIcon()), Qt::QueuedConnection);
connect(mNotify, &FeedReaderNotify::feedChanged, this, &FeedReaderUserNotify::feedChanged, Qt::QueuedConnection);
connect(mNotify, &FeedReaderNotify::msgChanged, this, &FeedReaderUserNotify::updateIcon, Qt::QueuedConnection);
}
bool FeedReaderUserNotify::hasSetting(QString *name, QString *group)
@ -55,7 +55,7 @@ QIcon FeedReaderUserNotify::getMainIcon(bool hasNew)
unsigned int FeedReaderUserNotify::getNewCount()
{
uint32_t newMessageCount = 0;
mFeedReader->getMessageCount("", NULL, &newMessageCount, NULL);
mFeedReader->getMessageCount(0, NULL, &newMessageCount, NULL);
return newMessageCount;
}
@ -65,7 +65,7 @@ void FeedReaderUserNotify::iconClicked()
MainWindow::showWindow(mFeedReaderDialog);
}
void FeedReaderUserNotify::feedChanged(const QString &/*feedId*/, int type)
void FeedReaderUserNotify::feedChanged(uint32_t /*feedId*/, int type)
{
if (type == NOTIFY_TYPE_DEL) {
updateIcon();

View file

@ -37,7 +37,7 @@ public:
virtual bool hasSetting(QString *name, QString *group);
private slots:
void feedChanged(const QString &feedId, int type);
void feedChanged(uint32_t feedId, int type);
private:
virtual QIcon getIcon();

View file

@ -143,6 +143,8 @@ PreviewFeedDialog::PreviewFeedDialog(RsFeedReader *feedReader, FeedReaderNotify
{
ui->setupUi(this);
mFeedId = 0;
ui->feedNameLabel->clear();
/* connect signals */
@ -155,8 +157,8 @@ PreviewFeedDialog::PreviewFeedDialog(RsFeedReader *feedReader, FeedReaderNotify
connect(ui->xpathRemoveListWidget->itemDelegate(), SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(xpathCloseEditor(QWidget*,QAbstractItemDelegate::EndEditHint)));
connect(ui->transformationTypeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(transformationTypeChanged()));
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(mNotify, &FeedReaderNotify::feedChanged, this, &PreviewFeedDialog::feedChanged, Qt::QueuedConnection);
connect(mNotify, &FeedReaderNotify::msgChanged, this, &PreviewFeedDialog::msgChanged, Qt::QueuedConnection);
ui->transformationTypeComboBox->addItem(FeedReaderStringDefs::transforationTypeString(RS_FEED_TRANSFORMATION_TYPE_NONE), RS_FEED_TRANSFORMATION_TYPE_NONE);
ui->transformationTypeComboBox->addItem(FeedReaderStringDefs::transforationTypeString(RS_FEED_TRANSFORMATION_TYPE_XPATH), RS_FEED_TRANSFORMATION_TYPE_XPATH);
@ -217,7 +219,7 @@ PreviewFeedDialog::~PreviewFeedDialog()
disconnect(mNotify);
disconnect(mNotify);
if (!mFeedId.empty()) {
if (mFeedId) {
mFeedReader->removeFeed(mFeedId);
}
@ -282,19 +284,19 @@ bool PreviewFeedDialog::eventFilter(QObject *obj, QEvent *event)
return QDialog::eventFilter(obj, event);
}
void PreviewFeedDialog::feedChanged(const QString &feedId, int type)
void PreviewFeedDialog::feedChanged(uint32_t feedId, int type)
{
if (feedId.isEmpty()) {
if (feedId == 0) {
return;
}
if (feedId.toStdString() != mFeedId) {
if (feedId != mFeedId) {
return;
}
if (type == NOTIFY_TYPE_DEL) {
/* feed deleted */
mFeedId.clear();
mFeedId = 0;
return;
}
@ -307,13 +309,13 @@ void PreviewFeedDialog::feedChanged(const QString &feedId, int type)
}
}
void PreviewFeedDialog::msgChanged(const QString &feedId, const QString &msgId, int type)
void PreviewFeedDialog::msgChanged(uint32_t feedId, const QString &msgId, int type)
{
if (feedId.isEmpty() || msgId.isEmpty()) {
if (feedId == 0 || msgId.isEmpty()) {
return;
}
if (feedId.toStdString() != mFeedId) {
if (feedId != mFeedId) {
return;
}

View file

@ -77,8 +77,8 @@ private slots:
void transformationTypeChanged();
/* FeedReaderNotify */
void feedChanged(const QString &feedId, int type);
void msgChanged(const QString &feedId, const QString &msgId, int type);
void feedChanged(uint32_t feedId, int type);
void msgChanged(uint32_t feedId, const QString &msgId, int type);
private:
void processSettings(bool load);
@ -93,7 +93,7 @@ private:
RsFeedReader *mFeedReader;
FeedReaderNotify *mNotify;
std::string mFeedId;
uint32_t mFeedId;
std::string mMsgId;
std::list<std::string> mMsgIds;
std::string mDescription;