messages and group refactor done and tested!

author and circles left


git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-IdCleaning@7156 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
chrisparker126 2014-03-01 15:30:34 +00:00
parent 350ee35ac9
commit 5c36c8f4b6
26 changed files with 201 additions and 183 deletions

View file

@ -283,9 +283,7 @@ RsGxsGrpMetaData* RsDataService::locked_getGrpMeta(RetroCursor &c)
c.getString(COL_ORIG_GRP_ID, tempId);
grpMeta->mOrigGrpId = tempId;
c.getString(COL_GRP_SERV_STRING, grpMeta->mServiceString);
c.getString(COL_HASH, tempId);
grpMeta->mHash = tempId ;
c.getString(COL_HASH, grpMeta->mHash);
grpMeta->mSignFlags = c.getInt32(COL_GRP_SIGN_FLAGS);
grpMeta->mPublishTs = c.getInt32(COL_TIME_STAMP);
@ -393,22 +391,21 @@ RsGxsMsgMetaData* RsDataService::locked_getMsgMeta(RetroCursor &c)
char* data = NULL;
std::string gId,tempId;
std::string gId;
c.getString(COL_GRP_ID, gId);
msgMeta->mGroupId = RsGxsGroupId(gId);
c.getString(COL_MSG_ID, tempId) ;
msgMeta->mMsgId = tempId ;
std::string temp;
c.getString(COL_MSG_ID, temp);
msgMeta->mMsgId = temp;
// without these, a msg is meaningless
ok &= (!msgMeta->mGroupId.isNull()) && (!msgMeta->mMsgId.isNull());
c.getString(COL_ORIG_MSG_ID, tempId) ;
msgMeta->mOrigMsgId = tempId ;
c.getString(COL_ORIG_MSG_ID, temp);
msgMeta->mOrigMsgId = temp;
c.getString(COL_IDENTITY, msgMeta->mAuthorId);
c.getString(COL_MSG_NAME, msgMeta->mMsgName);
c.getString(COL_MSG_SERV_STRING, msgMeta->mServiceString);
c.getString(COL_HASH, tempId) ;
msgMeta->mHash = tempId;
c.getString(COL_HASH, msgMeta->mHash);
msgMeta->recvTS = c.getInt32(COL_MSG_RECV_TS);
offset = 0;
@ -422,8 +419,10 @@ RsGxsMsgMetaData* RsDataService::locked_getMsgMeta(RetroCursor &c)
offset = 0; data_len = 0;
// thread and parent id
c.getString(COL_THREAD_ID, tempId) ; msgMeta->mThreadId = tempId ;
c.getString(COL_PARENT_ID, tempId) ; msgMeta->mParentId = tempId ;
c.getString(COL_THREAD_ID, temp);
msgMeta->mThreadId = temp;
c.getString(COL_PARENT_ID, temp);
msgMeta->mParentId = temp;
// local meta
msgMeta->mMsgStatus = c.getInt32(COL_MSG_STATUS);
@ -445,12 +444,13 @@ RsNxsMsg* RsDataService::locked_getMessage(RetroCursor &c)
RsNxsMsg* msg = new RsNxsMsg(mServType);
bool ok = true;
std::string tempId ;
uint32_t data_len = 0,
offset = 0;
char* data = NULL;
c.getStringT<RsGxsGroupId>(COL_ACT_GROUP_ID, msg->grpId);
c.getString(COL_ACT_MSG_ID, tempId) ; msg->msgId = tempId ;
std::string temp;
c.getString(COL_ACT_MSG_ID, temp);
msg->msgId = temp;
ok &= (!msg->grpId.isNull()) && (!msg->msgId.isNull());
@ -522,7 +522,7 @@ int RsDataService::storeMessage(std::map<RsNxsMsg *, RsGxsMsgMetaData *> &msg)
cv.put(KEY_MSG_ID, msgMetaPtr->mMsgId.toStdString());
cv.put(KEY_GRP_ID, msgMetaPtr->mGroupId.toStdString());
cv.put(KEY_NXS_SERV_STRING, msgMetaPtr->mServiceString);
cv.put(KEY_NXS_HASH, msgMetaPtr->mHash.toStdString());
cv.put(KEY_NXS_HASH, msgMetaPtr->mHash);
cv.put(KEY_RECV_TS, (int32_t)msgMetaPtr->recvTS);
@ -631,7 +631,7 @@ int RsDataService::storeGroup(std::map<RsNxsGrp *, RsGxsGrpMetaData *> &grp)
cv.put(KEY_GRP_ORIGINATOR, grpMetaPtr->mOriginator.toStdString());
cv.put(KEY_GRP_AUTHEN_FLAGS, (int32_t)grpMetaPtr->mAuthenFlags);
cv.put(KEY_PARENT_GRP_ID, grpMetaPtr->mParentGrpId.toStdString());
cv.put(KEY_NXS_HASH, grpMetaPtr->mHash.toStdString());
cv.put(KEY_NXS_HASH, grpMetaPtr->mHash);
cv.put(KEY_RECV_TS, (int32_t)grpMetaPtr->mRecvTS);
if(! (grpMetaPtr->mAuthorId.empty()) ){
@ -723,7 +723,7 @@ int RsDataService::updateGroup(std::map<RsNxsGrp *, RsGxsGrpMetaData *> &grp)
cv.put(KEY_GRP_INTERNAL_CIRCLE, grpMetaPtr->mInternalCircle);
cv.put(KEY_GRP_ORIGINATOR, grpMetaPtr->mOriginator.toStdString());
cv.put(KEY_GRP_AUTHEN_FLAGS, (int32_t)grpMetaPtr->mAuthenFlags);
cv.put(KEY_NXS_HASH, grpMetaPtr->mHash.toStdString());
cv.put(KEY_NXS_HASH, grpMetaPtr->mHash);
if(! (grpMetaPtr->mAuthorId.empty()) ){
cv.put(KEY_NXS_IDENTITY, grpMetaPtr->mAuthorId);
@ -1416,9 +1416,10 @@ void RsDataService::locked_getMessageOffsets(const RsGxsGroupId& grpId, std::vec
{
RsGxsMessageId msgId;
int32_t msgLen;
int32_t msgOffSet;
std::string tempId ;
c->getString(0, tempId) ; msgId = tempId;
int32_t msgOffSet;
std::string temp;
c->getString(0, temp);
msgId = temp;
msgOffSet = c->getInt32(1);
msgLen = c->getInt32(2);

View file

@ -690,7 +690,9 @@ int RsGenExchange::createMessage(RsNxsMsg* msg)
// get hash of msg data to create msg id
pqihash hash;
hash.addData(allMsgData, allMsgDataLen);
hash.Complete(msg->msgId);
std::string hashId;
hash.Complete(hashId);
msg->msgId = hashId;
// assign msg id to msg meta
msg->metaData->mMsgId = msg->msgId;
@ -1769,7 +1771,7 @@ void RsGenExchange::publishMsgs()
{
// empty orig msg id means this is the original
// msg
if(msg->metaData->mOrigMsgId.isNull())
if(msg->metaData->mOrigMsgId.isNull())
{
msg->metaData->mOrigMsgId = msg->metaData->mMsgId;
}
@ -2218,7 +2220,7 @@ void RsGenExchange::processRecvdData()
}
void RsGenExchange::computeHash(const RsTlvBinaryData& data, RsFileHash& hash)
void RsGenExchange::computeHash(const RsTlvBinaryData& data, std::string& hash)
{
pqihash pHash;
pHash.addData(data.bin_data, data.bin_len);

View file

@ -228,10 +228,10 @@ bool RsGxsMsgMetaData::serialise(void *data, uint32_t *size)
offset += 8;
ok &= mGroupId.serialise(data, *size, offset);
ok &= mMsgId.serialise(data, *size, offset) ;
ok &= mThreadId.serialise(data, *size, offset) ;
ok &= mParentId.serialise(data, *size, offset) ;
ok &= mOrigMsgId.serialise(data, *size, offset) ;
ok &= mMsgId.serialise(data, *size, offset);
ok &= mThreadId.serialise(data, *size, offset);
ok &= mParentId.serialise(data, *size, offset);
ok &= mOrigMsgId.serialise(data, *size, offset);
ok &= SetTlvString(data, *size, &offset, 0, mAuthorId);
ok &= signSet.SetTlv(data, *size, &offset);
@ -255,10 +255,10 @@ bool RsGxsMsgMetaData::deserialise(void *data, uint32_t *size)
if(!ok) return false;
ok &= mGroupId.deserialise(data, *size, offset);
ok &= mMsgId.serialise(data, *size, offset) ;
ok &= mThreadId.serialise(data, *size,offset) ;
ok &= mParentId.serialise(data, *size, offset) ;
ok &= mOrigMsgId.serialise(data, *size, offset) ;
ok &= mMsgId.deserialise(data, *size, offset);
ok &= mThreadId.deserialise(data, *size, offset);
ok &= mParentId.deserialise(data, *size, offset);
ok &= mOrigMsgId.deserialise(data, *size, offset);
ok &= GetTlvString(data, *size, &offset, 0, mAuthorId);
ok &= signSet.GetTlv(data, *size, &offset);

View file

@ -1490,7 +1490,7 @@ void RsGxsNetService::locked_genReqMsgTransaction(NxsTransaction* tr)
std::vector<RsGxsMsgMetaData*> &msgMetaV = result[grpId];
std::vector<RsGxsMsgMetaData*>::const_iterator vit = msgMetaV.begin();
std::set<RsGxsMessageId> msgIdSet;
std::set<RsGxsMessageId> msgIdSet;
// put ids in set for each searching
for(; vit != msgMetaV.end(); vit++)
@ -1517,7 +1517,7 @@ void RsGxsNetService::locked_genReqMsgTransaction(NxsTransaction* tr)
for(; llit != msgItemL.end(); llit++)
{
RsNxsSyncMsgItem*& syncItem = *llit;
const RsGxsMessageId& msgId = syncItem->msgId;
const RsGxsMessageId& msgId = syncItem->msgId;
if(msgIdSet.find(msgId) == msgIdSet.end()){
@ -2221,7 +2221,7 @@ void RsGxsNetService::handleRecvSyncMessage(RsNxsSyncMsg* item)
if(grpMeta == NULL)
return;
req[item->grpId] = std::vector<RsGxsMessageId>();
req[item->grpId] = std::vector<RsGxsMessageId>();
mDataStore->retrieveGxsMsgMetaData(req, metaResult);
std::vector<RsGxsMsgMetaData*>& msgMetas = metaResult[item->grpId];

View file

@ -37,7 +37,7 @@ class RsGxsFile
public:
RsGxsFile();
std::string mName;
RsFileHash mHash;
RsFileHash mHash;
uint64_t mSize;
//std::string mPath;
};

View file

@ -16,7 +16,7 @@
#include <retroshare/rsids.h>
typedef GXSGroupId RsGxsGroupId;
typedef RsFileHash RsGxsMessageId;
typedef Sha1CheckSum RsGxsMessageId;
typedef std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > GxsMsgIdResult;
typedef std::pair<RsGxsGroupId, RsGxsMessageId> RsGxsGrpMsgIdPair;

View file

@ -145,14 +145,17 @@ template<uint32_t ID_SIZE_IN_BYTES,bool UPPER_CASE,uint32_t UNIQUE_IDENTIFIER> s
return res ;
}
void chris_test();
template<uint32_t ID_SIZE_IN_BYTES,bool UPPER_CASE,uint32_t UNIQUE_IDENTIFIER> t_RsGenericIdType<ID_SIZE_IN_BYTES,UPPER_CASE,UNIQUE_IDENTIFIER>::t_RsGenericIdType(const std::string& s)
{
try
{
int n=0;
if(s.length() != ID_SIZE_IN_BYTES*2)
{
throw std::runtime_error("t_RsGenericIdType<>::t_RsGenericIdType(std::string&): supplied string in constructor has wrong size.") ;
chris_test();
}
for(uint32_t i = 0; i < ID_SIZE_IN_BYTES; ++i)
{
@ -176,6 +179,7 @@ template<uint32_t ID_SIZE_IN_BYTES,bool UPPER_CASE,uint32_t UNIQUE_IDENTIFIER> t
catch(std::exception& e)
{
std::cerr << e.what() << std::endl;
chris_test();
clear() ;
}
}
@ -212,6 +216,5 @@ typedef t_RsGenericIdType< PGP_KEY_FINGERPRINT_SIZE, true, RS_GENERIC_ID_PGP_F
typedef t_RsGenericIdType< CERT_SIGN_LEN , false, RS_GENERIC_ID_GXS_GROUP_ID_TYPE > GXSGroupId ;
typedef t_RsGenericIdType< CERT_SIGN_LEN , false, RS_GENERIC_ID_GXS_ID_TYPE > GXSId ;
typedef t_RsGenericIdType< SHA1_SIZE , false, RS_GENERIC_ID_GXS_MSG_ID_TYPE > GXSMsgId ;
typedef t_RsGenericIdType< CERT_SIGN_LEN , false, RS_GENERIC_ID_GXS_CIRCLE_ID_TYPE > GXSCircleId ;

View file

@ -1401,7 +1401,7 @@ int RsServer::StartupRetroShare()
RsGxsNetService* gxsid_ns = new RsGxsNetService(
RS_SERVICE_GXSV2_TYPE_GXSID, gxsid_ds, nxsMgr,
mGxsIdService, mGxsIdService, mGxsCircles,
false); // don't synchronise group automatic (need explicit group request)
true); // don't synchronise group automatic (need explicit group request)
mGxsIdService->setNes(gxsid_ns);
/**** GxsCircle service ****/
@ -1815,3 +1815,10 @@ int RsServer::StartupRetroShare()
return 1;
}
void chris_test()
{
std::cout << "tested\n";
}

View file

@ -204,7 +204,7 @@ bool RsNxsSerialiser::serialiseNxsSynMsgItem(RsNxsSyncMsgItem *item, void *data,
ok &= setRawUInt32(data, *size, &offset, item->transactionNumber);
ok &= setRawUInt8(data, *size, &offset, item->flag);
ok &= item->grpId.serialise(data, *size, offset);
ok &= item->msgId.serialise(data, *size, offset) ;
ok &= item->msgId.serialise(data, *size, offset);
ok &= SetTlvString(data, *size, &offset, TLV_TYPE_STR_NAME, item->authorId);
if(offset != tlvsize){
@ -253,7 +253,7 @@ bool RsNxsSerialiser::serialiseNxsMsg(RsNxsMsg *item, void *data, uint32_t *size
ok &= setRawUInt32(data, *size, &offset, item->transactionNumber);
ok &= setRawUInt8(data, *size, &offset, item->pos);
ok &= item->msgId.serialise(data, tlvsize, offset) ;
ok &= item->msgId.serialise(data, *size, offset);
ok &= item->grpId.serialise(data, *size, offset);
ok &= item->msg.SetTlv(data, tlvsize, &offset);
ok &= item->meta.SetTlv(data, *size, &offset);
@ -643,7 +643,7 @@ RsNxsMsg* RsNxsSerialiser::deserialNxsMsg(void *data, uint32_t *size){
ok &= getRawUInt32(data, *size, &offset, &(item->transactionNumber));
ok &= getRawUInt8(data, *size, &offset, &(item->pos));
ok &= item->msgId.deserialise(data, *size, offset) ;
ok &= item->msgId.deserialise(data, *size, offset);
ok &= item->grpId.deserialise(data, *size, offset);
ok &= item->msg.GetTlv(data, *size, &offset);
ok &= item->meta.GetTlv(data, *size, &offset);
@ -917,7 +917,7 @@ RsNxsSyncMsgItem* RsNxsSerialiser::deserialNxsSyncMsgItem(void *data, uint32_t *
ok &= getRawUInt32(data, *size, &offset, &(item->transactionNumber));
ok &= getRawUInt8(data, *size, &offset, &(item->flag));
ok &= item->grpId.deserialise(data, *size, offset);
ok &= item->msgId.deserialise(data, *size, offset) ;
ok &= item->msgId.deserialise(data, *size, offset);
ok &= GetTlvString(data, *size, &offset, TLV_TYPE_STR_NAME, item->authorId);
if (offset != rssize)

View file

@ -296,7 +296,7 @@ public:
uint8_t pos; /// used for splitting up msg
uint8_t count; /// number of split up messages
RsGxsGroupId grpId; /// group id, forms part of version id
RsFileHash msgId; /// msg id
RsGxsMessageId msgId; /// msg id
static int refcount;
/*!

View file

@ -598,7 +598,7 @@ void p3GxsChannels::handleUnprocessedPost(const RsGxsChannelPost &msg)
for(fit = msg.mFiles.begin(); fit != msg.mFiles.end(); fit++)
{
std::string fname = fit->mName;
RsFileHash hash = fit->mHash;
Sha1CheckSum hash = Sha1CheckSum(fit->mHash);
uint64_t size = fit->mSize;
std::list<RsPeerId> srcIds;
@ -685,6 +685,7 @@ bool p3GxsChannels::autoDownloadEnabled(const RsGxsGroupId &id)
bool SSGxsChannelGroup::load(const std::string &input)
{
char line[RSGXSCHANNEL_MAX_SERVICE_STRING];
int download_val;
mAutoDownload = false;
if (1 == sscanf(input.c_str(), "D:%d", &download_val))
@ -831,10 +832,11 @@ bool p3GxsChannels::ExtraFileHash(const std::string &path, std::string filename)
}
bool p3GxsChannels::ExtraFileRemove(const RsFileHash &hash)
bool p3GxsChannels::ExtraFileRemove(const std::string &hash)
{
TransferRequestFlags tflags = RS_FILE_REQ_ANONYMOUS_ROUTING | RS_FILE_REQ_EXTRA;
return rsFiles->ExtraFileRemove(hash, tflags);
RsFileHash fh = RsFileHash(hash);
return rsFiles->ExtraFileRemove(fh, tflags);
}
@ -1015,7 +1017,7 @@ void p3GxsChannels::dummy_tick()
RsGxsGroupId grpId = ref.mGroupId;
RsGxsMessageId parentId = ref.mMsgId;
mGenThreadId = ref.mThreadId;
if (mGenThreadId.isNull())
if (mGenThreadId.empty())
{
mGenThreadId = parentId;
}
@ -1037,7 +1039,7 @@ void p3GxsChannels::dummy_tick()
RsGxsGroupId grpId = ref.mGroupId;
RsGxsMessageId parentId = ref.mMsgId;
mGenThreadId = ref.mThreadId;
if (mGenThreadId.isNull())
if (mGenThreadId.empty())
{
mGenThreadId = parentId;
}
@ -1059,7 +1061,7 @@ void p3GxsChannels::dummy_tick()
RsGxsGroupId grpId = ref.mGroupId;
RsGxsMessageId parentId = ref.mMsgId;
mGenThreadId = ref.mThreadId;
if (mGenThreadId.isNull())
if (mGenThreadId.empty())
{
mGenThreadId = parentId;
}
@ -1107,7 +1109,7 @@ bool p3GxsChannels::generateComment(uint32_t &token, const RsGxsGroupId &grpId,
std::string rndId = genRandomId();
rs_sprintf(msg.mComment, "Channel Comment: GroupId: %s, ThreadId: %s, ParentId: %s + some randomness: %s",
grpId.toStdString().c_str(), threadId.toStdString().c_str(), parentId.toStdString().c_str(), rndId.c_str());
grpId.toStdString().c_str(), threadId.c_str(), parentId.c_str(), rndId.c_str());
msg.mMeta.mMsgName = msg.mComment;

View file

@ -414,14 +414,14 @@ bool p3GxsCommentService::createGxsVote(uint32_t &token, RsGxsVote &vote)
std::cerr << std::endl;
/* vote must be associated with another item */
if (vote.mMeta.mThreadId.isNull())
if (vote.mMeta.mThreadId.isNull())
{
std::cerr << "p3GxsCommentService::createGxsVote() ERROR Missing Required ThreadId";
std::cerr << std::endl;
return false;
}
if (vote.mMeta.mParentId.isNull())
if (vote.mMeta.mParentId.isNull())
{
std::cerr << "p3GxsCommentService::createGxsVote() ERROR Missing Required ParentId";
std::cerr << std::endl;

View file

@ -396,7 +396,7 @@ void p3GxsForums::dummy_tick()
RsGxsGroupId grpId = ref.mGroupId;
RsGxsMessageId parentId = ref.mMsgId;
mGenThreadId = ref.mThreadId;
if (mGenThreadId.isNull())
if (mGenThreadId.isNull())
{
mGenThreadId = parentId;
}
@ -420,7 +420,7 @@ bool p3GxsForums::generateMessage(uint32_t &token, const RsGxsGroupId &grpId, co
std::string rndId = genRandomId();
rs_sprintf(msg.mMsg, "Forum Msg: GroupId: %s, ThreadId: %s, ParentId: %s + some randomness: %s",
grpId.toStdString().c_str(), threadId.toStdString().c_str(), parentId.toStdString().c_str(), rndId.c_str());
grpId.toStdString().c_str(), threadId.toStdString().c_str(), parentId.toStdString().c_str(), rndId.c_str());
msg.mMeta.mMsgName = msg.mMsg;

View file

@ -429,7 +429,7 @@ void p3PostBase::background_loadMsgs(const uint32_t &token, bool unprocessed)
}
/* 3 types expected: PostedPost, Comment and Vote */
if (parentId.isNull())
if (parentId.isNull())
{
/* we don't care about top-level (Posts) */
std::cerr << "\tIgnoring TopLevel Item";

View file

@ -88,9 +88,9 @@ void GxsCommentTreeWidget::customPopUpMenu(const QPoint& point)
{
QMenu contextMnu( this );
QAction* action = contextMnu.addAction(QIcon(IMAGE_MESSAGE), tr("Reply to Comment"), this, SLOT(replyToComment()));
action->setDisabled(mCurrentMsgId.empty());
action->setDisabled(mCurrentMsgId.isNull());
action = contextMnu.addAction(QIcon(IMAGE_MESSAGE), tr("Submit Comment"), this, SLOT(makeComment()));
action->setDisabled(mThreadId.first.empty());
action->setDisabled(mThreadId.first.isNull());
contextMnu.addSeparator();
@ -100,7 +100,7 @@ void GxsCommentTreeWidget::customPopUpMenu(const QPoint& point)
action->setDisabled(mVoterId.empty());
if (!mCurrentMsgId.empty())
if (!mCurrentMsgId.isNull())
{
contextMnu.addSeparator();
QMenu *rep_menu = contextMnu.addMenu(tr("Reputation"));
@ -264,12 +264,12 @@ void GxsCommentTreeWidget::clearItems()
void GxsCommentTreeWidget::completeItems()
{
/* handle pending items */
std::string parentId;
RsGxsMessageId parentId;
QTreeWidgetItem *parent = NULL;
QList<QTreeWidgetItem *> topLevelItems;
std::map<std::string, QTreeWidgetItem *>::iterator lit;
std::multimap<std::string, QTreeWidgetItem *>::iterator pit;
std::map<RsGxsMessageId, QTreeWidgetItem *>::iterator lit;
std::multimap<RsGxsMessageId, QTreeWidgetItem *>::iterator pit;
std::cerr << "GxsCommentTreeWidget::completeItems() " << mPendingInsertMap.size();
std::cerr << " PendingItems";
@ -334,7 +334,7 @@ void GxsCommentTreeWidget::completeItems()
}
void GxsCommentTreeWidget::addItem(std::string itemId, std::string parentId, QTreeWidgetItem *item)
void GxsCommentTreeWidget::addItem(RsGxsMessageId itemId, RsGxsMessageId parentId, QTreeWidgetItem *item)
{
std::cerr << "GxsCommentTreeWidget::addItem() Id: " << itemId;
std::cerr << " ParentId: " << parentId;
@ -343,7 +343,7 @@ void GxsCommentTreeWidget::addItem(std::string itemId, std::string parentId, QTr
/* store in map -> for children */
mLoadingMap[itemId] = item;
std::map<std::string, QTreeWidgetItem *>::iterator it;
std::map<RsGxsMessageId, QTreeWidgetItem *>::iterator it;
it = mLoadingMap.find(parentId);
if (it != mLoadingMap.end())
{
@ -437,10 +437,10 @@ void GxsCommentTreeWidget::service_loadThread(const uint32_t &token)
text = QString::number(comment.mOwnVote);
item->setText(PCITEM_COLUMN_OWNVOTE, text);
text = QString::fromUtf8(comment.mMeta.mMsgId.c_str());
text = QString::fromUtf8(comment.mMeta.mMsgId.toStdString().c_str());
item->setText(PCITEM_COLUMN_MSGID, text);
text = QString::fromUtf8(comment.mMeta.mParentId.c_str());
text = QString::fromUtf8(comment.mMeta.mParentId.toStdString().c_str());
item->setText(PCITEM_COLUMN_PARENTID, text);
@ -467,7 +467,7 @@ QTreeWidgetItem *GxsCommentTreeWidget::service_createMissingItem(const RsGxsMess
item->setText(PCITEM_COLUMN_MSGID, text);
text = QString::fromUtf8(parent.c_str());
text = QString::fromUtf8(parent.toStdString().c_str());
item->setText(PCITEM_COLUMN_PARENTID, text);
return item;

View file

@ -60,7 +60,7 @@ protected:
void loadThread(const uint32_t &token);
void addItem(std::string itemId, std::string parentId, QTreeWidgetItem *item);
void addItem(RsGxsMessageId itemId, RsGxsMessageId parentId, QTreeWidgetItem *item);
public slots:
void customPopUpMenu(const QPoint& point);
@ -88,8 +88,8 @@ protected:
RsGxsMessageId mCurrentMsgId;
RsGxsId mVoterId;
std::map<std::string, QTreeWidgetItem *> mLoadingMap;
std::multimap<std::string, QTreeWidgetItem *> mPendingInsertMap;
std::map<RsGxsMessageId, QTreeWidgetItem *> mLoadingMap;
std::multimap<RsGxsMessageId, QTreeWidgetItem *> mPendingInsertMap;
TokenQueue *mTokenQueue;
RsTokenService *mRsTokenService;

View file

@ -167,7 +167,7 @@ void GxsFeedItem::requestGroupMeta()
return;
}
std::list<std::string> ids;
std::list<RsGxsGroupId> ids;
ids.push_back(mGroupId);
RsTokReqOptions opts;

View file

@ -46,7 +46,7 @@
//#define ENABLE_GENERATE
/** Constructor */
CreateGxsForumMsg::CreateGxsForumMsg(const std::string &fId, const std::string &pId)
CreateGxsForumMsg::CreateGxsForumMsg(const RsGxsGroupId &fId, const RsGxsMessageId &pId)
: QDialog(NULL, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint), mForumId(fId), mParentId(pId)
{
/* Invoke the Qt Designer generated object setup routine */
@ -71,7 +71,7 @@ CreateGxsForumMsg::CreateGxsForumMsg(const std::string &fId, const std::string &
mStateHelper->addLoadPlaceholder(CREATEGXSFORUMMSG_PARENTMSG, ui.forumSubject);
mStateHelper->addClear(CREATEGXSFORUMMSG_PARENTMSG, ui.forumName);
QString text = pId.empty() ? tr("Start New Thread") : tr("Post Forum Message");
QString text = pId.isNull() ? tr("Start New Thread") : tr("Post Forum Message");
setWindowTitle(text);
ui.headerFrame->setHeaderImage(QPixmap(":/images/konversation64.png"));
@ -119,7 +119,7 @@ void CreateGxsForumMsg::newMsg()
/* fill in the available OwnIds for signing */
ui.idChooser->loadIds(IDCHOOSER_ID_REQUIRED, "");
if (mForumId.empty()) {
if (mForumId.isNull()) {
mStateHelper->setActive(CREATEGXSFORUMMSG_FORUMINFO, false);
mStateHelper->setActive(CREATEGXSFORUMMSG_PARENTMSG, false);
mStateHelper->clear(CREATEGXSFORUMMSG_FORUMINFO);
@ -135,7 +135,7 @@ void CreateGxsForumMsg::newMsg()
RsTokReqOptions opts;
opts.mReqType = GXS_REQUEST_TYPE_GROUP_META;
std::list<std::string> groupIds;
std::list<RsGxsGroupId> groupIds;
groupIds.push_back(mForumId);
std::cerr << "ForumsV2Dialog::newMsg() Requesting Group Summary(" << mForumId << ")";
@ -145,7 +145,7 @@ void CreateGxsForumMsg::newMsg()
mForumQueue->requestGroupInfo(token, RS_TOKREQ_ANSTYPE_SUMMARY, opts, groupIds, CREATEGXSFORUMMSG_FORUMINFO);
}
if (mParentId.empty())
if (mParentId.isNull())
{
mStateHelper->setActive(CREATEGXSFORUMMSG_PARENTMSG, true);
mParentMsgLoaded = true;
@ -171,7 +171,7 @@ void CreateGxsForumMsg::newMsg()
void CreateGxsForumMsg::loadFormInformation()
{
if (!mParentId.empty()) {
if (!mParentId.isNull()) {
if (mParentMsgLoaded) {
mStateHelper->setActive(CREATEGXSFORUMMSG_PARENTMSG, true);
mStateHelper->setLoading(CREATEGXSFORUMMSG_PARENTMSG, false);
@ -205,7 +205,7 @@ void CreateGxsForumMsg::loadFormInformation()
QString name = QString::fromUtf8(mForumMeta.mGroupName.c_str());
QString subj;
if (!mParentId.empty())
if (!mParentId.isNull())
{
QString title = QString::fromUtf8(mParentMsg.mMeta.mMsgName.c_str());
name += " " + tr("In Reply to") + ": ";
@ -373,7 +373,8 @@ void CreateGxsForumMsg::fileHashingFinished(QList<HashedFile> hashedFiles)
for (it = hashedFiles.begin(); it != hashedFiles.end(); ++it) {
HashedFile& hashedFile = *it;
RetroShareLink link;
if (link.createFile(hashedFile.filename, hashedFile.size, QString::fromStdString(hashedFile.hash))) {
if (link.createFile(hashedFile.filename, hashedFile.size,
QString::fromStdString(hashedFile.hash.toStdString()))) {
mesgString += link.toHtmlSize() + "<br>";
}
}

View file

@ -35,7 +35,7 @@ class CreateGxsForumMsg : public QDialog, public TokenResponse
Q_OBJECT
public:
CreateGxsForumMsg(const std::string &fId, const std::string &pId);
CreateGxsForumMsg(const RsGxsGroupId &fId, const RsGxsMessageId &pId);
~CreateGxsForumMsg();
void newMsg(); /* cleanup */
@ -59,8 +59,8 @@ private:
void loadForumInfo(const uint32_t &token);
void loadParentMsg(const uint32_t &token);
std::string mForumId;
std::string mParentId;
RsGxsGroupId mForumId;
RsGxsMessageId mParentId;
bool mParentMsgLoaded;
bool mForumMetaLoaded;

View file

@ -86,7 +86,7 @@
#define TOKEN_TYPE_INSERT_POST 2
#define TOKEN_TYPE_REPLY_MESSAGE 3
GxsForumThreadWidget::GxsForumThreadWidget(const std::string &forumId, QWidget *parent) :
GxsForumThreadWidget::GxsForumThreadWidget(const RsGxsGroupId &forumId, QWidget *parent) :
RsGxsUpdateBroadcastWidget(rsGxsForums, parent),
ui(new Ui::GxsForumThreadWidget)
{
@ -256,16 +256,16 @@ void GxsForumThreadWidget::processSettings(bool load)
mInProcessSettings = false;
}
void GxsForumThreadWidget::setForumId(const std::string &forumId)
void GxsForumThreadWidget::setForumId(const RsGxsGroupId &forumId)
{
if (mForumId == forumId) {
if (!forumId.empty()) {
if (!forumId.isNull()) {
return;
}
}
mForumId = forumId;
ui->forumName->setText(mForumId.empty () ? "" : tr("Loading"));
ui->forumName->setText(mForumId.isNull () ? "" : tr("Loading"));
mNewCount = 0;
mUnreadCount = 0;
@ -276,7 +276,7 @@ void GxsForumThreadWidget::setForumId(const std::string &forumId)
QString GxsForumThreadWidget::forumName(bool withUnreadCount)
{
QString name = mForumId.empty () ? tr("No name") : ui->forumName->text();
QString name = mForumId.isNull () ? tr("No name") : ui->forumName->text();
if (withUnreadCount && mUnreadCount) {
name += QString(" (%1)").arg(mUnreadCount);
@ -414,7 +414,7 @@ void GxsForumThreadWidget::threadListCustomPopupMenu(QPoint /*point*/)
contextMnu.addAction(newthreadAct);
contextMnu.addAction(replyauthorAct);
QAction* action = contextMnu.addAction(QIcon(IMAGE_COPYLINK), tr("Copy RetroShare Link"), this, SLOT(copyMessageLink()));
action->setEnabled(!mForumId.empty() && !mThreadId.empty());
action->setEnabled(!mForumId.isNull() && !mThreadId.isNull());
contextMnu.addSeparator();
contextMnu.addAction(markMsgAsRead);
contextMnu.addAction(markMsgAsReadChildren);
@ -489,7 +489,7 @@ void GxsForumThreadWidget::clickedThread(QTreeWidgetItem *item, int column)
return;
}
if (mForumId.empty() || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
if (mForumId.isNull() || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
return;
}
@ -804,7 +804,7 @@ QTreeWidgetItem *GxsForumThreadWidget::convertMsgToThreadWidget(const RsGxsForum
item->setText(COLUMN_THREAD_DATE, text);
item->setData(COLUMN_THREAD_DATE, ROLE_THREAD_SORT, sort);
item->setText(COLUMN_THREAD_AUTHOR, QString::fromStdString(msg.mMeta.mAuthorId.toStdString()));
item->setText(COLUMN_THREAD_AUTHOR, QString::fromStdString(msg.mMeta.mAuthorId));
//item->setId(msg.mMeta.mAuthorId, COLUMN_THREAD_AUTHOR);
//#TODO
#if 0
@ -840,7 +840,7 @@ QTreeWidgetItem *GxsForumThreadWidget::convertMsgToThreadWidget(const RsGxsForum
item->setText(COLUMN_THREAD_CONTENT, doc.toPlainText().replace(QString("\n"), QString(" ")));
}
item->setData(COLUMN_THREAD_DATA, ROLE_THREAD_MSGID, QString::fromStdString(msg.mMeta.mMsgId));
item->setData(COLUMN_THREAD_DATA, ROLE_THREAD_MSGID, QString::fromStdString(msg.mMeta.mMsgId.toStdString()));
//#TODO
#if 0
if (IS_GROUP_SUBSCRIBED(subscribeFlags) && !(msginfo.mMsgFlags & RS_DISTRIB_MISSING_MSG)) {
@ -857,11 +857,11 @@ QTreeWidgetItem *GxsForumThreadWidget::convertMsgToThreadWidget(const RsGxsForum
return item;
}
QTreeWidgetItem *GxsForumThreadWidget::generateMissingItem(const std::string &msgId)
QTreeWidgetItem *GxsForumThreadWidget::generateMissingItem(const RsGxsMessageId &msgId)
{
GxsIdRSTreeWidgetItem *item = new GxsIdRSTreeWidgetItem(mThreadCompareRole);
item->setText(COLUMN_THREAD_TITLE, tr("[ ... Missing Message ... ]"));
item->setData(COLUMN_THREAD_DATA, ROLE_THREAD_MSGID, QString::fromStdString(msgId));
item->setData(COLUMN_THREAD_DATA, ROLE_THREAD_MSGID, QString::fromStdString(msgId.toStdString()));
item->setData(COLUMN_THREAD_DATA, ROLE_THREAD_MISSING, true);
return item;
@ -891,7 +891,7 @@ void GxsForumThreadWidget::insertThreads()
mSubscribeFlags = 0;
mForumDescription.clear();
if (mForumId.empty())
if (mForumId.isNull())
{
/* not an actual forum - clear */
mStateHelper->setActive(TOKEN_TYPE_CURRENTFORUM, false);
@ -899,8 +899,8 @@ void GxsForumThreadWidget::insertThreads()
mStateHelper->clear(TOKEN_TYPE_CURRENTFORUM);
mStateHelper->clear(TOKEN_TYPE_INSERT_POST);
/* clear last stored forumID */
mForumId.erase();
mLastForumID.erase();
mForumId.clear();
mLastForumID.clear();
#ifdef DEBUG_FORUMS
std::cerr << "GxsForumsDialog::insertThreads() Current Thread Invalid" << std::endl;
@ -1131,7 +1131,7 @@ void GxsForumThreadWidget::fillChildren(QTreeWidgetItem *parentItem, QTreeWidget
void GxsForumThreadWidget::insertPost()
{
if (mForumId.empty())
if (mForumId.isNull())
{
mStateHelper->setActive(TOKEN_TYPE_CURRENTFORUM, false);
mStateHelper->setActive(TOKEN_TYPE_INSERT_POST, false);
@ -1143,7 +1143,7 @@ void GxsForumThreadWidget::insertPost()
return;
}
if (mThreadId.empty())
if (mThreadId.isNull())
{
mStateHelper->setActive(TOKEN_TYPE_INSERT_POST, false);
mStateHelper->clear(TOKEN_TYPE_INSERT_POST);
@ -1169,7 +1169,7 @@ void GxsForumThreadWidget::insertPost()
return;
}
mStateHelper->setWidgetEnabled(ui->newmessageButton, (IS_GROUP_SUBSCRIBED(mSubscribeFlags) && mThreadId.empty() == false));
mStateHelper->setWidgetEnabled(ui->newmessageButton, (IS_GROUP_SUBSCRIBED(mSubscribeFlags) && mThreadId.isNull() == false));
/* blank text, incase we get nothing */
ui->postText->clear();
@ -1227,7 +1227,8 @@ void GxsForumThreadWidget::insertPostData(const RsGxsForumMsg &msg)
ui->time_label->setText(DateTime::formatLongDateTime(msg.mMeta.mPublishTs));
std::string authorName = rsPeers->getPeerName(msg.mMeta.mAuthorId);
std::string authorName;
//= rsPeers->getPeerName(msg.mMeta.mAuthorId);
QString text = QString::fromUtf8(authorName.c_str());
if (text.isEmpty())
@ -1424,7 +1425,7 @@ void GxsForumThreadWidget::setMsgReadStatus(QList<QTreeWidgetItem*> &rows, bool
void GxsForumThreadWidget::markMsgAsReadUnread (bool read, bool children, bool forum)
{
if (mForumId.empty() || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
if (mForumId.isNull() || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
return;
}
@ -1499,7 +1500,7 @@ void GxsForumThreadWidget::setAllMsgReadStatus(bool read)
void GxsForumThreadWidget::copyMessageLink()
{
if (mForumId.empty() || mThreadId.empty()) {
if (mForumId.isNull() || mThreadId.isNull()) {
return;
}
@ -1524,7 +1525,7 @@ void GxsForumThreadWidget::copyMessageLink()
void GxsForumThreadWidget::createmessage()
{
if (mForumId.empty () || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
if (mForumId.isNull () || !IS_GROUP_SUBSCRIBED(mSubscribeFlags)) {
return;
}
@ -1536,12 +1537,12 @@ void GxsForumThreadWidget::createmessage()
void GxsForumThreadWidget::createthread()
{
if (mForumId.empty ()) {
if (mForumId.isNull ()) {
QMessageBox::information(this, tr("RetroShare"), tr("No Forum Selected!"));
return;
}
CreateGxsForumMsg *cfm = new CreateGxsForumMsg(mForumId, "");
CreateGxsForumMsg *cfm = new CreateGxsForumMsg(mForumId, RsGxsMessageId());
cfm->show();
/* window will destroy itself! */
@ -1550,7 +1551,7 @@ void GxsForumThreadWidget::createthread()
static QString buildReplyHeader(const RsMsgMetaData &meta)
{
RetroShareLink link;
link.createMessage(meta.mAuthorId, "");
//link.createMessage(meta.mAuthorId, "");
QString from = link.toHtml();
QString header = QString("<span>-----%1-----").arg(QApplication::translate("GxsForumsDialog", "Original Message"));
@ -1567,7 +1568,7 @@ static QString buildReplyHeader(const RsMsgMetaData &meta)
void GxsForumThreadWidget::replytomessage()
{
if (mForumId.empty() || mThreadId.empty()) {
if (mForumId.isNull() || mThreadId.isNull()) {
QMessageBox::information(this, tr("RetroShare"),tr("You cant reply to a non-existant Message"));
return;
}
@ -1587,14 +1588,14 @@ void GxsForumThreadWidget::replyMessageData(const RsGxsForumMsg &msg)
}
// NB: TODO REMOVE rsPeers references.
if (rsPeers->getPeerName(msg.mMeta.mAuthorId) !="")
if (rsPeers->getPeerName(RsPeerId(msg.mMeta.mAuthorId)) !="")
{
MessageComposer *msgDialog = MessageComposer::newMsg();
msgDialog->setTitleText(QString::fromUtf8(msg.mMeta.mMsgName.c_str()), MessageComposer::REPLY);
msgDialog->setQuotedMsg(QString::fromUtf8(msg.mMsg.c_str()), buildReplyHeader(msg.mMeta));
msgDialog->addRecipient(MessageComposer::TO, msg.mMeta.mAuthorId, false);
//msgDialog->addRecipient(MessageComposer::TO, msg.mMeta.mAuthorId, false);
msgDialog->show();
msgDialog->activateWindow();
@ -1678,7 +1679,7 @@ bool GxsForumThreadWidget::filterItem(QTreeWidgetItem *item, const QString &text
/** Request / Response of Data ********************************/
/*********************** **** **** **** ***********************/
void GxsForumThreadWidget::requestGroupSummary_CurrentForum(const std::string &forumId)
void GxsForumThreadWidget::requestGroupSummary_CurrentForum(const RsGxsGroupId &forumId)
{
ui->progressBar->reset();
mStateHelper->setLoading(TOKEN_TYPE_CURRENTFORUM, true);
@ -1690,7 +1691,7 @@ void GxsForumThreadWidget::requestGroupSummary_CurrentForum(const std::string &f
mThreadQueue->cancelActiveRequestTokens(TOKEN_TYPE_CURRENTFORUM);
std::list<std::string> grpIds;
std::list<RsGxsGroupId> grpIds;
grpIds.push_back(forumId);
std::cerr << "GxsForumsDialog::requestGroupSummary_CurrentForum(" << forumId << ")";

View file

@ -25,7 +25,7 @@ class GxsForumThreadWidget : public RsGxsUpdateBroadcastWidget, public TokenResp
Q_PROPERTY(QColor textColorMissing READ textColorMissing WRITE setTextColorMissing)
public:
explicit GxsForumThreadWidget(const std::string &forumId, QWidget *parent = NULL);
explicit GxsForumThreadWidget(const RsGxsGroupId &forumId, QWidget *parent = NULL);
~GxsForumThreadWidget();
QColor textColorRead() const { return mTextColorRead; }
@ -40,15 +40,15 @@ public:
void setTextColorNotSubscribed(QColor color) { mTextColorNotSubscribed = color; }
void setTextColorMissing(QColor color) { mTextColorMissing = color; }
std::string forumId() { return mForumId; }
void setForumId(const std::string &forumId);
RsGxsGroupId forumId() { return mForumId; }
void setForumId(const RsGxsGroupId &forumId);
QString forumName(bool withUnreadCount);
QIcon forumIcon();
unsigned int newCount() { return mNewCount; }
unsigned int unreadCount() { return mUnreadCount; }
QTreeWidgetItem *convertMsgToThreadWidget(const RsGxsForumMsg &msg, bool useChildTS, uint32_t filterColumn);
QTreeWidgetItem *generateMissingItem(const std::string &msgId);
QTreeWidgetItem *generateMissingItem(const RsGxsMessageId &msgId);
void setAllMsgReadStatus(bool read);
@ -129,9 +129,9 @@ private:
void processSettings(bool bLoad);
std::string mForumId;
std::string mLastForumID;
std::string mThreadId;
RsGxsGroupId mForumId;
RsGxsGroupId mLastForumID;
RsGxsMessageId mThreadId;
QString mForumDescription;
int mSubscribeFlags;
bool mInProcessSettings;
@ -143,7 +143,7 @@ private:
unsigned int mUnreadCount;
unsigned int mNewCount;
void requestGroupSummary_CurrentForum(const std::string &forumId);
void requestGroupSummary_CurrentForum(const RsGxsGroupId &forumId);
void loadGroupSummary_CurrentForum(const uint32_t &token);
void requestMsgData_InsertPost(const RsGxsGrpMsgIdPair &msgId);

View file

@ -172,7 +172,7 @@ void GxsForumsDialog::settingsChanged()
}
} else {
if (!mThreadWidget) {
mThreadWidget = createThreadWidget("");
mThreadWidget = createThreadWidget(RsGxsGroupId());
// remove close button of the the first tab
ui.threadTabWidget->hideCloseButton(ui.threadTabWidget->indexOf(mThreadWidget));
}
@ -181,7 +181,7 @@ void GxsForumsDialog::settingsChanged()
void GxsForumsDialog::forumListCustomPopupMenu(QPoint /*point*/)
{
int subscribeFlags = ui.forumTreeWidget->subscribeFlags(QString::fromStdString(mForumId));
int subscribeFlags = ui.forumTreeWidget->subscribeFlags(QString::fromStdString(mForumId.toStdString()));
QMenu contextMnu(this);
@ -200,14 +200,14 @@ void GxsForumsDialog::forumListCustomPopupMenu(QPoint /*point*/)
#endif
QAction *action = contextMnu.addAction(QIcon(IMAGE_SUBSCRIBE), tr("Subscribe to Forum"), this, SLOT(subscribeToForum()));
action->setDisabled (mForumId.empty() || IS_GROUP_SUBSCRIBED(subscribeFlags));
action->setDisabled (mForumId.isNull() || IS_GROUP_SUBSCRIBED(subscribeFlags));
action = contextMnu.addAction(QIcon(IMAGE_UNSUBSCRIBE), tr("Unsubscribe to Forum"), this, SLOT(unsubscribeToForum()));
action->setEnabled (!mForumId.empty() && IS_GROUP_SUBSCRIBED(subscribeFlags));
action->setEnabled (!mForumId.isNull() && IS_GROUP_SUBSCRIBED(subscribeFlags));
if (!Settings->getForumOpenAllInNewTab()) {
action = contextMnu.addAction(QIcon(""), tr("Open in new tab"), this, SLOT(openInNewTab()));
if (mForumId.empty() || forumThreadWidget(mForumId)) {
if (mForumId.isNull() || forumThreadWidget(mForumId)) {
action->setEnabled(false);
}
}
@ -217,31 +217,31 @@ void GxsForumsDialog::forumListCustomPopupMenu(QPoint /*point*/)
contextMnu.addAction(QIcon(IMAGE_NEWFORUM), tr("New Forum"), this, SLOT(newforum()));
action = contextMnu.addAction(QIcon(IMAGE_INFO), tr("Show Forum Details"), this, SLOT(showForumDetails()));
action->setEnabled (!mForumId.empty ());
action->setEnabled (!mForumId.isNull());
action = contextMnu.addAction(QIcon(":/images/settings16.png"), tr("Edit Forum Details"), this, SLOT(editForumDetails()));
action->setEnabled (!mForumId.empty () && IS_GROUP_ADMIN(subscribeFlags));
action->setEnabled (!mForumId.isNull() && IS_GROUP_ADMIN(subscribeFlags));
QAction *shareKeyAct = new QAction(QIcon(":/images/gpgp_key_generate.png"), tr("Share Forum"), &contextMnu);
connect( shareKeyAct, SIGNAL( triggered() ), this, SLOT( shareKey() ) );
shareKeyAct->setEnabled(!mForumId.empty() && IS_GROUP_ADMIN(subscribeFlags));
shareKeyAct->setEnabled(!mForumId.isNull() && IS_GROUP_ADMIN(subscribeFlags));
contextMnu.addAction( shareKeyAct);
QAction *restoreKeysAct = new QAction(QIcon(":/images/settings16.png"), tr("Restore Publish Rights for Forum" ), &contextMnu);
connect( restoreKeysAct , SIGNAL( triggered() ), this, SLOT( restoreForumKeys() ) );
restoreKeysAct->setEnabled(!mForumId.empty() && !IS_GROUP_ADMIN(subscribeFlags));
restoreKeysAct->setEnabled(!mForumId.isNull() && !IS_GROUP_ADMIN(subscribeFlags));
contextMnu.addAction( restoreKeysAct);
action = contextMnu.addAction(QIcon(IMAGE_COPYLINK), tr("Copy RetroShare Link"), this, SLOT(copyForumLink()));
action->setEnabled(!mForumId.empty());
action->setEnabled(!mForumId.isNull());
contextMnu.addSeparator();
action = contextMnu.addAction(QIcon(":/images/message-mail-read.png"), tr("Mark all as read"), this, SLOT(markMsgAsRead()));
action->setEnabled (!mForumId.empty () && IS_GROUP_SUBSCRIBED(subscribeFlags));
action->setEnabled (!mForumId.isNull() && IS_GROUP_SUBSCRIBED(subscribeFlags));
action = contextMnu.addAction(QIcon(":/images/message-mail.png"), tr("Mark all as unread"), this, SLOT(markMsgAsUnread()));
action->setEnabled (!mForumId.empty () && IS_GROUP_SUBSCRIBED(subscribeFlags));
action->setEnabled (!mForumId.isNull() && IS_GROUP_SUBSCRIBED(subscribeFlags));
contextMnu.exec(QCursor::pos());
}
@ -265,7 +265,7 @@ void GxsForumsDialog::updateDisplay(bool complete)
void GxsForumsDialog::forumInfoToGroupItemInfo(const RsGroupMetaData &forumInfo, GroupItemInfo &groupItemInfo)
{
groupItemInfo.id = QString::fromStdString(forumInfo.mGroupId);
groupItemInfo.id = QString::fromStdString(forumInfo.mGroupId.toStdString());
groupItemInfo.name = QString::fromUtf8(forumInfo.mGroupName.c_str());
//groupItemInfo.description = QString::fromUtf8(forumInfo.forumDesc);
groupItemInfo.popularity = forumInfo.mPop;
@ -350,10 +350,10 @@ void GxsForumsDialog::insertForumsData(const std::list<RsGroupMetaData> &forumLi
ui.forumTreeWidget->fillGroupItems(popularForums, popList);
ui.forumTreeWidget->fillGroupItems(otherForums, otherList);
updateMessageSummaryList("");
updateMessageSummaryList(RsGxsGroupId());
}
GxsForumThreadWidget *GxsForumsDialog::forumThreadWidget(const std::string &forumId)
GxsForumThreadWidget *GxsForumsDialog::forumThreadWidget(const RsGxsGroupId &forumId)
{
int tabCount = ui.threadTabWidget->count();
for (int index = 0; index < tabCount; ++index) {
@ -370,7 +370,7 @@ GxsForumThreadWidget *GxsForumsDialog::forumThreadWidget(const std::string &foru
return NULL;
}
GxsForumThreadWidget *GxsForumsDialog::createThreadWidget(const std::string &forumId)
GxsForumThreadWidget *GxsForumsDialog::createThreadWidget(const RsGxsGroupId &forumId)
{
GxsForumThreadWidget *threadWidget = new GxsForumThreadWidget(forumId);
int index = ui.threadTabWidget->addTab(threadWidget, threadWidget->forumName(true));
@ -383,14 +383,14 @@ GxsForumThreadWidget *GxsForumsDialog::createThreadWidget(const std::string &for
void GxsForumsDialog::changedForum(const QString &forumId)
{
mForumId = forumId.toStdString();
if (mForumId.empty()) {
if (mForumId.isNull()) {
return;
}
// requestGroupSummary_CurrentForum(mForumId);
/* search exisiting tab */
GxsForumThreadWidget *threadWidget = forumThreadWidget(mForumId);
GxsForumThreadWidget *threadWidget = forumThreadWidget(mForumId);
if (!threadWidget) {
if (mThreadWidget) {
@ -399,7 +399,7 @@ void GxsForumsDialog::changedForum(const QString &forumId)
threadWidget->setForumId(mForumId);
} else {
/* create new tab */
threadWidget = createThreadWidget(mForumId);
threadWidget = createThreadWidget(mForumId);
}
}
@ -408,7 +408,7 @@ void GxsForumsDialog::changedForum(const QString &forumId)
void GxsForumsDialog::forumTreeMiddleButtonClicked(QTreeWidgetItem *item)
{
openForumInNewTab(ui.forumTreeWidget->itemId(item).toStdString());
openForumInNewTab(RsGxsGroupId(ui.forumTreeWidget->itemId(item).toStdString()));
}
void GxsForumsDialog::openInNewTab()
@ -416,9 +416,9 @@ void GxsForumsDialog::openInNewTab()
openForumInNewTab(mForumId);
}
void GxsForumsDialog::openForumInNewTab(const std::string &forumId)
void GxsForumsDialog::openForumInNewTab(const RsGxsGroupId &forumId)
{
if (forumId.empty()) {
if (forumId.isNull()) {
return;
}
@ -453,7 +453,7 @@ void GxsForumsDialog::threadTabChanged(int index)
return;
}
ui.forumTreeWidget->activateId(QString::fromStdString(threadWidget->forumId()), false);
ui.forumTreeWidget->activateId(QString::fromStdString(threadWidget->forumId().toStdString()), false);
}
void GxsForumsDialog::threadTabInfoChanged(QWidget *widget)
@ -474,7 +474,7 @@ void GxsForumsDialog::threadTabInfoChanged(QWidget *widget)
void GxsForumsDialog::copyForumLink()
{
if (mForumId.empty()) {
if (mForumId.isNull()) {
return;
}
@ -531,7 +531,7 @@ void GxsForumsDialog::unsubscribeToForum()
void GxsForumsDialog::forumSubscribe(bool subscribe)
{
if (mForumId.empty()) {
if (mForumId.isNull()) {
return;
}
@ -542,7 +542,7 @@ void GxsForumsDialog::forumSubscribe(bool subscribe)
void GxsForumsDialog::showForumDetails()
{
if (mForumId.empty()) {
if (mForumId.isNull()) {
return;
}
@ -552,7 +552,7 @@ void GxsForumsDialog::showForumDetails()
void GxsForumsDialog::editForumDetails()
{
if (mForumId.empty()) {
if (mForumId.isNull()) {
return;
}
@ -565,11 +565,11 @@ void GxsForumsDialog::editForumDetails()
void GxsForumsDialog::shareKey()
{
ShareKey shareUi(this, mForumId, FORUM_KEY_SHARE);
ShareKey shareUi(this, mForumId.toStdString(), FORUM_KEY_SHARE);
shareUi.exec();
}
void GxsForumsDialog::updateMessageSummaryList(std::string forumId)
void GxsForumsDialog::updateMessageSummaryList( RsGxsGroupId forumId)
{
QTreeWidgetItem *items[2] = { yourForums, subscribedForums };
@ -583,7 +583,7 @@ void GxsForumsDialog::updateMessageSummaryList(std::string forumId)
continue;
}
if (forumId.empty() || childId == forumId) {
if (forumId.isNull() || childId == forumId.toStdString()) {
/* calculate unread messages */
unsigned int newMessageCount = 0;
unsigned int unreadMessageCount = 0;
@ -595,7 +595,7 @@ void GxsForumsDialog::updateMessageSummaryList(std::string forumId)
ui.forumTreeWidget->setUnreadCount(childItem, unreadMessageCount);
if (forumId.empty() == false) {
if (forumId.isNull() == false) {
/* Calculate only this forum */
break;
}
@ -604,13 +604,13 @@ void GxsForumsDialog::updateMessageSummaryList(std::string forumId)
}
}
bool GxsForumsDialog::navigate(const std::string& forumId, const std::string& msgId)
bool GxsForumsDialog::navigate(const RsGxsGroupId forumId, const std::string& msgId)
{
if (forumId.empty()) {
if (forumId.isNull()) {
return false;
}
if (ui.forumTreeWidget->activateId(QString::fromStdString(forumId), msgId.empty()) == NULL) {
if (ui.forumTreeWidget->activateId(QString::fromStdString(forumId.toStdString()), msgId.empty()) == NULL) {
return false;
}
@ -718,7 +718,7 @@ void GxsForumsDialog::acknowledgeSubscribeChange(const uint32_t &token)
/*********************** **** **** **** ***********************/
/*********************** **** **** **** ***********************/
//void GxsForumsDialog::requestGroupSummary_CurrentForum(const std::string &forumId)
//void GxsForumsDialog::requestGroupSummary_CurrentForum(const RsGxsGroupId &forumId)
//{
// RsTokReqOptions opts;
// opts.mReqType = GXS_REQUEST_TYPE_GROUP_META;

View file

@ -49,7 +49,7 @@ public:
// virtual UserNotify *getUserNotify(QObject *parent);
bool navigate(const std::string& forumId, const std::string& msgId);
bool navigate(const RsGxsGroupId forumId, const std::string& msgId);
// Callback for all Loads.
virtual void loadRequest(const TokenQueue *queue, const TokenRequest &req);
@ -90,11 +90,11 @@ private slots:
private:
void insertForums();
void updateMessageSummaryList(std::string forumId);
void updateMessageSummaryList( RsGxsGroupId forumId);
// void forumInfoToGroupItemInfo(const ForumInfo &forumInfo, GroupItemInfo &groupItemInfo);
void forumInfoToGroupItemInfo(const RsGroupMetaData &forumInfo, GroupItemInfo &groupItemInfo);
void openForumInNewTab(const std::string &forumId);
void openForumInNewTab(const RsGxsGroupId &forumId);
void forumSubscribe(bool subscribe);
void processSettings(bool load);
@ -108,13 +108,13 @@ private:
// subscribe/unsubscribe ack.
void acknowledgeSubscribeChange(const uint32_t &token);
GxsForumThreadWidget *forumThreadWidget(const std::string &forumId);
GxsForumThreadWidget *createThreadWidget(const std::string &forumId);
GxsForumThreadWidget *forumThreadWidget(const RsGxsGroupId &forumId);
GxsForumThreadWidget *createThreadWidget(const RsGxsGroupId &forumId);
// void requestGroupSummary_CurrentForum(const std::string &forumId);
// void requestGroupSummary_CurrentForum(const RsGxsGroupId &forumId);
// void loadGroupSummary_CurrentForum(const uint32_t &token);
std::string mForumId;
RsGxsGroupId mForumId;
TokenQueue *mForumQueue;
GxsForumThreadWidget *mThreadWidget;

View file

@ -101,7 +101,7 @@ void GxsForumsFillThread::run()
opts.mReqType = GXS_REQUEST_TYPE_MSG_DATA;
opts.mOptions = RS_TOKREQOPT_MSG_LATEST;
std::list<std::string> grpIds;
std::list<RsGxsGroupId> grpIds;
grpIds.push_back(mForumId);
#ifdef DEBUG_FORUMS
@ -169,7 +169,7 @@ void GxsForumsFillThread::run()
const RsGxsForumMsg &msg = *msgIt;
if (!msg.mMeta.mParentId.empty()) {
if (!msg.mMeta.mParentId.isNull()) {
++msgIt;
continue;
}
@ -179,7 +179,7 @@ void GxsForumsFillThread::run()
#endif
QTreeWidgetItem *item = mParent->convertMsgToThreadWidget(msg, mUseChildTS, mFilterColumn);
threadList.push_back(QPair<std::string, QTreeWidgetItem*>(msg.mMeta.mMsgId, item));
threadList.push_back(QPair<std::string, QTreeWidgetItem*>(msg.mMeta.mMsgId.toStdString(), item));
calculateExpand(msg, item);
mItems.append(item);
@ -209,7 +209,7 @@ void GxsForumsFillThread::run()
for (msgIt = msgs.begin(); msgIt != msgs.end(); ) {
const RsGxsForumMsg &msg = *msgIt;
if (msg.mMeta.mParentId != threadPair.first) {
if (msg.mMeta.mParentId.toStdString() != threadPair.first) {
++msgIt;
continue;
}
@ -228,7 +228,7 @@ void GxsForumsFillThread::run()
calculateExpand(msg, item);
/* add item to process list */
threadList.push_back(QPair<std::string, QTreeWidgetItem*>(msg.mMeta.mMsgId, item));
threadList.push_back(QPair<std::string, QTreeWidgetItem*>(msg.mMeta.mMsgId.toStdString(), item));
if (++step >= steps) {
step = 0;
@ -275,7 +275,7 @@ void GxsForumsFillThread::run()
/* add dummy item */
QTreeWidgetItem *item = mParent->generateMissingItem(msg.mMeta.mParentId);
threadList.push_back(QPair<std::string, QTreeWidgetItem*>(msg.mMeta.mParentId, item));
threadList.push_back(QPair<std::string, QTreeWidgetItem*>(msg.mMeta.mParentId.toStdString(), item));
mItems.append(item);
break;

View file

@ -2,6 +2,7 @@
#define GXSFORUMSFILLTHREAD_H
#include <QThread>
#include "retroshare/rsgxsifacetypes.h"
class GxsForumThreadWidget;
class RsGxsForumMsg;
@ -25,7 +26,7 @@ signals:
void status(QString text);
public:
std::string mForumId;
RsGxsGroupId mForumId;
int mFilterColumn;
int mSubscribeFlags;
bool mFillComplete;

View file

@ -112,23 +112,23 @@ ApplicationWindow::ApplicationWindow(QWidget* parent, Qt::WindowFlags flags)
createPageAction(QIcon(IMAGE_PHOTO), tr("Photos"), grp));
#endif
PostedDialog *postedDialog = NULL;
ui.stackPages->add(postedDialog = new PostedDialog(ui.stackPages),
createPageAction(QIcon(IMAGE_POSTED), tr("Posted Links"), grp));
postedDialog->setup();
WikiDialog *wikiDialog = NULL;
ui.stackPages->add(wikiDialog = new WikiDialog(ui.stackPages),
createPageAction(QIcon(IMAGE_WIKI), tr("Wiki Pages"), grp));
// PostedDialog *postedDialog = NULL;
// ui.stackPages->add(postedDialog = new PostedDialog(ui.stackPages),
// createPageAction(QIcon(IMAGE_POSTED), tr("Posted Links"), grp));
// postedDialog->setup();
//
// WikiDialog *wikiDialog = NULL;
// ui.stackPages->add(wikiDialog = new WikiDialog(ui.stackPages),
// createPageAction(QIcon(IMAGE_WIKI), tr("Wiki Pages"), grp));
//
GxsForumsDialog *gxsforumsDialog = NULL;
ui.stackPages->add(gxsforumsDialog = new GxsForumsDialog(ui.stackPages),
createPageAction(QIcon(IMAGE_GXSFORUMS), tr("GxsForums"), grp));
ChannelDialog *gxschannelDialog = NULL;
ui.stackPages->add(gxschannelDialog = new ChannelDialog(ui.stackPages),
createPageAction(QIcon(IMAGE_GXSCHANNELS), tr("GxsChannels"), grp));
gxschannelDialog->setup();
//
// ChannelDialog *gxschannelDialog = NULL;
// ui.stackPages->add(gxschannelDialog = new ChannelDialog(ui.stackPages),
// createPageAction(QIcon(IMAGE_GXSCHANNELS), tr("GxsChannels"), grp));
// gxschannelDialog->setup();
// THESE HAVE TO BE CONVERTED TO VEG FORMAT
#if USE_VEG_SERVICE