mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
added proper context menu for requesting/cancelling circle subscription
This commit is contained in:
parent
83049259f2
commit
c9846c0dcf
@ -134,6 +134,11 @@ virtual bool getCircleDetails(const RsGxsCircleId &id, RsGxsCircleDetails &detai
|
|||||||
virtual bool getCircleExternalIdList(std::list<RsGxsCircleId> &circleIds) = 0;
|
virtual bool getCircleExternalIdList(std::list<RsGxsCircleId> &circleIds) = 0;
|
||||||
virtual bool getCirclePersonalIdList(std::list<RsGxsCircleId> &circleIds) = 0;
|
virtual bool getCirclePersonalIdList(std::list<RsGxsCircleId> &circleIds) = 0;
|
||||||
|
|
||||||
|
/* membership management for external circles */
|
||||||
|
|
||||||
|
virtual bool requestCircleMembership(const RsGxsCircleId& id)=0 ;
|
||||||
|
virtual bool cancelCircleMembership(const RsGxsCircleId& id)=0 ;
|
||||||
|
|
||||||
/* standard load */
|
/* standard load */
|
||||||
virtual bool getGroupData(const uint32_t &token, std::vector<RsGxsCircleGroup> &groups) = 0;
|
virtual bool getGroupData(const uint32_t &token, std::vector<RsGxsCircleGroup> &groups) = 0;
|
||||||
|
|
||||||
|
@ -1820,4 +1820,14 @@ void p3GxsCircles::handle_event(uint32_t event_type, const std::string &elabel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool p3GxsCircles::requestCircleMembership(const RsGxsCircleId& id)
|
||||||
|
{
|
||||||
|
#warning code missing here !!!
|
||||||
|
}
|
||||||
|
|
||||||
|
bool p3GxsCircles::cancelCircleMembership(const RsGxsCircleId& id)
|
||||||
|
{
|
||||||
|
#warning code missing here !!!
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -192,6 +192,11 @@ virtual RsServiceInfo getServiceInfo();
|
|||||||
virtual void updateGroup(uint32_t &token, RsGxsCircleGroup &group);
|
virtual void updateGroup(uint32_t &token, RsGxsCircleGroup &group);
|
||||||
|
|
||||||
|
|
||||||
|
/* membership management for external circles */
|
||||||
|
|
||||||
|
virtual bool requestCircleMembership(const RsGxsCircleId& id) ;
|
||||||
|
virtual bool cancelCircleMembership(const RsGxsCircleId& id) ;
|
||||||
|
|
||||||
/**********************************************/
|
/**********************************************/
|
||||||
|
|
||||||
// needed for background processing.
|
// needed for background processing.
|
||||||
|
@ -57,9 +57,10 @@
|
|||||||
#define IDDIALOG_REPLIST 3
|
#define IDDIALOG_REPLIST 3
|
||||||
#define IDDIALOG_REFRESH 4
|
#define IDDIALOG_REFRESH 4
|
||||||
|
|
||||||
#define CIRCLEGROUP_CIRCLE_COL_GROUPNAME 0
|
#define CIRCLEGROUP_CIRCLE_COL_GROUPNAME 0
|
||||||
#define CIRCLEGROUP_CIRCLE_COL_GROUPID 1
|
#define CIRCLEGROUP_CIRCLE_COL_GROUPID 1
|
||||||
#define CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS 2
|
#define CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS 2
|
||||||
|
#define CIRCLEGROUP_CIRCLE_COL_SUBSCRIBEFLAGS 3
|
||||||
|
|
||||||
#define CIRCLEGROUP_FRIEND_COL_NAME 0
|
#define CIRCLEGROUP_FRIEND_COL_NAME 0
|
||||||
#define CIRCLEGROUP_FRIEND_COL_ID 1
|
#define CIRCLEGROUP_FRIEND_COL_ID 1
|
||||||
@ -321,10 +322,10 @@ void IdDialog::requestCircleGroupMeta()
|
|||||||
{
|
{
|
||||||
mStateHelper->setLoading(CIRCLESDIALOG_GROUPMETA, true);
|
mStateHelper->setLoading(CIRCLESDIALOG_GROUPMETA, true);
|
||||||
|
|
||||||
//#ifdef ID_DEBUG
|
#ifdef ID_DEBUG
|
||||||
std::cerr << "CirclesDialog::requestGroupMeta()";
|
std::cerr << "CirclesDialog::requestGroupMeta()";
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
//#endif
|
#endif
|
||||||
|
|
||||||
mCircleQueue->cancelActiveRequestTokens(CIRCLESDIALOG_GROUPMETA);
|
mCircleQueue->cancelActiveRequestTokens(CIRCLESDIALOG_GROUPMETA);
|
||||||
|
|
||||||
@ -461,6 +462,7 @@ void IdDialog::loadCircleGroupMeta(const uint32_t &token)
|
|||||||
item->setText(CIRCLEGROUP_CIRCLE_COL_GROUPNAME, QString::fromUtf8(vit->mGroupName.c_str()));
|
item->setText(CIRCLEGROUP_CIRCLE_COL_GROUPNAME, QString::fromUtf8(vit->mGroupName.c_str()));
|
||||||
item->setText(CIRCLEGROUP_CIRCLE_COL_GROUPID, QString::fromStdString(vit->mGroupId.toStdString()));
|
item->setText(CIRCLEGROUP_CIRCLE_COL_GROUPID, QString::fromStdString(vit->mGroupId.toStdString()));
|
||||||
item->setData(CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS, Qt::UserRole, QVariant(vit->mSubscribeFlags));
|
item->setData(CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS, Qt::UserRole, QVariant(vit->mSubscribeFlags));
|
||||||
|
item->setData(CIRCLEGROUP_CIRCLE_COL_SUBSCRIBEFLAGS, Qt::UserRole, QVariant(details.mSubscribeFlags));
|
||||||
|
|
||||||
if(am_I_in_circle)
|
if(am_I_in_circle)
|
||||||
{
|
{
|
||||||
@ -484,6 +486,10 @@ void IdDialog::loadCircleGroupMeta(const uint32_t &token)
|
|||||||
#endif
|
#endif
|
||||||
item->setText(CIRCLEGROUP_CIRCLE_COL_GROUPNAME, QString::fromUtf8(vit->mGroupName.c_str()));
|
item->setText(CIRCLEGROUP_CIRCLE_COL_GROUPNAME, QString::fromUtf8(vit->mGroupName.c_str()));
|
||||||
}
|
}
|
||||||
|
// just in case.
|
||||||
|
|
||||||
|
item->setData(CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS, Qt::UserRole, QVariant(vit->mSubscribeFlags));
|
||||||
|
item->setData(CIRCLEGROUP_CIRCLE_COL_SUBSCRIBEFLAGS, Qt::UserRole, QVariant(details.mSubscribeFlags));
|
||||||
|
|
||||||
if (vit->mSubscribeFlags & GXS_SERV::GROUP_SUBSCRIBE_ADMIN)
|
if (vit->mSubscribeFlags & GXS_SERV::GROUP_SUBSCRIBE_ADMIN)
|
||||||
{
|
{
|
||||||
@ -608,6 +614,32 @@ void IdDialog::showEditExistingCircle()
|
|||||||
requestCircleGroupMeta(); // update GUI
|
requestCircleGroupMeta(); // update GUI
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void IdDialog::acceptCircleSubscription()
|
||||||
|
{
|
||||||
|
QTreeWidgetItem *item = ui->treeWidget_membership->currentItem();
|
||||||
|
|
||||||
|
if (!item)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
QString coltext = item->text(CIRCLEGROUP_CIRCLE_COL_GROUPID);
|
||||||
|
RsGxsCircleId circle_id ( coltext.toStdString()) ;
|
||||||
|
|
||||||
|
rsGxsCircles->requestCircleMembership(circle_id) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void IdDialog::refuseCircleSubscription()
|
||||||
|
{
|
||||||
|
QTreeWidgetItem *item = ui->treeWidget_membership->currentItem();
|
||||||
|
|
||||||
|
if (!item)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
QString coltext = item->text(CIRCLEGROUP_CIRCLE_COL_GROUPID);
|
||||||
|
RsGxsCircleId circle_id ( coltext.toStdString()) ;
|
||||||
|
|
||||||
|
rsGxsCircles->cancelCircleMembership(circle_id) ;
|
||||||
|
}
|
||||||
|
|
||||||
void IdDialog::CircleListCustomPopupMenu( QPoint )
|
void IdDialog::CircleListCustomPopupMenu( QPoint )
|
||||||
{
|
{
|
||||||
QMenu contextMnu( this );
|
QMenu contextMnu( this );
|
||||||
@ -616,14 +648,32 @@ void IdDialog::CircleListCustomPopupMenu( QPoint )
|
|||||||
|
|
||||||
if (item)
|
if (item)
|
||||||
{
|
{
|
||||||
uint32_t subscribe_flags = item->data(CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS, Qt::UserRole).toUInt();
|
uint32_t group_flags = item->data(CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS, Qt::UserRole).toUInt();
|
||||||
|
|
||||||
if(item->parent() != NULL)
|
if(item->parent() != NULL)
|
||||||
if(subscribe_flags & GXS_SERV::GROUP_SUBSCRIBE_ADMIN)
|
if(group_flags & GXS_SERV::GROUP_SUBSCRIBE_ADMIN)
|
||||||
contextMnu.addAction(QIcon(IMAGE_EDIT), tr("Edit Circle"), this, SLOT(showEditExistingCircle()));
|
contextMnu.addAction(QIcon(IMAGE_EDIT), tr("Edit Circle"), this, SLOT(showEditExistingCircle()));
|
||||||
else
|
else
|
||||||
contextMnu.addAction(QIcon(IMAGE_EDIT), tr("See details"), this, SLOT(showEditExistingCircle()));
|
contextMnu.addAction(QIcon(IMAGE_EDIT), tr("See details"), this, SLOT(showEditExistingCircle()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
contextMnu.addSeparator() ;
|
||||||
|
|
||||||
|
uint32_t subscribe_flags = item->data(CIRCLEGROUP_CIRCLE_COL_SUBSCRIBEFLAGS, Qt::UserRole).toUInt();
|
||||||
|
|
||||||
|
if(subscribe_flags & GXS_EXTERNAL_CIRCLE_FLAGS_SUBSCRIBED)
|
||||||
|
if(subscribe_flags & GXS_EXTERNAL_CIRCLE_FLAGS_IN_ADMIN_LIST)
|
||||||
|
contextMnu.addAction(QIcon(IMAGE_EDIT), tr("Remove me from this circle"), this, SLOT(refuseCircleMembership()));
|
||||||
|
else
|
||||||
|
contextMnu.addAction(QIcon(IMAGE_EDIT), tr("Cancel subscription request"), this, SLOT(refuseCircleMembership()));
|
||||||
|
else
|
||||||
|
if(subscribe_flags & GXS_EXTERNAL_CIRCLE_FLAGS_IN_ADMIN_LIST)
|
||||||
|
contextMnu.addAction(QIcon(IMAGE_EDIT), tr("Accept circle invite and join the circle"), this, SLOT(acceptCircleMembership()));
|
||||||
|
else
|
||||||
|
contextMnu.addAction(QIcon(IMAGE_EDIT), tr("Request to join this circle"), this, SLOT(acceptCircleMembership()));
|
||||||
|
|
||||||
|
contextMnu.addSeparator() ;
|
||||||
|
|
||||||
contextMnu.addAction(QIcon(IMAGE_CREATE), tr("Create external circle"), this, SLOT(createExternalCircle()));
|
contextMnu.addAction(QIcon(IMAGE_CREATE), tr("Create external circle"), this, SLOT(createExternalCircle()));
|
||||||
contextMnu.exec(QCursor::pos());
|
contextMnu.exec(QCursor::pos());
|
||||||
}
|
}
|
||||||
|
@ -66,6 +66,9 @@ private slots:
|
|||||||
void createExternalCircle();
|
void createExternalCircle();
|
||||||
void showEditExistingCircle();
|
void showEditExistingCircle();
|
||||||
void updateCirclesDisplay();
|
void updateCirclesDisplay();
|
||||||
|
|
||||||
|
void acceptCircleSubscription() ;
|
||||||
|
void refuseCircleSubscription() ;
|
||||||
|
|
||||||
void filterComboBoxChanged();
|
void filterComboBoxChanged();
|
||||||
void filterChanged(const QString &text);
|
void filterChanged(const QString &text);
|
||||||
|
Loading…
Reference in New Issue
Block a user