mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-02-04 09:05:34 -05:00
added retrieval of search results in UI
This commit is contained in:
parent
6ccc7654d6
commit
e351d7257e
@ -1844,15 +1844,6 @@ uint32_t RsGenExchange::getSyncPeriod(const RsGxsGroupId& grpId)
|
|||||||
return RS_GXS_DEFAULT_MSG_REQ_PERIOD;
|
return RS_GXS_DEFAULT_MSG_REQ_PERIOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RsGenExchange::getDistantSearchResults(const TurtleRequestId& id,std::list<RsGxsGroupSummary>& group_infos)
|
|
||||||
{
|
|
||||||
return (mNetService!=NULL) && mNetService->getDistantSearchResults(id,group_infos) ;
|
|
||||||
}
|
|
||||||
bool RsGenExchange::clearDistantSearchResults(const TurtleRequestId& id)
|
|
||||||
{
|
|
||||||
return (mNetService!=NULL) && mNetService->clearDistantSearchResults(id) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool RsGenExchange::getGroupNetworkStats(const RsGxsGroupId& grpId,RsGroupNetworkStats& stats)
|
bool RsGenExchange::getGroupNetworkStats(const RsGxsGroupId& grpId,RsGroupNetworkStats& stats)
|
||||||
{
|
{
|
||||||
return (!mNetService) || mNetService->getGroupNetworkStats(grpId,stats) ;
|
return (!mNetService) || mNetService->getGroupNetworkStats(grpId,stats) ;
|
||||||
|
@ -121,9 +121,9 @@ public:
|
|||||||
|
|
||||||
virtual ~RsGenExchange();
|
virtual ~RsGenExchange();
|
||||||
|
|
||||||
// Convention that this is implemented here.
|
// Convention that this is implemented here.
|
||||||
// and passes to network service.
|
// and passes to network service.
|
||||||
virtual RsServiceInfo getServiceInfo() = 0;
|
virtual RsServiceInfo getServiceInfo() = 0;
|
||||||
|
|
||||||
void setNetworkExchangeService(RsNetworkExchangeService *ns) ;
|
void setNetworkExchangeService(RsNetworkExchangeService *ns) ;
|
||||||
|
|
||||||
@ -581,7 +581,7 @@ public:
|
|||||||
* @param msgs
|
* @param msgs
|
||||||
*/
|
*/
|
||||||
void deleteMsgs(uint32_t& token, const GxsMsgReq& msgs);
|
void deleteMsgs(uint32_t& token, const GxsMsgReq& msgs);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/*!
|
/*!
|
||||||
* This represents the group before its signature is calculated
|
* This represents the group before its signature is calculated
|
||||||
@ -665,7 +665,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
void shareGroupPublishKey(const RsGxsGroupId& grpId,const std::set<RsPeerId>& peers) ;
|
void shareGroupPublishKey(const RsGxsGroupId& grpId,const std::set<RsPeerId>& peers) ;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns the local TS of the group as known by the network service.
|
* Returns the local TS of the group as known by the network service.
|
||||||
* This is useful to allow various network services to sync their update TS
|
* This is useful to allow various network services to sync their update TS
|
||||||
@ -688,9 +688,6 @@ public:
|
|||||||
virtual void setSyncPeriod(const RsGxsGroupId& grpId,uint32_t age_in_secs) ;
|
virtual void setSyncPeriod(const RsGxsGroupId& grpId,uint32_t age_in_secs) ;
|
||||||
virtual bool getGroupNetworkStats(const RsGxsGroupId& grpId,RsGroupNetworkStats& stats);
|
virtual bool getGroupNetworkStats(const RsGxsGroupId& grpId,RsGroupNetworkStats& stats);
|
||||||
|
|
||||||
virtual bool getDistantSearchResults(const TurtleRequestId& id,std::list<RsGxsGroupSummary>& group_infos) ;
|
|
||||||
virtual bool clearDistantSearchResults(const TurtleRequestId& id);
|
|
||||||
|
|
||||||
uint16_t serviceType() const { return mServType ; }
|
uint16_t serviceType() const { return mServType ; }
|
||||||
uint32_t serviceFullType() const { return ((uint32_t)mServType << 8) + (((uint32_t) RS_PKT_VERSION_SERVICE) << 24); }
|
uint32_t serviceFullType() const { return ((uint32_t)mServType << 8) + (((uint32_t) RS_PKT_VERSION_SERVICE) << 24); }
|
||||||
|
|
||||||
|
@ -5117,6 +5117,25 @@ static bool termSearch(const std::string& src, const std::string& substring)
|
|||||||
/* always ignore case */
|
/* always ignore case */
|
||||||
return src.end() != std::search( src.begin(), src.end(), substring.begin(), substring.end(), RsRegularExpression::CompareCharIC() );
|
return src.end() != std::search( src.begin(), src.end(), substring.begin(), substring.end(), RsRegularExpression::CompareCharIC() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RsGxsNetService::retrieveDistantSearchResults(TurtleRequestId req,std::map<RsGxsGroupId,RsGxsGroupSummary>& group_infos)
|
||||||
|
{
|
||||||
|
RS_STACK_MUTEX(mNxsMutex) ;
|
||||||
|
|
||||||
|
auto it = mDistantSearchResults.find(req) ;
|
||||||
|
|
||||||
|
if(it == mDistantSearchResults.end())
|
||||||
|
return false ;
|
||||||
|
|
||||||
|
group_infos = it->second;
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
|
bool RsGxsNetService::clearDistantSearchResults(const TurtleRequestId& id)
|
||||||
|
{
|
||||||
|
RS_STACK_MUTEX(mNxsMutex) ;
|
||||||
|
mDistantSearchResults.erase(id);
|
||||||
|
return true ;
|
||||||
|
}
|
||||||
void RsGxsNetService::receiveTurtleSearchResults(TurtleRequestId req, const std::list<RsGxsGroupSummary>& group_infos)
|
void RsGxsNetService::receiveTurtleSearchResults(TurtleRequestId req, const std::list<RsGxsGroupSummary>& group_infos)
|
||||||
{
|
{
|
||||||
RS_STACK_MUTEX(mNxsMutex) ;
|
RS_STACK_MUTEX(mNxsMutex) ;
|
||||||
@ -5179,21 +5198,4 @@ bool RsGxsNetService::search(const std::string& substring,std::list<RsGxsGroupSu
|
|||||||
return !group_infos.empty();
|
return !group_infos.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RsGxsNetService::getDistantSearchResults(const TurtleRequestId& id,std::list<RsGxsGroupSummary>& group_infos)
|
|
||||||
{
|
|
||||||
RS_STACK_MUTEX(mNxsMutex) ;
|
|
||||||
auto it = mDistantSearchResults.find(id) ;
|
|
||||||
|
|
||||||
if(it == mDistantSearchResults.end())
|
|
||||||
return false ;
|
|
||||||
|
|
||||||
for(auto it2(it->second.begin());it2!=it->second.end();++it2)
|
|
||||||
group_infos.push_back(it2->second);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
bool RsGxsNetService::clearDistantSearchResults(const TurtleRequestId& id)
|
|
||||||
{
|
|
||||||
RS_STACK_MUTEX(mNxsMutex) ;
|
|
||||||
mDistantSearchResults.erase(id);
|
|
||||||
return true ;
|
|
||||||
}
|
|
||||||
|
@ -132,6 +132,8 @@ public:
|
|||||||
|
|
||||||
virtual bool search(const std::string& substring,std::list<RsGxsGroupSummary>& group_infos) ;
|
virtual bool search(const std::string& substring,std::list<RsGxsGroupSummary>& group_infos) ;
|
||||||
virtual void receiveTurtleSearchResults(TurtleRequestId req,const std::list<RsGxsGroupSummary>& group_infos);
|
virtual void receiveTurtleSearchResults(TurtleRequestId req,const std::list<RsGxsGroupSummary>& group_infos);
|
||||||
|
virtual bool retrieveDistantSearchResults(TurtleRequestId req, std::map<RsGxsGroupId, RsGxsGroupSummary> &group_infos);
|
||||||
|
virtual bool clearDistantSearchResults(const TurtleRequestId& id);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* pauses synchronisation of subscribed groups and request for group id
|
* pauses synchronisation of subscribed groups and request for group id
|
||||||
@ -170,16 +172,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual bool getGroupNetworkStats(const RsGxsGroupId& id,RsGroupNetworkStats& stats) ;
|
virtual bool getGroupNetworkStats(const RsGxsGroupId& id,RsGroupNetworkStats& stats) ;
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief getDistantSearchResults
|
|
||||||
* \param id Id of the search request previously issued
|
|
||||||
* \param group_infos Groups currently known for this search request.
|
|
||||||
* \return
|
|
||||||
* false if the id does not correspond to an ongoing distant search request.
|
|
||||||
*/
|
|
||||||
virtual bool getDistantSearchResults(const TurtleRequestId& id,std::list<RsGxsGroupSummary>& group_infos) ;
|
|
||||||
virtual bool clearDistantSearchResults(const TurtleRequestId& id);
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Used to inform the net service that we changed subscription status. That helps
|
* Used to inform the net service that we changed subscription status. That helps
|
||||||
* optimising data transfer when e.g. unsubsribed groups are updated less often, etc
|
* optimising data transfer when e.g. unsubsribed groups are updated less often, etc
|
||||||
|
@ -60,25 +60,6 @@
|
|||||||
* - the also group matrix settings which is by default everyone can transfer to each other
|
* - the also group matrix settings which is by default everyone can transfer to each other
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief The RsGxsGroupSymmary struct
|
|
||||||
* This structure is used to transport group summary information when a GXS service is searched. It contains the group information
|
|
||||||
* as well as a context string to tell where the information was found. It is more compact than a GroupMeta object, so as to make
|
|
||||||
* search responses as light as possible.
|
|
||||||
*/
|
|
||||||
struct RsGxsGroupSummary
|
|
||||||
{
|
|
||||||
RsGxsGroupId group_id ;
|
|
||||||
|
|
||||||
std::string group_name ;
|
|
||||||
std::string group_description ;
|
|
||||||
std::string search_context ;
|
|
||||||
RsGxsId author_id ;
|
|
||||||
time_t publish_ts ;
|
|
||||||
uint32_t number_of_messages ;
|
|
||||||
time_t last_message_ts ;
|
|
||||||
};
|
|
||||||
|
|
||||||
class RsNetworkExchangeService
|
class RsNetworkExchangeService
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -132,13 +113,22 @@ public:
|
|||||||
* \param group_infos Group summary information for the groups returned by the search
|
* \param group_infos Group summary information for the groups returned by the search
|
||||||
*/
|
*/
|
||||||
virtual void receiveTurtleSearchResults(TurtleRequestId req,const std::list<RsGxsGroupSummary>& group_infos)=0;
|
virtual void receiveTurtleSearchResults(TurtleRequestId req,const std::list<RsGxsGroupSummary>& group_infos)=0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief retrieveTurtleSearchResults
|
||||||
|
* To be used to retrieve the search results that have been notified (or not)
|
||||||
|
* \param req request that match the results to retrieve
|
||||||
|
* \param group_infos results to retrieve.
|
||||||
|
* \return
|
||||||
|
* false when the request is unknown.
|
||||||
|
*/
|
||||||
|
virtual bool retrieveDistantSearchResults(TurtleRequestId req, std::map<RsGxsGroupId, RsGxsGroupSummary> &group_infos)=0;
|
||||||
/*!
|
/*!
|
||||||
* \brief getDistantSearchResults
|
* \brief getDistantSearchResults
|
||||||
* \param id
|
* \param id
|
||||||
* \param group_infos
|
* \param group_infos
|
||||||
* \return
|
* \return
|
||||||
*/
|
*/
|
||||||
virtual bool getDistantSearchResults(const TurtleRequestId& id,std::list<RsGxsGroupSummary>& group_infos)=0 ;
|
|
||||||
virtual bool clearDistantSearchResults(const TurtleRequestId& id)=0;
|
virtual bool clearDistantSearchResults(const TurtleRequestId& id)=0;
|
||||||
|
|
||||||
virtual bool search(const std::string& substring,std::list<RsGxsGroupSummary>& group_infos) =0;
|
virtual bool search(const std::string& substring,std::list<RsGxsGroupSummary>& group_infos) =0;
|
||||||
|
@ -35,8 +35,6 @@
|
|||||||
#include "retroshare/rsgxscommon.h"
|
#include "retroshare/rsgxscommon.h"
|
||||||
#include "retroshare/rsturtle.h"
|
#include "retroshare/rsturtle.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* The Main Interface Class - for information about your Peers */
|
/* The Main Interface Class - for information about your Peers */
|
||||||
class RsGxsChannels;
|
class RsGxsChannels;
|
||||||
extern RsGxsChannels *rsGxsChannels;
|
extern RsGxsChannels *rsGxsChannels;
|
||||||
@ -99,6 +97,8 @@ virtual bool getPostData(const uint32_t &token, std::vector<RsGxsChannelPost> &p
|
|||||||
|
|
||||||
virtual TurtleRequestId turtleGroupRequest(const RsGxsGroupId& group_id)=0;
|
virtual TurtleRequestId turtleGroupRequest(const RsGxsGroupId& group_id)=0;
|
||||||
virtual TurtleRequestId turtleSearchRequest(const std::string& match_string)=0;
|
virtual TurtleRequestId turtleSearchRequest(const std::string& match_string)=0;
|
||||||
|
virtual bool retrieveDistantSearchResults(TurtleRequestId req, std::map<RsGxsGroupId, RsGxsGroupSummary> &results) =0;
|
||||||
|
virtual bool clearDistantSearchResults(TurtleRequestId req)=0;
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
virtual void setMessageReadStatus(uint32_t& token, const RsGxsGrpMsgIdPair& msgId, bool read) = 0;
|
virtual void setMessageReadStatus(uint32_t& token, const RsGxsGrpMsgIdPair& msgId, bool read) = 0;
|
||||||
|
@ -32,6 +32,26 @@
|
|||||||
#include "gxs/rsgxsdata.h"
|
#include "gxs/rsgxsdata.h"
|
||||||
#include "retroshare/rsgxsifacetypes.h"
|
#include "retroshare/rsgxsifacetypes.h"
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief The RsGxsGroupSymmary struct
|
||||||
|
* This structure is used to transport group summary information when a GXS service is searched. It contains the group information
|
||||||
|
* as well as a context string to tell where the information was found. It is more compact than a GroupMeta object, so as to make
|
||||||
|
* search responses as light as possible.
|
||||||
|
*/
|
||||||
|
struct RsGxsGroupSummary
|
||||||
|
{
|
||||||
|
RsGxsGroupId group_id ;
|
||||||
|
|
||||||
|
std::string group_name ;
|
||||||
|
std::string group_description ;
|
||||||
|
std::string search_context ;
|
||||||
|
RsGxsId author_id ;
|
||||||
|
time_t publish_ts ;
|
||||||
|
uint32_t number_of_messages ;
|
||||||
|
time_t last_message_ts ;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Stores ids of changed gxs groups and messages. It is used to notify the GUI about changes.
|
* Stores ids of changed gxs groups and messages. It is used to notify the GUI about changes.
|
||||||
*/
|
*/
|
||||||
|
@ -1696,3 +1696,13 @@ TurtleRequestId p3GxsChannels::turtleSearchRequest(const std::string& match_stri
|
|||||||
return netService()->turtleSearchRequest(match_string) ;
|
return netService()->turtleSearchRequest(match_string) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool p3GxsChannels::clearDistantSearchResults(TurtleRequestId req)
|
||||||
|
{
|
||||||
|
return netService()->clearDistantSearchResults(req);
|
||||||
|
}
|
||||||
|
bool p3GxsChannels::retrieveDistantSearchResults(TurtleRequestId req,std::map<RsGxsGroupId,RsGxsGroupSummary>& results)
|
||||||
|
{
|
||||||
|
return netService()->retrieveDistantSearchResults(req,results);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -74,6 +74,8 @@ virtual void service_tick();
|
|||||||
|
|
||||||
virtual TurtleRequestId turtleGroupRequest(const RsGxsGroupId& group_id);
|
virtual TurtleRequestId turtleGroupRequest(const RsGxsGroupId& group_id);
|
||||||
virtual TurtleRequestId turtleSearchRequest(const std::string& match_string);
|
virtual TurtleRequestId turtleSearchRequest(const std::string& match_string);
|
||||||
|
virtual bool retrieveDistantSearchResults(TurtleRequestId req, std::map<RsGxsGroupId, RsGxsGroupSummary> &results) ;
|
||||||
|
virtual bool clearDistantSearchResults(TurtleRequestId req);
|
||||||
|
|
||||||
// Overloaded to cache new groups.
|
// Overloaded to cache new groups.
|
||||||
virtual RsGenExchange::ServiceCreate_Return service_CreateGroup(RsGxsGrpItem* grpItem, RsTlvSecurityKeySet& keySet);
|
virtual RsGenExchange::ServiceCreate_Return service_CreateGroup(RsGxsGrpItem* grpItem, RsTlvSecurityKeySet& keySet);
|
||||||
|
@ -254,7 +254,18 @@ void GxsGroupFrameDialog::updateSearchResults()
|
|||||||
const std::set<TurtleRequestId>& reqs = getSearchResults();
|
const std::set<TurtleRequestId>& reqs = getSearchResults();
|
||||||
|
|
||||||
for(auto it(reqs.begin());it!=reqs.end();++it)
|
for(auto it(reqs.begin());it!=reqs.end();++it)
|
||||||
|
{
|
||||||
std::cerr << "updating search ID " << std::hex << *it << std::dec << std::endl;
|
std::cerr << "updating search ID " << std::hex << *it << std::dec << std::endl;
|
||||||
|
|
||||||
|
std::map<RsGxsGroupId,RsGxsGroupSummary> group_infos;
|
||||||
|
|
||||||
|
getDistantSearchResults(*it,group_infos) ;
|
||||||
|
|
||||||
|
std::cerr << "retrieved " << std::endl;
|
||||||
|
|
||||||
|
for(auto it2(group_infos.begin());it2!=group_infos.end();++it2)
|
||||||
|
std::cerr << " " << it2->first << " " << it2->second.group_id << " \"" << it2->second.group_name << "\"" << std::endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GxsGroupFrameDialog::todo()
|
void GxsGroupFrameDialog::todo()
|
||||||
|
@ -148,6 +148,7 @@ private:
|
|||||||
virtual void groupTreeCustomActions(RsGxsGroupId /*grpId*/, int /*subscribeFlags*/, QList<QAction*> &/*actions*/) {}
|
virtual void groupTreeCustomActions(RsGxsGroupId /*grpId*/, int /*subscribeFlags*/, QList<QAction*> &/*actions*/) {}
|
||||||
virtual RsGxsCommentService *getCommentService() { return NULL; }
|
virtual RsGxsCommentService *getCommentService() { return NULL; }
|
||||||
virtual QWidget *createCommentHeaderWidget(const RsGxsGroupId &/*grpId*/, const RsGxsMessageId &/*msgId*/) { return NULL; }
|
virtual QWidget *createCommentHeaderWidget(const RsGxsGroupId &/*grpId*/, const RsGxsMessageId &/*msgId*/) { return NULL; }
|
||||||
|
virtual bool getDistantSearchResults(TurtleRequestId id, std::map<RsGxsGroupId,RsGxsGroupSummary>& group_infos){ return false ;}
|
||||||
|
|
||||||
void initUi();
|
void initUi();
|
||||||
|
|
||||||
|
@ -341,3 +341,8 @@ TurtleRequestId GxsChannelDialog::distantSearch(const QString& search_string)
|
|||||||
{
|
{
|
||||||
return rsGxsChannels->turtleSearchRequest(search_string.toStdString()) ;
|
return rsGxsChannels->turtleSearchRequest(search_string.toStdString()) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GxsChannelDialog::getDistantSearchResults(TurtleRequestId id, std::map<RsGxsGroupId,RsGxsGroupSummary>& group_infos)
|
||||||
|
{
|
||||||
|
return rsGxsChannels->retrieveDistantSearchResults(id,group_infos);
|
||||||
|
}
|
||||||
|
@ -50,6 +50,7 @@ protected:
|
|||||||
virtual GroupFrameSettings::Type groupFrameSettingsType() { return GroupFrameSettings::Channel; }
|
virtual GroupFrameSettings::Type groupFrameSettingsType() { return GroupFrameSettings::Channel; }
|
||||||
virtual QString getHelpString() const ;
|
virtual QString getHelpString() const ;
|
||||||
virtual void groupInfoToGroupItemInfo(const RsGroupMetaData &groupInfo, GroupItemInfo &groupItemInfo, const RsUserdata *userdata);
|
virtual void groupInfoToGroupItemInfo(const RsGroupMetaData &groupInfo, GroupItemInfo &groupItemInfo, const RsUserdata *userdata);
|
||||||
|
virtual bool getDistantSearchResults(TurtleRequestId id, std::map<RsGxsGroupId,RsGxsGroupSummary>& group_infos);
|
||||||
|
|
||||||
virtual TurtleRequestId distantSearch(const QString& search_string) ;
|
virtual TurtleRequestId distantSearch(const QString& search_string) ;
|
||||||
private slots:
|
private slots:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user