mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
fixed compilation in new ForumModel
This commit is contained in:
parent
d3565c2ee4
commit
e01de33e1a
@ -3,6 +3,7 @@
|
|||||||
#include <QModelIndex>
|
#include <QModelIndex>
|
||||||
|
|
||||||
#include "util/qtthreadsutils.h"
|
#include "util/qtthreadsutils.h"
|
||||||
|
#include "util/DateTime.h"
|
||||||
#include "GxsForumModel.h"
|
#include "GxsForumModel.h"
|
||||||
#include "retroshare/rsgxsforums.h"
|
#include "retroshare/rsgxsforums.h"
|
||||||
|
|
||||||
@ -30,6 +31,10 @@ RsGxsForumModel::RsGxsForumModel(QObject *parent)
|
|||||||
{
|
{
|
||||||
mPosts.resize(1); // adds a sentinel item
|
mPosts.resize(1); // adds a sentinel item
|
||||||
|
|
||||||
|
mFilterColumn=0;
|
||||||
|
mUseChildTS=false;
|
||||||
|
mFlatView=false;
|
||||||
|
|
||||||
// // adds some fake posts to debug
|
// // adds some fake posts to debug
|
||||||
//
|
//
|
||||||
// int N=5 ;
|
// int N=5 ;
|
||||||
@ -303,7 +308,6 @@ QVariant RsGxsForumModel::data(const QModelIndex &index, int role) const
|
|||||||
{
|
{
|
||||||
case Qt::DisplayRole: return displayRole (fmpe,index.column()) ;
|
case Qt::DisplayRole: return displayRole (fmpe,index.column()) ;
|
||||||
case Qt::DecorationRole: return decorationRole(fmpe,index.column()) ;
|
case Qt::DecorationRole: return decorationRole(fmpe,index.column()) ;
|
||||||
case Qt::UserRole: return userRole (fmpe,index.column()) ;
|
|
||||||
case Qt::ToolTipRole: return toolTipRole (fmpe,index.column()) ;
|
case Qt::ToolTipRole: return toolTipRole (fmpe,index.column()) ;
|
||||||
|
|
||||||
case ThreadPinnedRole: return pinnedRole (fmpe,index.column()) ;
|
case ThreadPinnedRole: return pinnedRole (fmpe,index.column()) ;
|
||||||
@ -377,7 +381,7 @@ QVariant RsGxsForumModel::sizeHintRole(int col) const
|
|||||||
QVariant RsGxsForumModel::authorRole(const ForumModelPostEntry& fmpe,int column) const
|
QVariant RsGxsForumModel::authorRole(const ForumModelPostEntry& fmpe,int column) const
|
||||||
{
|
{
|
||||||
if(column == COLUMN_THREAD_DATA)
|
if(column == COLUMN_THREAD_DATA)
|
||||||
return QVariant(QString::fromStdString(msg.mMeta.mAuthorId.toStdString()));
|
return QVariant(QString::fromStdString(fmpe.mAuthorId.toStdString()));
|
||||||
|
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
@ -387,6 +391,7 @@ QVariant RsGxsForumModel::sortRole(const ForumModelPostEntry& fmpe,int column) c
|
|||||||
if(column == COLUMN_THREAD_DATA)
|
if(column == COLUMN_THREAD_DATA)
|
||||||
return QVariant(QString::number(fmpe.mPublishTs)); // we should probably have leading zeroes here
|
return QVariant(QString::number(fmpe.mPublishTs)); // we should probably have leading zeroes here
|
||||||
|
|
||||||
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant RsGxsForumModel::displayRole(const ForumModelPostEntry& fmpe,int col) const
|
QVariant RsGxsForumModel::displayRole(const ForumModelPostEntry& fmpe,int col) const
|
||||||
@ -405,7 +410,7 @@ QVariant RsGxsForumModel::displayRole(const ForumModelPostEntry& fmpe,int col) c
|
|||||||
QDateTime qtime;
|
QDateTime qtime;
|
||||||
qtime.setTime_t(fmpe.mPublishTs);
|
qtime.setTime_t(fmpe.mPublishTs);
|
||||||
|
|
||||||
return QVariant(QDateTime::formatDateTime(qtime));
|
return QVariant(DateTime::formatDateTime(qtime));
|
||||||
}
|
}
|
||||||
|
|
||||||
case COLUMN_THREAD_AUTHOR: return QVariant(QString::fromStdString(fmpe.mAuthorId.toStdString()));
|
case COLUMN_THREAD_AUTHOR: return QVariant(QString::fromStdString(fmpe.mAuthorId.toStdString()));
|
||||||
@ -434,15 +439,22 @@ QVariant RsGxsForumModel::decorationRole(const ForumModelPostEntry& fmpe,int col
|
|||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RsGxsForumModel::setForum(const RsGxsGroupId& forumGroup)
|
void RsGxsForumModel::setForum(const RsGxsGroupId& forum_group_id)
|
||||||
{
|
{
|
||||||
if(mForumGroupId == forumGroup)
|
if(mForumGroup.mMeta.mGroupId == forum_group_id)
|
||||||
return ;
|
return ;
|
||||||
|
|
||||||
mPosts.clear();
|
// we do not set mForumGroupId yet. We'll do it when the forum data is updated.
|
||||||
mForumGroupId = forumGroup;
|
|
||||||
|
|
||||||
update_posts();
|
update_posts(forum_group_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RsGxsForumModel::setPosts(const RsGxsForumGroup& group, const std::vector<ForumModelPostEntry>& posts)
|
||||||
|
{
|
||||||
|
mForumGroup = group;
|
||||||
|
mPosts = posts;
|
||||||
|
|
||||||
|
emit layoutChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RsGxsForumModel::update_posts(const RsGxsGroupId& group_id)
|
void RsGxsForumModel::update_posts(const RsGxsGroupId& group_id)
|
||||||
@ -472,12 +484,13 @@ void RsGxsForumModel::update_posts(const RsGxsGroupId& group_id)
|
|||||||
// 2 - sort the messages into a proper hierarchy
|
// 2 - sort the messages into a proper hierarchy
|
||||||
|
|
||||||
std::vector<ForumModelPostEntry> *vect = new std::vector<ForumModelPostEntry>();
|
std::vector<ForumModelPostEntry> *vect = new std::vector<ForumModelPostEntry>();
|
||||||
|
RsGxsForumGroup group = groups[0];
|
||||||
|
|
||||||
computeMessagesHierarchy(groups[0],messages,*vect);
|
computeMessagesHierarchy(group,messages,*vect);
|
||||||
|
|
||||||
// 3 - update the model in the UI thread.
|
// 3 - update the model in the UI thread.
|
||||||
|
|
||||||
RsQThreadUtils::postToObject( [vect,this]()
|
RsQThreadUtils::postToObject( [group,vect,this]()
|
||||||
{
|
{
|
||||||
/* Here it goes any code you want to be executed on the Qt Gui
|
/* Here it goes any code you want to be executed on the Qt Gui
|
||||||
* thread, for example to update the data model with new information
|
* thread, for example to update the data model with new information
|
||||||
@ -485,7 +498,7 @@ void RsGxsForumModel::update_posts(const RsGxsGroupId& group_id)
|
|||||||
* Qt::QueuedConnection is important!
|
* Qt::QueuedConnection is important!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
setPosts(*vect) ;
|
setPosts(group,*vect) ;
|
||||||
delete vect;
|
delete vect;
|
||||||
|
|
||||||
|
|
||||||
@ -577,7 +590,9 @@ void RsGxsForumModel::convertMsgToPostEntry(const RsGxsForumGroup& mForumGroup,c
|
|||||||
|
|
||||||
static bool decreasing_time_comp(const QPair<time_t,RsGxsMessageId>& e1,const QPair<time_t,RsGxsMessageId>& e2) { return e2.first < e1.first ; }
|
static bool decreasing_time_comp(const QPair<time_t,RsGxsMessageId>& e1,const QPair<time_t,RsGxsMessageId>& e2) { return e2.first < e1.first ; }
|
||||||
|
|
||||||
void RsGxsForumModel::computeMessagesHierarchy(const RsGxsForumGroup& forum_group,const std::vector<RsGxsForumMsg>& msgs_array,std::vector<ForumModelPostEntry>& posts)
|
void RsGxsForumModel::computeMessagesHierarchy(const RsGxsForumGroup& forum_group,
|
||||||
|
const std::vector<RsGxsForumMsg>& msgs_array,
|
||||||
|
std::vector<ForumModelPostEntry>& posts)
|
||||||
{
|
{
|
||||||
std::cerr << "updating messages data with " << msgs_array.size() << " messages" << std::endl;
|
std::cerr << "updating messages data with " << msgs_array.size() << " messages" << std::endl;
|
||||||
|
|
||||||
@ -757,7 +772,7 @@ void RsGxsForumModel::computeMessagesHierarchy(const RsGxsForumGroup& forum_grou
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
ForumModelPostEntry entry;
|
ForumModelPostEntry entry;
|
||||||
convertMsgToThreadWidget(msg, mUseChildTS, mFilterColumn,NULL,entry);
|
convertMsgToPostEntry(forum_group,msg, mUseChildTS, mFilterColumn,entry);
|
||||||
|
|
||||||
ForumModelIndex entry_index = addEntry(posts,entry,0);
|
ForumModelIndex entry_index = addEntry(posts,entry,0);
|
||||||
|
|
||||||
@ -803,7 +818,7 @@ void RsGxsForumModel::computeMessagesHierarchy(const RsGxsForumGroup& forum_grou
|
|||||||
{
|
{
|
||||||
// add dummy parent item
|
// add dummy parent item
|
||||||
ForumModelPostEntry e ;
|
ForumModelPostEntry e ;
|
||||||
generateMissingItem(RsGxsMessageId,e);
|
generateMissingItem(*it,e);
|
||||||
|
|
||||||
ForumModelIndex e_index = addEntry(posts,e,0); // no parent -> parent is level 0
|
ForumModelIndex e_index = addEntry(posts,e,0); // no parent -> parent is level 0
|
||||||
//mItems.append( e_index );
|
//mItems.append( e_index );
|
||||||
|
@ -27,7 +27,7 @@ typedef uint32_t ForumModelIndex;
|
|||||||
|
|
||||||
struct ForumModelPostEntry
|
struct ForumModelPostEntry
|
||||||
{
|
{
|
||||||
typedef enum { // flags for display of posts
|
enum { // flags for display of posts
|
||||||
FLAG_POST_IS_PINNED = 0x0001,
|
FLAG_POST_IS_PINNED = 0x0001,
|
||||||
FLAG_POST_IS_MISSING = 0x0002,
|
FLAG_POST_IS_MISSING = 0x0002,
|
||||||
FLAG_POST_IS_REDACTED = 0x0004,
|
FLAG_POST_IS_REDACTED = 0x0004,
|
||||||
@ -78,7 +78,6 @@ public:
|
|||||||
|
|
||||||
QVariant sizeHintRole (int col) const;
|
QVariant sizeHintRole (int col) const;
|
||||||
QVariant displayRole (const ForumModelPostEntry& fmpe, int col) const;
|
QVariant displayRole (const ForumModelPostEntry& fmpe, int col) const;
|
||||||
QVariant userRole (const ForumModelPostEntry& fmpe, int col) const;
|
|
||||||
QVariant decorationRole(const ForumModelPostEntry& fmpe, int col) const;
|
QVariant decorationRole(const ForumModelPostEntry& fmpe, int col) const;
|
||||||
QVariant toolTipRole (const ForumModelPostEntry& fmpe, int col) const;
|
QVariant toolTipRole (const ForumModelPostEntry& fmpe, int col) const;
|
||||||
QVariant pinnedRole (const ForumModelPostEntry& fmpe, int col) const;
|
QVariant pinnedRole (const ForumModelPostEntry& fmpe, int col) const;
|
||||||
@ -88,6 +87,12 @@ public:
|
|||||||
QVariant sortRole (const ForumModelPostEntry& fmpe, int col) const;
|
QVariant sortRole (const ForumModelPostEntry& fmpe, int col) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
RsGxsForumGroup mForumGroup;
|
||||||
|
|
||||||
|
bool mUseChildTS;
|
||||||
|
bool mFlatView;
|
||||||
|
int mFilterColumn;
|
||||||
|
|
||||||
void *getParentRef(void *ref,int& row) const;
|
void *getParentRef(void *ref,int& row) const;
|
||||||
void *getChildRef(void *ref,int row) const;
|
void *getChildRef(void *ref,int row) const;
|
||||||
//bool hasIndex(int row,int column,const QModelIndex& parent)const;
|
//bool hasIndex(int row,int column,const QModelIndex& parent)const;
|
||||||
@ -99,12 +104,12 @@ private:
|
|||||||
void update_posts(const RsGxsGroupId &group_id);
|
void update_posts(const RsGxsGroupId &group_id);
|
||||||
void setForumMessageSummary(const std::vector<RsGxsForumMsg>& messages);
|
void setForumMessageSummary(const std::vector<RsGxsForumMsg>& messages);
|
||||||
|
|
||||||
static void computeMessagesHierarchy(const RsGxsForumGroup& forum_group,const std::vector<RsGxsForumMsg>& msgs_array,std::vector<ForumModelPostEntry>& posts);
|
|
||||||
static void generateMissingItem(const RsGxsMessageId &msgId,ForumModelPostEntry& entry);
|
static void generateMissingItem(const RsGxsMessageId &msgId,ForumModelPostEntry& entry);
|
||||||
static ForumModelIndex addEntry(std::vector<ForumModelPostEntry>& posts,const ForumModelPostEntry& entry,ForumModelIndex parent);
|
static ForumModelIndex addEntry(std::vector<ForumModelPostEntry>& posts,const ForumModelPostEntry& entry,ForumModelIndex parent);
|
||||||
static void convertMsgToPostEntry(const RsGxsForumGroup &mForumGroup, const RsGxsForumMsg& msg, bool useChildTS, uint32_t filterColumn, ForumModelPostEntry& fentry);
|
static void convertMsgToPostEntry(const RsGxsForumGroup &mForumGroup, const RsGxsForumMsg& msg, bool useChildTS, uint32_t filterColumn, ForumModelPostEntry& fentry);
|
||||||
|
|
||||||
void setPosts(const std::vector<ForumModelPostEntry>& posts);
|
void computeMessagesHierarchy(const RsGxsForumGroup& forum_group,const std::vector<RsGxsForumMsg>& msgs_array,std::vector<ForumModelPostEntry>& posts);
|
||||||
|
void setPosts(const RsGxsForumGroup &group, const std::vector<ForumModelPostEntry>& posts); // this method *must* be called from UI thread.
|
||||||
|
|
||||||
std::vector<ForumModelPostEntry> mPosts ; // store the list of posts updated from rsForums.
|
std::vector<ForumModelPostEntry> mPosts ; // store the list of posts updated from rsForums.
|
||||||
};
|
};
|
||||||
|
@ -2942,3 +2942,8 @@ void GxsForumThreadWidget::loadRequest(const TokenQueue *queue, const TokenReque
|
|||||||
|
|
||||||
GxsMessageFrameWidget::loadRequest(queue, req);
|
GxsMessageFrameWidget::loadRequest(queue, req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QTreeWidgetItem *GxsForumThreadWidget::generateMissingItem(const RsGxsMessageId& mid)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
@ -554,4 +554,3 @@ void GxsForumsFillThread::run()
|
|||||||
deleteLater();
|
deleteLater();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user