mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-25 23:49:35 -05:00
FeedReader:
- Recalculate message count of the user notify when a feed with new items is deleted. - Set deleted message to read and !new. - Added test feed item in notify settings. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6072 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
6f7c424b1f
commit
ddc4a37a93
@ -20,6 +20,8 @@
|
|||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
|
||||||
#include <QMutex>
|
#include <QMutex>
|
||||||
|
#include <QDateTime>
|
||||||
|
#include <QBuffer>
|
||||||
|
|
||||||
#include "FeedReaderFeedNotify.h"
|
#include "FeedReaderFeedNotify.h"
|
||||||
#include "FeedReaderNotify.h"
|
#include "FeedReaderNotify.h"
|
||||||
@ -116,3 +118,24 @@ QWidget *FeedReaderFeedNotify::feedItem(FeedHolder *parent)
|
|||||||
|
|
||||||
return new FeedReaderFeedItem(mFeedReader, mNotify, parent, feedInfo, msgInfo);
|
return new FeedReaderFeedItem(mFeedReader, mNotify, parent, feedInfo, msgInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QWidget *FeedReaderFeedNotify::testFeedItem(FeedHolder *parent)
|
||||||
|
{
|
||||||
|
FeedInfo feedInfo;
|
||||||
|
feedInfo.name = tr("Test").toUtf8().constData();
|
||||||
|
|
||||||
|
QByteArray faviconData;
|
||||||
|
QBuffer buffer(&faviconData);
|
||||||
|
buffer.open(QIODevice::WriteOnly);
|
||||||
|
if (QPixmap(":/images/Feed.png").scaled(16, 16, Qt::IgnoreAspectRatio, Qt::SmoothTransformation).save(&buffer, "ICO")) {
|
||||||
|
feedInfo.icon = faviconData.toBase64().constData();
|
||||||
|
}
|
||||||
|
buffer.close();
|
||||||
|
|
||||||
|
FeedMsgInfo msgInfo;
|
||||||
|
msgInfo.title = tr("Test message").toUtf8().constData();
|
||||||
|
msgInfo.description = tr("This is a test message.").toUtf8().constData();
|
||||||
|
msgInfo.pubDate = QDateTime::currentDateTime().toTime_t();
|
||||||
|
|
||||||
|
return new FeedReaderFeedItem(mFeedReader, mNotify, parent, feedInfo, msgInfo);
|
||||||
|
}
|
||||||
|
@ -31,6 +31,7 @@ class QMutex;
|
|||||||
class FeedReaderFeedNotify : public FeedNotify
|
class FeedReaderFeedNotify : public FeedNotify
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
class FeedItem
|
class FeedItem
|
||||||
{
|
{
|
||||||
@ -50,6 +51,7 @@ public:
|
|||||||
virtual bool notifyEnabled();
|
virtual bool notifyEnabled();
|
||||||
virtual void setNotifyEnabled(bool enabled);
|
virtual void setNotifyEnabled(bool enabled);
|
||||||
virtual QWidget *feedItem(FeedHolder *parent);
|
virtual QWidget *feedItem(FeedHolder *parent);
|
||||||
|
virtual QWidget *testFeedItem(FeedHolder *parent);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void msgChanged(const QString &feedId, const QString &msgId, int type);
|
void msgChanged(const QString &feedId, const QString &msgId, int type);
|
||||||
|
@ -26,10 +26,12 @@
|
|||||||
#include "gui/MainWindow.h"
|
#include "gui/MainWindow.h"
|
||||||
|
|
||||||
#include "interface/rsFeedReader.h"
|
#include "interface/rsFeedReader.h"
|
||||||
|
#include "retroshare/rsiface.h"
|
||||||
|
|
||||||
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(feedChanged(QString,int)), this, SLOT(feedChanged(QString,int)), Qt::QueuedConnection);
|
||||||
connect(mNotify, SIGNAL(msgChanged(QString,QString,int)), this, SLOT(updateIcon()), Qt::QueuedConnection);
|
connect(mNotify, SIGNAL(msgChanged(QString,QString,int)), this, SLOT(updateIcon()), Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,3 +88,10 @@ void FeedReaderUserNotify::iconClicked()
|
|||||||
{
|
{
|
||||||
MainWindow::showWindow(mFeedReaderDialog);
|
MainWindow::showWindow(mFeedReaderDialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FeedReaderUserNotify::feedChanged(const QString &/*feedId*/, int type)
|
||||||
|
{
|
||||||
|
if (type == NOTIFY_TYPE_DEL) {
|
||||||
|
updateIcon();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -41,6 +41,9 @@ public:
|
|||||||
virtual bool notifyBlink();
|
virtual bool notifyBlink();
|
||||||
virtual void setNotifyEnabled(bool enabled, bool combined, bool blink);
|
virtual void setNotifyEnabled(bool enabled, bool combined, bool blink);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void feedChanged(const QString &feedId, int type);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual QIcon getIcon();
|
virtual QIcon getIcon();
|
||||||
virtual QIcon getMainIcon(bool hasNew);
|
virtual QIcon getMainIcon(bool hasNew);
|
||||||
|
@ -143,6 +143,7 @@ public:
|
|||||||
pubDate = 0;
|
pubDate = 0;
|
||||||
flag.isnew = false;
|
flag.isnew = false;
|
||||||
flag.read = false;
|
flag.read = false;
|
||||||
|
flag.deleted = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string msgId;
|
std::string msgId;
|
||||||
@ -156,6 +157,7 @@ public:
|
|||||||
struct {
|
struct {
|
||||||
bool isnew : 1;
|
bool isnew : 1;
|
||||||
bool read : 1;
|
bool read : 1;
|
||||||
|
bool deleted : 1;
|
||||||
} flag;
|
} flag;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -204,6 +204,7 @@ static void feedMsgToInfo(const RsFeedReaderMsg *msg, FeedMsgInfo &info)
|
|||||||
|
|
||||||
info.flag.isnew = (msg->flag & RS_FEEDMSG_FLAG_NEW);
|
info.flag.isnew = (msg->flag & RS_FEEDMSG_FLAG_NEW);
|
||||||
info.flag.read = (msg->flag & RS_FEEDMSG_FLAG_READ);
|
info.flag.read = (msg->flag & RS_FEEDMSG_FLAG_READ);
|
||||||
|
info.flag.deleted = (msg->flag & RS_FEEDMSG_FLAG_DELETED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void p3FeedReader::setNotify(RsFeedReaderNotify *notify)
|
void p3FeedReader::setNotify(RsFeedReaderNotify *notify)
|
||||||
@ -758,7 +759,8 @@ bool p3FeedReader::removeMsg(const std::string &feedId, const std::string &msgId
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
msgIt->second->flag |= RS_FEEDMSG_FLAG_DELETED;
|
msgIt->second->flag |= RS_FEEDMSG_FLAG_DELETED | RS_FEEDMSG_FLAG_READ;
|
||||||
|
msgIt->second->flag &= ~RS_FEEDMSG_FLAG_NEW;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (changed) {
|
if (changed) {
|
||||||
@ -803,7 +805,8 @@ bool p3FeedReader::removeMsgs(const std::string &feedId, const std::list<std::st
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
msgIt->second->flag |= RS_FEEDMSG_FLAG_DELETED;
|
msgIt->second->flag |= RS_FEEDMSG_FLAG_DELETED | RS_FEEDMSG_FLAG_READ;
|
||||||
|
msgIt->second->flag &= ~RS_FEEDMSG_FLAG_NEW;
|
||||||
|
|
||||||
removedMsgs.push_back(*idIt);
|
removedMsgs.push_back(*idIt);
|
||||||
}
|
}
|
||||||
|
@ -409,6 +409,24 @@ void NewsFeed::testFeeds(uint notifyFlags)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NewsFeed::testFeed(FeedNotify *feedNotify)
|
||||||
|
{
|
||||||
|
if (!instance) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!feedNotify) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget *feedItem = feedNotify->testFeedItem(instance);
|
||||||
|
if (!feedItem) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
instance->addFeedItem(feedItem);
|
||||||
|
}
|
||||||
|
|
||||||
void NewsFeed::addFeedItem(QWidget *item)
|
void NewsFeed::addFeedItem(QWidget *item)
|
||||||
{
|
{
|
||||||
item->setAttribute(Qt::WA_DeleteOnClose, true);
|
item->setAttribute(Qt::WA_DeleteOnClose, true);
|
||||||
|
@ -31,6 +31,7 @@ class RsFeedItem;
|
|||||||
class ForumNewItem;
|
class ForumNewItem;
|
||||||
class ChanMsgItem;
|
class ChanMsgItem;
|
||||||
class ChatMsgItem;
|
class ChatMsgItem;
|
||||||
|
class FeedNotify;
|
||||||
|
|
||||||
class NewsFeed : public MainPage, public FeedHolder, private Ui::NewsFeed
|
class NewsFeed : public MainPage, public FeedHolder, private Ui::NewsFeed
|
||||||
{
|
{
|
||||||
@ -48,6 +49,7 @@ public:
|
|||||||
virtual void openChat(std::string peerId);
|
virtual void openChat(std::string peerId);
|
||||||
|
|
||||||
static void testFeeds(uint notifyFlags);
|
static void testFeeds(uint notifyFlags);
|
||||||
|
static void testFeed(FeedNotify *feedNotify);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void newsFeedChanged(int count);
|
void newsFeedChanged(int count);
|
||||||
|
@ -48,3 +48,8 @@ QWidget *FeedNotify::feedItem(FeedHolder */*parent*/)
|
|||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QWidget *FeedNotify::testFeedItem(FeedHolder */*parent*/)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
@ -38,6 +38,7 @@ public:
|
|||||||
virtual bool notifyEnabled();
|
virtual bool notifyEnabled();
|
||||||
virtual void setNotifyEnabled(bool /*enabled*/);
|
virtual void setNotifyEnabled(bool /*enabled*/);
|
||||||
virtual QWidget *feedItem(FeedHolder */*parent*/);
|
virtual QWidget *feedItem(FeedHolder */*parent*/);
|
||||||
|
virtual QWidget *testFeedItem(FeedHolder */*parent*/);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FEEDNOTIFY_H
|
#endif // FEEDNOTIFY_H
|
||||||
|
@ -285,6 +285,14 @@ void NotifyPage::notifyToggled()
|
|||||||
void NotifyPage::testNotify()
|
void NotifyPage::testNotify()
|
||||||
{
|
{
|
||||||
NewsFeed::testFeeds(getNewsFlags());
|
NewsFeed::testFeeds(getNewsFlags());
|
||||||
|
|
||||||
|
/* notify of plugins */
|
||||||
|
QList<FeedNotifySetting>::iterator feedNotifyIt;
|
||||||
|
for (feedNotifyIt = mFeedNotifySettingList.begin(); feedNotifyIt != mFeedNotifySettingList.end(); ++feedNotifyIt) {
|
||||||
|
if (feedNotifyIt->mEnabledCheckBox->isChecked()) {
|
||||||
|
NewsFeed::testFeed(feedNotifyIt->mFeedNotify);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NotifyPage::testToaster()
|
void NotifyPage::testToaster()
|
||||||
|
Loading…
Reference in New Issue
Block a user