mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-01-12 16:09:37 -05:00
Receiving a shared key:
- Added notify of the group id and the refresh of the gui - Added system message (create of message disabled) - Added possibility to show a news feed item git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7926 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
961641c186
commit
8351510841
@ -1007,7 +1007,7 @@ void RsGenExchange::receiveChanges(std::vector<RsGxsNotify*>& changes)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#warning cyril: very weird code. Why delete an element without removing it from the array??
|
#warning cyril: very weird code. Why delete an element without removing it from the array
|
||||||
delete n;
|
delete n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1508,6 +1508,14 @@ void RsGenExchange::notifyNewMessages(std::vector<RsNxsMsg *>& messages)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RsGenExchange::notifyReceivePublishKey(const RsGxsGroupId &grpId)
|
||||||
|
{
|
||||||
|
RS_STACK_MUTEX(mGenMtx);
|
||||||
|
|
||||||
|
RsGxsGroupChange* gc = new RsGxsGroupChange(RsGxsNotify::TYPE_PUBLISHKEY, false);
|
||||||
|
gc->mGrpIdList.push_back(grpId);
|
||||||
|
mNotifications.push_back(gc);
|
||||||
|
}
|
||||||
|
|
||||||
void RsGenExchange::publishGroup(uint32_t& token, RsGxsGrpItem *grpItem)
|
void RsGenExchange::publishGroup(uint32_t& token, RsGxsGrpItem *grpItem)
|
||||||
{
|
{
|
||||||
|
@ -144,12 +144,17 @@ public:
|
|||||||
/*!
|
/*!
|
||||||
* @param messages messages are deleted after function returns
|
* @param messages messages are deleted after function returns
|
||||||
*/
|
*/
|
||||||
void notifyNewMessages(std::vector<RsNxsMsg*>& messages);
|
virtual void notifyNewMessages(std::vector<RsNxsMsg*>& messages);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @param messages messages are deleted after function returns
|
* @param groups groups are deleted after function returns
|
||||||
*/
|
*/
|
||||||
void notifyNewGroups(std::vector<RsNxsGrp*>& groups);
|
virtual void notifyNewGroups(std::vector<RsNxsGrp*>& groups);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @param grpId group id
|
||||||
|
*/
|
||||||
|
virtual void notifyReceivePublishKey(const RsGxsGroupId &grpId);
|
||||||
|
|
||||||
/** E: Observer implementation **/
|
/** E: Observer implementation **/
|
||||||
|
|
||||||
|
@ -3428,11 +3428,15 @@ void RsGxsNetService::handleRecvPublishKeys(RsNxsGroupPublishKeyItem *item)
|
|||||||
it->second = item->key ;
|
it->second = item->key ;
|
||||||
bool ret = mDataStore->updateGroupKeys(item->grpId,grpMeta->keys, grpMeta->mSubscribeFlags | GXS_SERV::GROUP_SUBSCRIBE_PUBLISH) ;
|
bool ret = mDataStore->updateGroupKeys(item->grpId,grpMeta->keys, grpMeta->mSubscribeFlags | GXS_SERV::GROUP_SUBSCRIBE_PUBLISH) ;
|
||||||
|
|
||||||
if(!ret)
|
if(ret)
|
||||||
std::cerr << "(EE) could not update database. Something went wrong." << std::endl;
|
{
|
||||||
#ifdef NXS_NET_DEBUG
|
#ifdef NXS_NET_DEBUG
|
||||||
else
|
std::cerr << " updated database with new publish keys." << std::endl;
|
||||||
std::cerr << " updated database with new publish keys." << std::endl;
|
|
||||||
#endif
|
#endif
|
||||||
|
mObserver->notifyReceivePublishKey(item->grpId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cerr << "(EE) could not update database. Something went wrong." << std::endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,12 +45,14 @@ public:
|
|||||||
virtual void notifyNewMessages(std::vector<RsNxsMsg*>& messages) = 0;
|
virtual void notifyNewMessages(std::vector<RsNxsMsg*>& messages) = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @param messages messages are deleted after function returns
|
* @param groups groups are deleted after function returns
|
||||||
*/
|
*/
|
||||||
virtual void notifyNewGroups(std::vector<RsNxsGrp*>& groups) = 0;
|
virtual void notifyNewGroups(std::vector<RsNxsGrp*>& groups) = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @param grpId group id
|
||||||
|
*/
|
||||||
|
virtual void notifyReceivePublishKey(const RsGxsGroupId &grpId) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // RSNXSOBSERVER_H
|
#endif // RSNXSOBSERVER_H
|
||||||
|
@ -22,7 +22,7 @@ class RsGxsNotify
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
enum NotifyType { TYPE_PUBLISH, TYPE_RECEIVE, TYPE_PROCESSED };
|
enum NotifyType { TYPE_PUBLISH, TYPE_RECEIVE, TYPE_PROCESSED, TYPE_PUBLISHKEY };
|
||||||
|
|
||||||
virtual ~RsGxsNotify() {return; }
|
virtual ~RsGxsNotify() {return; }
|
||||||
virtual NotifyType getType() = 0;
|
virtual NotifyType getType() = 0;
|
||||||
|
@ -59,12 +59,14 @@
|
|||||||
// system message
|
// system message
|
||||||
#define RS_MSG_USER_REQUEST 0x000400 /* user request */
|
#define RS_MSG_USER_REQUEST 0x000400 /* user request */
|
||||||
#define RS_MSG_FRIEND_RECOMMENDATION 0x000800 /* friend recommendation */
|
#define RS_MSG_FRIEND_RECOMMENDATION 0x000800 /* friend recommendation */
|
||||||
#define RS_MSG_SYSTEM (RS_MSG_USER_REQUEST | RS_MSG_FRIEND_RECOMMENDATION)
|
|
||||||
#define RS_MSG_ENCRYPTED 0x001000 /* message is encrypted */
|
#define RS_MSG_ENCRYPTED 0x001000 /* message is encrypted */
|
||||||
#define RS_MSG_SIGNATURE_CHECKS 0x002000 /* message was signed, and signature checked */
|
#define RS_MSG_SIGNATURE_CHECKS 0x002000 /* message was signed, and signature checked */
|
||||||
#define RS_MSG_SIGNED 0x004000 /* message was signed and signature didn't check */
|
#define RS_MSG_SIGNED 0x004000 /* message was signed and signature didn't check */
|
||||||
#define RS_MSG_LOAD_EMBEDDED_IMAGES 0x008000 /* load embedded images */
|
#define RS_MSG_LOAD_EMBEDDED_IMAGES 0x008000 /* load embedded images */
|
||||||
#define RS_MSG_DECRYPTED 0x010000 /* message was previously encrypted, and is now decrypted */
|
#define RS_MSG_DECRYPTED 0x010000 /* message was previously encrypted, and is now decrypted */
|
||||||
|
#define RS_MSG_PUBLISH_KEY 0x020000 /* publish key */
|
||||||
|
|
||||||
|
#define RS_MSG_SYSTEM (RS_MSG_USER_REQUEST | RS_MSG_FRIEND_RECOMMENDATION | RS_MSG_PUBLISH_KEY)
|
||||||
|
|
||||||
#define RS_CHAT_LOBBY_EVENT_PEER_LEFT 0x01
|
#define RS_CHAT_LOBBY_EVENT_PEER_LEFT 0x01
|
||||||
#define RS_CHAT_LOBBY_EVENT_PEER_STATUS 0x02
|
#define RS_CHAT_LOBBY_EVENT_PEER_STATUS 0x02
|
||||||
|
@ -92,10 +92,12 @@ const uint32_t RS_FEED_ITEM_SEC_MISSING_CERTIFICATE = RS_FEED_TYPE_SECURITY | 0
|
|||||||
const uint32_t RS_FEED_ITEM_CHANNEL_NEW = RS_FEED_TYPE_CHANNEL | 0x0001;
|
const uint32_t RS_FEED_ITEM_CHANNEL_NEW = RS_FEED_TYPE_CHANNEL | 0x0001;
|
||||||
//const uint32_t RS_FEED_ITEM_CHANNEL_UPDATE = RS_FEED_TYPE_CHANNEL | 0x0002;
|
//const uint32_t RS_FEED_ITEM_CHANNEL_UPDATE = RS_FEED_TYPE_CHANNEL | 0x0002;
|
||||||
const uint32_t RS_FEED_ITEM_CHANNEL_MSG = RS_FEED_TYPE_CHANNEL | 0x0003;
|
const uint32_t RS_FEED_ITEM_CHANNEL_MSG = RS_FEED_TYPE_CHANNEL | 0x0003;
|
||||||
|
const uint32_t RS_FEED_ITEM_CHANNEL_PUBLISHKEY = RS_FEED_TYPE_CHANNEL | 0x0004;
|
||||||
|
|
||||||
const uint32_t RS_FEED_ITEM_FORUM_NEW = RS_FEED_TYPE_FORUM | 0x0001;
|
const uint32_t RS_FEED_ITEM_FORUM_NEW = RS_FEED_TYPE_FORUM | 0x0001;
|
||||||
//const uint32_t RS_FEED_ITEM_FORUM_UPDATE = RS_FEED_TYPE_FORUM | 0x0002;
|
//const uint32_t RS_FEED_ITEM_FORUM_UPDATE = RS_FEED_TYPE_FORUM | 0x0002;
|
||||||
const uint32_t RS_FEED_ITEM_FORUM_MSG = RS_FEED_TYPE_FORUM | 0x0003;
|
const uint32_t RS_FEED_ITEM_FORUM_MSG = RS_FEED_TYPE_FORUM | 0x0003;
|
||||||
|
const uint32_t RS_FEED_ITEM_FORUM_PUBLISHKEY = RS_FEED_TYPE_FORUM | 0x0004;
|
||||||
|
|
||||||
//const uint32_t RS_FEED_ITEM_BLOG_NEW = RS_FEED_TYPE_BLOG | 0x0001;
|
//const uint32_t RS_FEED_ITEM_BLOG_NEW = RS_FEED_TYPE_BLOG | 0x0001;
|
||||||
//const uint32_t RS_FEED_ITEM_BLOG_UPDATE = RS_FEED_TYPE_BLOG | 0x0002;
|
//const uint32_t RS_FEED_ITEM_BLOG_UPDATE = RS_FEED_TYPE_BLOG | 0x0002;
|
||||||
|
@ -65,7 +65,6 @@ const uint32_t RS_MSG_FLAGS_STAR = 0x00000200;
|
|||||||
const uint32_t RS_MSG_FLAGS_PARTIAL = 0x00000400;
|
const uint32_t RS_MSG_FLAGS_PARTIAL = 0x00000400;
|
||||||
const uint32_t RS_MSG_FLAGS_USER_REQUEST = 0x00000800;
|
const uint32_t RS_MSG_FLAGS_USER_REQUEST = 0x00000800;
|
||||||
const uint32_t RS_MSG_FLAGS_FRIEND_RECOMMENDATION = 0x00001000;
|
const uint32_t RS_MSG_FLAGS_FRIEND_RECOMMENDATION = 0x00001000;
|
||||||
const uint32_t RS_MSG_FLAGS_SYSTEM = RS_MSG_FLAGS_USER_REQUEST | RS_MSG_FLAGS_FRIEND_RECOMMENDATION;
|
|
||||||
const uint32_t RS_MSG_FLAGS_RETURN_RECEPT = 0x00002000;
|
const uint32_t RS_MSG_FLAGS_RETURN_RECEPT = 0x00002000;
|
||||||
const uint32_t RS_MSG_FLAGS_ENCRYPTED = 0x00004000;
|
const uint32_t RS_MSG_FLAGS_ENCRYPTED = 0x00004000;
|
||||||
const uint32_t RS_MSG_FLAGS_DISTANT = 0x00008000;
|
const uint32_t RS_MSG_FLAGS_DISTANT = 0x00008000;
|
||||||
@ -74,6 +73,9 @@ const uint32_t RS_MSG_FLAGS_SIGNED = 0x00020000;
|
|||||||
const uint32_t RS_MSG_FLAGS_LOAD_EMBEDDED_IMAGES = 0x00040000;
|
const uint32_t RS_MSG_FLAGS_LOAD_EMBEDDED_IMAGES = 0x00040000;
|
||||||
const uint32_t RS_MSG_FLAGS_DECRYPTED = 0x00080000;
|
const uint32_t RS_MSG_FLAGS_DECRYPTED = 0x00080000;
|
||||||
const uint32_t RS_MSG_FLAGS_ROUTED = 0x00100000;
|
const uint32_t RS_MSG_FLAGS_ROUTED = 0x00100000;
|
||||||
|
const uint32_t RS_MSG_FLAGS_PUBLISH_KEY = 0x00200000;
|
||||||
|
|
||||||
|
const uint32_t RS_MSG_FLAGS_SYSTEM = RS_MSG_FLAGS_USER_REQUEST | RS_MSG_FLAGS_FRIEND_RECOMMENDATION | RS_MSG_FLAGS_PUBLISH_KEY;
|
||||||
|
|
||||||
class RsMessageItem: public RsItem
|
class RsMessageItem: public RsItem
|
||||||
{
|
{
|
||||||
|
@ -197,17 +197,38 @@ void p3GxsChannels::notifyChanges(std::vector<RsGxsNotify *> &changes)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (notify && (*it)->getType() == RsGxsNotify::TYPE_RECEIVE)
|
if (notify)
|
||||||
{
|
{
|
||||||
RsGxsGroupChange *grpChange = dynamic_cast<RsGxsGroupChange *>(*it);
|
RsGxsGroupChange *grpChange = dynamic_cast<RsGxsGroupChange*>(*it);
|
||||||
if (grpChange)
|
if (grpChange)
|
||||||
{
|
{
|
||||||
/* group received */
|
switch (grpChange->getType())
|
||||||
std::list<RsGxsGroupId> &grpList = grpChange->mGrpIdList;
|
|
||||||
std::list<RsGxsGroupId>::iterator git;
|
|
||||||
for (git = grpList.begin(); git != grpList.end(); ++git)
|
|
||||||
{
|
{
|
||||||
notify->AddFeedItem(RS_FEED_ITEM_CHANNEL_NEW, git->toStdString());
|
case RsGxsNotify::TYPE_PROCESSED:
|
||||||
|
case RsGxsNotify::TYPE_PUBLISH:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RsGxsNotify::TYPE_RECEIVE:
|
||||||
|
{
|
||||||
|
/* group received */
|
||||||
|
std::list<RsGxsGroupId> &grpList = grpChange->mGrpIdList;
|
||||||
|
std::list<RsGxsGroupId>::iterator git;
|
||||||
|
for (git = grpList.begin(); git != grpList.end(); ++git)
|
||||||
|
{
|
||||||
|
notify->AddFeedItem(RS_FEED_ITEM_CHANNEL_NEW, git->toStdString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case RsGxsNotify::TYPE_PUBLISHKEY:
|
||||||
|
{
|
||||||
|
/* group received */
|
||||||
|
std::list<RsGxsGroupId> &grpList = grpChange->mGrpIdList;
|
||||||
|
std::list<RsGxsGroupId>::iterator git;
|
||||||
|
for (git = grpList.begin(); git != grpList.end(); ++git)
|
||||||
|
{
|
||||||
|
notify->AddFeedItem(RS_FEED_ITEM_CHANNEL_PUBLISHKEY, git->toStdString());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,35 +110,59 @@ void p3GxsForums::notifyChanges(std::vector<RsGxsNotify *> &changes)
|
|||||||
for(it = changes.begin(); it != changes.end(); ++it)
|
for(it = changes.begin(); it != changes.end(); ++it)
|
||||||
{
|
{
|
||||||
RsGxsNotify *c = *it;
|
RsGxsNotify *c = *it;
|
||||||
if (c->getType() == RsGxsNotify::TYPE_RECEIVE)
|
|
||||||
|
switch (c->getType())
|
||||||
{
|
{
|
||||||
RsGxsMsgChange *msgChange = dynamic_cast<RsGxsMsgChange*>(c);
|
case RsGxsNotify::TYPE_PROCESSED:
|
||||||
if (msgChange)
|
case RsGxsNotify::TYPE_PUBLISH:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RsGxsNotify::TYPE_RECEIVE:
|
||||||
{
|
{
|
||||||
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > &msgChangeMap = msgChange->msgChangeMap;
|
RsGxsMsgChange *msgChange = dynamic_cast<RsGxsMsgChange*>(c);
|
||||||
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> >::iterator mit;
|
if (msgChange)
|
||||||
for (mit = msgChangeMap.begin(); mit != msgChangeMap.end(); ++mit)
|
|
||||||
{
|
{
|
||||||
std::vector<RsGxsMessageId>::iterator mit1;
|
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > &msgChangeMap = msgChange->msgChangeMap;
|
||||||
for (mit1 = mit->second.begin(); mit1 != mit->second.end(); ++mit1)
|
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> >::iterator mit;
|
||||||
|
for (mit = msgChangeMap.begin(); mit != msgChangeMap.end(); ++mit)
|
||||||
{
|
{
|
||||||
notify->AddFeedItem(RS_FEED_ITEM_FORUM_MSG, mit->first.toStdString(), mit1->toStdString());
|
std::vector<RsGxsMessageId>::iterator mit1;
|
||||||
|
for (mit1 = mit->second.begin(); mit1 != mit->second.end(); ++mit1)
|
||||||
|
{
|
||||||
|
notify->AddFeedItem(RS_FEED_ITEM_FORUM_MSG, mit->first.toStdString(), mit1->toStdString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
RsGxsGroupChange *grpChange = dynamic_cast<RsGxsGroupChange *>(*it);
|
||||||
|
if (grpChange)
|
||||||
|
{
|
||||||
|
/* group received */
|
||||||
|
std::list<RsGxsGroupId> &grpList = grpChange->mGrpIdList;
|
||||||
|
std::list<RsGxsGroupId>::iterator git;
|
||||||
|
for (git = grpList.begin(); git != grpList.end(); ++git)
|
||||||
|
{
|
||||||
|
notify->AddFeedItem(RS_FEED_ITEM_FORUM_NEW, git->toStdString());
|
||||||
|
}
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RsGxsGroupChange *grpChange = dynamic_cast<RsGxsGroupChange *>(*it);
|
case RsGxsNotify::TYPE_PUBLISHKEY:
|
||||||
if (grpChange)
|
|
||||||
{
|
{
|
||||||
/* group received */
|
RsGxsGroupChange *grpChange = dynamic_cast<RsGxsGroupChange *>(*it);
|
||||||
std::list<RsGxsGroupId> &grpList = grpChange->mGrpIdList;
|
if (grpChange)
|
||||||
std::list<RsGxsGroupId>::iterator git;
|
|
||||||
for (git = grpList.begin(); git != grpList.end(); ++git)
|
|
||||||
{
|
{
|
||||||
notify->AddFeedItem(RS_FEED_ITEM_FORUM_NEW, git->toStdString());
|
/* group received */
|
||||||
|
std::list<RsGxsGroupId> &grpList = grpChange->mGrpIdList;
|
||||||
|
std::list<RsGxsGroupId>::iterator git;
|
||||||
|
for (git = grpList.begin(); git != grpList.end(); ++git)
|
||||||
|
{
|
||||||
|
notify->AddFeedItem(RS_FEED_ITEM_FORUM_PUBLISHKEY, git->toStdString());
|
||||||
|
}
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1087,6 +1087,9 @@ bool p3MsgService::SystemMessage(const std::string &title, const std::string &me
|
|||||||
if (systemFlag & RS_MSG_FRIEND_RECOMMENDATION) {
|
if (systemFlag & RS_MSG_FRIEND_RECOMMENDATION) {
|
||||||
msg->msgFlags |= RS_MSG_FLAGS_FRIEND_RECOMMENDATION;
|
msg->msgFlags |= RS_MSG_FLAGS_FRIEND_RECOMMENDATION;
|
||||||
}
|
}
|
||||||
|
if (systemFlag & RS_MSG_PUBLISH_KEY) {
|
||||||
|
msg->msgFlags |= RS_MSG_FLAGS_PUBLISH_KEY;
|
||||||
|
}
|
||||||
|
|
||||||
msg->msgId = 0;
|
msg->msgId = 0;
|
||||||
msg->sendTime = time(NULL);
|
msg->sendTime = time(NULL);
|
||||||
@ -1486,6 +1489,7 @@ void p3MsgService::initRsMI(RsMsgItem *msg, MessageInfo &mi)
|
|||||||
if (msg->msgFlags & RS_MSG_FLAGS_STAR) mi.msgflags |= RS_MSG_STAR;
|
if (msg->msgFlags & RS_MSG_FLAGS_STAR) mi.msgflags |= RS_MSG_STAR;
|
||||||
if (msg->msgFlags & RS_MSG_FLAGS_USER_REQUEST) mi.msgflags |= RS_MSG_USER_REQUEST;
|
if (msg->msgFlags & RS_MSG_FLAGS_USER_REQUEST) mi.msgflags |= RS_MSG_USER_REQUEST;
|
||||||
if (msg->msgFlags & RS_MSG_FLAGS_FRIEND_RECOMMENDATION) mi.msgflags |= RS_MSG_FRIEND_RECOMMENDATION;
|
if (msg->msgFlags & RS_MSG_FLAGS_FRIEND_RECOMMENDATION) mi.msgflags |= RS_MSG_FRIEND_RECOMMENDATION;
|
||||||
|
if (msg->msgFlags & RS_MSG_FLAGS_PUBLISH_KEY) mi.msgflags |= RS_MSG_PUBLISH_KEY;
|
||||||
if (msg->msgFlags & RS_MSG_FLAGS_LOAD_EMBEDDED_IMAGES) mi.msgflags |= RS_MSG_LOAD_EMBEDDED_IMAGES;
|
if (msg->msgFlags & RS_MSG_FLAGS_LOAD_EMBEDDED_IMAGES) mi.msgflags |= RS_MSG_LOAD_EMBEDDED_IMAGES;
|
||||||
|
|
||||||
mi.ts = msg->sendTime;
|
mi.ts = msg->sendTime;
|
||||||
@ -1584,6 +1588,10 @@ void p3MsgService::initRsMIS(RsMsgItem *msg, MsgInfoSummary &mis)
|
|||||||
{
|
{
|
||||||
mis.msgflags |= RS_MSG_FRIEND_RECOMMENDATION;
|
mis.msgflags |= RS_MSG_FRIEND_RECOMMENDATION;
|
||||||
}
|
}
|
||||||
|
if (msg->msgFlags & RS_MSG_FLAGS_PUBLISH_KEY)
|
||||||
|
{
|
||||||
|
mis.msgflags |= RS_MSG_PUBLISH_KEY;
|
||||||
|
}
|
||||||
if (msg->msgFlags & RS_MSG_FLAGS_LOAD_EMBEDDED_IMAGES)
|
if (msg->msgFlags & RS_MSG_FLAGS_LOAD_EMBEDDED_IMAGES)
|
||||||
{
|
{
|
||||||
mis.msgflags |= RS_MSG_LOAD_EMBEDDED_IMAGES;
|
mis.msgflags |= RS_MSG_LOAD_EMBEDDED_IMAGES;
|
||||||
|
@ -783,6 +783,8 @@ static void InitIconAndFont(QTreeWidgetItem *item)
|
|||||||
item->setIcon(COLUMN_SUBJECT, QIcon(":/images/user/user_request16.png"));
|
item->setIcon(COLUMN_SUBJECT, QIcon(":/images/user/user_request16.png"));
|
||||||
} else if (msgFlags & RS_MSG_FRIEND_RECOMMENDATION) {
|
} else if (msgFlags & RS_MSG_FRIEND_RECOMMENDATION) {
|
||||||
item->setIcon(COLUMN_SUBJECT, QIcon(":/images/user/friend_suggestion16.png"));
|
item->setIcon(COLUMN_SUBJECT, QIcon(":/images/user/friend_suggestion16.png"));
|
||||||
|
} else if (msgFlags & RS_MSG_PUBLISH_KEY) {
|
||||||
|
item->setIcon(COLUMN_SUBJECT, QIcon(":/images/share-icon-16.png"));
|
||||||
} else if (msgFlags & RS_MSG_UNREAD_BY_USER) {
|
} else if (msgFlags & RS_MSG_UNREAD_BY_USER) {
|
||||||
if ((msgFlags & (RS_MSG_REPLIED | RS_MSG_FORWARDED)) == RS_MSG_REPLIED) {
|
if ((msgFlags & (RS_MSG_REPLIED | RS_MSG_FORWARDED)) == RS_MSG_REPLIED) {
|
||||||
item->setIcon(COLUMN_SUBJECT, QIcon(":/images/message-mail-replied.png"));
|
item->setIcon(COLUMN_SUBJECT, QIcon(":/images/message-mail-replied.png"));
|
||||||
|
@ -79,8 +79,9 @@ const uint32_t NEWSFEED_POSTEDMSGLIST = 0x000c;
|
|||||||
|
|
||||||
#define ROLE_RECEIVED FEED_TREEWIDGET_SORTROLE
|
#define ROLE_RECEIVED FEED_TREEWIDGET_SORTROLE
|
||||||
|
|
||||||
#define TOKEN_TYPE_GROUP 1
|
#define TOKEN_TYPE_GROUP 1
|
||||||
#define TOKEN_TYPE_MESSAGE 2
|
#define TOKEN_TYPE_MESSAGE 2
|
||||||
|
#define TOKEN_TYPE_PUBLISHKEY 3
|
||||||
|
|
||||||
/*****
|
/*****
|
||||||
* #define NEWS_DEBUG 1
|
* #define NEWS_DEBUG 1
|
||||||
@ -255,6 +256,27 @@ void NewsFeed::updateDisplay()
|
|||||||
if (flags & RS_FEED_TYPE_CHANNEL)
|
if (flags & RS_FEED_TYPE_CHANNEL)
|
||||||
addFeedItemChannelMsg(fi);
|
addFeedItemChannelMsg(fi);
|
||||||
break;
|
break;
|
||||||
|
case RS_FEED_ITEM_CHANNEL_PUBLISHKEY:
|
||||||
|
{
|
||||||
|
if (!mTokenQueueChannel) {
|
||||||
|
mTokenQueueChannel = new TokenQueue(rsGxsChannels->getTokenService(), instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
RsGxsGroupId grpId(fi.mId1);
|
||||||
|
if (!grpId.isNull()) {
|
||||||
|
RsTokReqOptions opts;
|
||||||
|
opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA;
|
||||||
|
|
||||||
|
std::list<RsGxsGroupId> grpIds;
|
||||||
|
grpIds.push_back(grpId);
|
||||||
|
|
||||||
|
uint32_t token;
|
||||||
|
mTokenQueueChannel->requestGroupInfo(token, RS_TOKREQ_ANSTYPE_SUMMARY, opts, grpIds, TOKEN_TYPE_PUBLISHKEY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if (flags & RS_FEED_TYPE_CHANNEL)
|
||||||
|
// addFeedItemChannelPublishKey(fi);
|
||||||
|
break;
|
||||||
|
|
||||||
case RS_FEED_ITEM_FORUM_NEW:
|
case RS_FEED_ITEM_FORUM_NEW:
|
||||||
if (flags & RS_FEED_TYPE_FORUM)
|
if (flags & RS_FEED_TYPE_FORUM)
|
||||||
@ -268,6 +290,27 @@ void NewsFeed::updateDisplay()
|
|||||||
if (flags & RS_FEED_TYPE_FORUM)
|
if (flags & RS_FEED_TYPE_FORUM)
|
||||||
addFeedItemForumMsg(fi);
|
addFeedItemForumMsg(fi);
|
||||||
break;
|
break;
|
||||||
|
case RS_FEED_ITEM_FORUM_PUBLISHKEY:
|
||||||
|
{
|
||||||
|
if (!mTokenQueueForum) {
|
||||||
|
mTokenQueueForum = new TokenQueue(rsGxsForums->getTokenService(), instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
RsGxsGroupId grpId(fi.mId1);
|
||||||
|
if (!grpId.isNull()) {
|
||||||
|
RsTokReqOptions opts;
|
||||||
|
opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA;
|
||||||
|
|
||||||
|
std::list<RsGxsGroupId> grpIds;
|
||||||
|
grpIds.push_back(grpId);
|
||||||
|
|
||||||
|
uint32_t token;
|
||||||
|
mTokenQueueForum->requestGroupInfo(token, RS_TOKREQ_ANSTYPE_SUMMARY, opts, grpIds, TOKEN_TYPE_PUBLISHKEY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if (flags & RS_FEED_TYPE_FORUM)
|
||||||
|
// addFeedItemForumPublishKey(fi);
|
||||||
|
break;
|
||||||
|
|
||||||
case RS_FEED_ITEM_POSTED_NEW:
|
case RS_FEED_ITEM_POSTED_NEW:
|
||||||
if (flags & RS_FEED_TYPE_POSTED)
|
if (flags & RS_FEED_TYPE_POSTED)
|
||||||
@ -537,6 +580,25 @@ void NewsFeed::loadChannelPost(const uint32_t &token)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NewsFeed::loadChannelPublishKey(const uint32_t &token)
|
||||||
|
{
|
||||||
|
std::vector<RsGxsChannelGroup> groups;
|
||||||
|
if (!rsGxsChannels->getGroupData(token, groups)) {
|
||||||
|
std::cerr << "NewsFeed::loadChannelPublishKey() ERROR getting data";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (groups.size() != 1)
|
||||||
|
{
|
||||||
|
std::cerr << "NewsFeed::loadChannelPublishKey() Wrong number of Items";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageComposer::sendChannelPublishKey(groups[0]);
|
||||||
|
}
|
||||||
|
|
||||||
void NewsFeed::loadForumGroup(const uint32_t &token)
|
void NewsFeed::loadForumGroup(const uint32_t &token)
|
||||||
{
|
{
|
||||||
std::vector<RsGxsForumGroup> forums;
|
std::vector<RsGxsForumGroup> forums;
|
||||||
@ -611,6 +673,25 @@ void NewsFeed::loadForumMessage(const uint32_t &token)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NewsFeed::loadForumPublishKey(const uint32_t &token)
|
||||||
|
{
|
||||||
|
std::vector<RsGxsForumGroup> groups;
|
||||||
|
if (!rsGxsForums->getGroupData(token, groups)) {
|
||||||
|
std::cerr << "NewsFeed::loadForumPublishKey() ERROR getting data";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (groups.size() != 1)
|
||||||
|
{
|
||||||
|
std::cerr << "NewsFeed::loadForumPublishKey() Wrong number of Items";
|
||||||
|
std::cerr << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageComposer::sendForumPublishKey(groups[0]);
|
||||||
|
}
|
||||||
|
|
||||||
void NewsFeed::loadPostedGroup(const uint32_t &token)
|
void NewsFeed::loadPostedGroup(const uint32_t &token)
|
||||||
{
|
{
|
||||||
std::vector<RsPostedGroup> posted;
|
std::vector<RsPostedGroup> posted;
|
||||||
@ -697,6 +778,10 @@ void NewsFeed::loadRequest(const TokenQueue *queue, const TokenRequest &req)
|
|||||||
loadChannelPost(req.mToken);
|
loadChannelPost(req.mToken);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case TOKEN_TYPE_PUBLISHKEY:
|
||||||
|
loadChannelPublishKey(req.mToken);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
std::cerr << "NewsFeed::loadRequest() ERROR: INVALID TYPE";
|
std::cerr << "NewsFeed::loadRequest() ERROR: INVALID TYPE";
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
@ -714,6 +799,10 @@ void NewsFeed::loadRequest(const TokenQueue *queue, const TokenRequest &req)
|
|||||||
loadForumMessage(req.mToken);
|
loadForumMessage(req.mToken);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case TOKEN_TYPE_PUBLISHKEY:
|
||||||
|
loadForumPublishKey(req.mToken);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
std::cerr << "NewsFeed::loadRequest() ERROR: INVALID TYPE";
|
std::cerr << "NewsFeed::loadRequest() ERROR: INVALID TYPE";
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
@ -118,9 +118,11 @@ private:
|
|||||||
|
|
||||||
virtual void loadChannelGroup(const uint32_t &token);
|
virtual void loadChannelGroup(const uint32_t &token);
|
||||||
virtual void loadChannelPost(const uint32_t &token);
|
virtual void loadChannelPost(const uint32_t &token);
|
||||||
|
virtual void loadChannelPublishKey(const uint32_t &token);
|
||||||
|
|
||||||
virtual void loadForumGroup(const uint32_t &token);
|
virtual void loadForumGroup(const uint32_t &token);
|
||||||
virtual void loadForumMessage(const uint32_t &token);
|
virtual void loadForumMessage(const uint32_t &token);
|
||||||
|
virtual void loadForumPublishKey(const uint32_t &token);
|
||||||
|
|
||||||
virtual void loadPostedGroup(const uint32_t &token);
|
virtual void loadPostedGroup(const uint32_t &token);
|
||||||
virtual void loadPostedMessage(const uint32_t &token);
|
virtual void loadPostedMessage(const uint32_t &token);
|
||||||
|
@ -45,6 +45,8 @@
|
|||||||
#include <retroshare/rsstatus.h>
|
#include <retroshare/rsstatus.h>
|
||||||
#include <retroshare/rsfiles.h>
|
#include <retroshare/rsfiles.h>
|
||||||
#include <retroshare/rsidentity.h>
|
#include <retroshare/rsidentity.h>
|
||||||
|
#include <retroshare/rsgxschannels.h>
|
||||||
|
#include <retroshare/rsgxsforums.h>
|
||||||
|
|
||||||
#include "gui/notifyqt.h"
|
#include "gui/notifyqt.h"
|
||||||
#include "gui/common/RSTreeWidgetItem.h"
|
#include "gui/common/RSTreeWidgetItem.h"
|
||||||
@ -533,6 +535,38 @@ void MessageComposer::sendConnectAttemptMsg(const RsPgpId &gpgId, const RsPeerId
|
|||||||
rsMsgs->SystemMessage(title.toUtf8().constData(), msgText.toUtf8().constData(), RS_MSG_USER_REQUEST);
|
rsMsgs->SystemMessage(title.toUtf8().constData(), msgText.toUtf8().constData(), RS_MSG_USER_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MessageComposer::sendChannelPublishKey(RsGxsChannelGroup &group)
|
||||||
|
{
|
||||||
|
// QString channelName = QString::fromUtf8(group.mMeta.mGroupName.c_str());
|
||||||
|
|
||||||
|
// RetroShareLink link;
|
||||||
|
// if (!link.createGxsGroupLink(RetroShareLink::TYPE_CHANNEL, group.mMeta.mGroupId, channelName)) {
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// QString title = tr("Publish key for channel %1").arg(channelName);
|
||||||
|
|
||||||
|
// /* create a message */
|
||||||
|
// QString msgText = tr("... %1 ...<br>%2").arg(channelName, link.toHtml());
|
||||||
|
// rsMsgs->SystemMessage(title.toUtf8().constData(), msgText.toUtf8().constData(), RS_MSG_PUBLISH_KEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageComposer::sendForumPublishKey(RsGxsForumGroup &group)
|
||||||
|
{
|
||||||
|
// QString forumName = QString::fromUtf8(group.mMeta.mGroupName.c_str());
|
||||||
|
|
||||||
|
// RetroShareLink link;
|
||||||
|
// if (!link.createGxsGroupLink(RetroShareLink::TYPE_FORUM, group.mMeta.mGroupId, forumName)) {
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// QString title = tr("Publish key for forum %1").arg(forumName);
|
||||||
|
|
||||||
|
// /* create a message */
|
||||||
|
// QString msgText = tr("... %1 ...<br>%2").arg(forumName, link.toHtml());
|
||||||
|
// rsMsgs->SystemMessage(title.toUtf8().constData(), msgText.toUtf8().constData(), RS_MSG_PUBLISH_KEY);
|
||||||
|
}
|
||||||
|
|
||||||
void MessageComposer::closeEvent (QCloseEvent * event)
|
void MessageComposer::closeEvent (QCloseEvent * event)
|
||||||
{
|
{
|
||||||
bool bClose = true;
|
bool bClose = true;
|
||||||
|
@ -34,6 +34,8 @@ class QTextEdit;
|
|||||||
class QTextCharFormat;
|
class QTextCharFormat;
|
||||||
class RSTreeWidgetItemCompareRole;
|
class RSTreeWidgetItemCompareRole;
|
||||||
struct MessageInfo;
|
struct MessageInfo;
|
||||||
|
class RsGxsChannelGroup;
|
||||||
|
class RsGxsForumGroup;
|
||||||
|
|
||||||
class MessageComposer : public QMainWindow
|
class MessageComposer : public QMainWindow
|
||||||
{
|
{
|
||||||
@ -57,6 +59,8 @@ public:
|
|||||||
static QString recommendMessage();
|
static QString recommendMessage();
|
||||||
static void recommendFriend(const std::list <RsPeerId> &sslIds, const RsPeerId &to = RsPeerId(), const QString &msg = "", bool autoSend = false);
|
static void recommendFriend(const std::list <RsPeerId> &sslIds, const RsPeerId &to = RsPeerId(), const QString &msg = "", bool autoSend = false);
|
||||||
static void sendConnectAttemptMsg(const RsPgpId &gpgId, const RsPeerId &sslId, const QString &sslName);
|
static void sendConnectAttemptMsg(const RsPgpId &gpgId, const RsPeerId &sslId, const QString &sslName);
|
||||||
|
static void sendChannelPublishKey(RsGxsChannelGroup &group);
|
||||||
|
static void sendForumPublishKey(RsGxsForumGroup &group);
|
||||||
|
|
||||||
static MessageComposer *newMsg(const std::string &msgId = "");
|
static MessageComposer *newMsg(const std::string &msgId = "");
|
||||||
static MessageComposer *replyMsg(const std::string &msgId, bool all);
|
static MessageComposer *replyMsg(const std::string &msgId, bool all);
|
||||||
|
Loading…
Reference in New Issue
Block a user