- Change methods of RsMsgs from "std::string" to "const std::string&"

- Fixed sent messages doesn't get the flag RS_MSG_FLAGS_NEW
- Rework reply and forward message, now the replied or forwarded message gets the state and not the answer itself
- Added RsMsgParentId (with test) to save the parent of the message in draft
- Change methods of MessageComposer from "std::string" to "QString"
- Show image in the message row in MessagesDialog again
- Fixed umlauts in recommended files in MessageComposer
- Renamed tab "Live Chat" in "Group Chat"
- Fixed german translation

recompile of the GUI needed

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3741 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2010-11-02 21:11:11 +00:00
parent 935903287d
commit 3c65283f8f
22 changed files with 820 additions and 382 deletions

View file

@ -1102,12 +1102,146 @@ RsMsgSrcId* RsMsgSerialiser::deserialiseMsgSrcIdItem(void* data, uint32_t* pktsi
}
/************************* end of definition of msgSrcId serialisation functions ************************/
/************************************** Message ParentId **********************/
RsMsgParentId::~RsMsgParentId()
{
return;
}
std::ostream& RsMsgParentId::print(std::ostream& out, uint16_t indent)
{
printRsItemBase(out, "RsMsgParentIdItem", indent);
uint16_t int_Indent = indent + 2;
printIndent(out, int_Indent);
out << "msgId : " << msgId << std::endl;
printIndent(out, int_Indent);
out << "msgParentId: " << msgParentId << std::endl;
printRsItemEnd(out, "RsMsgParentId", indent);
return out;
}
void RsMsgParentId::clear()
{
msgId = 0;
msgParentId = 0;
return;
}
uint32_t RsMsgSerialiser::sizeMsgParentIdItem(RsMsgParentId* item)
{
uint32_t s = 8; /* header */
s += 4; // srcId
s += 4; // msgParentId
return s;
}
bool RsMsgSerialiser::serialiseMsgParentIdItem(RsMsgParentId *item, void *data, uint32_t* pktsize)
{
uint32_t tlvsize = sizeMsgParentIdItem(item);
uint32_t offset = 0;
if (*pktsize < tlvsize)
return false; /* not enough space */
*pktsize = tlvsize;
bool ok = true;
ok &= setRsItemHeader(data, tlvsize, item->PacketId(), tlvsize);
#ifdef RSSERIAL_DEBUG
std::cerr << "RsMsgSerialiser::serialiseMsgParentIdItem() Header: " << ok << std::endl;
std::cerr << "RsMsgSerialiser::serialiseMsgParentIdItem() Size: " << tlvsize << std::endl;
#endif
/* skip the header */
offset += 8;
ok &= setRawUInt32(data, tlvsize, &offset, item->msgId);
ok &= setRawUInt32(data, tlvsize, &offset, item->msgParentId);
if (offset != tlvsize)
{
ok = false;
#ifdef RSSERIAL_DEBUG
std::cerr << "RsMsgSerialiser::serialiseMsgParentIdItem() Size Error! " << std::endl;
#endif
}
return ok;
}
RsMsgParentId* RsMsgSerialiser::deserialiseMsgParentIdItem(void* data, uint32_t* pktsize)
{
/* get the type and size */
uint32_t rstype = getRsItemId(data);
uint32_t rssize = getRsItemSize(data);
uint32_t offset = 0;
if ((RS_PKT_VERSION_SERVICE != getRsItemVersion(rstype)) ||
(RS_SERVICE_TYPE_MSG != getRsItemService(rstype)) ||
(RS_PKT_SUBTYPE_MSG_PARENT_TAG != getRsItemSubType(rstype)))
{
return NULL; /* wrong type */
}
if (*pktsize < rssize) /* check size */
return NULL; /* not enough data */
/* set the packet length */
*pktsize = rssize;
bool ok = true;
/* ready to load */
RsMsgParentId *item = new RsMsgParentId();
item->clear();
/* skip the header */
offset += 8;
/* get mandatory parts first */
ok &= getRawUInt32(data, rssize, &offset, &(item->msgId));
ok &= getRawUInt32(data, rssize, &offset, &(item->msgParentId));
if (offset != rssize)
{
/* error */
delete item;
return NULL;
}
if (!ok)
{
delete item;
return NULL;
}
return item;
}
/************************* end of definition of msgParentId serialisation functions ************************/
uint32_t RsMsgSerialiser::size(RsItem *i)
{
RsMsgItem *mi;
RsMsgTagType *mtt;
RsMsgTags *mts;
RsMsgSrcId *msi;
RsMsgParentId *msp;
/* in order of frequency */
if (NULL != (mi = dynamic_cast<RsMsgItem *>(i)))
@ -1118,6 +1252,10 @@ uint32_t RsMsgSerialiser::size(RsItem *i)
{
return sizeMsgSrcIdItem(msi);
}
else if (NULL != (msp = dynamic_cast<RsMsgParentId *>(i)))
{
return sizeMsgParentIdItem(msp);
}
else if (NULL != (mtt = dynamic_cast<RsMsgTagType *>(i)))
{
return sizeTagItem(mtt);
@ -1138,6 +1276,7 @@ bool RsMsgSerialiser::serialise(RsItem *i, void *data, uint32_t *pktsize)
RsMsgItem *mi;
RsMsgSrcId* msi;
RsMsgParentId* msp;
RsMsgTagType *mtt;
RsMsgTags *mts;
@ -1150,6 +1289,10 @@ bool RsMsgSerialiser::serialise(RsItem *i, void *data, uint32_t *pktsize)
{
return serialiseMsgSrcIdItem(msi, data, pktsize);
}
else if (NULL != (msp = dynamic_cast<RsMsgParentId *>(i)))
{
return serialiseMsgParentIdItem(msp, data, pktsize);
}
else if (NULL != (mtt = dynamic_cast<RsMsgTagType *>(i)))
{
return serialiseTagItem(mtt, data, pktsize);
@ -1185,6 +1328,9 @@ RsItem* RsMsgSerialiser::deserialise(void *data, uint32_t *pktsize)
case RS_PKT_SUBTYPE_MSG_SRC_TAG:
return deserialiseMsgSrcIdItem(data, pktsize);
break;
case RS_PKT_SUBTYPE_MSG_PARENT_TAG:
return deserialiseMsgParentIdItem(data, pktsize);
break;
case RS_PKT_SUBTYPE_MSG_TAG_TYPE:
return deserialiseTagItem(data, pktsize);
break;