Merging branches/v0.6-initdev into trunk.

These split at 6672 -> 7075, so quite a bit merge.
libretroshare compiles - but untested.
retroshare-gui needs GenCertDialog.ui and IdEditDialog.ui to be properly merged. (compile errors).
some plugins will be broken.
retroshare-nogui is untested.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7078 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
drbob 2014-02-01 14:16:15 +00:00
commit c0738eec7f
407 changed files with 23716 additions and 50779 deletions

View file

@ -65,7 +65,7 @@ CirclesDialog::CirclesDialog(QWidget *parent)
mStateHelper->addWidget(CIRCLESDIALOG_GROUPMETA, ui.treeWidget_friends, UISTATE_ACTIVE_ENABLED);
mStateHelper->addWidget(CIRCLESDIALOG_GROUPMETA, ui.treeWidget_category, UISTATE_ACTIVE_ENABLED);
mStateHelper->setWidgetEnabled(ui.pushButton_editCircle, false); // not implemented
mStateHelper->setWidgetEnabled(ui.pushButton_editCircle, false);
/* Connect signals */
connect(ui.pushButton_extCircle, SIGNAL(clicked()), this, SLOT(createExternalCircle()));
@ -121,12 +121,18 @@ void CirclesDialog::createPersonalCircle()
void CirclesDialog::editExistingCircle()
{
#if 0
std::string id;
QTreeWidgetItem *item = ui.treeWidget_membership->currentItem();
if ((!item) || (!item->parent()))
{
return;
}
QString coltext = item->text(CIRCLEGROUP_CIRCLE_COL_GROUPID);
std::string id = coltext.toStdString();
CreateCircleDialog dlg;
dlg.editExistingId(id);
dlg.exec();
#endif
}
void CirclesDialog::reloadAll()
@ -357,6 +363,7 @@ void CirclesDialog::circle_selected()
if ((!item) || (!item->parent()))
{
mStateHelper->setWidgetEnabled(ui.pushButton_editCircle, false);
return;
}
@ -385,6 +392,7 @@ void CirclesDialog::circle_selected()
{
set_tree_background(ui.treeWidget_friends, GRAY_BACKGROUND);
}
mStateHelper->setWidgetEnabled(ui.pushButton_editCircle, true);
}
void CirclesDialog::friend_selected()

View file

@ -79,7 +79,7 @@ CreateCircleDialog::CreateCircleDialog()
mIsExternalCircle = true;
ui.idChooser->loadIds(0,"");
ui.circleComboBox->loadCircles(GXS_CIRCLE_CHOOSER_EXTERNAL);
ui.circleComboBox->loadCircles(GXS_CIRCLE_CHOOSER_EXTERNAL, "");
}
CreateCircleDialog::~CreateCircleDialog()
@ -92,22 +92,10 @@ void CreateCircleDialog::editExistingId(std::string circleId)
{
/* load this circle */
mIsExistingCircle = true;
/* setup personal or external circle */
bool isExternal = false;
if (isExternal)
{
setupForExternalCircle();
}
else
{
setupForPersonalCircle();
}
/* lock stuff they cannot edit */
requestCircle(circleId);
}
void CreateCircleDialog::editNewId(bool isExternal)
{
/* load this circle */
@ -179,7 +167,15 @@ void CreateCircleDialog::addMember()
}
/* check that its not there already */
QString keyId = item->text(RSCIRCLEID_COL_KEYID);
QString keyId = item->text(RSCIRCLEID_COL_KEYID);
QString idtype = item->text(RSCIRCLEID_COL_IDTYPE);
QString nickname = item->text(RSCIRCLEID_COL_NICKNAME);
addMember(keyId, idtype, nickname);
}
void CreateCircleDialog::addMember(const QString& keyId, const QString& idtype, const QString& nickname )
{
QTreeWidget *tree = ui.treeWidget_membership;
int count = tree->topLevelItemCount();
@ -195,9 +191,9 @@ void CreateCircleDialog::addMember()
}
QTreeWidgetItem *member = new QTreeWidgetItem();
member->setText(RSCIRCLEID_COL_NICKNAME, item->text(RSCIRCLEID_COL_NICKNAME));
member->setText(RSCIRCLEID_COL_KEYID, item->text(RSCIRCLEID_COL_KEYID));
member->setText(RSCIRCLEID_COL_IDTYPE, item->text(RSCIRCLEID_COL_IDTYPE));
member->setText(RSCIRCLEID_COL_NICKNAME, nickname);
member->setText(RSCIRCLEID_COL_KEYID, keyId);
member->setText(RSCIRCLEID_COL_IDTYPE, idtype);
tree->addTopLevelItem(member);
}
@ -352,6 +348,58 @@ void CreateCircleDialog::createCircle()
close();
}
void CreateCircleDialog::updateCircleGUI()
{
std::cerr << "CreateCircleDialog::updateCircleGUI()";
std::cerr << std::endl;
ui.circleName->setText(QString::fromUtf8(mCircleGroup.mMeta.mGroupName.c_str()));
bool isExternal = true;
switch(mCircleGroup.mMeta.mCircleType)
{
case GXS_CIRCLE_TYPE_LOCAL:
isExternal = false;
break;
case GXS_CIRCLE_TYPE_PUBLIC:
ui.radioButton_Public->setChecked(true);
break;
case GXS_CIRCLE_TYPE_EXT_SELF:
case GXS_CIRCLE_TYPE_EXTERNAL:
if (mCircleGroup.mMeta.mCircleId == mCircleGroup.mMeta.mGroupId)
{
ui.radioButton_Self->setChecked(true);
}
else
{
ui.radioButton_Restricted->setChecked(true);
}
ui.circleComboBox->loadCircles(GXS_CIRCLE_CHOOSER_EXTERNAL, mCircleGroup.mMeta.mCircleId);
break;
default:
std::cerr << "CreateCircleDialog::updateCircleGUI() INVALID mCircleType";
std::cerr << std::endl;
break;
}
// set preferredId.
ui.idChooser->loadIds(0,mCircleGroup.mMeta.mAuthorId);
/* setup personal or external circle */
if (isExternal)
{
setupForExternalCircle();
}
else
{
setupForPersonalCircle();
}
}
void CreateCircleDialog::requestCircle(const RsGxsGroupId &groupId)
{
RsTokReqOptions opts;
@ -397,7 +445,8 @@ void CreateCircleDialog::loadCircle(uint32_t token)
std::cerr << "CreateCircleDialog::loadCircle() Unfinished Loading";
std::cerr << std::endl;
//mCircleGroup = groups[0];
mCircleGroup = groups[0];
updateCircleGUI();
}
void CreateCircleDialog::getPgpIdentities()
@ -408,24 +457,38 @@ void CreateCircleDialog::getPgpIdentities()
QTreeWidget *tree = ui.treeWidget_IdList;
tree->clear();
std::list<std::string> ids;
std::list<std::string>::iterator it;
rsPeers->getGPGAcceptedList(ids);
for(it = ids.begin(); it != ids.end(); it++)
{
QTreeWidgetItem *item = new QTreeWidgetItem();
RsPeerDetails details;
rsPeers->getGPGDetails(*it, details);
item->setText(RSCIRCLEID_COL_IDTYPE, "PGP Identity");
item->setText(RSCIRCLEID_COL_NICKNAME, QString::fromUtf8(details.name.c_str()));
item->setText(RSCIRCLEID_COL_KEYID, QString::fromStdString(details.gpg_id));
QString keyId = QString::fromStdString(details.gpg_id);
QString nickname = QString::fromUtf8(details.name.c_str());
QString idtype = tr("PGP Identity");
QTreeWidgetItem *item = new QTreeWidgetItem();
item->setText(RSCIRCLEID_COL_NICKNAME, nickname);
item->setText(RSCIRCLEID_COL_KEYID, keyId);
item->setText(RSCIRCLEID_COL_IDTYPE, idtype);
tree->addTopLevelItem(item);
// Local Circle.
if (mIsExistingCircle)
{
// check if its in the circle.
std::list<RsPgpId>::const_iterator it;
it = std::find(mCircleGroup.mLocalFriends.begin(), mCircleGroup.mLocalFriends.end(), details.gpg_id);
if (it != mCircleGroup.mLocalFriends.end())
{
/* found it */
addMember(keyId, idtype, nickname);
}
}
}
filterIds();
@ -494,27 +557,44 @@ void CreateCircleDialog::loadIdentities(uint32_t token)
continue;
}
QTreeWidgetItem *item = new QTreeWidgetItem();
item->setText(RSCIRCLEID_COL_NICKNAME, QString::fromUtf8(data.mMeta.mGroupName.c_str()));
item->setText(RSCIRCLEID_COL_KEYID, QString::fromStdString(data.mMeta.mGroupId));
QString keyId = QString::fromStdString(data.mMeta.mGroupId);
QString nickname = QString::fromUtf8(data.mMeta.mGroupName.c_str());
QString idtype = tr("Anon Id");
if (data.mMeta.mGroupFlags & RSGXSID_GROUPFLAG_REALID)
{
if (data.mPgpKnown)
{
RsPeerDetails details;
rsPeers->getGPGDetails(data.mPgpId, details);
item->setText(RSCIRCLEID_COL_IDTYPE, QString::fromUtf8(details.name.c_str()));
idtype = QString::fromUtf8(details.name.c_str());
}
else
{
item->setText(RSCIRCLEID_COL_IDTYPE, "PGP Linked Id");
idtype = tr("PGP Linked Id");
}
}
else
{
item->setText(RSCIRCLEID_COL_IDTYPE, "Anon Id");
}
QTreeWidgetItem *item = new QTreeWidgetItem();
item->setText(RSCIRCLEID_COL_NICKNAME, nickname);
item->setText(RSCIRCLEID_COL_KEYID, keyId);
item->setText(RSCIRCLEID_COL_IDTYPE, idtype);
tree->addTopLevelItem(item);
// External Circle.
if (mIsExistingCircle)
{
// check if its in the circle.
std::list<RsGxsId>::const_iterator it;
it = std::find(mCircleGroup.mInvitedMembers.begin(),
mCircleGroup.mInvitedMembers.end(), data.mMeta.mGroupId);
if (it != mCircleGroup.mInvitedMembers.end())
{
/* found it */
addMember(keyId, idtype, nickname);
}
}
}
}

View file

@ -55,6 +55,10 @@ private slots:
void filterChanged(const QString &text);
private:
void updateCircleGUI();
void addMember(const QString& keyId, const QString& idtype, const QString& nickname );
void setupForPersonalCircle();
void setupForExternalCircle();
@ -73,6 +77,8 @@ private:
TokenQueue *mCircleQueue;
TokenQueue *mIdQueue;
RsGxsCircleGroup mCircleGroup; // for editting existing Circles.
/** Qt Designer generated object */
Ui::CreateCircleDialog ui;
};