diff --git a/libretroshare/src/retroshare/rsidentity.h b/libretroshare/src/retroshare/rsidentity.h
index fec4d0944..ca67623bc 100644
--- a/libretroshare/src/retroshare/rsidentity.h
+++ b/libretroshare/src/retroshare/rsidentity.h
@@ -214,6 +214,12 @@ public:
/********************************************************************************************/
/********************************************************************************************/
+
+ enum Opinion {
+ OPINION_NEGATIVE = -1,
+ OPINION_NEUTRAL = 0,
+ OPINION_POSITIVE = 1
+ };
// For Other Services....
// It should be impossible for them to get a message which we don't have the identity.
diff --git a/retroshare-gui/src/gui/Identity/IdDialog.cpp b/retroshare-gui/src/gui/Identity/IdDialog.cpp
index 1189b2d37..b6b691a2e 100644
--- a/retroshare-gui/src/gui/Identity/IdDialog.cpp
+++ b/retroshare-gui/src/gui/Identity/IdDialog.cpp
@@ -91,19 +91,10 @@ IdDialog::IdDialog(QWidget *parent) :
mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_GpgId);
mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_GpgName);
mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_Type);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_LastUsed);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->toolButton_Reputation);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->line_RatingOverall);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->line_RatingImplicit);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->line_RatingOwn);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->line_RatingPeers);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repModButton);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repMod_Accept);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repMod_Ban);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repMod_Negative);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repMod_Positive);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repMod_Custom);
- mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repMod_spinBox);
+ mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_LastUsed);
+ mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->ownOpinion_CB);
+ mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->overallOpinion_TF);
+ mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->neighborNodesOpinion_TF);
mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_Nickname);
mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_GpgName);
@@ -112,23 +103,16 @@ IdDialog::IdDialog(QWidget *parent) :
mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_GpgId);
mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_Type);
mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_GpgName);
- mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_LastUsed);
- mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->line_RatingOverall);
- mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->line_RatingImplicit);
- mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->line_RatingOwn);
- mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->line_RatingPeers);
+ mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_LastUsed);
+ //mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->line_RatingOverall);
mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_Nickname);
mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_KeyId);
// mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_GpgHash);
mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_GpgId);
mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_Type);
- mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_GpgName);
- mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_LastUsed);
- mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->line_RatingOverall);
- mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->line_RatingImplicit);
- mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->line_RatingOwn);
- mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->line_RatingPeers);
+ mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_GpgName);
+ mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_LastUsed);
//mStateHelper->addWidget(IDDIALOG_REPLIST, ui->treeWidget_RepList);
//mStateHelper->addLoadPlaceholder(IDDIALOG_REPLIST, ui->treeWidget_RepList);
@@ -147,7 +131,7 @@ IdDialog::IdDialog(QWidget *parent) :
connect(ui->filterComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(filterComboBoxChanged()));
connect(ui->filterLineEdit, SIGNAL(textChanged(QString)), this, SLOT(filterChanged(QString)));
- connect(ui->repModButton, SIGNAL(clicked()), this, SLOT(modifyReputation()));
+ connect(ui->ownOpinion_CB, SIGNAL(currentIndexChanged(int)), this, SLOT(modifyReputation()));
connect(ui->messageButton, SIGNAL(clicked()), this, SLOT(sendMsg()));
@@ -197,7 +181,7 @@ IdDialog::IdDialog(QWidget *parent) :
// Hiding RepList until that part is finished.
//ui->treeWidget_RepList->setVisible(false);
- ui->toolButton_Reputation->setVisible(false);
+
#ifndef UNFINISHED
ui->todoPushButton->hide() ;
#endif
@@ -225,8 +209,8 @@ IdDialog::IdDialog(QWidget *parent) :
processSettings(true);
// hide reputation sice it's currently unused
- ui->reputationGroupBox->hide();
- ui->tweakGroupBox->hide();
+ //ui->reputationGroupBox->hide();
+ //ui->tweakGroupBox->hide();
}
IdDialog::~IdDialog()
@@ -652,36 +636,9 @@ void IdDialog::insertIdDetails(uint32_t token)
else
ui->lineEdit_Type->setText(tr("Anonymous identity")) ;
- // if (isOwnId)
-// {
-// ui->radioButton_IdYourself->setChecked(true);
-// }
-// else if (data.mMeta.mGroupFlags & RSGXSID_GROUPFLAG_REALID)
-// {
-// if (data.mPgpKnown)
-// {
-// if (rsPeers->isGPGAccepted(data.mPgpId))
-// {
-// ui->radioButton_IdFriend->setChecked(true);
-// }
-// else
-// {
-// ui->radioButton_IdFOF->setChecked(true);
-// }
-// }
-// else
-// {
-// ui->radioButton_IdOther->setChecked(true);
-// }
-// }
-// else
-// {
-// ui->radioButton_IdPseudo->setChecked(true);
-// }
-
if (isOwnId)
{
- mStateHelper->setWidgetEnabled(ui->toolButton_Reputation, false);
+ mStateHelper->setWidgetEnabled(ui->ownOpinion_CB, false);
ui->editIdentity->setEnabled(true);
ui->removeIdentity->setEnabled(true);
ui->chatIdentity->setEnabled(false);
@@ -690,7 +647,7 @@ void IdDialog::insertIdDetails(uint32_t token)
else
{
// No Reputation yet!
- mStateHelper->setWidgetEnabled(ui->toolButton_Reputation, /*true*/ false);
+ mStateHelper->setWidgetEnabled(ui->ownOpinion_CB, true);
ui->editIdentity->setEnabled(false);
ui->removeIdentity->setEnabled(false);
ui->chatIdentity->setEnabled(true);
@@ -698,9 +655,8 @@ void IdDialog::insertIdDetails(uint32_t token)
}
/* now fill in the reputation information */
- ui->line_RatingOverall->setText("Overall Rating TODO");
- ui->line_RatingOwn->setText("Own Rating TODO");
+#ifdef SUSPENDED
if (data.mPgpKnown)
{
ui->line_RatingImplicit->setText(tr("+50 Known PGP"));
@@ -713,26 +669,25 @@ void IdDialog::insertIdDetails(uint32_t token)
{
ui->line_RatingImplicit->setText(tr("+5 Anon Id"));
}
-
- {
- QString rating = QString::number(data.mReputation.mOverallScore);
- ui->line_RatingOverall->setText(rating);
- }
-
{
QString rating = QString::number(data.mReputation.mIdScore);
ui->line_RatingImplicit->setText(rating);
}
+#endif
+
+ ui->overallOpinion_TF->setText(QString::number(data.mReputation.mOverallScore));
+
+ switch(data.mReputation.mOwnOpinion)
{
- QString rating = QString::number(data.mReputation.mOwnOpinion);
- ui->line_RatingOwn->setText(rating);
+ case RsIdentity::OPINION_NEGATIVE: ui->ownOpinion_CB->setCurrentIndex(0); break ;
+ case RsIdentity::OPINION_NEUTRAL : ui->ownOpinion_CB->setCurrentIndex(1); break ;
+ case RsIdentity::OPINION_POSITIVE: ui->ownOpinion_CB->setCurrentIndex(2); break ;
+ default:
+ std::cerr << "Unexpected value in own opinion: " << data.mReputation.mOwnOpinion << std::endl;
}
- {
- QString rating = QString::number(data.mReputation.mPeerOpinion);
- ui->line_RatingPeers->setText(rating);
- }
+ ui->neighborNodesOpinion_TF->setText(QString::number(data.mReputation.mPeerOpinion));
}
void IdDialog::modifyReputation()
@@ -743,33 +698,18 @@ void IdDialog::modifyReputation()
#endif
RsGxsId id(ui->lineEdit_KeyId->text().toStdString());
+
+ RsIdentity::Opinion op ;
- int mod = 0;
- if (ui->repMod_Accept->isChecked())
- {
- mod += 100;
- }
- else if (ui->repMod_Positive->isChecked())
- {
- mod += 10;
- }
- else if (ui->repMod_Negative->isChecked())
- {
- mod += -10;
- }
- else if (ui->repMod_Ban->isChecked())
- {
- mod += -100;
- }
- else if (ui->repMod_Custom->isChecked())
- {
- mod += ui->repMod_spinBox->value();
- }
- else
- {
- // invalid
- return;
- }
+ switch(ui->ownOpinion_CB->currentIndex())
+ {
+ case 0: op = RsIdentity::OPINION_NEGATIVE ; break ;
+ case 1: op = RsIdentity::OPINION_NEUTRAL ; break ;
+ case 2: op = RsIdentity::OPINION_POSITIVE ; break ;
+ default:
+ std::cerr << "Wrong value from opinion combobox. Bug??" << std::endl;
+
+ }
#ifdef ID_DEBUG
std::cerr << "IdDialog::modifyReputation() ID: " << id << " Mod: " << mod;
@@ -777,7 +717,7 @@ void IdDialog::modifyReputation()
#endif
uint32_t token;
- if (!rsIdentity->submitOpinion(token, id, false, mod))
+ if (!rsIdentity->submitOpinion(token, id, false, op))
{
#ifdef ID_DEBUG
std::cerr << "IdDialog::modifyReputation() Error submitting Opinion";
diff --git a/retroshare-gui/src/gui/Identity/IdDialog.ui b/retroshare-gui/src/gui/Identity/IdDialog.ui
index 4109e6bcb..789dd66f6 100644
--- a/retroshare-gui/src/gui/Identity/IdDialog.ui
+++ b/retroshare-gui/src/gui/Identity/IdDialog.ui
@@ -7,7 +7,7 @@
0
0
826
- 752
+ 757
@@ -483,7 +483,80 @@
-
-
-
+
-
+
+
+ true
+
+
+
+ -
+
+
+ Your opinion:
+
+
+
+ -
+
+
+ Neighbor nodes:
+
+
+
+ -
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans'; font-size:9pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Your own opinion about an identity rules the visibility of that identity for yourself,</p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">and is shared among friends. A final score is calculated according to a formula that accounts your own opinion and your friends' opinions about someone:</p>
+<p style="-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> S = own_opinion * a + friends_opinion * (1-a)</p>
+<p style="-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The factor 'a' depends on the type of ID. </p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- anonymous IDs: </p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- PGP-signed IDs by unknown PGP keys: a=</p>
+<p style="-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The overall score is used in chat lobbies, forums and channels to decide on the actions to take for each specific identity:</p>
+<p style="-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">S < -0.5: Posts are not stored, nor forwarded </p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">S < 0.2: Posts are hidden, but still transmitted</p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">S < 0.0: </p>
+<p style="-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The overall rating is computed in such a way that it is not possible for a single person to deterministically change someone's status at neighbor nodes.</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
+
+
+ 1
+
+
-
+
+ Positive
+
+
+ -
+
+ Neutral
+
+
+ -
+
+ Negative
+
+
+
+
+ -
+
+
+ true
+
+
+
+ -
@@ -492,158 +565,12 @@
- Overall
-
-
-
- -
-
-
- true
-
-
-
- -
-
-
- Implicit
-
-
-
- -
-
-
- true
-
-
-
- -
-
-
- Opinion
-
-
-
- -
-
-
- true
-
-
-
- -
-
-
- Peers
-
-
-
- -
-
-
- true
+ Overall:
- -
-
-
- Qt::NoFocus
-
-
- Edit reputation
-
-
-
- :/images/edit_24.png:/images/edit_24.png
-
-
-
- 24
- 24
-
-
-
- Qt::ToolButtonTextBesideIcon
-
-
- true
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- Tweak Opinion
-
-
-
-
-
-
- Accept (+100)
-
-
-
- -
-
-
- Positive (+10)
-
-
-
- -
-
-
- Negative (-10)
-
-
-
- -
-
-
- Ban (-100)
-
-
-
- -
-
-
-
-
-
- Custom
-
-
-
- -
-
-
- -100
-
-
- 100
-
-
-
-
-
- -
-
-
- Modify
-
-
-
@@ -730,9 +657,6 @@
lineEdit_KeyId
lineEdit_GpgId
lineEdit_GpgName
- line_RatingOverall
- line_RatingImplicit
- line_RatingOwn