added code to change posts read status

This commit is contained in:
csoler 2020-09-22 23:32:10 +02:00
parent 010fc1dc44
commit 5dfa481f2f
9 changed files with 46 additions and 9 deletions

View File

@ -176,7 +176,9 @@ public:
virtual bool voteForPost(bool up,const RsGxsGroupId& postGrpId,const RsGxsMessageId& postMsgId,const RsGxsId& voterId) =0; virtual bool voteForPost(bool up,const RsGxsGroupId& postGrpId,const RsGxsMessageId& postMsgId,const RsGxsId& voterId) =0;
enum RS_DEPRECATED RankType {TopRankType, HotRankType, NewRankType }; virtual bool setPostReadStatus(const RsGxsGrpMsgIdPair& msgId, bool read) = 0;
enum RS_DEPRECATED RankType {TopRankType, HotRankType, NewRankType };
RS_DEPRECATED_FOR(getBoardsInfo) RS_DEPRECATED_FOR(getBoardsInfo)
virtual bool getGroupData( const uint32_t& token, virtual bool getGroupData( const uint32_t& token,
@ -205,8 +207,9 @@ public:
//virtual bool createNewComment(uint32_t &token, RsGxsComment &comment) = 0; //virtual bool createNewComment(uint32_t &token, RsGxsComment &comment) = 0;
//virtual bool createNewVote(uint32_t &token, RsGxsVote &vote) = 0; //virtual bool createNewVote(uint32_t &token, RsGxsVote &vote) = 0;
RS_DEPRECATED_FOR(setPostReadStatus)
virtual void setMessageReadStatus(uint32_t& token, const RsGxsGrpMsgIdPair& msgId, bool read) = 0;
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
virtual void setMessageReadStatus(uint32_t& token, const RsGxsGrpMsgIdPair& msgId, bool read) = 0;
virtual bool createGroup(uint32_t &token, RsPostedGroup &group) = 0; virtual bool createGroup(uint32_t &token, RsPostedGroup &group) = 0;
virtual bool createPost(uint32_t &token, RsPostedPost &post) = 0; virtual bool createPost(uint32_t &token, RsPostedPost &post) = 0;

View File

@ -480,6 +480,19 @@ bool p3Posted::voteForPost(bool up,const RsGxsGroupId& postGrpId,const RsGxsMess
return true; return true;
} }
bool p3Posted::setPostReadStatus(const RsGxsGrpMsgIdPair& msgId, bool read)
{
uint32_t token;
setMessageReadStatus(token,msgId,read);
if(waitToken(token) != RsTokenService::COMPLETE)
{
std::cerr << __PRETTY_FUNCTION__ << " Error! GXS operation failed." << std::endl;
return false;
}
return true;
}
bool p3Posted::editBoard(RsPostedGroup& board) bool p3Posted::editBoard(RsPostedGroup& board)
{ {
uint32_t token; uint32_t token;

View File

@ -86,6 +86,8 @@ virtual void receiveHelperChanges(std::vector<RsGxsNotify*>& changes)
bool voteForPost(bool up,const RsGxsGroupId& postGrpId,const RsGxsMessageId& postMsgId,const RsGxsId& voterId) override; bool voteForPost(bool up,const RsGxsGroupId& postGrpId,const RsGxsMessageId& postMsgId,const RsGxsId& voterId) override;
bool setPostReadStatus(const RsGxsGrpMsgIdPair& msgId, bool read) override;
virtual bool getGroupData(const uint32_t &token, std::vector<RsPostedGroup> &groups) override; virtual bool getGroupData(const uint32_t &token, std::vector<RsPostedGroup> &groups) override;
virtual bool getPostData(const uint32_t &token, std::vector<RsPostedPost> &posts, std::vector<RsGxsComment> &cmts, std::vector<RsGxsVote> &vots) override; virtual bool getPostData(const uint32_t &token, std::vector<RsPostedPost> &posts, std::vector<RsGxsComment> &cmts, std::vector<RsGxsVote> &vots) override;
virtual bool getPostData(const uint32_t &token, std::vector<RsPostedPost> &posts, std::vector<RsGxsComment> &cmts) override; virtual bool getPostData(const uint32_t &token, std::vector<RsPostedPost> &posts, std::vector<RsGxsComment> &cmts) override;

View File

@ -458,6 +458,10 @@ void BoardPostDisplayWidget::loadComments(bool e)
emit commentsRequested(mPost.mMeta.mMsgId,e); emit commentsRequested(mPost.mMeta.mMsgId,e);
} }
void BoardPostDisplayWidget::readToggled(bool s)
{
emit changeReadStatusRequested(mPost.mMeta.mMsgId,s);
}
void BoardPostDisplayWidget::showAuthorInPeople() void BoardPostDisplayWidget::showAuthorInPeople()
{ {
if(mPost.mMeta.mAuthorId.isNull()) if(mPost.mMeta.mAuthorId.isNull())

View File

@ -72,9 +72,11 @@ protected slots:
void makeDownVote() ; void makeDownVote() ;
void toggleNotes() ; void toggleNotes() ;
void showAuthorInPeople(); void showAuthorInPeople();
void readToggled(bool);
signals: signals:
void vote(const RsGxsGrpMsgIdPair& msgId, bool up_or_down); void changeReadStatusRequested(const RsGxsMessageId&,bool);
void vote(const RsGxsGrpMsgIdPair& msgId, bool up_or_down);
void expand(RsGxsMessageId,bool); void expand(RsGxsMessageId,bool);
void commentsRequested(const RsGxsMessageId&,bool); void commentsRequested(const RsGxsMessageId&,bool);

View File

@ -181,6 +181,7 @@ QWidget *PostedPostDelegate::createEditor(QWidget *parent, const QStyleOptionVie
QObject::connect(w,SIGNAL(vote(RsGxsGrpMsgIdPair,bool)),mPostListWidget,SLOT(voteMsg(RsGxsGrpMsgIdPair,bool))); QObject::connect(w,SIGNAL(vote(RsGxsGrpMsgIdPair,bool)),mPostListWidget,SLOT(voteMsg(RsGxsGrpMsgIdPair,bool)));
QObject::connect(w,SIGNAL(expand(RsGxsMessageId,bool)),this,SLOT(expandItem(RsGxsMessageId,bool))); QObject::connect(w,SIGNAL(expand(RsGxsMessageId,bool)),this,SLOT(expandItem(RsGxsMessageId,bool)));
QObject::connect(w,SIGNAL(commentsRequested(const RsGxsMessageId&,bool)),mPostListWidget,SLOT(openComments(const RsGxsMessageId&))); QObject::connect(w,SIGNAL(commentsRequested(const RsGxsMessageId&,bool)),mPostListWidget,SLOT(openComments(const RsGxsMessageId&)));
QObject::connect(w,SIGNAL(changeReadStatusRequested(const RsGxsMessageId&,bool)),mPostListWidget,SLOT(changeReadStatus(const RsGxsMessageId&,bool)));
w->setFixedSize(option.rect.size()); w->setFixedSize(option.rect.size());
w->adjustSize(); w->adjustSize();
@ -666,6 +667,11 @@ void PostedListWidgetWithModel::openComments(const RsGxsMessageId& msgId)
ui->tabWidget->addTab(commentDialog,title); ui->tabWidget->addTab(commentDialog,title);
} }
void PostedListWidgetWithModel::changeReadStatus(const RsGxsMessageId& msgId,bool b)
{
QModelIndex index=mPostedPostsModel->getIndexOfMessage(msgId);
mPostedPostsModel->setMsgReadStatus(index, b);
}
void PostedListWidgetWithModel::tabCloseRequested(int index) void PostedListWidgetWithModel::tabCloseRequested(int index)
{ {
std::cerr << "GxsCommentContainer::tabCloseRequested(" << index << ")"; std::cerr << "GxsCommentContainer::tabCloseRequested(" << index << ")";

View File

@ -109,6 +109,7 @@ public:
#endif #endif
public slots: public slots:
virtual void openComments(const RsGxsMessageId &msgId); virtual void openComments(const RsGxsMessageId &msgId);
virtual void changeReadStatus(const RsGxsMessageId& msgId,bool b);
protected: protected:
/* GxsMessageFramePostWidget */ /* GxsMessageFramePostWidget */

View File

@ -715,7 +715,7 @@ void RsPostedPostsModel::createPostsArray(std::vector<RsPostedPost>& posts)
} }
} }
void RsPostedPostsModel::setMsgReadStatus(const QModelIndex& i,bool read_status,bool with_children) void RsPostedPostsModel::setMsgReadStatus(const QModelIndex& i,bool read_status)
{ {
if(!i.isValid()) if(!i.isValid())
return ; return ;
@ -728,10 +728,16 @@ void RsPostedPostsModel::setMsgReadStatus(const QModelIndex& i,bool read_status,
if(!convertRefPointerToTabEntry(ref,entry) || entry >= mFilteredPosts.size()) if(!convertRefPointerToTabEntry(ref,entry) || entry >= mFilteredPosts.size())
return ; return ;
#warning TODO RsGxsGroupId grpId = mPosts[entry].mMeta.mGroupId;
// bool has_unread_below, has_read_below; RsGxsMessageId msgId = mPosts[entry].mMeta.mMsgId;
// recursSetMsgReadStatus(entry,read_status,with_children) ;
// recursUpdateReadStatusAndTimes(0,has_unread_below,has_read_below); RsThread::async([msgId,grpId,read_status]()
{
// Call blocking API
rsPosted->setPostReadStatus(RsGxsGrpMsgIdPair(grpId,msgId),read_status);
} );
} }
QModelIndex RsPostedPostsModel::getIndexOfMessage(const RsGxsMessageId& mid) const QModelIndex RsPostedPostsModel::getIndexOfMessage(const RsGxsMessageId& mid) const

View File

@ -154,7 +154,7 @@ public:
void setTextColorMissing (QColor color) { mTextColorMissing = color;} void setTextColorMissing (QColor color) { mTextColorMissing = color;}
#endif #endif
void setMsgReadStatus(const QModelIndex &i, bool read_status, bool with_children); void setMsgReadStatus(const QModelIndex &i, bool read_status);
void setFilter(const QStringList &strings, uint32_t &count) ; void setFilter(const QStringList &strings, uint32_t &count) ;
void setSortingStrategy(SortingStrategy s); void setSortingStrategy(SortingStrategy s);
void setPostsInterval(int start,int nb_posts); void setPostsInterval(int start,int nb_posts);