Added notify of received groups and messages for forums and channels to libretroshare.

Show GxsChannelPostItem in NewsFeed.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7675 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2014-11-13 22:03:12 +00:00
parent 67215c7ffe
commit 33f785f200
6 changed files with 281 additions and 211 deletions

View file

@ -63,6 +63,9 @@ const uint32_t RS_CHAT_TABBED_WINDOW = 0x0008;
const uint32_t RS_CHAT_BLINK = 0x0010;
const uint32_t RS_FEED_TYPE_PEER = 0x0010;
const uint32_t RS_FEED_TYPE_CHANNEL = 0x0020;
const uint32_t RS_FEED_TYPE_FORUM = 0x0040;
//const uint32_t RS_FEED_TYPE_BLOG = 0x0080;
const uint32_t RS_FEED_TYPE_CHAT = 0x0100;
const uint32_t RS_FEED_TYPE_MSG = 0x0200;
const uint32_t RS_FEED_TYPE_FILES = 0x0400;
@ -82,6 +85,18 @@ const uint32_t RS_FEED_ITEM_SEC_BAD_CERTIFICATE = RS_FEED_TYPE_SECURITY | 0
const uint32_t RS_FEED_ITEM_SEC_INTERNAL_ERROR = RS_FEED_TYPE_SECURITY | 0x0007;
const uint32_t RS_FEED_ITEM_SEC_MISSING_CERTIFICATE = RS_FEED_TYPE_SECURITY | 0x0008;
const uint32_t RS_FEED_ITEM_CHANNEL_NEW = RS_FEED_TYPE_CHANNEL | 0x0001;
//const uint32_t RS_FEED_ITEM_CHANNEL_UPDATE = RS_FEED_TYPE_CHANNEL | 0x0002;
const uint32_t RS_FEED_ITEM_CHANNEL_MSG = RS_FEED_TYPE_CHANNEL | 0x0003;
const uint32_t RS_FEED_ITEM_FORUM_NEW = RS_FEED_TYPE_FORUM | 0x0001;
//const uint32_t RS_FEED_ITEM_FORUM_UPDATE = RS_FEED_TYPE_FORUM | 0x0002;
const uint32_t RS_FEED_ITEM_FORUM_MSG = RS_FEED_TYPE_FORUM | 0x0003;
//const uint32_t RS_FEED_ITEM_BLOG_NEW = RS_FEED_TYPE_BLOG | 0x0001;
//const uint32_t RS_FEED_ITEM_BLOG_UPDATE = RS_FEED_TYPE_BLOG | 0x0002;
//const uint32_t RS_FEED_ITEM_BLOG_MSG = RS_FEED_TYPE_BLOG | 0x0003;
const uint32_t RS_FEED_ITEM_CHAT_NEW = RS_FEED_TYPE_CHAT | 0x0001;
const uint32_t RS_FEED_ITEM_MESSAGE = RS_FEED_TYPE_MSG | 0x0001;
const uint32_t RS_FEED_ITEM_FILES_NEW = RS_FEED_TYPE_FILES | 0x0001;

View file

@ -33,6 +33,9 @@
#include "retroshare/rsgxsflags.h"
#include "retroshare/rsfiles.h"
#include "rsserver/p3face.h"
#include "retroshare/rsnotify.h"
#include <stdio.h>
// For Dummy Msgs.
@ -128,6 +131,12 @@ void p3GxsChannels::notifyChanges(std::vector<RsGxsNotify *> &changes)
std::cerr << "p3GxsChannels::notifyChanges()";
std::cerr << std::endl;
p3Notify *notify = NULL;
if (!changes.empty())
{
notify = RsServer::notify();
}
/* iterate through and grab any new messages */
std::list<RsGxsGroupId> unprocessedGroups;
@ -135,7 +144,27 @@ void p3GxsChannels::notifyChanges(std::vector<RsGxsNotify *> &changes)
for(it = changes.begin(); it != changes.end(); ++it)
{
RsGxsMsgChange *msgChange = dynamic_cast<RsGxsMsgChange *>(*it);
if (msgChange && !msgChange->metaChange())
if (msgChange)
{
if (msgChange->getType() == RsGxsNotify::TYPE_RECEIVE)
{
/* message received */
if (notify)
{
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > &msgChangeMap = msgChange->msgChangeMap;
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> >::iterator mit;
for (mit = msgChangeMap.begin(); mit != msgChangeMap.end(); ++mit)
{
std::vector<RsGxsMessageId>::iterator mit1;
for (mit1 = mit->second.begin(); mit1 != mit->second.end(); ++mit1)
{
notify->AddFeedItem(RS_FEED_ITEM_CHANNEL_MSG, mit->first.toStdString(), mit1->toStdString());
}
}
}
}
if (!msgChange->metaChange())
{
std::cerr << "p3GxsChannels::notifyChanges() Found Message Change Notification";
std::cerr << std::endl;
@ -158,6 +187,24 @@ void p3GxsChannels::notifyChanges(std::vector<RsGxsNotify *> &changes)
}
}
}
}
else
{
if (notify && (*it)->getType() == RsGxsNotify::TYPE_RECEIVE)
{
RsGxsGroupChange *grpChange = dynamic_cast<RsGxsGroupChange *>(*it);
if (grpChange)
{
/* group received */
std::list<RsGxsGroupId> &grpList = grpChange->mGrpIdList;
std::list<RsGxsGroupId>::iterator git;
for (git = grpList.begin(); git != grpList.end(); ++git)
{
notify->AddFeedItem(RS_FEED_ITEM_CHANNEL_NEW, git->toStdString());
}
}
}
}
/* shouldn't need to worry about groups - as they need to be subscribed to */
}

View file

@ -28,6 +28,8 @@
#include <retroshare/rsidentity.h>
#include "rsserver/p3face.h"
#include "retroshare/rsnotify.h"
#include "retroshare/rsgxsflags.h"
#include <stdio.h>
@ -98,6 +100,51 @@ uint32_t p3GxsForums::forumsAuthenPolicy()
void p3GxsForums::notifyChanges(std::vector<RsGxsNotify *> &changes)
{
if (!changes.empty())
{
p3Notify *notify = RsServer::notify();
if (notify)
{
std::vector<RsGxsNotify*>::iterator it;
for(it = changes.begin(); it != changes.end(); ++it)
{
RsGxsNotify *c = *it;
if (c->getType() == RsGxsNotify::TYPE_RECEIVE)
{
RsGxsMsgChange *msgChange = dynamic_cast<RsGxsMsgChange*>(c);
if (msgChange)
{
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > &msgChangeMap = msgChange->msgChangeMap;
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> >::iterator mit;
for (mit = msgChangeMap.begin(); mit != msgChangeMap.end(); ++mit)
{
std::vector<RsGxsMessageId>::iterator mit1;
for (mit1 = mit->second.begin(); mit1 != mit->second.end(); ++mit1)
{
notify->AddFeedItem(RS_FEED_ITEM_FORUM_MSG, mit->first.toStdString(), mit1->toStdString());
}
}
continue;
}
RsGxsGroupChange *grpChange = dynamic_cast<RsGxsGroupChange *>(*it);
if (grpChange)
{
/* group received */
std::list<RsGxsGroupId> &grpList = grpChange->mGrpIdList;
std::list<RsGxsGroupId>::iterator git;
for (git = grpList.begin(); git != grpList.end(); ++git)
{
notify->AddFeedItem(RS_FEED_ITEM_FORUM_NEW, git->toStdString());
}
continue;
}
}
}
}
}
RsGxsIfaceHelper::receiveChanges(changes);
}

View file

@ -30,12 +30,10 @@
#include <retroshare/rsmsgs.h>
#include <retroshare/rsplugin.h>
#if 0
#include "feeds/ChanNewItem.h"
#include "feeds/ChanMsgItem.h"
#include "feeds/ForumNewItem.h"
#include "feeds/ForumMsgItem.h"
#endif
//#include "feeds/ChanNewItem.h"
#include "feeds/GxsChannelPostItem.h"
//#include "feeds/ForumNewItem.h"
//#include "feeds/ForumMsgItem.h"
#include "settings/rsettingswin.h"
#ifdef BLOGS
@ -56,11 +54,11 @@
const uint32_t NEWSFEED_PEERLIST = 0x0001;
#if 0
const uint32_t NEWSFEED_FORUMNEWLIST = 0x0002;
const uint32_t NEWSFEED_FORUMMSGLIST = 0x0003;
const uint32_t NEWSFEED_CHANNEWLIST = 0x0004;
const uint32_t NEWSFEED_CHANMSGLIST = 0x0005;
const uint32_t NEWSFEED_CHANNELNEWLIST = 0x0004;
const uint32_t NEWSFEED_CHANNELMSGLIST = 0x0005;
#if 0
const uint32_t NEWSFEED_BLOGNEWLIST = 0x0006;
const uint32_t NEWSFEED_BLOGMSGLIST = 0x0007;
#endif
@ -174,33 +172,33 @@ void NewsFeed::updateDisplay()
addFeedItemSecurityUnknownOut(fi);
break;
#if 0
case RS_FEED_ITEM_CHAN_NEW:
if (flags & RS_FEED_TYPE_CHAN)
addFeedItemChanNew(fi);
case RS_FEED_ITEM_CHANNEL_NEW:
if (flags & RS_FEED_TYPE_CHANNEL)
addFeedItemChannelNew(fi);
break;
case RS_FEED_ITEM_CHAN_UPDATE:
if (flags & RS_FEED_TYPE_CHAN)
addFeedItemChanUpdate(fi);
break;
case RS_FEED_ITEM_CHAN_MSG:
if (flags & RS_FEED_TYPE_CHAN)
addFeedItemChanMsg(fi);
// case RS_FEED_ITEM_CHANNEL_UPDATE:
// if (flags & RS_FEED_TYPE_CHANNEL)
// addFeedItemChannelUpdate(fi);
// break;
case RS_FEED_ITEM_CHANNEL_MSG:
if (flags & RS_FEED_TYPE_CHANNEL)
addFeedItemChannelMsg(fi);
break;
case RS_FEED_ITEM_FORUM_NEW:
if (flags & RS_FEED_TYPE_FORUM)
addFeedItemForumNew(fi);
break;
case RS_FEED_ITEM_FORUM_UPDATE:
if (flags & RS_FEED_TYPE_FORUM)
addFeedItemForumUpdate(fi);
break;
// case RS_FEED_ITEM_FORUM_UPDATE:
// if (flags & RS_FEED_TYPE_FORUM)
// addFeedItemForumUpdate(fi);
// break;
case RS_FEED_ITEM_FORUM_MSG:
if (flags & RS_FEED_TYPE_FORUM)
addFeedItemForumMsg(fi);
break;
#if 0
case RS_FEED_ITEM_BLOG_NEW:
if (flags & RS_FEED_TYPE_BLOG)
addFeedItemBlogNew(fi);
@ -284,7 +282,7 @@ void NewsFeed::testFeeds(uint notifyFlags)
break;
#if 0
case RS_FEED_TYPE_CHAN:
case RS_FEED_TYPE_CHANNEL:
{
std::list<ChannelInfo> channelList;
rsChannels->getChannelList(channelList);
@ -521,8 +519,6 @@ void NewsFeed::addFeedItemPeerConnect(RsFeedItem &fi)
/* make new widget */
PeerItem *pi = new PeerItem(this, NEWSFEED_PEERLIST, RsPeerId(fi.mId1), PEER_TYPE_CONNECT, false);
/* store */
/* add to layout */
addFeedItem(pi);
@ -538,8 +534,6 @@ void NewsFeed::addFeedItemPeerDisconnect(RsFeedItem &fi)
/* make new widget */
PeerItem *pi = new PeerItem(this, NEWSFEED_PEERLIST, RsPeerId(fi.mId1), PEER_TYPE_STD, false);
/* store */
/* add to layout */
addFeedItem(pi);
@ -554,8 +548,6 @@ void NewsFeed::addFeedItemPeerHello(RsFeedItem &fi)
/* make new widget */
PeerItem *pi = new PeerItem(this, NEWSFEED_PEERLIST, RsPeerId(fi.mId1), PEER_TYPE_HELLO, false);
/* store */
/* add to layout */
addFeedItem(pi);
@ -570,8 +562,6 @@ void NewsFeed::addFeedItemPeerNew(RsFeedItem &fi)
/* make new widget */
PeerItem *pi = new PeerItem(this, NEWSFEED_PEERLIST, RsPeerId(fi.mId1), PEER_TYPE_NEW_FOF, false);
/* store */
/* add to layout */
addFeedItem(pi);
@ -586,8 +576,6 @@ void NewsFeed::addFeedItemSecurityConnectAttempt(RsFeedItem &fi)
/* make new widget */
SecurityItem *pi = new SecurityItem(this, NEWSFEED_SECLIST, RsPgpId(fi.mId1), RsPeerId(fi.mId2), fi.mId3, fi.mId4, fi.mType, false);
/* store */
/* add to layout */
addFeedItemIfUnique(pi, fi.mType, RsPeerId(fi.mId2), false);
@ -602,8 +590,6 @@ void NewsFeed::addFeedItemSecurityAuthDenied(RsFeedItem &fi)
/* make new widget */
SecurityItem *pi = new SecurityItem(this, NEWSFEED_SECLIST, RsPgpId(fi.mId1), RsPeerId(fi.mId2), fi.mId3, fi.mId4, fi.mType, false);
/* store */
/* add to layout */
addFeedItemIfUnique(pi, RS_FEED_ITEM_SEC_AUTH_DENIED, RsPeerId(fi.mId2), false);
@ -618,8 +604,6 @@ void NewsFeed::addFeedItemSecurityUnknownIn(RsFeedItem &fi)
/* make new widget */
SecurityItem *pi = new SecurityItem(this, NEWSFEED_SECLIST, RsPgpId(fi.mId1), RsPeerId(fi.mId2), fi.mId3, fi.mId4, RS_FEED_ITEM_SEC_UNKNOWN_IN, false);
/* store */
/* add to layout */
addFeedItemIfUnique(pi, RS_FEED_ITEM_SEC_UNKNOWN_IN, RsPeerId(fi.mId2), false);
@ -634,8 +618,6 @@ void NewsFeed::addFeedItemSecurityUnknownOut(RsFeedItem &fi)
/* make new widget */
SecurityItem *pi = new SecurityItem(this, NEWSFEED_SECLIST, RsPgpId(fi.mId1), RsPeerId(fi.mId2), fi.mId3, fi.mId4, RS_FEED_ITEM_SEC_UNKNOWN_OUT, false);
/* store */
/* add to layout */
addFeedItemIfUnique(pi, RS_FEED_ITEM_SEC_UNKNOWN_OUT, RsPeerId(fi.mId2), false);
@ -645,17 +627,13 @@ void NewsFeed::addFeedItemSecurityUnknownOut(RsFeedItem &fi)
#endif
}
#if 0
void NewsFeed::addFeedItemChanNew(RsFeedItem &fi)
void NewsFeed::addFeedItemChannelNew(RsFeedItem &fi)
{
/* make new widget */
ChanNewItem *cni = new ChanNewItem(this, NEWSFEED_CHANNEWLIST, fi.mId1, false, true);
/* store in list */
// ChanNewItem *cni = new ChanNewItem(this, NEWSFEED_CHANNEWLIST, fi.mId1, false, true);
/* add to layout */
addFeedItem(cni);
// addFeedItem(cni);
#ifdef NEWS_DEBUG
std::cerr << "NewsFeed::addFeedItemChanNew()";
@ -663,31 +641,34 @@ void NewsFeed::addFeedItemChanNew(RsFeedItem &fi)
#endif
}
void NewsFeed::addFeedItemChanUpdate(RsFeedItem &fi)
{
/* make new widget */
ChanNewItem *cni = new ChanNewItem(this, NEWSFEED_CHANNEWLIST, fi.mId1, false, false);
//void NewsFeed::addFeedItemChannelUpdate(RsFeedItem &fi)
//{
// /* make new widget */
// ChanNewItem *cni = new ChanNewItem(this, NEWSFEED_CHANNEWLIST, fi.mId1, false, false);
/* store in list */
// /* add to layout */
// addFeedItem(cni);
//#ifdef NEWS_DEBUG
// std::cerr << "NewsFeed::addFeedItemChanUpdate()";
// std::cerr << std::endl;
//#endif
//}
void NewsFeed::addFeedItemChannelMsg(RsFeedItem &fi)
{
RsGxsGroupId grpId(fi.mId1);
RsGxsMessageId msgId(fi.mId2);
if (grpId.isNull() || msgId.isNull()) {
return;
}
/* make new widget */
GxsChannelPostItem *item = new GxsChannelPostItem(this, NEWSFEED_CHANNELNEWLIST, grpId, msgId, false, true);
/* add to layout */
addFeedItem(cni);
#ifdef NEWS_DEBUG
std::cerr << "NewsFeed::addFeedItemChanUpdate()";
std::cerr << std::endl;
#endif
}
void NewsFeed::addFeedItemChanMsg(RsFeedItem &fi)
{
/* make new widget */
ChanMsgItem *cm = new ChanMsgItem(this, NEWSFEED_CHANMSGLIST, fi.mId1, fi.mId2, false);
/* store in forum list */
/* add to layout */
addFeedItem(cm);
addFeedItem(item);
#ifdef NEWS_DEBUG
std::cerr << "NewsFeed::addFeedItemChanMsg()";
@ -698,13 +679,10 @@ void NewsFeed::addFeedItemChanMsg(RsFeedItem &fi)
void NewsFeed::addFeedItemForumNew(RsFeedItem &fi)
{
/* make new widget */
ForumNewItem *fni = new ForumNewItem(this, NEWSFEED_FORUMNEWLIST, fi.mId1, false, true);
/* store in forum list */
mForumNewItems.push_back(fni);
// ForumNewItem *fni = new ForumNewItem(this, NEWSFEED_FORUMNEWLIST, fi.mId1, false, true);
/* add to layout */
addFeedItem(fni);
// addFeedItem(fni);
#ifdef NEWS_DEBUG
std::cerr << "NewsFeed::addFeedItemForumNew()";
@ -712,32 +690,27 @@ void NewsFeed::addFeedItemForumNew(RsFeedItem &fi)
#endif
}
void NewsFeed::addFeedItemForumUpdate(RsFeedItem &fi)
{
/* make new widget */
ForumNewItem *fni = new ForumNewItem(this, NEWSFEED_FORUMNEWLIST, fi.mId1, false, false);
//void NewsFeed::addFeedItemForumUpdate(RsFeedItem &fi)
//{
// /* make new widget */
// ForumNewItem *fni = new ForumNewItem(this, NEWSFEED_FORUMNEWLIST, fi.mId1, false, false);
/* store in forum list */
mForumNewItems.push_back(fni);
// /* add to layout */
// addFeedItem(fni);
/* add to layout */
addFeedItem(fni);
#ifdef NEWS_DEBUG
std::cerr << "NewsFeed::addFeedItemForumUpdate()";
std::cerr << std::endl;
#endif
}
//#ifdef NEWS_DEBUG
// std::cerr << "NewsFeed::addFeedItemForumUpdate()";
// std::cerr << std::endl;
//#endif
//}
void NewsFeed::addFeedItemForumMsg(RsFeedItem &fi)
{
/* make new widget */
ForumMsgItem *fm = new ForumMsgItem(this, NEWSFEED_FORUMMSGLIST, fi.mId1, fi.mId2, false);
/* store in forum list */
// ForumMsgItem *fm = new ForumMsgItem(this, NEWSFEED_FORUMMSGLIST, fi.mId1, fi.mId2, false);
/* add to layout */
addFeedItem(fm);
// addFeedItem(fm);
#ifdef NEWS_DEBUG
std::cerr << "NewsFeed::addFeedItemForumMsg()";
@ -745,14 +718,13 @@ void NewsFeed::addFeedItemForumMsg(RsFeedItem &fi)
#endif
}
#if 0
void NewsFeed::addFeedItemBlogNew(RsFeedItem &fi)
{
#ifdef BLOGS
/* make new widget */
BlogNewItem *bni = new BlogNewItem(this, NEWSFEED_BLOGNEWLIST, fi.mId1, false, true);
/* store in list */
/* add to layout */
addFeedItem(bni);
#else
@ -771,8 +743,6 @@ void NewsFeed::addFeedItemBlogMsg(RsFeedItem &fi)
/* make new widget */
BlogMsgItem *bm = new BlogMsgItem(this, NEWSFEED_BLOGMSGLIST, fi.mId1, fi.mId2, false);
/* store in forum list */
/* add to layout */
addFeedItem(bm);
#else
@ -802,8 +772,6 @@ void NewsFeed::addFeedItemChatNew(RsFeedItem &fi, bool addWithoutCheck)
/* make new widget */
ChatMsgItem *cm = new ChatMsgItem(this, NEWSFEED_CHATMSGLIST, RsPeerId(fi.mId1), fi.mId2);
/* store in forum list */
/* add to layout */
addFeedItem(cm);
}
@ -813,8 +781,6 @@ void NewsFeed::addFeedItemMessage(RsFeedItem &fi)
/* make new widget */
MsgItem *mi = new MsgItem(this, NEWSFEED_MESSAGELIST, fi.mId1, false);
/* store in list */
/* add to layout */
addFeedItem(mi);

View file

@ -32,9 +32,6 @@
class RsFeedItem;
class ForumNewItem;
class ChanMsgItem;
class ChatMsgItem;
class FeedNotify;
class NewsFeed : public RsAutoUpdatePage, public FeedHolder, private Ui::NewsFeed
@ -63,11 +60,12 @@ public:
static void testFeed(FeedNotify *feedNotify);
virtual void updateDisplay();
signals:
void newsFeedChanged(int count);
private slots:
// void toggleChanMsgItems(bool on);
// void toggleChanMsgItems(bool on);
void feedoptions();
void removeAll();
@ -87,13 +85,13 @@ private:
void addFeedItemSecurityUnknownIn(RsFeedItem &fi);
void addFeedItemSecurityUnknownOut(RsFeedItem &fi);
#if 0
void addFeedItemChanNew(RsFeedItem &fi);
void addFeedItemChanUpdate(RsFeedItem &fi);
void addFeedItemChanMsg(RsFeedItem &fi);
void addFeedItemChannelNew(RsFeedItem &fi);
// void addFeedItemChannelUpdate(RsFeedItem &fi);
void addFeedItemChannelMsg(RsFeedItem &fi);
void addFeedItemForumNew(RsFeedItem &fi);
void addFeedItemForumUpdate(RsFeedItem &fi);
// void addFeedItemForumUpdate(RsFeedItem &fi);
void addFeedItemForumMsg(RsFeedItem &fi);
#if 0
void addFeedItemBlogNew(RsFeedItem &fi);
void addFeedItemBlogMsg(RsFeedItem &fi);
#endif
@ -105,11 +103,6 @@ private:
void sendNewsFeedChanged();
std::list<QObject*> widgets;
/* lists of feedItems */
std::list<ForumNewItem *> mForumNewItems;
std::list<ChanMsgItem *> mChanMsgItems;
};
#endif

View file

@ -44,6 +44,8 @@ NotifyPage::NotifyPage(QWidget * parent, Qt::WindowFlags flags)
connect(ui.pushButtonDisableAll,SIGNAL(toggled(bool)), NotifyQt::getInstance(), SLOT(SetDisableAll(bool)));
connect(NotifyQt::getInstance(),SIGNAL(disableAllChanged(bool)), ui.pushButtonDisableAll, SLOT(setChecked(bool)));
ui.notify_Blogs->hide();
QFont font = ui.notify_Peers->font(); // use font from existing checkbox
/* add feed notify */
@ -112,11 +114,11 @@ uint NotifyPage::getNewsFlags()
if (ui.notify_Peers->isChecked())
newsFlags |= RS_FEED_TYPE_PEER;
#if 0
if (ui.notify_Channels->isChecked())
newsFlags |= RS_FEED_TYPE_CHAN;
newsFlags |= RS_FEED_TYPE_CHANNEL;
if (ui.notify_Forums->isChecked())
newsFlags |= RS_FEED_TYPE_FORUM;
#if 0
if (ui.notify_Blogs->isChecked())
newsFlags |= RS_FEED_TYPE_BLOG;
#endif
@ -224,9 +226,9 @@ void NotifyPage::load()
ui.popup_ConnectAttempt->setChecked(notifyflags & RS_POPUP_CONNECT_ATTEMPT);
ui.notify_Peers->setChecked(newsflags & RS_FEED_TYPE_PEER);
#if 0
ui.notify_Channels->setChecked(newsflags & RS_FEED_TYPE_CHAN);
ui.notify_Channels->setChecked(newsflags & RS_FEED_TYPE_CHANNEL);
ui.notify_Forums->setChecked(newsflags & RS_FEED_TYPE_FORUM);
#if 0
ui.notify_Blogs->setChecked(newsflags & RS_FEED_TYPE_BLOG);
#endif
ui.notify_Chat->setChecked(newsflags & RS_FEED_TYPE_CHAT);