Moved TokenQueue, TokenResponse, UIStateHelper and mGroupId from the classes GxsMessageFramePostWidget/GxsForumThreadWidget to the base class GxsMessageFrameWidget.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8014 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2015-03-13 19:33:37 +00:00
parent cdf9a5b4d4
commit b46c3b4852
7 changed files with 190 additions and 176 deletions

View File

@ -85,7 +85,7 @@ protected:
virtual void showEvent(QShowEvent *event); virtual void showEvent(QShowEvent *event);
virtual void updateDisplay(bool complete); virtual void updateDisplay(bool complete);
RsGxsGroupId groupId() { return mGroupId; } const RsGxsGroupId &groupId() { return mGroupId; }
void setSingleTab(bool singleTab); void setSingleTab(bool singleTab);
void setHideTabBarWithOneTab(bool hideTabBarWithOneTab); void setHideTabBarWithOneTab(bool hideTabBarWithOneTab);
bool getCurrentGroupName(QString& name); bool getCurrentGroupName(QString& name);

View File

@ -32,18 +32,12 @@
GxsMessageFramePostWidget::GxsMessageFramePostWidget(RsGxsIfaceHelper *ifaceImpl, QWidget *parent) GxsMessageFramePostWidget::GxsMessageFramePostWidget(RsGxsIfaceHelper *ifaceImpl, QWidget *parent)
: GxsMessageFrameWidget(ifaceImpl, parent) : GxsMessageFrameWidget(ifaceImpl, parent)
{ {
mTokenQueue = new TokenQueue(ifaceImpl->getTokenService(), this);
mSubscribeFlags = 0; mSubscribeFlags = 0;
mNextTokenType = 0;
mFillThread = NULL; mFillThread = NULL;
mTokenTypeGroupData = nextTokenType(); mTokenTypeGroupData = nextTokenType();
mTokenTypePosts = nextTokenType(); mTokenTypePosts = nextTokenType();
mTokenTypeRelatedPosts = nextTokenType(); mTokenTypeRelatedPosts = nextTokenType();
/* Setup UI helper */
mStateHelper = new UIStateHelper(this);
} }
GxsMessageFramePostWidget::~GxsMessageFramePostWidget() GxsMessageFramePostWidget::~GxsMessageFramePostWidget()
@ -53,19 +47,11 @@ GxsMessageFramePostWidget::~GxsMessageFramePostWidget()
delete(mFillThread); delete(mFillThread);
mFillThread = NULL; mFillThread = NULL;
} }
delete(mTokenQueue);
} }
void GxsMessageFramePostWidget::setGroupId(const RsGxsGroupId &groupId) void GxsMessageFramePostWidget::groupIdChanged()
{ {
if (mGroupId == groupId) { mGroupName = groupId().isNull () ? "" : tr("Loading");
if (!groupId.isNull()) {
return;
}
}
mGroupId = groupId;
mGroupName = mGroupId.isNull () ? "" : tr("Loading");
groupNameChanged(mGroupName); groupNameChanged(mGroupName);
emit groupChanged(this); emit groupChanged(this);
@ -73,14 +59,9 @@ void GxsMessageFramePostWidget::setGroupId(const RsGxsGroupId &groupId)
fillComplete(); fillComplete();
} }
RsGxsGroupId GxsMessageFramePostWidget::groupId()
{
return mGroupId;
}
QString GxsMessageFramePostWidget::groupName(bool withUnreadCount) QString GxsMessageFramePostWidget::groupName(bool withUnreadCount)
{ {
QString name = mGroupId.isNull () ? tr("No name") : mGroupName; QString name = groupId().isNull () ? tr("No name") : mGroupName;
// if (withUnreadCount && mUnreadCount) { // if (withUnreadCount && mUnreadCount) {
// name += QString(" (%1)").arg(mUnreadCount); // name += QString(" (%1)").arg(mUnreadCount);
@ -114,18 +95,18 @@ void GxsMessageFramePostWidget::updateDisplay(bool complete)
return; return;
} }
if (mGroupId.isNull()) { if (groupId().isNull()) {
return; return;
} }
bool updateGroup = false; bool updateGroup = false;
const std::list<RsGxsGroupId> &grpIdsMeta = getGrpIdsMeta(); const std::list<RsGxsGroupId> &grpIdsMeta = getGrpIdsMeta();
if (std::find(grpIdsMeta.begin(), grpIdsMeta.end(), mGroupId) != grpIdsMeta.end()) { if (std::find(grpIdsMeta.begin(), grpIdsMeta.end(), groupId()) != grpIdsMeta.end()) {
updateGroup = true; updateGroup = true;
} }
const std::list<RsGxsGroupId> &grpIds = getGrpIds(); const std::list<RsGxsGroupId> &grpIds = getGrpIds();
if (!mGroupId.isNull() && std::find(grpIds.begin(), grpIds.end(), mGroupId) != grpIds.end()) { if (!groupId().isNull() && std::find(grpIds.begin(), grpIds.end(), groupId()) != grpIds.end()) {
updateGroup = true; updateGroup = true;
/* Do we need to fill all posts? */ /* Do we need to fill all posts? */
requestPosts(); requestPosts();
@ -133,7 +114,7 @@ void GxsMessageFramePostWidget::updateDisplay(bool complete)
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > msgs; std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > msgs;
getAllMsgIds(msgs); getAllMsgIds(msgs);
if (!msgs.empty()) { if (!msgs.empty()) {
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> >::const_iterator mit = msgs.find(mGroupId); std::map<RsGxsGroupId, std::vector<RsGxsMessageId> >::const_iterator mit = msgs.find(groupId());
if (mit != msgs.end()) { if (mit != msgs.end()) {
requestRelatedPosts(mit->second); requestRelatedPosts(mit->second);
} }
@ -210,7 +191,7 @@ void GxsMessageFramePostWidget::requestGroupData()
mTokenQueue->cancelActiveRequestTokens(mTokenTypeGroupData); mTokenQueue->cancelActiveRequestTokens(mTokenTypeGroupData);
if (mGroupId.isNull()) { if (groupId().isNull()) {
mStateHelper->setActive(mTokenTypeGroupData, false); mStateHelper->setActive(mTokenTypeGroupData, false);
mStateHelper->setLoading(mTokenTypeGroupData, false); mStateHelper->setLoading(mTokenTypeGroupData, false);
mStateHelper->clear(mTokenTypeGroupData); mStateHelper->clear(mTokenTypeGroupData);
@ -227,7 +208,7 @@ void GxsMessageFramePostWidget::requestGroupData()
emit groupChanged(this); emit groupChanged(this);
std::list<RsGxsGroupId> groupIds; std::list<RsGxsGroupId> groupIds;
groupIds.push_back(mGroupId); groupIds.push_back(groupId());
RsTokReqOptions opts; RsTokReqOptions opts;
opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA; opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA;
@ -292,7 +273,7 @@ void GxsMessageFramePostWidget::requestPosts()
clearPosts(); clearPosts();
if (mGroupId.isNull()) { if (groupId().isNull()) {
mStateHelper->setActive(mTokenTypePosts, false); mStateHelper->setActive(mTokenTypePosts, false);
mStateHelper->setLoading(mTokenTypePosts, false); mStateHelper->setLoading(mTokenTypePosts, false);
mStateHelper->clear(mTokenTypePosts); mStateHelper->clear(mTokenTypePosts);
@ -304,7 +285,7 @@ void GxsMessageFramePostWidget::requestPosts()
emit groupChanged(this); emit groupChanged(this);
std::list<RsGxsGroupId> groupIds; std::list<RsGxsGroupId> groupIds;
groupIds.push_back(mGroupId); groupIds.push_back(groupId());
RsTokReqOptions opts; RsTokReqOptions opts;
opts.mReqType = GXS_REQUEST_TYPE_MSG_DATA; opts.mReqType = GXS_REQUEST_TYPE_MSG_DATA;
@ -362,7 +343,7 @@ void GxsMessageFramePostWidget::requestRelatedPosts(const std::vector<RsGxsMessa
mTokenQueue->cancelActiveRequestTokens(mTokenTypeRelatedPosts); mTokenQueue->cancelActiveRequestTokens(mTokenTypeRelatedPosts);
if (mGroupId.isNull()) { if (groupId().isNull()) {
mStateHelper->setActive(mTokenTypeRelatedPosts, false); mStateHelper->setActive(mTokenTypeRelatedPosts, false);
mStateHelper->setLoading(mTokenTypeRelatedPosts, false); mStateHelper->setLoading(mTokenTypeRelatedPosts, false);
mStateHelper->clear(mTokenTypeRelatedPosts); mStateHelper->clear(mTokenTypeRelatedPosts);
@ -384,7 +365,7 @@ void GxsMessageFramePostWidget::requestRelatedPosts(const std::vector<RsGxsMessa
uint32_t token; uint32_t token;
std::vector<RsGxsGrpMsgIdPair> relatedMsgIds; std::vector<RsGxsGrpMsgIdPair> relatedMsgIds;
for (std::vector<RsGxsMessageId>::const_iterator msgIt = msgIds.begin(); msgIt != msgIds.end(); ++msgIt) { for (std::vector<RsGxsMessageId>::const_iterator msgIt = msgIds.begin(); msgIt != msgIds.end(); ++msgIt) {
relatedMsgIds.push_back(RsGxsGrpMsgIdPair(mGroupId, *msgIt)); relatedMsgIds.push_back(RsGxsGrpMsgIdPair(groupId(), *msgIt));
} }
mTokenQueue->requestMsgRelatedInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, relatedMsgIds, mTokenTypeRelatedPosts); mTokenQueue->requestMsgRelatedInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, relatedMsgIds, mTokenTypeRelatedPosts);
} }
@ -421,15 +402,21 @@ void GxsMessageFramePostWidget::loadRequest(const TokenQueue *queue, const Token
{ {
if (req.mUserType == mTokenTypeGroupData) { if (req.mUserType == mTokenTypeGroupData) {
loadGroupData(req.mToken); loadGroupData(req.mToken);
} else if (req.mUserType == mTokenTypePosts) { return;
}
if (req.mUserType == mTokenTypePosts) {
loadPosts(req.mToken); loadPosts(req.mToken);
} else if (req.mUserType == mTokenTypeRelatedPosts) { return;
}
if (req.mUserType == mTokenTypeRelatedPosts) {
loadRelatedPosts(req.mToken); loadRelatedPosts(req.mToken);
} else { return;
std::cerr << "GxsMessageFramePostWidget::loadRequest() ERROR: INVALID TYPE";
std::cerr << std::endl;
} }
} }
GxsMessageFrameWidget::loadRequest(queue, req);
} }
/**************************************************************/ /**************************************************************/

View File

@ -25,12 +25,10 @@
#include <QThread> #include <QThread>
#include "GxsMessageFrameWidget.h" #include "GxsMessageFrameWidget.h"
#include "util/TokenQueue.h"
class UIStateHelper;
class GxsMessageFramePostThread; class GxsMessageFramePostThread;
class GxsMessageFramePostWidget : public GxsMessageFrameWidget, public TokenResponse class GxsMessageFramePostWidget : public GxsMessageFrameWidget
{ {
Q_OBJECT Q_OBJECT
@ -41,14 +39,12 @@ public:
virtual ~GxsMessageFramePostWidget(); virtual ~GxsMessageFramePostWidget();
/* GxsMessageFrameWidget */ /* GxsMessageFrameWidget */
virtual RsGxsGroupId groupId(); virtual void groupIdChanged();
virtual void setGroupId(const RsGxsGroupId &groupId);
virtual QString groupName(bool withUnreadCount); virtual QString groupName(bool withUnreadCount);
// virtual QIcon groupIcon() = 0; // virtual QIcon groupIcon() = 0;
virtual bool navigate(const RsGxsMessageId& msgId); virtual bool navigate(const RsGxsMessageId& msgId);
/* GXS functions */ /* GXS functions */
uint32_t nextTokenType() { return ++mNextTokenType; }
virtual void loadRequest(const TokenQueue *queue, const TokenRequest &req); virtual void loadRequest(const TokenQueue *queue, const TokenRequest &req);
int subscribeFlags() { return mSubscribeFlags; } int subscribeFlags() { return mSubscribeFlags; }
@ -82,18 +78,14 @@ private slots:
void fillThreadAddPost(const QVariant &post, bool related, int current, int count); void fillThreadAddPost(const QVariant &post, bool related, int current, int count);
protected: protected:
TokenQueue *mTokenQueue;
uint32_t mTokenTypeGroupData; uint32_t mTokenTypeGroupData;
uint32_t mTokenTypePosts; uint32_t mTokenTypePosts;
uint32_t mTokenTypeRelatedPosts; uint32_t mTokenTypeRelatedPosts;
UIStateHelper *mStateHelper;
RsGxsMessageId mNavigatePendingMsgId; RsGxsMessageId mNavigatePendingMsgId;
private: private:
RsGxsGroupId mGroupId; /* current group */
QString mGroupName; QString mGroupName;
int mSubscribeFlags; int mSubscribeFlags;
uint32_t mNextTokenType;
GxsMessageFramePostThread *mFillThread; GxsMessageFramePostThread *mFillThread;
}; };

View File

@ -20,8 +20,44 @@
****************************************************************/ ****************************************************************/
#include "GxsMessageFrameWidget.h" #include "GxsMessageFrameWidget.h"
#include "gui/common/UIStateHelper.h"
#include <retroshare/rsgxsifacehelper.h>
GxsMessageFrameWidget::GxsMessageFrameWidget(RsGxsIfaceHelper *ifaceImpl, QWidget *parent) GxsMessageFrameWidget::GxsMessageFrameWidget(RsGxsIfaceHelper *ifaceImpl, QWidget *parent)
: RsGxsUpdateBroadcastWidget(ifaceImpl, parent) : RsGxsUpdateBroadcastWidget(ifaceImpl, parent)
{ {
mNextTokenType = 0;
mTokenQueue = new TokenQueue(ifaceImpl->getTokenService(), this);
mStateHelper = new UIStateHelper(this);
}
GxsMessageFrameWidget::~GxsMessageFrameWidget()
{
delete(mTokenQueue);
}
const RsGxsGroupId &GxsMessageFrameWidget::groupId()
{
return mGroupId;
}
void GxsMessageFrameWidget::setGroupId(const RsGxsGroupId &groupId)
{
if (mGroupId == groupId) {
if (!groupId.isNull()) {
return;
}
}
mGroupId = groupId;
groupIdChanged();
}
void GxsMessageFrameWidget::loadRequest(const TokenQueue */*queue*/, const TokenRequest &/*req*/)
{
std::cerr << "GxsMessageFrameWidget::loadRequest() ERROR: INVALID TYPE";
std::cerr << std::endl;
} }

View File

@ -23,26 +23,43 @@
#define GXSMESSAGEFRAMEWIDGET_H #define GXSMESSAGEFRAMEWIDGET_H
#include "gui/gxs/RsGxsUpdateBroadcastWidget.h" #include "gui/gxs/RsGxsUpdateBroadcastWidget.h"
#include "util/TokenQueue.h"
class RsGxsIfaceHelper; class RsGxsIfaceHelper;
class UIStateHelper;
class GxsMessageFrameWidget : public RsGxsUpdateBroadcastWidget class GxsMessageFrameWidget : public RsGxsUpdateBroadcastWidget, public TokenResponse
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit GxsMessageFrameWidget(RsGxsIfaceHelper *ifaceImpl, QWidget *parent = NULL); explicit GxsMessageFrameWidget(RsGxsIfaceHelper *ifaceImpl, QWidget *parent = NULL);
virtual ~GxsMessageFrameWidget();
virtual RsGxsGroupId groupId() = 0; const RsGxsGroupId &groupId();
virtual void setGroupId(const RsGxsGroupId &groupId) = 0; void setGroupId(const RsGxsGroupId &groupId);
virtual void groupIdChanged() = 0;
virtual QString groupName(bool withUnreadCount) = 0; virtual QString groupName(bool withUnreadCount) = 0;
virtual QIcon groupIcon() = 0; virtual QIcon groupIcon() = 0;
virtual void setAllMessagesRead(bool read) = 0; virtual void setAllMessagesRead(bool read) = 0;
virtual bool navigate(const RsGxsMessageId& msgId) = 0; virtual bool navigate(const RsGxsMessageId& msgId) = 0;
/* GXS functions */
uint32_t nextTokenType() { return ++mNextTokenType; }
virtual void loadRequest(const TokenQueue *queue, const TokenRequest &req);
signals: signals:
void groupChanged(QWidget *widget); void groupChanged(QWidget *widget);
void loadComment(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId, const QString &title); void loadComment(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId, const QString &title);
protected:
TokenQueue *mTokenQueue;
UIStateHelper *mStateHelper;
private:
RsGxsGroupId mGroupId; /* current group */
uint32_t mNextTokenType;
}; };
#endif // GXSMESSAGEFRAMEWIDGET_H #endif // GXSMESSAGEFRAMEWIDGET_H

View File

@ -83,51 +83,47 @@
#define ROLE_THREAD_COUNT 4 #define ROLE_THREAD_COUNT 4
#define TOKEN_TYPE_GROUPDATA 1
#define TOKEN_TYPE_INSERT_THREADS 2
#define TOKEN_TYPE_MESSAGEDATA 3
#define TOKEN_TYPE_REPLY_MESSAGE 4
GxsForumThreadWidget::GxsForumThreadWidget(const RsGxsGroupId &forumId, QWidget *parent) : GxsForumThreadWidget::GxsForumThreadWidget(const RsGxsGroupId &forumId, QWidget *parent) :
GxsMessageFrameWidget(rsGxsForums, parent), GxsMessageFrameWidget(rsGxsForums, parent),
ui(new Ui::GxsForumThreadWidget) ui(new Ui::GxsForumThreadWidget)
{ {
ui->setupUi(this); ui->setupUi(this);
mTokenTypeGroupData = nextTokenType();
mTokenTypeInsertThreads = nextTokenType();
mTokenTypeMessageData = nextTokenType();
mTokenTypeReplyMessage = nextTokenType();
setUpdateWhenInvisible(true); setUpdateWhenInvisible(true);
/* Setup UI helper */ /* Setup UI helper */
mStateHelper = new UIStateHelper(this); mStateHelper->addWidget(mTokenTypeGroupData, ui->subscribeToolButton);
mStateHelper->addWidget(mTokenTypeGroupData, ui->newthreadButton);
mStateHelper->addWidget(TOKEN_TYPE_GROUPDATA, ui->subscribeToolButton); mStateHelper->addClear(mTokenTypeGroupData, ui->forumName);
mStateHelper->addWidget(TOKEN_TYPE_GROUPDATA, ui->newthreadButton);
mStateHelper->addClear(TOKEN_TYPE_GROUPDATA, ui->forumName); mStateHelper->addWidget(mTokenTypeInsertThreads, ui->progressBar, UISTATE_LOADING_VISIBLE);
mStateHelper->addWidget(mTokenTypeInsertThreads, ui->progressText, UISTATE_LOADING_VISIBLE);
mStateHelper->addWidget(mTokenTypeInsertThreads, ui->threadTreeWidget, UISTATE_ACTIVE_ENABLED);
mStateHelper->addLoadPlaceholder(mTokenTypeInsertThreads, ui->progressText);
mStateHelper->addWidget(mTokenTypeInsertThreads, ui->nextUnreadButton);
mStateHelper->addWidget(mTokenTypeInsertThreads, ui->previousButton);
mStateHelper->addWidget(mTokenTypeInsertThreads, ui->nextButton);
mStateHelper->addWidget(TOKEN_TYPE_INSERT_THREADS, ui->progressBar, UISTATE_LOADING_VISIBLE); mStateHelper->addClear(mTokenTypeInsertThreads, ui->threadTreeWidget);
mStateHelper->addWidget(TOKEN_TYPE_INSERT_THREADS, ui->progressText, UISTATE_LOADING_VISIBLE);
mStateHelper->addWidget(TOKEN_TYPE_INSERT_THREADS, ui->threadTreeWidget, UISTATE_ACTIVE_ENABLED);
mStateHelper->addLoadPlaceholder(TOKEN_TYPE_INSERT_THREADS, ui->progressText);
mStateHelper->addWidget(TOKEN_TYPE_INSERT_THREADS, ui->nextUnreadButton);
mStateHelper->addWidget(TOKEN_TYPE_INSERT_THREADS, ui->previousButton);
mStateHelper->addWidget(TOKEN_TYPE_INSERT_THREADS, ui->nextButton);
mStateHelper->addClear(TOKEN_TYPE_INSERT_THREADS, ui->threadTreeWidget); mStateHelper->addWidget(mTokenTypeMessageData, ui->newmessageButton);
// mStateHelper->addWidget(mTokenTypeMessageData, ui->postText);
mStateHelper->addWidget(mTokenTypeMessageData, ui->downloadButton);
mStateHelper->addWidget(TOKEN_TYPE_MESSAGEDATA, ui->newmessageButton); mStateHelper->addLoadPlaceholder(mTokenTypeMessageData, ui->postText);
// mStateHelper->addWidget(TOKEN_TYPE_MESSAGEDATA, ui->postText); mStateHelper->addLoadPlaceholder(mTokenTypeMessageData, ui->threadTitle);
mStateHelper->addWidget(TOKEN_TYPE_MESSAGEDATA, ui->downloadButton);
mStateHelper->addLoadPlaceholder(TOKEN_TYPE_MESSAGEDATA, ui->postText);
mStateHelper->addLoadPlaceholder(TOKEN_TYPE_MESSAGEDATA, ui->threadTitle);
mSubscribeFlags = 0; mSubscribeFlags = 0;
mInProcessSettings = false; mInProcessSettings = false;
mUnreadCount = 0; mUnreadCount = 0;
mNewCount = 0; mNewCount = 0;
mTokenQueue = new TokenQueue(rsGxsForums->getTokenService(), this);
mInMsgAsReadUnread = false; mInMsgAsReadUnread = false;
mThreadCompareRole = new RSTreeWidgetItemCompareRole; mThreadCompareRole = new RSTreeWidgetItemCompareRole;
@ -211,7 +207,6 @@ GxsForumThreadWidget::~GxsForumThreadWidget()
delete ui; delete ui;
delete(mTokenQueue);
delete(mThreadCompareRole); delete(mThreadCompareRole);
} }
@ -256,16 +251,9 @@ void GxsForumThreadWidget::processSettings(bool load)
mInProcessSettings = false; mInProcessSettings = false;
} }
void GxsForumThreadWidget::setGroupId(const RsGxsGroupId &forumId) void GxsForumThreadWidget::groupIdChanged()
{ {
if (mForumId == forumId) { ui->forumName->setText(groupId().isNull () ? "" : tr("Loading"));
if (!forumId.isNull()) {
return;
}
}
mForumId = forumId;
ui->forumName->setText(mForumId.isNull () ? "" : tr("Loading"));
mNewCount = 0; mNewCount = 0;
mUnreadCount = 0; mUnreadCount = 0;
@ -276,7 +264,7 @@ void GxsForumThreadWidget::setGroupId(const RsGxsGroupId &forumId)
QString GxsForumThreadWidget::groupName(bool withUnreadCount) QString GxsForumThreadWidget::groupName(bool withUnreadCount)
{ {
QString name = mForumId.isNull () ? tr("No name") : ui->forumName->text(); QString name = groupId().isNull () ? tr("No name") : ui->forumName->text();
if (withUnreadCount && mUnreadCount) { if (withUnreadCount && mUnreadCount) {
name += QString(" (%1)").arg(mUnreadCount); name += QString(" (%1)").arg(mUnreadCount);
@ -287,7 +275,7 @@ QString GxsForumThreadWidget::groupName(bool withUnreadCount)
QIcon GxsForumThreadWidget::groupIcon() QIcon GxsForumThreadWidget::groupIcon()
{ {
if (mStateHelper->isLoading(TOKEN_TYPE_GROUPDATA) || mFillThread) { if (mStateHelper->isLoading(mTokenTypeGroupData) || mFillThread) {
return QIcon(":/images/kalarm.png"); return QIcon(":/images/kalarm.png");
} }
@ -349,12 +337,12 @@ void GxsForumThreadWidget::updateDisplay(bool complete)
bool updateGroup = false; bool updateGroup = false;
const std::list<RsGxsGroupId> &grpIdsMeta = getGrpIdsMeta(); const std::list<RsGxsGroupId> &grpIdsMeta = getGrpIdsMeta();
if (std::find(grpIdsMeta.begin(), grpIdsMeta.end(), mForumId) != grpIdsMeta.end()) { if (std::find(grpIdsMeta.begin(), grpIdsMeta.end(), groupId()) != grpIdsMeta.end()) {
updateGroup = true; updateGroup = true;
} }
const std::list<RsGxsGroupId> &grpIds = getGrpIds(); const std::list<RsGxsGroupId> &grpIds = getGrpIds();
if (std::find(grpIds.begin(), grpIds.end(), mForumId) != grpIds.end()) { if (std::find(grpIds.begin(), grpIds.end(), groupId()) != grpIds.end()) {
updateGroup = true; updateGroup = true;
/* Update threads */ /* Update threads */
insertThreads(); insertThreads();
@ -368,7 +356,7 @@ void GxsForumThreadWidget::updateDisplay(bool complete)
mIgnoredMsgId.clear(); mIgnoredMsgId.clear();
} }
if (msgIds.find(mForumId) != msgIds.end()) { if (msgIds.find(groupId()) != msgIds.end()) {
/* Update threads */ /* Update threads */
insertThreads(); insertThreads();
} }
@ -462,7 +450,7 @@ void GxsForumThreadWidget::threadListCustomPopupMenu(QPoint /*point*/)
contextMnu.addAction(replyauthorAct); contextMnu.addAction(replyauthorAct);
contextMnu.addAction(newthreadAct); contextMnu.addAction(newthreadAct);
QAction* action = contextMnu.addAction(QIcon(IMAGE_COPYLINK), tr("Copy RetroShare Link"), this, SLOT(copyMessageLink())); QAction* action = contextMnu.addAction(QIcon(IMAGE_COPYLINK), tr("Copy RetroShare Link"), this, SLOT(copyMessageLink()));
action->setEnabled(!mForumId.isNull() && !mThreadId.isNull()); action->setEnabled(!groupId().isNull() && !mThreadId.isNull());
contextMnu.addSeparator(); contextMnu.addSeparator();
contextMnu.addAction(markMsgAsRead); contextMnu.addAction(markMsgAsRead);
contextMnu.addAction(markMsgAsReadChildren); contextMnu.addAction(markMsgAsReadChildren);
@ -541,7 +529,7 @@ void GxsForumThreadWidget::clickedThread(QTreeWidgetItem *item, int column)
return; return;
} }
if (mForumId.isNull() || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) { if (groupId().isNull() || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
return; return;
} }
@ -701,7 +689,7 @@ void GxsForumThreadWidget::insertGroupData(const RsGxsForumGroup &group)
ui->subscribeToolButton->setSubscribed(IS_GROUP_SUBSCRIBED(mSubscribeFlags)); ui->subscribeToolButton->setSubscribed(IS_GROUP_SUBSCRIBED(mSubscribeFlags));
mStateHelper->setWidgetEnabled(ui->newthreadButton, (IS_GROUP_SUBSCRIBED(mSubscribeFlags))); mStateHelper->setWidgetEnabled(ui->newthreadButton, (IS_GROUP_SUBSCRIBED(mSubscribeFlags)));
if (mThreadId.isNull() && !mStateHelper->isLoading(TOKEN_TYPE_MESSAGEDATA)) if (mThreadId.isNull() && !mStateHelper->isLoading(mTokenTypeMessageData))
{ {
ui->threadTitle->setText(tr("Forum Description")); ui->threadTitle->setText(tr("Forum Description"));
ui->postText->setText(mForumDescription); ui->postText->setText(mForumDescription);
@ -723,7 +711,7 @@ void GxsForumThreadWidget::fillThreadFinished()
// current thread has finished, hide progressbar and release thread // current thread has finished, hide progressbar and release thread
mFillThread = NULL; mFillThread = NULL;
mStateHelper->setLoading(TOKEN_TYPE_INSERT_THREADS, false); mStateHelper->setLoading(mTokenTypeInsertThreads, false);
emit groupChanged(this); emit groupChanged(this);
} }
@ -737,14 +725,14 @@ void GxsForumThreadWidget::fillThreadFinished()
std::cerr << "GxsForumThreadWidget::fillThreadFinished Add messages" << std::endl; std::cerr << "GxsForumThreadWidget::fillThreadFinished Add messages" << std::endl;
#endif #endif
mStateHelper->setActive(TOKEN_TYPE_INSERT_THREADS, true); mStateHelper->setActive(mTokenTypeInsertThreads, true);
ui->threadTreeWidget->setSortingEnabled(false); ui->threadTreeWidget->setSortingEnabled(false);
/* add all messages in! */ /* add all messages in! */
if (mLastViewType != thread->mViewType || mLastForumID != mForumId) { if (mLastViewType != thread->mViewType || mLastForumID != groupId()) {
ui->threadTreeWidget->clear(); ui->threadTreeWidget->clear();
mLastViewType = thread->mViewType; mLastViewType = thread->mViewType;
mLastForumID = mForumId; mLastForumID = groupId();
ui->threadTreeWidget->insertTopLevelItems(0, thread->mItems); ui->threadTreeWidget->insertTopLevelItems(0, thread->mItems);
// clear list // clear list
@ -933,17 +921,16 @@ void GxsForumThreadWidget::insertThreads()
thread->stop(); thread->stop();
delete(thread); delete(thread);
mStateHelper->setLoading(TOKEN_TYPE_INSERT_THREADS, false); mStateHelper->setLoading(mTokenTypeInsertThreads, false);
} }
if (mForumId.isNull()) if (groupId().isNull())
{ {
/* not an actual forum - clear */ /* not an actual forum - clear */
mStateHelper->setActive(TOKEN_TYPE_INSERT_THREADS, false); mStateHelper->setActive(mTokenTypeInsertThreads, false);
mStateHelper->clear(TOKEN_TYPE_INSERT_THREADS); mStateHelper->clear(mTokenTypeInsertThreads);
/* clear last stored forumID */ /* clear last stored forumID */
mForumId.clear();
mLastForumID.clear(); mLastForumID.clear();
#ifdef DEBUG_FORUMS #ifdef DEBUG_FORUMS
@ -957,18 +944,18 @@ void GxsForumThreadWidget::insertThreads()
std::cerr << "GxsForumThreadWidget::insertThreads() Start filling Forum threads" << std::endl; std::cerr << "GxsForumThreadWidget::insertThreads() Start filling Forum threads" << std::endl;
#endif #endif
mStateHelper->setLoading(TOKEN_TYPE_INSERT_THREADS, true); mStateHelper->setLoading(mTokenTypeInsertThreads, true);
// create fill thread // create fill thread
mFillThread = new GxsForumsFillThread(this); mFillThread = new GxsForumsFillThread(this);
// set data // set data
mFillThread->mCompareRole = mThreadCompareRole; mFillThread->mCompareRole = mThreadCompareRole;
mFillThread->mForumId = mForumId; mFillThread->mForumId = groupId();
mFillThread->mFilterColumn = ui->filterLineEdit->currentFilter(); mFillThread->mFilterColumn = ui->filterLineEdit->currentFilter();
mFillThread->mExpandNewMessages = Settings->getForumExpandNewMessages(); mFillThread->mExpandNewMessages = Settings->getForumExpandNewMessages();
mFillThread->mViewType = ui->viewBox->currentIndex(); mFillThread->mViewType = ui->viewBox->currentIndex();
if (mLastViewType != mFillThread->mViewType || mLastForumID != mForumId) { if (mLastViewType != mFillThread->mViewType || mLastForumID != groupId()) {
mFillThread->mFillComplete = true; mFillThread->mFillComplete = true;
} }
@ -1177,10 +1164,10 @@ void GxsForumThreadWidget::fillChildren(QTreeWidgetItem *parentItem, QTreeWidget
void GxsForumThreadWidget::insertMessage() void GxsForumThreadWidget::insertMessage()
{ {
if (mForumId.isNull()) if (groupId().isNull())
{ {
mStateHelper->setActive(TOKEN_TYPE_MESSAGEDATA, false); mStateHelper->setActive(mTokenTypeMessageData, false);
mStateHelper->clear(TOKEN_TYPE_MESSAGEDATA); mStateHelper->clear(mTokenTypeMessageData);
ui->postText->clear(); ui->postText->clear();
ui->threadTitle->clear(); ui->threadTitle->clear();
@ -1189,15 +1176,15 @@ void GxsForumThreadWidget::insertMessage()
if (mThreadId.isNull()) if (mThreadId.isNull())
{ {
mStateHelper->setActive(TOKEN_TYPE_MESSAGEDATA, false); mStateHelper->setActive(mTokenTypeMessageData, false);
mStateHelper->clear(TOKEN_TYPE_MESSAGEDATA); mStateHelper->clear(mTokenTypeMessageData);
ui->threadTitle->setText(tr("Forum Description")); ui->threadTitle->setText(tr("Forum Description"));
ui->postText->setText(mForumDescription); ui->postText->setText(mForumDescription);
return; return;
} }
mStateHelper->setActive(TOKEN_TYPE_MESSAGEDATA, true); mStateHelper->setActive(mTokenTypeMessageData, true);
QTreeWidgetItem *item = ui->threadTreeWidget->currentItem(); QTreeWidgetItem *item = ui->threadTreeWidget->currentItem();
if (item) { if (item) {
@ -1219,7 +1206,7 @@ void GxsForumThreadWidget::insertMessage()
ui->postText->clear(); ui->postText->clear();
/* request Post */ /* request Post */
RsGxsGrpMsgIdPair msgId = std::make_pair(mForumId, mThreadId); RsGxsGrpMsgIdPair msgId = std::make_pair(groupId(), mThreadId);
requestMessageData(msgId); requestMessageData(msgId);
} }
@ -1229,23 +1216,23 @@ void GxsForumThreadWidget::insertMessageData(const RsGxsForumMsg &msg)
* otherwise, another request will fill the data * otherwise, another request will fill the data
*/ */
if ((msg.mMeta.mGroupId != mForumId) || (msg.mMeta.mMsgId != mThreadId)) if ((msg.mMeta.mGroupId != groupId()) || (msg.mMeta.mMsgId != mThreadId))
{ {
std::cerr << "GxsForumThreadWidget::insertPostData() Ignoring Invalid Data...."; std::cerr << "GxsForumThreadWidget::insertPostData() Ignoring Invalid Data....";
std::cerr << std::endl; std::cerr << std::endl;
std::cerr << "\t CurrForumId: " << mForumId << " != msg.GroupId: " << msg.mMeta.mGroupId; std::cerr << "\t CurrForumId: " << groupId() << " != msg.GroupId: " << msg.mMeta.mGroupId;
std::cerr << std::endl; std::cerr << std::endl;
std::cerr << "\t or CurrThdId: " << mThreadId << " != msg.MsgId: " << msg.mMeta.mMsgId; std::cerr << "\t or CurrThdId: " << mThreadId << " != msg.MsgId: " << msg.mMeta.mMsgId;
std::cerr << std::endl; std::cerr << std::endl;
std::cerr << std::endl; std::cerr << std::endl;
mStateHelper->setActive(TOKEN_TYPE_MESSAGEDATA, false); mStateHelper->setActive(mTokenTypeMessageData, false);
mStateHelper->clear(TOKEN_TYPE_MESSAGEDATA); mStateHelper->clear(mTokenTypeMessageData);
return; return;
} }
mStateHelper->setActive(TOKEN_TYPE_MESSAGEDATA, true); mStateHelper->setActive(mTokenTypeMessageData, true);
QTreeWidgetItem *item = ui->threadTreeWidget->currentItem(); QTreeWidgetItem *item = ui->threadTreeWidget->currentItem();
@ -1423,7 +1410,7 @@ void GxsForumThreadWidget::setMsgReadStatus(QList<QTreeWidgetItem*> &rows, bool
// LIKE THIS BELOW... // LIKE THIS BELOW...
//std::string grpId = (*Row)->data(COLUMN_THREAD_DATA, ROLE_THREAD_GROUPID).toString().toStdString(); //std::string grpId = (*Row)->data(COLUMN_THREAD_DATA, ROLE_THREAD_GROUPID).toString().toStdString();
RsGxsGrpMsgIdPair msgPair = std::make_pair(mForumId, msgId); RsGxsGrpMsgIdPair msgPair = std::make_pair(groupId(), msgId);
uint32_t token; uint32_t token;
rsGxsForums->setMessageReadStatus(token, msgPair, read); rsGxsForums->setMessageReadStatus(token, msgPair, read);
@ -1455,7 +1442,7 @@ void GxsForumThreadWidget::setMsgReadStatus(QList<QTreeWidgetItem*> &rows, bool
void GxsForumThreadWidget::markMsgAsReadUnread (bool read, bool children, bool forum) void GxsForumThreadWidget::markMsgAsReadUnread (bool read, bool children, bool forum)
{ {
if (mForumId.isNull() || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) { if (groupId().isNull() || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
return; return;
} }
@ -1530,7 +1517,7 @@ void GxsForumThreadWidget::setAllMessagesRead(bool read)
bool GxsForumThreadWidget::navigate(const RsGxsMessageId &msgId) bool GxsForumThreadWidget::navigate(const RsGxsMessageId &msgId)
{ {
if (mStateHelper->isLoading(TOKEN_TYPE_INSERT_THREADS)) { if (mStateHelper->isLoading(mTokenTypeInsertThreads)) {
mNavigatePendingMsgId = msgId; mNavigatePendingMsgId = msgId;
/* No information if message is available */ /* No information if message is available */
@ -1557,12 +1544,12 @@ bool GxsForumThreadWidget::navigate(const RsGxsMessageId &msgId)
void GxsForumThreadWidget::copyMessageLink() void GxsForumThreadWidget::copyMessageLink()
{ {
if (mForumId.isNull() || mThreadId.isNull()) { if (groupId().isNull() || mThreadId.isNull()) {
return; return;
} }
RetroShareLink link; RetroShareLink link;
if (link.createGxsMessageLink(RetroShareLink::TYPE_FORUM, mForumId, mThreadId, ui->threadTitle->text())) { if (link.createGxsMessageLink(RetroShareLink::TYPE_FORUM, groupId(), mThreadId, ui->threadTitle->text())) {
QList<RetroShareLink> urls; QList<RetroShareLink> urls;
urls.push_back(link); urls.push_back(link);
RSLinkClipboard::copyLinks(urls); RSLinkClipboard::copyLinks(urls);
@ -1571,22 +1558,22 @@ void GxsForumThreadWidget::copyMessageLink()
void GxsForumThreadWidget::subscribeGroup(bool subscribe) void GxsForumThreadWidget::subscribeGroup(bool subscribe)
{ {
if (mForumId.isNull()) { if (groupId().isNull()) {
return; return;
} }
uint32_t token; uint32_t token;
rsGxsForums->subscribeToGroup(token, mForumId, subscribe); rsGxsForums->subscribeToGroup(token, groupId(), subscribe);
// mTokenQueue->queueRequest(token, 0, RS_TOKREQ_ANSTYPE_ACK, TOKEN_TYPE_SUBSCRIBE_CHANGE); // mTokenQueue->queueRequest(token, 0, RS_TOKREQ_ANSTYPE_ACK, TOKEN_TYPE_SUBSCRIBE_CHANGE);
} }
void GxsForumThreadWidget::createmessage() void GxsForumThreadWidget::createmessage()
{ {
if (mForumId.isNull () || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) { if (groupId().isNull () || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
return; return;
} }
CreateGxsForumMsg *cfm = new CreateGxsForumMsg(mForumId, mThreadId); CreateGxsForumMsg *cfm = new CreateGxsForumMsg(groupId(), mThreadId);
cfm->show(); cfm->show();
/* window will destroy itself! */ /* window will destroy itself! */
@ -1594,12 +1581,12 @@ void GxsForumThreadWidget::createmessage()
void GxsForumThreadWidget::createthread() void GxsForumThreadWidget::createthread()
{ {
if (mForumId.isNull ()) { if (groupId().isNull ()) {
QMessageBox::information(this, tr("RetroShare"), tr("No Forum Selected!")); QMessageBox::information(this, tr("RetroShare"), tr("No Forum Selected!"));
return; return;
} }
CreateGxsForumMsg *cfm = new CreateGxsForumMsg(mForumId, RsGxsMessageId()); CreateGxsForumMsg *cfm = new CreateGxsForumMsg(groupId(), RsGxsMessageId());
cfm->show(); cfm->show();
/* window will destroy itself! */ /* window will destroy itself! */
@ -1625,19 +1612,19 @@ static QString buildReplyHeader(const RsMsgMetaData &meta)
void GxsForumThreadWidget::replytomessage() void GxsForumThreadWidget::replytomessage()
{ {
if (mForumId.isNull() || mThreadId.isNull()) { if (groupId().isNull() || mThreadId.isNull()) {
QMessageBox::information(this, tr("RetroShare"),tr("You cant reply to a non-existant Message")); QMessageBox::information(this, tr("RetroShare"),tr("You cant reply to a non-existant Message"));
return; return;
} }
// Get Message ... then complete replyMessageData(). // Get Message ... then complete replyMessageData().
RsGxsGrpMsgIdPair postId = std::make_pair(mForumId, mThreadId); RsGxsGrpMsgIdPair postId = std::make_pair(groupId(), mThreadId);
requestMsgData_ReplyMessage(postId); requestMsgData_ReplyMessage(postId);
} }
void GxsForumThreadWidget::replyMessageData(const RsGxsForumMsg &msg) void GxsForumThreadWidget::replyMessageData(const RsGxsForumMsg &msg)
{ {
if ((msg.mMeta.mGroupId != mForumId) || (msg.mMeta.mMsgId != mThreadId)) if ((msg.mMeta.mGroupId != groupId()) || (msg.mMeta.mMsgId != mThreadId))
{ {
std::cerr << "GxsForumThreadWidget::replyMessageData() ERROR Message Ids have changed!"; std::cerr << "GxsForumThreadWidget::replyMessageData() ERROR Message Ids have changed!";
std::cerr << std::endl; std::cerr << std::endl;
@ -1740,34 +1727,34 @@ void GxsForumThreadWidget::requestGroupData()
mSubscribeFlags = 0; mSubscribeFlags = 0;
mForumDescription.clear(); mForumDescription.clear();
mTokenQueue->cancelActiveRequestTokens(TOKEN_TYPE_GROUPDATA); mTokenQueue->cancelActiveRequestTokens(mTokenTypeGroupData);
if (mForumId.isNull()) { if (groupId().isNull()) {
mStateHelper->setActive(TOKEN_TYPE_GROUPDATA, false); mStateHelper->setActive(mTokenTypeGroupData, false);
mStateHelper->setLoading(TOKEN_TYPE_GROUPDATA, false); mStateHelper->setLoading(mTokenTypeGroupData, false);
mStateHelper->clear(TOKEN_TYPE_GROUPDATA); mStateHelper->clear(mTokenTypeGroupData);
emit groupChanged(this); emit groupChanged(this);
return; return;
} }
mStateHelper->setLoading(TOKEN_TYPE_GROUPDATA, true); mStateHelper->setLoading(mTokenTypeGroupData, true);
emit groupChanged(this); emit groupChanged(this);
RsTokReqOptions opts; RsTokReqOptions opts;
opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA; opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA;
std::list<RsGxsGroupId> grpIds; std::list<RsGxsGroupId> grpIds;
grpIds.push_back(mForumId); grpIds.push_back(groupId());
#ifdef DEBUG_FORUMS #ifdef DEBUG_FORUMS
std::cerr << "GxsForumThreadWidget::requestGroupData(" << mForumId << ")"; std::cerr << "GxsForumThreadWidget::requestGroupData(" << groupId() << ")";
std::cerr << std::endl; std::cerr << std::endl;
#endif #endif
uint32_t token; uint32_t token;
mTokenQueue->requestGroupInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, grpIds, TOKEN_TYPE_GROUPDATA); mTokenQueue->requestGroupInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, grpIds, mTokenTypeGroupData);
} }
void GxsForumThreadWidget::loadGroupData(const uint32_t &token) void GxsForumThreadWidget::loadGroupData(const uint32_t &token)
@ -1780,21 +1767,21 @@ void GxsForumThreadWidget::loadGroupData(const uint32_t &token)
std::vector<RsGxsForumGroup> groups; std::vector<RsGxsForumGroup> groups;
rsGxsForums->getGroupData(token, groups); rsGxsForums->getGroupData(token, groups);
mStateHelper->setLoading(TOKEN_TYPE_GROUPDATA, false); mStateHelper->setLoading(mTokenTypeGroupData, false);
if (groups.size() == 1) if (groups.size() == 1)
{ {
insertGroupData(groups[0]); insertGroupData(groups[0]);
mStateHelper->setActive(TOKEN_TYPE_GROUPDATA, true); mStateHelper->setActive(mTokenTypeGroupData, true);
} }
else else
{ {
std::cerr << "GxsForumThreadWidget::loadGroupSummary_CurrentForum() ERROR Invalid Number of Groups..."; std::cerr << "GxsForumThreadWidget::loadGroupSummary_CurrentForum() ERROR Invalid Number of Groups...";
std::cerr << std::endl; std::cerr << std::endl;
mStateHelper->setActive(TOKEN_TYPE_GROUPDATA, false); mStateHelper->setActive(mTokenTypeGroupData, false);
mStateHelper->clear(TOKEN_TYPE_GROUPDATA); mStateHelper->clear(mTokenTypeGroupData);
} }
emit groupChanged(this); emit groupChanged(this);
@ -1805,9 +1792,9 @@ void GxsForumThreadWidget::loadGroupData(const uint32_t &token)
void GxsForumThreadWidget::requestMessageData(const RsGxsGrpMsgIdPair &msgId) void GxsForumThreadWidget::requestMessageData(const RsGxsGrpMsgIdPair &msgId)
{ {
mStateHelper->setLoading(TOKEN_TYPE_MESSAGEDATA, true); mStateHelper->setLoading(mTokenTypeMessageData, true);
mTokenQueue->cancelActiveRequestTokens(TOKEN_TYPE_MESSAGEDATA); mTokenQueue->cancelActiveRequestTokens(mTokenTypeMessageData);
RsTokReqOptions opts; RsTokReqOptions opts;
opts.mReqType = GXS_REQUEST_TYPE_MSG_DATA; opts.mReqType = GXS_REQUEST_TYPE_MSG_DATA;
@ -1822,12 +1809,12 @@ void GxsForumThreadWidget::requestMessageData(const RsGxsGrpMsgIdPair &msgId)
vect.push_back(msgId.second); vect.push_back(msgId.second);
uint32_t token; uint32_t token;
mTokenQueue->requestMsgInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, msgIds, TOKEN_TYPE_MESSAGEDATA); mTokenQueue->requestMsgInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, msgIds, mTokenTypeMessageData);
} }
void GxsForumThreadWidget::loadMessageData(const uint32_t &token) void GxsForumThreadWidget::loadMessageData(const uint32_t &token)
{ {
mStateHelper->setLoading(TOKEN_TYPE_MESSAGEDATA, false); mStateHelper->setLoading(mTokenTypeMessageData, false);
#ifdef DEBUG_FORUMS #ifdef DEBUG_FORUMS
std::cerr << "GxsForumThreadWidget::loadMessage()"; std::cerr << "GxsForumThreadWidget::loadMessage()";
@ -1840,8 +1827,8 @@ void GxsForumThreadWidget::loadMessageData(const uint32_t &token)
std::cerr << "GxsForumThreadWidget::loadMessage() ERROR Wrong number of answers"; std::cerr << "GxsForumThreadWidget::loadMessage() ERROR Wrong number of answers";
std::cerr << std::endl; std::cerr << std::endl;
mStateHelper->setActive(TOKEN_TYPE_MESSAGEDATA, false); mStateHelper->setActive(mTokenTypeMessageData, false);
mStateHelper->clear(TOKEN_TYPE_MESSAGEDATA); mStateHelper->clear(mTokenTypeMessageData);
return; return;
} }
insertMessageData(msgs[0]); insertMessageData(msgs[0]);
@ -1849,8 +1836,8 @@ void GxsForumThreadWidget::loadMessageData(const uint32_t &token)
std::cerr << "GxsForumThreadWidget::loadMessage() ERROR Missing Message Data..."; std::cerr << "GxsForumThreadWidget::loadMessage() ERROR Missing Message Data...";
std::cerr << std::endl; std::cerr << std::endl;
mStateHelper->setActive(TOKEN_TYPE_MESSAGEDATA, false); mStateHelper->setActive(mTokenTypeMessageData, false);
mStateHelper->clear(TOKEN_TYPE_MESSAGEDATA); mStateHelper->clear(mTokenTypeMessageData);
} }
} }
@ -1870,7 +1857,7 @@ void GxsForumThreadWidget::requestMsgData_ReplyMessage(const RsGxsGrpMsgIdPair &
vect.push_back(msgId.second); vect.push_back(msgId.second);
uint32_t token; uint32_t token;
mTokenQueue->requestMsgInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, msgIds, TOKEN_TYPE_REPLY_MESSAGE); mTokenQueue->requestMsgInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, msgIds, mTokenTypeReplyMessage);
} }
void GxsForumThreadWidget::loadMsgData_ReplyMessage(const uint32_t &token) void GxsForumThreadWidget::loadMsgData_ReplyMessage(const uint32_t &token)
@ -1908,24 +1895,21 @@ void GxsForumThreadWidget::loadRequest(const TokenQueue *queue, const TokenReque
if (queue == mTokenQueue) if (queue == mTokenQueue)
{ {
/* now switch on req */ /* now switch on req */
switch(req.mUserType) if (req.mUserType == mTokenTypeGroupData) {
{
case TOKEN_TYPE_GROUPDATA:
loadGroupData(req.mToken); loadGroupData(req.mToken);
break; return;
}
case TOKEN_TYPE_MESSAGEDATA: if (req.mUserType == mTokenTypeMessageData) {
loadMessageData(req.mToken); loadMessageData(req.mToken);
break; return;
}
case TOKEN_TYPE_REPLY_MESSAGE: if (req.mUserType == mTokenTypeReplyMessage) {
loadMsgData_ReplyMessage(req.mToken); loadMsgData_ReplyMessage(req.mToken);
break; return;
default:
std::cerr << "GxsForumThreadWidget::loadRequest() ERROR: INVALID TYPE";
std::cerr << std::endl;
break;
} }
} }
GxsMessageFrameWidget::loadRequest(queue, req);
} }

View File

@ -2,20 +2,18 @@
#define GXSFORUMTHREADWIDGET_H #define GXSFORUMTHREADWIDGET_H
#include "gui/gxs/GxsMessageFrameWidget.h" #include "gui/gxs/GxsMessageFrameWidget.h"
#include "util/TokenQueue.h"
class QTreeWidgetItem; class QTreeWidgetItem;
class RSTreeWidgetItemCompareRole; class RSTreeWidgetItemCompareRole;
class RsGxsForumMsg; class RsGxsForumMsg;
class GxsForumsFillThread; class GxsForumsFillThread;
class UIStateHelper;
class RsGxsForumGroup; class RsGxsForumGroup;
namespace Ui { namespace Ui {
class GxsForumThreadWidget; class GxsForumThreadWidget;
} }
class GxsForumThreadWidget : public GxsMessageFrameWidget, public TokenResponse class GxsForumThreadWidget : public GxsMessageFrameWidget
{ {
Q_OBJECT Q_OBJECT
@ -42,8 +40,7 @@ public:
void setTextColorMissing(QColor color) { mTextColorMissing = color; } void setTextColorMissing(QColor color) { mTextColorMissing = color; }
/* GxsMessageFrameWidget */ /* GxsMessageFrameWidget */
virtual RsGxsGroupId groupId() { return mForumId; } virtual void groupIdChanged();
virtual void setGroupId(const RsGxsGroupId &forumId);
virtual QString groupName(bool withUnreadCount); virtual QString groupName(bool withUnreadCount);
virtual QIcon groupIcon(); virtual QIcon groupIcon();
virtual void setAllMessagesRead(bool read); virtual void setAllMessagesRead(bool read);
@ -137,7 +134,6 @@ private:
void loadMsgData_ReplyMessage(const uint32_t &token); void loadMsgData_ReplyMessage(const uint32_t &token);
private: private:
RsGxsGroupId mForumId;
RsGxsGroupId mLastForumID; RsGxsGroupId mLastForumID;
RsGxsMessageId mThreadId; RsGxsMessageId mThreadId;
QString mForumDescription; QString mForumDescription;
@ -146,11 +142,15 @@ private:
bool mInMsgAsReadUnread; bool mInMsgAsReadUnread;
int mLastViewType; int mLastViewType;
RSTreeWidgetItemCompareRole *mThreadCompareRole; RSTreeWidgetItemCompareRole *mThreadCompareRole;
TokenQueue *mTokenQueue;
GxsForumsFillThread *mFillThread; GxsForumsFillThread *mFillThread;
unsigned int mUnreadCount; unsigned int mUnreadCount;
unsigned int mNewCount; unsigned int mNewCount;
uint32_t mTokenTypeGroupData;
uint32_t mTokenTypeInsertThreads;
uint32_t mTokenTypeMessageData;
uint32_t mTokenTypeReplyMessage;
/* Color definitions (for standard see qss.default) */ /* Color definitions (for standard see qss.default) */
QColor mTextColorRead; QColor mTextColorRead;
QColor mTextColorUnread; QColor mTextColorUnread;
@ -158,8 +158,6 @@ private:
QColor mTextColorNotSubscribed; QColor mTextColorNotSubscribed;
QColor mTextColorMissing; QColor mTextColorMissing;
UIStateHelper *mStateHelper;
RsGxsMessageId mNavigatePendingMsgId; RsGxsMessageId mNavigatePendingMsgId;
QList<RsGxsMessageId> mIgnoredMsgId; QList<RsGxsMessageId> mIgnoredMsgId;