From 4e4980ba0ed6b54321da17d38de2d807583cef9d Mon Sep 17 00:00:00 2001 From: csoler Date: Thu, 10 Mar 2016 22:57:04 -0500 Subject: [PATCH] fixed display of info for non admin circles, and added readonly system to not allow editing them --- .../src/gui/Circles/CirclesDialog.cpp | 5 ++- .../src/gui/Circles/CreateCircleDialog.cpp | 31 +++++++++++++++++-- .../src/gui/Circles/CreateCircleDialog.h | 3 +- .../src/gui/Circles/CreateCircleDialog.ui | 4 +-- retroshare-gui/src/gui/Identity/IdDialog.cpp | 14 ++++++--- .../src/gui/People/PeopleDialog.cpp | 12 +++---- 6 files changed, 53 insertions(+), 16 deletions(-) diff --git a/retroshare-gui/src/gui/Circles/CirclesDialog.cpp b/retroshare-gui/src/gui/Circles/CirclesDialog.cpp index 65eb2636e..00e1a76e9 100644 --- a/retroshare-gui/src/gui/Circles/CirclesDialog.cpp +++ b/retroshare-gui/src/gui/Circles/CirclesDialog.cpp @@ -36,6 +36,7 @@ #define CIRCLEGROUP_CIRCLE_COL_GROUPNAME 0 #define CIRCLEGROUP_CIRCLE_COL_GROUPID 1 +#define CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS 2 #define CIRCLEGROUP_FRIEND_COL_NAME 0 #define CIRCLEGROUP_FRIEND_COL_ID 1 @@ -135,8 +136,10 @@ void CirclesDialog::editExistingCircle() QString coltext = item->text(CIRCLEGROUP_CIRCLE_COL_GROUPID); RsGxsGroupId id ( coltext.toStdString()); + uint32_t subscribe_flags = item->data(CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS, Qt::UserRole).toUInt(); + CreateCircleDialog dlg; - dlg.editExistingId(id); + dlg.editExistingId(id,true,!!(subscribe_flags & GXS_SERV::GROUP_SUBSCRIBE_ADMIN)) ; dlg.exec(); } diff --git a/retroshare-gui/src/gui/Circles/CreateCircleDialog.cpp b/retroshare-gui/src/gui/Circles/CreateCircleDialog.cpp index be3a61b60..eb8e90679 100644 --- a/retroshare-gui/src/gui/Circles/CreateCircleDialog.cpp +++ b/retroshare-gui/src/gui/Circles/CreateCircleDialog.cpp @@ -105,16 +105,36 @@ CreateCircleDialog::~CreateCircleDialog() delete(mIdQueue); } -void CreateCircleDialog::editExistingId(const RsGxsGroupId &circleId, const bool &clearList /*= true*/) +void CreateCircleDialog::editExistingId(const RsGxsGroupId &circleId, const bool &clearList /*= true*/,bool readonly) { /* load this circle */ mIsExistingCircle = true; + mReadOnly=readonly; mClearList = clearList; requestCircle(circleId); ui.headerFrame->setHeaderText(tr("Edit Circle")); + ui.radioButton_Public->setEnabled(!readonly) ; + ui.radioButton_Self->setEnabled(!readonly) ; + ui.radioButton_Restricted->setEnabled(!readonly) ; + ui.circleName->setReadOnly(readonly) ; + + ui.idChooser->setEnabled(!readonly) ; + ui.buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Update")); + + ui.addButton->setEnabled(!readonly) ; + ui.removeButton->setEnabled(!readonly) ; + + if(readonly) + { + ui.buttonBox->setStandardButtons(QDialogButtonBox::Cancel); + ui.buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Close")); + ui.peersSelection_GB->hide() ; + ui.addButton->hide() ; + ui.removeButton->hide() ; + } } @@ -122,6 +142,7 @@ void CreateCircleDialog::editNewId(bool isExternal) { /* load this circle */ mIsExistingCircle = false; + mReadOnly = false ; /* setup personal or external circle */ if (isExternal) @@ -183,7 +204,7 @@ void CreateCircleDialog::setupForExternalCircle() /* show distribution line */ ui.groupBox_title->setTitle(tr("Circle Details")); - ui.buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Update")); + ui.frame_PgpTypes->show(); ui.frame_Distribution->show(); ui.idChooserLabel->show(); @@ -303,6 +324,12 @@ void CreateCircleDialog::removeMember() void CreateCircleDialog::createCircle() { + if(mReadOnly) + { + close() ; + return ; + } + std::cerr << "CreateCircleDialog::createCircle()"; std::cerr << std::endl; diff --git a/retroshare-gui/src/gui/Circles/CreateCircleDialog.h b/retroshare-gui/src/gui/Circles/CreateCircleDialog.h index d9c8133ca..570a44bc6 100644 --- a/retroshare-gui/src/gui/Circles/CreateCircleDialog.h +++ b/retroshare-gui/src/gui/Circles/CreateCircleDialog.h @@ -40,7 +40,7 @@ public: ~CreateCircleDialog(); void editNewId(bool isExternal); - void editExistingId(const RsGxsGroupId &circleId, const bool &clearList = true); + void editExistingId(const RsGxsGroupId &circleId, const bool &clearList = true, bool readonly=true); void addMember(const QString &keyId, const QString &idtype, const QString &nickname); void addMember(const RsGxsIdGroup &idGroup); void addCircle(const RsGxsCircleDetails &cirDetails); @@ -72,6 +72,7 @@ private: bool mIsExistingCircle; bool mIsExternalCircle; + bool mReadOnly; void loadCircle(uint32_t token); void loadIdentities(uint32_t token); diff --git a/retroshare-gui/src/gui/Circles/CreateCircleDialog.ui b/retroshare-gui/src/gui/Circles/CreateCircleDialog.ui index 53007831a..4f5859e9b 100644 --- a/retroshare-gui/src/gui/Circles/CreateCircleDialog.ui +++ b/retroshare-gui/src/gui/Circles/CreateCircleDialog.ui @@ -44,7 +44,7 @@ - Circle Membership + Circle Members @@ -129,7 +129,7 @@ - + Known People diff --git a/retroshare-gui/src/gui/Identity/IdDialog.cpp b/retroshare-gui/src/gui/Identity/IdDialog.cpp index 1881af74a..2ae6dce9c 100644 --- a/retroshare-gui/src/gui/Identity/IdDialog.cpp +++ b/retroshare-gui/src/gui/Identity/IdDialog.cpp @@ -374,12 +374,15 @@ void IdDialog::editExistingCircle() { return; } - + + uint32_t subscribe_flags = item->data(CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS, Qt::UserRole).toUInt(); + QString coltext = item->text(CIRCLEGROUP_CIRCLE_COL_GROUPID); RsGxsGroupId id ( coltext.toStdString()); CreateCircleDialog dlg; - dlg.editExistingId(id); + + dlg.editExistingId(id,true,!(subscribe_flags & GXS_SERV::GROUP_SUBSCRIBE_ADMIN)) ; dlg.exec(); requestCircleGroupMeta(); // update GUI @@ -483,15 +486,18 @@ void IdDialog::circle_selected() if ((!item) || (!item->parent())) { mStateHelper->setWidgetEnabled(ui->pushButton_editCircle, false); + ui->pushButton_editCircle->setText(tr("Show details")) ; + ui->pushButton_editCircle->setEnabled(false) ; return; } uint32_t subscribe_flags = item->data(CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS, Qt::UserRole).toUInt(); + ui->pushButton_editCircle->setEnabled(true) ; if(subscribe_flags & GXS_SERV::GROUP_SUBSCRIBE_ADMIN) - ui->pushButton_editCircle->setEnabled(true) ; + ui->pushButton_editCircle->setText(tr("Edit circle")) ; else - ui->pushButton_editCircle->setEnabled(false) ; + ui->pushButton_editCircle->setText(tr("Show details")) ; set_item_background(item, BLUE_BACKGROUND); diff --git a/retroshare-gui/src/gui/People/PeopleDialog.cpp b/retroshare-gui/src/gui/People/PeopleDialog.cpp index 85fbc8b6a..d7947832f 100644 --- a/retroshare-gui/src/gui/People/PeopleDialog.cpp +++ b/retroshare-gui/src/gui/People/PeopleDialog.cpp @@ -516,7 +516,7 @@ void PeopleDialog::addToCircleExt() dlg.addMember(idWidget->groupInfo()); }//if((itFound=_gxs_identity_widgets.find(gxs_id)) != _gxs_identity_widgets.end()) - dlg.editExistingId(circle->groupInfo().mGroupId, false); + dlg.editExistingId(circle->groupInfo().mGroupId, false,false); dlg.exec(); }//if((itFound=_ext_circles_widgets.find(groupId)) != _ext_circles_widgets.end()) }//if (action) @@ -545,7 +545,7 @@ void PeopleDialog::addToCircleInt() dlg.addMember(idWidget->keyId(), idWidget->idtype(), idWidget->nickname()); }//if((itFound=_pgp_identity_widgets.find(pgp_id)) != _pgp_identity_widgets.end()) - dlg.editExistingId(circle->groupInfo().mGroupId, false); + dlg.editExistingId(circle->groupInfo().mGroupId, false,false); dlg.exec(); }//if((itFound=_ext_circles_widgets.find(groupId)) != _ext_circles_widgets.end()) }//if (action) @@ -721,7 +721,7 @@ void PeopleDialog::fl_flowLayoutItemDroppedExt(QListflListItem if (bCreateNewCircle){ dlg.editNewId(true); } else {//if (bCreateNewCircle) - dlg.editExistingId(cirDest->groupInfo().mGroupId, false); + dlg.editExistingId(cirDest->groupInfo().mGroupId, false,false); }//else (bCreateNewCircle) dlg.exec(); @@ -781,7 +781,7 @@ void PeopleDialog::fl_flowLayoutItemDroppedInt(QListflListItem if (bCreateNewCircle){ dlg.editNewId(false); } else {//if (bCreateNewCircle) - dlg.editExistingId(cirDest->groupInfo().mGroupId, false); + dlg.editExistingId(cirDest->groupInfo().mGroupId, false,false); }//else (bCreateNewCircle) dlg.exec(); @@ -922,7 +922,7 @@ void PeopleDialog::pf_dropEventOccursExt(QDropEvent *event) if (bCreateNewCircle){ dlg.editNewId(true); } else {//if (bCreateNewCircle) - dlg.editExistingId(cirDest->groupInfo().mGroupId, false); + dlg.editExistingId(cirDest->groupInfo().mGroupId, false,false); }//else (bCreateNewCircle) dlg.exec(); @@ -1012,7 +1012,7 @@ void PeopleDialog::pf_dropEventOccursInt(QDropEvent *event) if (bCreateNewCircle){ dlg.editNewId(false); } else {//if (bCreateNewCircle) - dlg.editExistingId(cirDest->groupInfo().mGroupId, false); + dlg.editExistingId(cirDest->groupInfo().mGroupId, false,false); }//else (bCreateNewCircle) dlg.exec();