improved circles GUI logic

This commit is contained in:
csoler 2016-03-08 00:02:16 -05:00
parent 9b92f66c61
commit cba4795911
3 changed files with 54 additions and 16 deletions

View file

@ -87,6 +87,10 @@ CreateCircleDialog::CreateCircleDialog()
QObject::connect(ui.radioButton_ListAllPGP, SIGNAL(toggled(bool)), this, SLOT(updateCircleGUI())) ; QObject::connect(ui.radioButton_ListAllPGP, SIGNAL(toggled(bool)), this, SLOT(updateCircleGUI())) ;
QObject::connect(ui.radioButton_ListKnownPGP, SIGNAL(toggled(bool)), this, SLOT(updateCircleGUI())) ; QObject::connect(ui.radioButton_ListKnownPGP, SIGNAL(toggled(bool)), this, SLOT(updateCircleGUI())) ;
QObject::connect(ui.radioButton_Public, SIGNAL(toggled(bool)), this, SLOT(updateCircleType(bool))) ;
QObject::connect(ui.radioButton_Self, SIGNAL(toggled(bool)), this, SLOT(updateCircleType(bool))) ;
QObject::connect(ui.radioButton_Restricted, SIGNAL(toggled(bool)), this, SLOT(updateCircleType(bool))) ;
mIsExistingCircle = false; mIsExistingCircle = false;
mIsExternalCircle = true; mIsExternalCircle = true;
mClearList = true; mClearList = true;
@ -135,6 +139,28 @@ void CreateCircleDialog::editNewId(bool isExternal)
/* enable stuff that might be locked */ /* enable stuff that might be locked */
} }
void CreateCircleDialog::updateCircleType(bool b)
{
if(!b)
return ; // no need to change when b<-false
if(ui.radioButton_Self->isChecked())
setupForPersonalCircle() ;
else
setupForExternalCircle() ;
if(ui.radioButton_Restricted->isChecked())
{
ui.circleComboBox->setEnabled(true) ;
ui.circleComboBox->show() ;
}
else
{
ui.circleComboBox->setEnabled(false) ;
ui.circleComboBox->hide() ;
}
}
void CreateCircleDialog::setupForPersonalCircle() void CreateCircleDialog::setupForPersonalCircle()
{ {
mIsExternalCircle = false; mIsExternalCircle = false;
@ -143,7 +169,7 @@ void CreateCircleDialog::setupForPersonalCircle()
ui.groupBox_title->setTitle(tr("Circle Details")); ui.groupBox_title->setTitle(tr("Circle Details"));
ui.frame_PgpTypes->hide(); ui.frame_PgpTypes->hide();
ui.frame_Distribution->hide(); //ui.frame_Distribution->hide();
ui.idChooserLabel->hide(); ui.idChooserLabel->hide();
ui.idChooser->hide(); ui.idChooser->hide();
//ui.toolButton_NewId->hide(); //ui.toolButton_NewId->hide();

View file

@ -51,6 +51,7 @@ private slots:
void addMember(); void addMember();
void removeMember(); void removeMember();
void updateCircleType(bool b);
void selectedId(QTreeWidgetItem*, QTreeWidgetItem*); void selectedId(QTreeWidgetItem*, QTreeWidgetItem*);
void selectedMember(QTreeWidgetItem*, QTreeWidgetItem*); void selectedMember(QTreeWidgetItem*, QTreeWidgetItem*);

View file

@ -55,6 +55,7 @@
#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_FRIEND_COL_NAME 0 #define CIRCLEGROUP_FRIEND_COL_NAME 0
#define CIRCLEGROUP_FRIEND_COL_ID 1 #define CIRCLEGROUP_FRIEND_COL_ID 1
@ -311,17 +312,17 @@ void IdDialog::loadCircleGroupMeta(const uint32_t &token)
//personalCirclesItem->setText(0, tr("Personal Circles")); //personalCirclesItem->setText(0, tr("Personal Circles"));
//ui->treeWidget_membership->addTopLevelItem(personalCirclesItem); //ui->treeWidget_membership->addTopLevelItem(personalCirclesItem);
QTreeWidgetItem *externalAdminCirclesItem = new QTreeWidgetItem(); QTreeWidgetItem *externalOtherCirclesItem = new QTreeWidgetItem();
externalAdminCirclesItem->setText(0, tr("Circles (Admin)")); externalOtherCirclesItem->setText(0, tr("Circles (Other)"));
ui->treeWidget_membership->addTopLevelItem(externalAdminCirclesItem); ui->treeWidget_membership->addTopLevelItem(externalOtherCirclesItem);
QTreeWidgetItem *externalSubCirclesItem = new QTreeWidgetItem(); QTreeWidgetItem *externalSubCirclesItem = new QTreeWidgetItem();
externalSubCirclesItem->setText(0, tr("Circles (Subscribed)")); externalSubCirclesItem->setText(0, tr("Circles (Subscribed)"));
ui->treeWidget_membership->addTopLevelItem(externalSubCirclesItem); ui->treeWidget_membership->addTopLevelItem(externalSubCirclesItem);
QTreeWidgetItem *externalOtherCirclesItem = new QTreeWidgetItem(); QTreeWidgetItem *externalAdminCirclesItem = new QTreeWidgetItem();
externalOtherCirclesItem->setText(0, tr("Circles (Other)")); externalAdminCirclesItem->setText(0, tr("Circles (Admin)"));
ui->treeWidget_membership->addTopLevelItem(externalOtherCirclesItem); ui->treeWidget_membership->addTopLevelItem(externalAdminCirclesItem);
for(vit = groupInfo.begin(); vit != groupInfo.end(); ++vit) for(vit = groupInfo.begin(); vit != groupInfo.end(); ++vit)
{ {
@ -333,6 +334,7 @@ void IdDialog::loadCircleGroupMeta(const uint32_t &token)
QTreeWidgetItem *groupItem = new QTreeWidgetItem(); QTreeWidgetItem *groupItem = new QTreeWidgetItem();
groupItem->setText(CIRCLEGROUP_CIRCLE_COL_GROUPNAME, QString::fromUtf8(vit->mGroupName.c_str())); groupItem->setText(CIRCLEGROUP_CIRCLE_COL_GROUPNAME, QString::fromUtf8(vit->mGroupName.c_str()));
groupItem->setText(CIRCLEGROUP_CIRCLE_COL_GROUPID, QString::fromStdString(vit->mGroupId.toStdString())); groupItem->setText(CIRCLEGROUP_CIRCLE_COL_GROUPID, QString::fromStdString(vit->mGroupId.toStdString()));
groupItem->setData(CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS, Qt::UserRole, QVariant(vit->mSubscribeFlags));
if (vit->mCircleType == GXS_CIRCLE_TYPE_LOCAL) if (vit->mCircleType == GXS_CIRCLE_TYPE_LOCAL)
{ {
@ -481,11 +483,19 @@ void IdDialog::circle_selected()
return; return;
} }
uint32_t subscribe_flags = item->data(CIRCLEGROUP_CIRCLE_COL_GROUPFLAGS, Qt::UserRole).toUInt();
if(subscribe_flags & GXS_SERV::GROUP_SUBSCRIBE_ADMIN)
ui->pushButton_editCircle->setEnabled(true) ;
else
ui->pushButton_editCircle->setEnabled(false) ;
set_item_background(item, BLUE_BACKGROUND); set_item_background(item, BLUE_BACKGROUND);
QString coltext = item->text(CIRCLEGROUP_CIRCLE_COL_GROUPID); QString coltext = item->text(CIRCLEGROUP_CIRCLE_COL_GROUPID);
RsGxsCircleId id ( coltext.toStdString()) ; RsGxsCircleId id ( coltext.toStdString()) ;
#ifdef SUSPENDED
/* update friend lists */ /* update friend lists */
RsGxsCircleDetails details; RsGxsCircleDetails details;
if (rsGxsCircles->getCircleDetails(id, details)) if (rsGxsCircles->getCircleDetails(id, details))
@ -500,12 +510,13 @@ void IdDialog::circle_selected()
std::cerr << std::endl; std::cerr << std::endl;
} }
// mark_matching_tree(ui->treeWidget_friends, members, CIRCLEGROUP_FRIEND_COL_ID, GREEN_BACKGROUND); mark_matching_tree(ui->treeWidget_friends, members, CIRCLEGROUP_FRIEND_COL_ID, GREEN_BACKGROUND);
} }
else else
{ {
// set_tree_background(ui->treeWidget_friends, GRAY_BACKGROUND); set_tree_background(ui->treeWidget_friends, GRAY_BACKGROUND);
} }
#endif
mStateHelper->setWidgetEnabled(ui->pushButton_editCircle, true); mStateHelper->setWidgetEnabled(ui->pushButton_editCircle, true);
} }