mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-07-22 22:21:09 -04:00
have GxsChannelPostItem only keep a copy of the group meta data instead of the full group data to save memory
This commit is contained in:
parent
678bcf5830
commit
2a046eacb3
3 changed files with 16 additions and 15 deletions
|
@ -44,11 +44,12 @@
|
||||||
* #define DEBUG_ITEM 1
|
* #define DEBUG_ITEM 1
|
||||||
****/
|
****/
|
||||||
|
|
||||||
GxsChannelPostItem::GxsChannelPostItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsChannelGroup& group, const RsGxsMessageId &messageId, bool isHome, bool autoUpdate,const std::set<RsGxsMessageId>& older_versions) :
|
GxsChannelPostItem::GxsChannelPostItem(FeedHolder *feedHolder, uint32_t feedId, const RsGroupMetaData& group_meta, const RsGxsMessageId &messageId, bool isHome, bool autoUpdate,const std::set<RsGxsMessageId>& older_versions) :
|
||||||
GxsFeedItem(feedHolder, feedId, group.mMeta.mGroupId, messageId, isHome, rsGxsChannels, autoUpdate), mGroup(group) // this one should be in GxsFeedItem
|
GxsFeedItem(feedHolder, feedId, group_meta.mGroupId, messageId, isHome, rsGxsChannels, autoUpdate),
|
||||||
|
mGroupMeta(group_meta)
|
||||||
{
|
{
|
||||||
mPost.mMeta.mMsgId = messageId; // useful for uniqueIdentifer() before the post is loaded
|
mPost.mMeta.mMsgId = messageId; // useful for uniqueIdentifer() before the post is loaded
|
||||||
mPost.mMeta.mGroupId = group.mMeta.mGroupId;
|
mPost.mMeta.mGroupId = mGroupMeta.mGroupId;
|
||||||
|
|
||||||
QVector<RsGxsMessageId> v;
|
QVector<RsGxsMessageId> v;
|
||||||
//bool self = false;
|
//bool self = false;
|
||||||
|
@ -62,7 +63,7 @@ GxsChannelPostItem::GxsChannelPostItem(FeedHolder *feedHolder, uint32_t feedId,
|
||||||
setMessageVersions(v) ;
|
setMessageVersions(v) ;
|
||||||
setup();
|
setup();
|
||||||
|
|
||||||
//init(messageId,older_versions) ;
|
// no call to loadGroup() here because we have it already.
|
||||||
}
|
}
|
||||||
|
|
||||||
GxsChannelPostItem::GxsChannelPostItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsGroupId& groupId, const RsGxsMessageId &messageId, bool isHome, bool autoUpdate,const std::set<RsGxsMessageId>& older_versions) :
|
GxsChannelPostItem::GxsChannelPostItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsGroupId& groupId, const RsGxsMessageId &messageId, bool isHome, bool autoUpdate,const std::set<RsGxsMessageId>& older_versions) :
|
||||||
|
@ -238,7 +239,7 @@ QString GxsChannelPostItem::getMsgLabel()
|
||||||
|
|
||||||
QString GxsChannelPostItem::groupName()
|
QString GxsChannelPostItem::groupName()
|
||||||
{
|
{
|
||||||
return QString::fromUtf8(mGroup.mMeta.mGroupName.c_str());
|
return QString::fromUtf8(mGroupMeta.mGroupName.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void GxsChannelPostItem::loadComments()
|
void GxsChannelPostItem::loadComments()
|
||||||
|
@ -384,7 +385,7 @@ void GxsChannelPostItem::fill()
|
||||||
ui->logoLabel->setPixmap(thumbnail);
|
ui->logoLabel->setPixmap(thumbnail);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !IS_GROUP_PUBLISHER(mGroup.mMeta.mSubscribeFlags) )
|
if( !IS_GROUP_PUBLISHER(mGroupMeta.mSubscribeFlags) )
|
||||||
ui->editButton->hide() ;
|
ui->editButton->hide() ;
|
||||||
|
|
||||||
if (!mIsHome)
|
if (!mIsHome)
|
||||||
|
@ -401,7 +402,7 @@ void GxsChannelPostItem::fill()
|
||||||
RetroShareLink msgLink = RetroShareLink::createGxsMessageLink(RetroShareLink::TYPE_CHANNEL, mPost.mMeta.mGroupId, mPost.mMeta.mMsgId, messageName());
|
RetroShareLink msgLink = RetroShareLink::createGxsMessageLink(RetroShareLink::TYPE_CHANNEL, mPost.mMeta.mGroupId, mPost.mMeta.mMsgId, messageName());
|
||||||
//ui->subjectLabel->setText(msgLink.toHtml());
|
//ui->subjectLabel->setText(msgLink.toHtml());
|
||||||
|
|
||||||
if (IS_GROUP_SUBSCRIBED(mGroup.mMeta.mSubscribeFlags) || IS_GROUP_ADMIN(mGroup.mMeta.mSubscribeFlags))
|
if (IS_GROUP_SUBSCRIBED(mGroupMeta.mSubscribeFlags) || IS_GROUP_ADMIN(mGroupMeta.mSubscribeFlags))
|
||||||
{
|
{
|
||||||
ui->unsubscribeButton->setEnabled(true);
|
ui->unsubscribeButton->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
@ -440,7 +441,7 @@ void GxsChannelPostItem::fill()
|
||||||
ui->unsubscribeButton->hide();
|
ui->unsubscribeButton->hide();
|
||||||
ui->copyLinkButton->show();
|
ui->copyLinkButton->show();
|
||||||
|
|
||||||
if (IS_GROUP_SUBSCRIBED(mGroup.mMeta.mSubscribeFlags) || IS_GROUP_ADMIN(mGroup.mMeta.mSubscribeFlags))
|
if (IS_GROUP_SUBSCRIBED(mGroupMeta.mSubscribeFlags) || IS_GROUP_ADMIN(mGroupMeta.mSubscribeFlags))
|
||||||
{
|
{
|
||||||
ui->readButton->setVisible(true);
|
ui->readButton->setVisible(true);
|
||||||
|
|
||||||
|
@ -753,7 +754,7 @@ void GxsChannelPostItem::download()
|
||||||
|
|
||||||
void GxsChannelPostItem::edit()
|
void GxsChannelPostItem::edit()
|
||||||
{
|
{
|
||||||
CreateGxsChannelMsg *msgDialog = new CreateGxsChannelMsg(mGroup.mMeta.mGroupId,mPost.mMeta.mMsgId);
|
CreateGxsChannelMsg *msgDialog = new CreateGxsChannelMsg(mGroupMeta.mGroupId,mPost.mMeta.mMsgId);
|
||||||
msgDialog->show();
|
msgDialog->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -823,7 +824,7 @@ void GxsChannelPostItem::loadGroup()
|
||||||
std::vector<RsGxsChannelGroup> groups;
|
std::vector<RsGxsChannelGroup> groups;
|
||||||
const std::list<RsGxsGroupId> groupIds = { groupId() };
|
const std::list<RsGxsGroupId> groupIds = { groupId() };
|
||||||
|
|
||||||
if(!rsGxsChannels->getChannelsInfo(groupIds,groups))
|
if(!rsGxsChannels->getChannelsInfo(groupIds,groups)) // would be better to call channel Summaries for a single group
|
||||||
{
|
{
|
||||||
RsErr() << "GxsGxsChannelGroupItem::loadGroup() ERROR getting data" << std::endl;
|
RsErr() << "GxsGxsChannelGroupItem::loadGroup() ERROR getting data" << std::endl;
|
||||||
return;
|
return;
|
||||||
|
@ -843,7 +844,7 @@ void GxsChannelPostItem::loadGroup()
|
||||||
* thread, for example to update the data model with new information
|
* thread, for example to update the data model with new information
|
||||||
* after a blocking call to RetroShare API complete */
|
* after a blocking call to RetroShare API complete */
|
||||||
|
|
||||||
mGroup = group;
|
mGroupMeta = group.mMeta;
|
||||||
|
|
||||||
}, this );
|
}, this );
|
||||||
});
|
});
|
||||||
|
|
|
@ -47,7 +47,7 @@ public:
|
||||||
// This one is used in channel thread widget. We don't want the group data to reload at every post, so we load it in the hosting
|
// This one is used in channel thread widget. We don't want the group data to reload at every post, so we load it in the hosting
|
||||||
// GxsChannelsPostsWidget and pass it to created items.
|
// GxsChannelsPostsWidget and pass it to created items.
|
||||||
|
|
||||||
GxsChannelPostItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsChannelGroup& group, const RsGxsMessageId &messageId, bool isHome, bool autoUpdate, const std::set<RsGxsMessageId>& older_versions = std::set<RsGxsMessageId>());
|
GxsChannelPostItem(FeedHolder *feedHolder, uint32_t feedId, const RsGroupMetaData& group, const RsGxsMessageId &messageId, bool isHome, bool autoUpdate, const std::set<RsGxsMessageId>& older_versions = std::set<RsGxsMessageId>());
|
||||||
|
|
||||||
// // This method can be called when additional information is known about the post. In this case, the widget will be initialized with some
|
// // This method can be called when additional information is known about the post. In this case, the widget will be initialized with some
|
||||||
// // minimap information from the post and completed when the use displays it, which shouldn't cost anything more.
|
// // minimap information from the post and completed when the use displays it, which shouldn't cost anything more.
|
||||||
|
@ -124,7 +124,7 @@ private:
|
||||||
bool mCloseOnRead;
|
bool mCloseOnRead;
|
||||||
bool mLoaded;
|
bool mLoaded;
|
||||||
|
|
||||||
RsGxsChannelGroup mGroup;
|
RsGroupMetaData mGroupMeta;
|
||||||
RsGxsChannelPost mPost;
|
RsGxsChannelPost mPost;
|
||||||
|
|
||||||
std::list<SubFileItem*> mFileItems;
|
std::list<SubFileItem*> mFileItems;
|
||||||
|
|
|
@ -520,7 +520,7 @@ void GxsChannelPostsWidget::createPostItem(const RsGxsChannelPost& post, bool re
|
||||||
|
|
||||||
older_versions.insert(meta.mMsgId);
|
older_versions.insert(meta.mMsgId);
|
||||||
|
|
||||||
GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, mGroup,meta.mMsgId, true, false,older_versions);
|
GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, mGroup.mMeta,meta.mMsgId, true, false,older_versions);
|
||||||
ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, QDateTime::fromTime_t(meta.mPublishTs));
|
ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, QDateTime::fromTime_t(meta.mPublishTs));
|
||||||
|
|
||||||
return ;
|
return ;
|
||||||
|
@ -539,7 +539,7 @@ void GxsChannelPostsWidget::createPostItem(const RsGxsChannelPost& post, bool re
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, mGroup,meta.mMsgId, true, true);
|
GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, mGroup.mMeta,meta.mMsgId, true, true);
|
||||||
ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, QDateTime::fromTime_t(meta.mPublishTs));
|
ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, QDateTime::fromTime_t(meta.mPublishTs));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue