added display of searched groups

This commit is contained in:
csoler 2018-06-24 23:15:22 +02:00
parent e351d7257e
commit 08b436e5f4
No known key found for this signature in database
GPG key ID: 7BCA522266C0804C
2 changed files with 45 additions and 9 deletions

View file

@ -263,8 +263,40 @@ void GxsGroupFrameDialog::updateSearchResults()
std::cerr << "retrieved " << std::endl; std::cerr << "retrieved " << std::endl;
for(auto it2(group_infos.begin());it2!=group_infos.end();++it2) auto it2 = mSearchGroupsItems.find(*it);
std::cerr << " " << it2->first << " " << it2->second.group_id << " \"" << it2->second.group_name << "\"" << std::endl;
std::set<RsGxsGroupId>& known_groups(mKnownGroups[*it]) ;
if(mSearchGroupsItems.end() == it2)
{
std::cerr << "GxsGroupFrameDialog::updateSearchResults(): received result notification for req " << std::hex << *it << std::dec << " but no item present!" << std::endl;
continue ; // we could create the item just as well but since this situation is not supposed to happen, I prefer to make this a failure case.
}
QList<GroupItemInfo> group_items ;
for(auto it3(group_infos.begin());it3!=group_infos.end();++it3)
if(known_groups.end() == known_groups.find(it3->first))
{
std::cerr << " adding new group " << it3->first << " " << it3->second.group_id << " \"" << it3->second.group_name << "\"" << std::endl;
known_groups.insert(it3->first) ;
GroupItemInfo i ;
i.id = QString(it3->second.group_id.toStdString().c_str()) ;
i.name = QString::fromUtf8(it3->second.group_name.c_str()) ;
i.description = QString::fromUtf8(it3->second.group_description.c_str()) ;
i.popularity = 0; // could be set to the number of hits
i.lastpost = QDateTime::fromTime_t(it3->second.last_message_ts);
i.subscribeFlags = 0; // irrelevant here
i.publishKey = false ; // IS_GROUP_PUBLISHER(groupInfo.mSubscribeFlags) ;
i.adminKey = false ; // IS_GROUP_ADMIN(groupInfo.mSubscribeFlags) ;
i.max_visible_posts = it3->second.number_of_messages ;
group_items.push_back(i);
}
ui->groupTreeWidget->fillGroupItems(it2->second, group_items);
} }
} }
@ -282,21 +314,24 @@ void GxsGroupFrameDialog::removeCurrentSearch()
TurtleRequestId search_request_id = action->data().toUInt(); TurtleRequestId search_request_id = action->data().toUInt();
auto it = mSearchGroups.find(search_request_id) ; auto it = mSearchGroupsItems.find(search_request_id) ;
if(it == mSearchGroups.end()) if(it == mSearchGroupsItems.end())
return ; return ;
ui->groupTreeWidget->removeSearchItem(it->second) ; ui->groupTreeWidget->removeSearchItem(it->second) ;
mSearchGroups.erase(it); mSearchGroupsItems.erase(it);
mKnownGroups.erase(search_request_id);
} }
void GxsGroupFrameDialog::removeAllSearches() void GxsGroupFrameDialog::removeAllSearches()
{ {
for(auto it(mSearchGroups.begin());it!=mSearchGroups.end();++it) for(auto it(mSearchGroupsItems.begin());it!=mSearchGroupsItems.end();++it)
ui->groupTreeWidget->removeSearchItem(it->second) ; ui->groupTreeWidget->removeSearchItem(it->second) ;
mSearchGroups.clear(); mSearchGroupsItems.clear();
mKnownGroups.clear();
} }
void GxsGroupFrameDialog::groupTreeCustomPopupMenu(QPoint point) void GxsGroupFrameDialog::groupTreeCustomPopupMenu(QPoint point)
{ {
@ -1158,6 +1193,6 @@ void GxsGroupFrameDialog::searchNetwork(const QString& search_string)
if(request_id == 0) if(request_id == 0)
return ; return ;
mSearchGroups[request_id] = ui->groupTreeWidget->addSearchItem(tr("Search for")+ " \"" + search_string + "\"",(uint32_t)request_id,QIcon(icon(ICON_SEARCH))); mSearchGroupsItems[request_id] = ui->groupTreeWidget->addSearchItem(tr("Search for")+ " \"" + search_string + "\"",(uint32_t)request_id,QIcon(icon(ICON_SEARCH)));
} }

View file

@ -210,7 +210,8 @@ private:
std::list<RsGroupMetaData> mCachedGroupMetas; std::list<RsGroupMetaData> mCachedGroupMetas;
std::map<uint32_t,QTreeWidgetItem*> mSearchGroups ; std::map<uint32_t,QTreeWidgetItem*> mSearchGroupsItems ;
std::map<uint32_t,std::set<RsGxsGroupId> > mKnownGroups;
}; };
#endif #endif