mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-03-29 01:58:16 -04:00
fixed forum and chnanel group feed items reacting to changes to the channel/forum group
This commit is contained in:
parent
d26f7db319
commit
315fb77d63
@ -39,6 +39,29 @@ GxsChannelGroupItem::GxsChannelGroupItem(FeedHolder *feedHolder, uint32_t feedId
|
||||
setup();
|
||||
|
||||
requestGroup();
|
||||
|
||||
mEventHandlerId = 0;
|
||||
rsEvents->registerEventsHandler( [this](std::shared_ptr<const RsEvent> event)
|
||||
{
|
||||
RsQThreadUtils::postToObject([=]()
|
||||
{
|
||||
const auto *e = dynamic_cast<const RsGxsChannelEvent*>(event.get());
|
||||
|
||||
if(!e || e->mChannelGroupId != this->groupId())
|
||||
return;
|
||||
|
||||
switch(e->mChannelEventCode)
|
||||
{
|
||||
case RsChannelEventCode::SUBSCRIBE_STATUS_CHANGED:
|
||||
case RsChannelEventCode::UPDATED_CHANNEL:
|
||||
case RsChannelEventCode::RECEIVED_PUBLISH_KEY:
|
||||
loadGroup();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}, this );
|
||||
}, mEventHandlerId, RsEventType::GXS_CHANNELS );
|
||||
}
|
||||
|
||||
GxsChannelGroupItem::GxsChannelGroupItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsChannelGroup &group, bool isHome, bool autoUpdate) :
|
||||
@ -51,6 +74,7 @@ GxsChannelGroupItem::GxsChannelGroupItem(FeedHolder *feedHolder, uint32_t feedId
|
||||
|
||||
GxsChannelGroupItem::~GxsChannelGroupItem()
|
||||
{
|
||||
rsEvents->unregisterEventsHandler(mEventHandlerId);
|
||||
delete(ui);
|
||||
}
|
||||
|
||||
|
@ -66,6 +66,7 @@ private:
|
||||
|
||||
/** Qt Designer generated object */
|
||||
Ui::GxsChannelGroupItem *ui;
|
||||
RsEventsHandlerId_t mEventHandlerId;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -251,7 +251,7 @@
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Subscribe to Channel</string>
|
||||
<string>Subscribe this Channel</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Subscribe</string>
|
||||
|
@ -35,8 +35,9 @@ GxsForumGroupItem::GxsForumGroupItem(FeedHolder *feedHolder, uint32_t feedId, co
|
||||
GxsGroupFeedItem(feedHolder, feedId, groupId, isHome, rsGxsForums, autoUpdate)
|
||||
{
|
||||
setup();
|
||||
|
||||
requestGroup();
|
||||
|
||||
|
||||
}
|
||||
|
||||
GxsForumGroupItem::GxsForumGroupItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsGroupId &groupId, const std::list<RsGxsId>& added_moderators,const std::list<RsGxsId>& removed_moderators,bool isHome, bool autoUpdate):
|
||||
@ -47,6 +48,29 @@ GxsForumGroupItem::GxsForumGroupItem(FeedHolder *feedHolder, uint32_t feedId, co
|
||||
setup();
|
||||
|
||||
requestGroup();
|
||||
|
||||
mEventHandlerId = 0;
|
||||
rsEvents->registerEventsHandler( [this](std::shared_ptr<const RsEvent> event)
|
||||
{
|
||||
RsQThreadUtils::postToObject([=]()
|
||||
{
|
||||
const auto *e = dynamic_cast<const RsGxsForumEvent*>(event.get());
|
||||
|
||||
if(!e || e->mForumGroupId != this->groupId())
|
||||
return;
|
||||
|
||||
switch(e->mForumEventCode)
|
||||
{
|
||||
case RsForumEventCode::SUBSCRIBE_STATUS_CHANGED:
|
||||
case RsForumEventCode::UPDATED_FORUM:
|
||||
case RsForumEventCode::MODERATOR_LIST_CHANGED:
|
||||
loadGroup();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}, this );
|
||||
}, mEventHandlerId, RsEventType::GXS_FORUMS );
|
||||
}
|
||||
|
||||
GxsForumGroupItem::GxsForumGroupItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsForumGroup &group, bool isHome, bool autoUpdate) :
|
||||
@ -59,7 +83,8 @@ GxsForumGroupItem::GxsForumGroupItem(FeedHolder *feedHolder, uint32_t feedId, co
|
||||
|
||||
GxsForumGroupItem::~GxsForumGroupItem()
|
||||
{
|
||||
delete(ui);
|
||||
rsEvents->unregisterEventsHandler(mEventHandlerId);
|
||||
delete(ui);
|
||||
}
|
||||
|
||||
void GxsForumGroupItem::setup()
|
||||
|
@ -22,6 +22,7 @@
|
||||
#define _GXSFORUMGROUPITEM_H
|
||||
|
||||
#include <retroshare/rsgxsforums.h>
|
||||
#include <retroshare/rsevents.h>
|
||||
#include "gui/gxs/GxsGroupFeedItem.h"
|
||||
|
||||
namespace Ui {
|
||||
@ -39,19 +40,19 @@ public:
|
||||
GxsForumGroupItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsGroupId &groupId, bool isHome, bool autoUpdate);
|
||||
GxsForumGroupItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsGroupId &groupId, const std::list<RsGxsId>& added_moderators,const std::list<RsGxsId>& removed_moderators,bool isHome, bool autoUpdate);
|
||||
GxsForumGroupItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsForumGroup &group, bool isHome, bool autoUpdate);
|
||||
~GxsForumGroupItem();
|
||||
virtual ~GxsForumGroupItem() override;
|
||||
|
||||
bool setGroup(const RsGxsForumGroup &group);
|
||||
|
||||
uint64_t uniqueIdentifier() const override { return hash_64bits("GxsForumGroupItem " + groupId().toStdString()) ; }
|
||||
protected:
|
||||
/* FeedItem */
|
||||
virtual void doExpand(bool open);
|
||||
virtual void doExpand(bool open) override;
|
||||
|
||||
/* GxsGroupFeedItem */
|
||||
virtual QString groupName();
|
||||
virtual QString groupName() override;
|
||||
virtual void loadGroup() override;
|
||||
virtual RetroShareLink::enumType getLinkType() { return RetroShareLink::TYPE_FORUM; }
|
||||
virtual RetroShareLink::enumType getLinkType() override { return RetroShareLink::TYPE_FORUM; }
|
||||
|
||||
private slots:
|
||||
void subscribeForum();
|
||||
@ -69,6 +70,8 @@ private:
|
||||
|
||||
std::list<RsGxsId> mAddedModerators;
|
||||
std::list<RsGxsId> mRemovedModerators;
|
||||
|
||||
RsEventsHandlerId_t mEventHandlerId;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user