From e5f0e6fcc7b1f087ea5fe1e6900125c7b5a98ba4 Mon Sep 17 00:00:00 2001 From: thunder2 Date: Wed, 24 Dec 2014 14:43:06 +0000 Subject: [PATCH] IdDialog: - optimized fill - fixed utf8 issue - added new strings to translation - added load/save of ui state - fixed splitter resize - fixed sensitive state of menu items in context menu Updated english translation git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7791 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- retroshare-gui/src/gui/Identity/IdDialog.cpp | 576 ++++++++++--------- retroshare-gui/src/gui/Identity/IdDialog.h | 25 +- retroshare-gui/src/gui/gxs/GxsIdChooser.cpp | 2 +- retroshare-gui/src/lang/retroshare_en.ts | 96 ++-- 4 files changed, 355 insertions(+), 344 deletions(-) diff --git a/retroshare-gui/src/gui/Identity/IdDialog.cpp b/retroshare-gui/src/gui/Identity/IdDialog.cpp index 2363cbf8e..5d27dcdf8 100644 --- a/retroshare-gui/src/gui/Identity/IdDialog.cpp +++ b/retroshare-gui/src/gui/Identity/IdDialog.cpp @@ -25,27 +25,30 @@ #include #include "IdDialog.h" +#include "ui_IdDialog.h" +#include "IdEditDialog.h" #include "gui/gxs/GxsIdDetails.h" #include "gui/gxs/GxsIdTreeWidgetItem.h" #include "gui/common/UIStateHelper.h" #include "gui/chat/ChatDialog.h" +#include "gui/settings/rsharesettings.h" #include -//#include //On header #include "retroshare/rsgxsflags.h" #include "retroshare/rsmsgs.h" #include +#include /****** * #define ID_DEBUG 1 *****/ // Data Requests. -#define IDDIALOG_IDLIST 1 -#define IDDIALOG_IDDETAILS 2 -#define IDDIALOG_REPLIST 3 -#define IDDIALOG_REFRESH 4 +#define IDDIALOG_IDLIST 1 +#define IDDIALOG_IDDETAILS 2 +#define IDDIALOG_REPLIST 3 +#define IDDIALOG_REFRESH 4 /**************************************************************** */ @@ -68,108 +71,111 @@ #define IMAGE_EDIT ":/images/edit_16.png" /** Constructor */ -IdDialog::IdDialog(QWidget *parent) -: RsGxsUpdateBroadcastPage(rsIdentity, parent) +IdDialog::IdDialog(QWidget *parent) : + RsGxsUpdateBroadcastPage(rsIdentity, parent), + ui(new Ui::IdDialog) { - ui.setupUi(this); + ui->setupUi(this); mIdQueue = NULL; /* Setup UI helper */ mStateHelper = new UIStateHelper(this); - mStateHelper->addWidget(IDDIALOG_IDLIST, ui.treeWidget_IdList); - mStateHelper->addLoadPlaceholder(IDDIALOG_IDLIST, ui.treeWidget_IdList, false); - mStateHelper->addClear(IDDIALOG_IDLIST, ui.treeWidget_IdList); +// mStateHelper->addWidget(IDDIALOG_IDLIST, ui->treeWidget_IdList); + mStateHelper->addLoadPlaceholder(IDDIALOG_IDLIST, ui->treeWidget_IdList, false); + mStateHelper->addClear(IDDIALOG_IDLIST, ui->treeWidget_IdList); - mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.lineEdit_Nickname); - mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.lineEdit_KeyId); -// mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.lineEdit_GpgHash); - 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.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_Nickname); + mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_KeyId); +// mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_GpgHash); + 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->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->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.lineEdit_Nickname); - mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.lineEdit_GpgName); - mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.lineEdit_KeyId); -// mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.lineEdit_GpgHash); - 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.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_Nickname); + mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_GpgName); + mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_KeyId); +// mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_GpgHash); + 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->line_RatingOverall); + mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->line_RatingImplicit); + mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->line_RatingOwn); + mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->line_RatingPeers); - 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.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_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->line_RatingOverall); + mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->line_RatingImplicit); + mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->line_RatingOwn); + mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->line_RatingPeers); - //mStateHelper->addWidget(IDDIALOG_REPLIST, ui.treeWidget_RepList); - //mStateHelper->addLoadPlaceholder(IDDIALOG_REPLIST, ui.treeWidget_RepList); - //mStateHelper->addClear(IDDIALOG_REPLIST, ui.treeWidget_RepList); + //mStateHelper->addWidget(IDDIALOG_REPLIST, ui->treeWidget_RepList); + //mStateHelper->addLoadPlaceholder(IDDIALOG_REPLIST, ui->treeWidget_RepList); + //mStateHelper->addClear(IDDIALOG_REPLIST, ui->treeWidget_RepList); /* Connect signals */ - connect(ui.toolButton_NewId, SIGNAL(clicked()), this, SLOT(addIdentity())); - connect(ui.todoPushButton, SIGNAL(clicked()), this, SLOT(todo())); - //connect(ui.toolButton_Delete, SIGNAL(clicked()), this, SLOT(removeIdentity())); - //connect(ui.toolButton_EditId, SIGNAL(clicked()), this, SLOT(editIdentity())); - connect(ui.removeIdentity, SIGNAL(triggered()), this, SLOT(removeIdentity())); - connect(ui.editIdentity, SIGNAL(triggered()), this, SLOT(editIdentity())); - connect(ui.chatIdentity, SIGNAL(triggered()), this, SLOT(chatIdentity())); + connect(ui->toolButton_NewId, SIGNAL(clicked()), this, SLOT(addIdentity())); + connect(ui->todoPushButton, SIGNAL(clicked()), this, SLOT(todo())); + //connect(ui->toolButton_Delete, SIGNAL(clicked()), this, SLOT(removeIdentity())); + //connect(ui->toolButton_EditId, SIGNAL(clicked()), this, SLOT(editIdentity())); + connect(ui->removeIdentity, SIGNAL(triggered()), this, SLOT(removeIdentity())); + connect(ui->editIdentity, SIGNAL(triggered()), this, SLOT(editIdentity())); + connect(ui->chatIdentity, SIGNAL(triggered()), this, SLOT(chatIdentity())); - connect(ui.treeWidget_IdList, SIGNAL(itemSelectionChanged()), this, SLOT(updateSelection())); - connect(ui.treeWidget_IdList, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(IdListCustomPopupMenu(QPoint))); + connect(ui->treeWidget_IdList, SIGNAL(itemSelectionChanged()), this, SLOT(updateSelection())); + connect(ui->treeWidget_IdList, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(IdListCustomPopupMenu(QPoint))); - 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->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())); - ui.headerFrame->setHeaderImage(QPixmap(":/images/identity/identity_64.png")); - ui.headerFrame->setHeaderText(tr("Identities")); + ui->headerFrame->setHeaderImage(QPixmap(":/images/identity/identity_64.png")); + ui->headerFrame->setHeaderText(tr("Identities")); + + /* Initialize splitter */ + ui->splitter->setStretchFactor(0, 1); + ui->splitter->setStretchFactor(1, 0); /* Add filter types */ - ui.filterComboBox->addItem(tr("All"), RSID_FILTER_ALL); - ui.filterComboBox->addItem(tr("Owned by you"), RSID_FILTER_YOURSELF); - ui.filterComboBox->addItem(tr("Owned by neighbor nodes"), RSID_FILTER_FRIENDS); - ui.filterComboBox->addItem(tr("Owned by distant nodes"), RSID_FILTER_OTHERS); - ui.filterComboBox->addItem(tr("Anonymous"), RSID_FILTER_PSEUDONYMS); - ui.filterComboBox->setCurrentIndex(0); + ui->filterComboBox->addItem(tr("All"), RSID_FILTER_ALL); + ui->filterComboBox->addItem(tr("Owned by you"), RSID_FILTER_YOURSELF); + ui->filterComboBox->addItem(tr("Owned by neighbor nodes"), RSID_FILTER_FRIENDS); + ui->filterComboBox->addItem(tr("Owned by distant nodes"), RSID_FILTER_OTHERS); + ui->filterComboBox->addItem(tr("Anonymous"), RSID_FILTER_PSEUDONYMS); + ui->filterComboBox->setCurrentIndex(0); /* Add filter actions */ - QTreeWidgetItem *headerItem = ui.treeWidget_IdList->headerItem(); + QTreeWidgetItem *headerItem = ui->treeWidget_IdList->headerItem(); QString headerText = headerItem->text(RSID_COL_NICKNAME); - ui.filterLineEdit->addFilter(QIcon(), headerText, RSID_COL_NICKNAME, QString("%1 %2").arg(tr("Search"), headerText)); + ui->filterLineEdit->addFilter(QIcon(), headerText, RSID_COL_NICKNAME, QString("%1 %2").arg(tr("Search"), headerText)); headerText = headerItem->text(RSID_COL_KEYID); - ui.filterLineEdit->addFilter(QIcon(), headerItem->text(RSID_COL_KEYID), RSID_COL_KEYID, QString("%1 %2").arg(tr("Search"), headerText)); - - - /* Set header resize modes and initial section sizes ID TreeView*/ - QHeaderView * _idheader = ui.treeWidget_IdList->header () ; - _idheader->resizeSection ( RSID_COL_NICKNAME, 170 ); + ui->filterLineEdit->addFilter(QIcon(), headerItem->text(RSID_COL_KEYID), RSID_COL_KEYID, QString("%1 %2").arg(tr("Search"), headerText)); + + /* Set header resize modes and initial section sizes ID TreeView*/ + QHeaderView * _idheader = ui->treeWidget_IdList->header () ; + _idheader->resizeSection ( RSID_COL_NICKNAME, 170 ); /* Setup tree */ - ui.treeWidget_IdList->sortByColumn(RSID_COL_NICKNAME, Qt::AscendingOrder); - ui.treeWidget_IdList->setContextMenuPolicy(Qt::CustomContextMenu) ; - + ui->treeWidget_IdList->sortByColumn(RSID_COL_NICKNAME, Qt::AscendingOrder); + ui->treeWidget_IdList->setContextMenuPolicy(Qt::CustomContextMenu) ; mIdQueue = new TokenQueue(rsIdentity->getTokenService(), this); @@ -177,10 +183,10 @@ IdDialog::IdDialog(QWidget *parent) mStateHelper->setActive(IDDIALOG_REPLIST, false); // Hiding RepList until that part is finished. - //ui.treeWidget_RepList->setVisible(false); - ui.toolButton_Reputation->setVisible(false); + //ui->treeWidget_RepList->setVisible(false); + ui->toolButton_Reputation->setVisible(false); #ifndef UNFINISHED - ui.todoPushButton->hide() ; + ui->todoPushButton->hide() ; #endif QString hlp_str = tr( @@ -200,22 +206,60 @@ IdDialog::IdDialog(QWidget *parent)

\ ") ; - registerHelpButton(ui.helpButton, hlp_str) ; + registerHelpButton(ui->helpButton, hlp_str) ; + + // load settings + processSettings(true); } IdDialog::~IdDialog() { + // save settings + processSettings(false); + + delete(ui); delete(mIdQueue); } void IdDialog::todo() { QMessageBox::information(this, "Todo", - "Open points:
    " -// "
  • Delete ID" - "
  • Reputation" - "
  • Load/save settings" - "
"); + "Open points:
    " + "
  • Reputation" + "
"); +} + +void IdDialog::processSettings(bool load) +{ + QHeaderView *header = ui->treeWidget_IdList->header(); + + Settings->beginGroup("IdDialog"); + + if (load) { + // load settings + + // filterColumn + ui->filterLineEdit->setCurrentFilter(Settings->value("filterColumn", RSID_COL_NICKNAME).toInt()); + + // state of thread tree + header->restoreState(Settings->value("IdList").toByteArray()); + + // state of splitter + ui->splitter->restoreState(Settings->value("splitter").toByteArray()); + } else { + // save settings + + // filterColumn + Settings->setValue("filterColumn", ui->filterLineEdit->currentFilter()); + + // state of thread tree + Settings->setValue("IdList", header->saveState()); + + // state of splitter + Settings->setValue("splitter", ui->splitter->saveState()); + } + + Settings->endGroup(); } void IdDialog::filterComboBoxChanged() @@ -230,25 +274,30 @@ void IdDialog::filterChanged(const QString& /*text*/) void IdDialog::updateSelection() { - QTreeWidgetItem *item = ui.treeWidget_IdList->currentItem(); - RsGxsGroupId id; + QTreeWidgetItem *item = ui->treeWidget_IdList->currentItem(); + RsGxsGroupId id; - if (item) - { - id = RsGxsGroupId(item->text(RSID_COL_KEYID).toStdString()); + if (item) { + id = RsGxsGroupId(item->text(RSID_COL_KEYID).toStdString()); } - requestIdDetails(id); + if (id != mId) { + mId = id; + requestIdDetails(); + requestRepList(); + } } void IdDialog::requestIdList() { + //Disable by default, will be enable by insertIdDetails() + ui->removeIdentity->setEnabled(false); + ui->editIdentity->setEnabled(false); + if (!mIdQueue) return; mStateHelper->setLoading(IDDIALOG_IDLIST, true); - mStateHelper->setLoading(IDDIALOG_IDDETAILS, true); - mStateHelper->setLoading(IDDIALOG_REPLIST, true); mIdQueue->cancelActiveRequestTokens(IDDIALOG_IDLIST); @@ -313,27 +362,20 @@ bool IdDialog::fillIdListItem(const RsGxsIdGroup& data, QTreeWidgetItem *&item, item = new QTreeWidgetItem(); } item->setText(RSID_COL_NICKNAME, QString::fromUtf8(data.mMeta.mGroupName.c_str())); - item->setText(RSID_COL_KEYID, QString::fromStdString(data.mMeta.mGroupId.toStdString())); - - QFont font("Courier New",10,50,false); - font.setStyleHint(QFont::TypeWriter,QFont::PreferMatch); - item->setFont(RSID_COL_KEYID,font) ; + item->setText(RSID_COL_KEYID, QString::fromStdString(data.mMeta.mGroupId.toStdString())); if(isOwnId) { - QFont font = item->font(RSID_COL_NICKNAME) ; - font.setWeight(QFont::Bold) ; - item->setFont(RSID_COL_NICKNAME,font) ; - item->setFont(RSID_COL_IDTYPE,font) ; - - font = item->font(RSID_COL_KEYID) ; - font.setWeight(QFont::Bold) ; - item->setFont(RSID_COL_KEYID,font) ; - - item->setToolTip(RSID_COL_NICKNAME,tr("This identity is owned by you")) ; - item->setToolTip(RSID_COL_KEYID ,tr("This identity is owned by you")) ; - item->setToolTip(RSID_COL_IDTYPE ,tr("This identity is owned by you")) ; + QFont font = item->font(RSID_COL_NICKNAME) ; + font.setBold(true) ; + item->setFont(RSID_COL_NICKNAME,font) ; + item->setFont(RSID_COL_IDTYPE,font) ; + item->setFont(RSID_COL_KEYID,font) ; + QString tooltip = tr("This identity is owned by you"); + item->setToolTip(RSID_COL_NICKNAME, tooltip) ; + item->setToolTip(RSID_COL_KEYID, tooltip) ; + item->setToolTip(RSID_COL_IDTYPE, tooltip) ; } QPixmap pixmap = QPixmap::fromImage(GxsIdDetails::makeDefaultIcon(RsGxsId(data.mMeta.mGroupId))) ; @@ -370,7 +412,7 @@ void IdDialog::insertIdList(uint32_t token) { mStateHelper->setLoading(IDDIALOG_IDLIST, false); - int accept = ui.filterComboBox->itemData(ui.filterComboBox->currentIndex()).toInt(); + int accept = ui->filterComboBox->itemData(ui->filterComboBox->currentIndex()).toInt(); RsGxsIdGroup data; std::vector datavector; @@ -382,14 +424,8 @@ void IdDialog::insertIdList(uint32_t token) std::cerr << std::endl; #endif - mStateHelper->setLoading(IDDIALOG_IDDETAILS, false); - mStateHelper->setLoading(IDDIALOG_REPLIST, false); mStateHelper->setActive(IDDIALOG_IDLIST, false); - mStateHelper->setActive(IDDIALOG_IDDETAILS, false); - mStateHelper->setActive(IDDIALOG_REPLIST, false); mStateHelper->clear(IDDIALOG_IDLIST); - mStateHelper->clear(IDDIALOG_IDDETAILS); - mStateHelper->clear(IDDIALOG_REPLIST); return; } @@ -399,14 +435,14 @@ void IdDialog::insertIdList(uint32_t token) RsPgpId ownPgpId = rsPeers->getGPGOwnId(); /* Update existing and remove not existing items */ - QTreeWidgetItemIterator itemIterator(ui.treeWidget_IdList); + QTreeWidgetItemIterator itemIterator(ui->treeWidget_IdList); QTreeWidgetItem *item = NULL; while ((item = *itemIterator) != NULL) { ++itemIterator; for (vit = datavector.begin(); vit != datavector.end(); ++vit) { - if (vit->mMeta.mGroupId == RsGxsGroupId(item->text(RSID_COL_KEYID).toStdString())) + if (vit->mMeta.mGroupId == RsGxsGroupId(item->text(RSID_COL_KEYID).toStdString())) { break; } @@ -431,41 +467,36 @@ void IdDialog::insertIdList(uint32_t token) item = NULL; if (fillIdListItem(*vit, item, ownPgpId, accept)) { - ui.treeWidget_IdList->addTopLevelItem(item); + ui->treeWidget_IdList->addTopLevelItem(item); } } filterIds(); - // fix up buttons. updateSelection(); } -void IdDialog::requestIdDetails(RsGxsGroupId &id) +void IdDialog::requestIdDetails() { mIdQueue->cancelActiveRequestTokens(IDDIALOG_IDDETAILS); - if (id.isNull()) + if (mId.isNull()) { mStateHelper->setActive(IDDIALOG_IDDETAILS, false); - mStateHelper->setActive(IDDIALOG_REPLIST, false); mStateHelper->setLoading(IDDIALOG_IDDETAILS, false); - mStateHelper->setLoading(IDDIALOG_REPLIST, false); mStateHelper->clear(IDDIALOG_IDDETAILS); - mStateHelper->clear(IDDIALOG_REPLIST); return; } mStateHelper->setLoading(IDDIALOG_IDDETAILS, true); - mStateHelper->setLoading(IDDIALOG_REPLIST, true); RsTokReqOptions opts; opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA; uint32_t token; - std::list groupIds; - groupIds.push_back(id); + std::list groupIds; + groupIds.push_back(mId); mIdQueue->requestGroupInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, groupIds, IDDIALOG_IDDETAILS); } @@ -480,12 +511,9 @@ void IdDialog::insertIdDetails(uint32_t token) if (!rsIdentity->getGroupData(token, datavector)) { mStateHelper->setActive(IDDIALOG_IDDETAILS, false); - mStateHelper->setActive(IDDIALOG_REPLIST, false); - mStateHelper->setLoading(IDDIALOG_REPLIST, false); - mStateHelper->clear(IDDIALOG_IDDETAILS); mStateHelper->clear(IDDIALOG_REPLIST); - ui.lineEdit_KeyId->setText("ERROR GETTING KEY!"); + ui->lineEdit_KeyId->setText("ERROR GETTING KEY!"); return; } @@ -497,12 +525,9 @@ void IdDialog::insertIdDetails(uint32_t token) #endif mStateHelper->setActive(IDDIALOG_IDDETAILS, false); - mStateHelper->setActive(IDDIALOG_REPLIST, false); - mStateHelper->setLoading(IDDIALOG_REPLIST, false); mStateHelper->clear(IDDIALOG_IDDETAILS); - mStateHelper->clear(IDDIALOG_REPLIST); - ui.lineEdit_KeyId->setText("INVALID DV SIZE"); + ui->lineEdit_KeyId->setText("INVALID DV SIZE"); return; } @@ -514,75 +539,75 @@ void IdDialog::insertIdDetails(uint32_t token) /* get GPG Details from rsPeers */ RsPgpId ownPgpId = rsPeers->getGPGOwnId(); - ui.lineEdit_Nickname->setText(QString::fromUtf8(data.mMeta.mGroupName.c_str())); - ui.lineEdit_KeyId->setText(QString::fromStdString(data.mMeta.mGroupId.toStdString())); - //ui.lineEdit_GpgHash->setText(QString::fromStdString(data.mPgpIdHash.toStdString())); - ui.lineEdit_GpgId->setText(QString::fromStdString(data.mPgpId.toStdString())); + ui->lineEdit_Nickname->setText(QString::fromUtf8(data.mMeta.mGroupName.c_str())); + ui->lineEdit_KeyId->setText(QString::fromStdString(data.mMeta.mGroupId.toStdString())); + //ui->lineEdit_GpgHash->setText(QString::fromStdString(data.mPgpIdHash.toStdString())); + ui->lineEdit_GpgId->setText(QString::fromStdString(data.mPgpId.toStdString())); - ui.headerFrame->setHeaderText(QString::fromUtf8(data.mMeta.mGroupName.c_str())); + ui->headerFrame->setHeaderText(QString::fromUtf8(data.mMeta.mGroupName.c_str())); QPixmap pix = QPixmap::fromImage(GxsIdDetails::makeDefaultIcon(RsGxsId(data.mMeta.mGroupId))) ; #ifdef ID_DEBUG - std::cerr << "Setting header frame image : " << pix.width() << " x " << pix.height() << std::endl; + std::cerr << "Setting header frame image : " << pix.width() << " x " << pix.height() << std::endl; #endif - ui.headerFrame->setHeaderImage(pix); + ui->headerFrame->setHeaderImage(pix); if (data.mPgpKnown) { RsPeerDetails details; rsPeers->getGPGDetails(data.mPgpId, details); - ui.lineEdit_GpgName->setText(QString::fromUtf8(details.name.c_str())); + ui->lineEdit_GpgName->setText(QString::fromUtf8(details.name.c_str())); } else { if (data.mMeta.mGroupFlags & RSGXSID_GROUPFLAG_REALID) { - ui.lineEdit_GpgName->setText(tr("Unknown real name")); + ui->lineEdit_GpgName->setText(tr("Unknown real name")); } else { - ui.lineEdit_GpgName->setText(tr("Anonymous Id")); + ui->lineEdit_GpgName->setText(tr("Anonymous Id")); } } if(data.mPgpId.isNull()) { - ui.lineEdit_GpgId->hide() ; - ui.lineEdit_GpgName->hide() ; - ui.PgpId_LB->hide() ; - ui.PgpName_LB->hide() ; + ui->lineEdit_GpgId->hide() ; + ui->lineEdit_GpgName->hide() ; + ui->PgpId_LB->hide() ; + ui->PgpName_LB->hide() ; } else { - ui.lineEdit_GpgId->show() ; - ui.lineEdit_GpgName->show() ; - ui.PgpId_LB->show() ; - ui.PgpName_LB->show() ; + ui->lineEdit_GpgId->show() ; + ui->lineEdit_GpgName->show() ; + ui->PgpId_LB->show() ; + ui->PgpName_LB->show() ; } bool isOwnId = (data.mPgpKnown && (data.mPgpId == ownPgpId)) || (data.mMeta.mSubscribeFlags & GXS_SERV::GROUP_SUBSCRIBE_ADMIN); if(isOwnId) if (data.mPgpKnown) - ui.lineEdit_Type->setText(tr("Identity owned by you, linked to your Retroshare node")) ; + ui->lineEdit_Type->setText(tr("Identity owned by you, linked to your Retroshare node")) ; else - ui.lineEdit_Type->setText(tr("Anonymous identity, owned by you")) ; + ui->lineEdit_Type->setText(tr("Anonymous identity, owned by you")) ; else if (data.mMeta.mGroupFlags & RSGXSID_GROUPFLAG_REALID) { if (data.mPgpKnown) if (rsPeers->isGPGAccepted(data.mPgpId)) - ui.lineEdit_Type->setText(tr("Owned by a friend Retroshare node")) ; + ui->lineEdit_Type->setText(tr("Owned by a friend Retroshare node")) ; else - ui.lineEdit_Type->setText(tr("Owned by 2-hops Retroshare node")) ; + ui->lineEdit_Type->setText(tr("Owned by 2-hops Retroshare node")) ; else - ui.lineEdit_Type->setText(tr("Owned by unknown Retroshare node")) ; + ui->lineEdit_Type->setText(tr("Owned by unknown Retroshare node")) ; } else - ui.lineEdit_Type->setText(tr("Anonymous identity")) ; + ui->lineEdit_Type->setText(tr("Anonymous identity")) ; // if (isOwnId) // { -// ui.radioButton_IdYourself->setChecked(true); +// ui->radioButton_IdYourself->setChecked(true); // } // else if (data.mMeta.mGroupFlags & RSGXSID_GROUPFLAG_REALID) // { @@ -590,79 +615,75 @@ void IdDialog::insertIdDetails(uint32_t token) // { // if (rsPeers->isGPGAccepted(data.mPgpId)) // { -// ui.radioButton_IdFriend->setChecked(true); +// ui->radioButton_IdFriend->setChecked(true); // } // else // { -// ui.radioButton_IdFOF->setChecked(true); +// ui->radioButton_IdFOF->setChecked(true); // } // } // else // { -// ui.radioButton_IdOther->setChecked(true); +// ui->radioButton_IdOther->setChecked(true); // } // } // else // { -// ui.radioButton_IdPseudo->setChecked(true); +// ui->radioButton_IdPseudo->setChecked(true); // } if (isOwnId) { - mStateHelper->setWidgetEnabled(ui.toolButton_Reputation, false); - ui.editIdentity->setEnabled(true); - ui.removeIdentity->setEnabled(true); - ui.chatIdentity->setEnabled(false); + mStateHelper->setWidgetEnabled(ui->toolButton_Reputation, false); + ui->editIdentity->setEnabled(true); + ui->removeIdentity->setEnabled(true); + ui->chatIdentity->setEnabled(false); } else { // No Reputation yet! - mStateHelper->setWidgetEnabled(ui.toolButton_Reputation, /*true*/ false); - ui.editIdentity->setEnabled(false); - ui.removeIdentity->setEnabled(false); - ui.chatIdentity->setEnabled(true); + mStateHelper->setWidgetEnabled(ui->toolButton_Reputation, /*true*/ false); + ui->editIdentity->setEnabled(false); + ui->removeIdentity->setEnabled(false); + ui->chatIdentity->setEnabled(true); } /* now fill in the reputation information */ - ui.line_RatingOverall->setText("Overall Rating TODO"); - ui.line_RatingOwn->setText("Own Rating TODO"); + ui->line_RatingOverall->setText("Overall Rating TODO"); + ui->line_RatingOwn->setText("Own Rating TODO"); if (data.mPgpKnown) { - ui.line_RatingImplicit->setText("+50 Known PGP"); + ui->line_RatingImplicit->setText("+50 Known PGP"); } else if (data.mMeta.mGroupFlags & RSGXSID_GROUPFLAG_REALID) { - ui.line_RatingImplicit->setText("+10 UnKnown PGP"); + ui->line_RatingImplicit->setText("+10 UnKnown PGP"); } else { - ui.line_RatingImplicit->setText("+5 Anon Id"); + ui->line_RatingImplicit->setText("+5 Anon Id"); } { QString rating = QString::number(data.mReputation.mOverallScore); - ui.line_RatingOverall->setText(rating); + ui->line_RatingOverall->setText(rating); } { QString rating = QString::number(data.mReputation.mIdScore); - ui.line_RatingImplicit->setText(rating); + ui->line_RatingImplicit->setText(rating); } { QString rating = QString::number(data.mReputation.mOwnOpinion); - ui.line_RatingOwn->setText(rating); + ui->line_RatingOwn->setText(rating); } { QString rating = QString::number(data.mReputation.mPeerOpinion); - ui.line_RatingPeers->setText(rating); + ui->line_RatingPeers->setText(rating); } - - /* request network ratings */ - // Removing this for the moment. - // requestRepList(data.mMeta.mGroupId); } void IdDialog::modifyReputation() @@ -672,28 +693,28 @@ void IdDialog::modifyReputation() std::cerr << std::endl; #endif - RsGxsId id(ui.lineEdit_KeyId->text().toStdString()); + RsGxsId id(ui->lineEdit_KeyId->text().toStdString()); int mod = 0; - if (ui.repMod_Accept->isChecked()) + if (ui->repMod_Accept->isChecked()) { mod += 100; } - else if (ui.repMod_Positive->isChecked()) + else if (ui->repMod_Positive->isChecked()) { mod += 10; } - else if (ui.repMod_Negative->isChecked()) + else if (ui->repMod_Negative->isChecked()) { mod += -10; } - else if (ui.repMod_Ban->isChecked()) + else if (ui->repMod_Ban->isChecked()) { mod += -100; } - else if (ui.repMod_Custom->isChecked()) + else if (ui->repMod_Custom->isChecked()) { - mod += ui.repMod_spinBox->value(); + mod += ui->repMod_spinBox->value(); } else { @@ -727,10 +748,29 @@ void IdDialog::modifyReputation() return; } -void IdDialog::updateDisplay(bool /*complete*/) +void IdDialog::updateDisplay(bool complete) { /* Update identity list */ - requestIdList(); + + if (complete) { + /* Fill complete */ + requestIdList(); + requestIdDetails(); + requestRepList(); + + return; + } + + std::list grpIds; + getAllGrpIds(grpIds); + if (!getGrpIds().empty()) { + requestIdList(); + + if (!mId.isNull() && std::find(grpIds.begin(), grpIds.end(), mId) != grpIds.end()) { + requestIdDetails(); + requestRepList(); + } + } } void IdDialog::addIdentity() @@ -742,7 +782,7 @@ void IdDialog::addIdentity() void IdDialog::removeIdentity() { - QTreeWidgetItem *item = ui.treeWidget_IdList->currentItem(); + QTreeWidgetItem *item = ui->treeWidget_IdList->currentItem(); if (!item) { #ifdef ID_DEBUG @@ -751,30 +791,21 @@ void IdDialog::removeIdentity() #endif return; } - - QString queryWrn; - queryWrn.clear(); - queryWrn.append(tr("Do you really want to delete this Identity ?")); - - if ((QMessageBox::question(this, tr("Really delete? "),queryWrn,QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes))== QMessageBox::Yes) - { - std::string keyId = item->text(RSID_COL_KEYID).toStdString(); - - uint32_t dummyToken = 0; - RsGxsIdGroup group; - group.mMeta.mGroupId=RsGxsGroupId(keyId); - rsIdentity->deleteIdentity(dummyToken, group); - } - else - return; - + if ((QMessageBox::question(this, tr("Really delete? "), tr("Do you really want to delete this Identity?"), QMessageBox::Yes|QMessageBox::No, QMessageBox::No))== QMessageBox::Yes) + { + std::string keyId = item->text(RSID_COL_KEYID).toStdString(); + uint32_t dummyToken = 0; + RsGxsIdGroup group; + group.mMeta.mGroupId=RsGxsGroupId(keyId); + rsIdentity->deleteIdentity(dummyToken, group); + } } void IdDialog::editIdentity() { - QTreeWidgetItem *item = ui.treeWidget_IdList->currentItem(); + QTreeWidgetItem *item = ui->treeWidget_IdList->currentItem(); if (!item) { #ifdef ID_DEBUG @@ -793,20 +824,23 @@ void IdDialog::editIdentity() void IdDialog::filterIds() { - int filterColumn = ui.filterLineEdit->currentFilter(); - QString text = ui.filterLineEdit->text(); + int filterColumn = ui->filterLineEdit->currentFilter(); + QString text = ui->filterLineEdit->text(); - ui.treeWidget_IdList->filterItems(filterColumn, text); + ui->treeWidget_IdList->filterItems(filterColumn, text); } -void IdDialog::requestRepList(const RsGxsGroupId &aboutId) +void IdDialog::requestRepList() { + // Removing this for the moment. + return; + mStateHelper->setLoading(IDDIALOG_REPLIST, true); mIdQueue->cancelActiveRequestTokens(IDDIALOG_REPLIST); std::list groupIds; - groupIds.push_back(aboutId); + groupIds.push_back(mId); RsTokReqOptions opts; opts.mReqType = GXS_REQUEST_TYPE_MSG_DATA; @@ -844,7 +878,7 @@ void IdDialog::insertRepList(uint32_t token) /* insert 4 columns */ /* friend name */ - item->setId(op.mMeta.mAuthorId, RSIDREP_COL_NAME); + item->setId(op.mMeta.mAuthorId, RSIDREP_COL_NAME); /* score */ item->setText(RSIDREP_COL_OPINION, QString::number(op.getOpinion())); @@ -855,9 +889,10 @@ void IdDialog::insertRepList(uint32_t token) /* local reputation */ item->setText(RSIDREP_COL_REPUTATION, QString::number(op.getReputation())); - ui.treeWidget_RepList->addTopLevelItem(item); + ui->treeWidget_RepList->addTopLevelItem(item); } #endif + mStateHelper->setActive(IDDIALOG_REPLIST, true); } @@ -876,14 +911,15 @@ void IdDialog::loadRequest(const TokenQueue * /*queue*/, const TokenRequest &req case IDDIALOG_IDDETAILS: insertIdDetails(req.mToken); - break; + break; case IDDIALOG_REPLIST: insertRepList(req.mToken); break; case IDDIALOG_REFRESH: - updateDisplay(true); +// replaced by RsGxsUpdateBroadcastPage +// updateDisplay(true); break; default: std::cerr << "IdDialog::loadRequest() ERROR"; @@ -894,49 +930,45 @@ void IdDialog::loadRequest(const TokenQueue * /*queue*/, const TokenRequest &req void IdDialog::IdListCustomPopupMenu( QPoint ) { - //Disable by default, will be enable by insertIdDetails() - ui.removeIdentity->setEnabled(false); - ui.editIdentity->setEnabled(false); + QMenu contextMnu( this ); - QMenu contextMnu( this ); + contextMnu.addAction(ui->editIdentity); + contextMnu.addAction(ui->removeIdentity); - contextMnu.addAction(ui.editIdentity); - contextMnu.addAction(ui.removeIdentity); + std::list own_identities ; + rsIdentity->getOwnIds(own_identities) ; - std::list own_identities ; - rsIdentity->getOwnIds(own_identities) ; + if(own_identities.size() <= 1) + { + QAction *action = contextMnu.addAction(QIcon(), tr("Chat with this peer"), this, SLOT(chatIdentity())); - if(own_identities.size() <= 1) - { - QAction * action = contextMnu.addAction(QIcon(),"Chat with this peer",this,SLOT(chatIdentity())); + if(own_identities.empty()) + action->setEnabled(false) ; + else + action->setData(QString::fromStdString((own_identities.front()).toStdString())) ; + } + else + { + QMenu *mnu = contextMnu.addMenu(tr("Chat with this peer as...")) ; - if(own_identities.empty()) - action->setEnabled(false) ; - else - action->setData(QString::fromStdString((own_identities.front()).toStdString())) ; - } - else - { - QMenu *mnu = contextMnu.addMenu("Chat with this peer as...") ; + for(std::list::const_iterator it=own_identities.begin();it!=own_identities.end();++it) + { + RsIdentityDetails idd ; + rsIdentity->getIdDetails(*it,idd) ; - for(std::list::const_iterator it=own_identities.begin();it!=own_identities.end();++it) - { - RsIdentityDetails idd ; - rsIdentity->getIdDetails(*it,idd) ; + QPixmap pixmap = QPixmap::fromImage(GxsIdDetails::makeDefaultIcon(*it)) ; - QPixmap pixmap = QPixmap::fromImage(GxsIdDetails::makeDefaultIcon(*it)) ; + QAction *action = mnu->addAction(QIcon(pixmap), QString("%1 (%2)").arg(QString::fromUtf8(idd.mNickname.c_str()), QString::fromStdString((*it).toStdString())), this, SLOT(chatIdentity())); + action->setData(QString::fromStdString((*it).toStdString())) ; + } + } - QAction * action = mnu->addAction(QIcon(pixmap),QString::fromStdString(idd.mNickname) + " (" + QString::fromStdString((*it).toStdString())+ ")",this,SLOT(chatIdentity())); - action->setData(QString::fromStdString((*it).toStdString())) ; - } - } - - contextMnu.exec(QCursor::pos()); + contextMnu.exec(QCursor::pos()); } void IdDialog::chatIdentity() { - QTreeWidgetItem *item = ui.treeWidget_IdList->currentItem(); + QTreeWidgetItem *item = ui->treeWidget_IdList->currentItem(); if (!item) { std::cerr << "IdDialog::editIdentity() Invalid item"; @@ -944,17 +976,15 @@ void IdDialog::chatIdentity() return; } - std::string keyId = item->text(RSID_COL_KEYID).toStdString(); + std::string keyId = item->text(RSID_COL_KEYID).toStdString(); - QAction *action = qobject_cast(QObject::sender()); - if (!action) - return ; + QAction *action = qobject_cast(QObject::sender()); + if (!action) + return ; - RsGxsId from_gxs_id(action->data().toString().toStdString()); - uint32_t error_code ; + RsGxsId from_gxs_id(action->data().toString().toStdString()); + uint32_t error_code ; - if(!rsMsgs->initiateDistantChatConnexion(RsGxsId(keyId), from_gxs_id, error_code)) - QMessageBox::information(NULL,"Distant chat cannot work","Distant chat refused with this peer. Error code: "+QString::number(error_code)) ; + if(!rsMsgs->initiateDistantChatConnexion(RsGxsId(keyId), from_gxs_id, error_code)) + QMessageBox::information(NULL, tr("Distant chat cannot work"), QString("%1 %2: %3").arg(tr("Distant chat refused with this peer.")).arg(tr("Error code")).arg(error_code)) ; } - - diff --git a/retroshare-gui/src/gui/Identity/IdDialog.h b/retroshare-gui/src/gui/Identity/IdDialog.h index 4e8c53bc5..d7a244209 100644 --- a/retroshare-gui/src/gui/Identity/IdDialog.h +++ b/retroshare-gui/src/gui/Identity/IdDialog.h @@ -25,18 +25,19 @@ #define IDENTITYDIALOG_H #include "gui/gxs/RsGxsUpdateBroadcastPage.h" -#include "ui_IdDialog.h" #include -#include - -#include "gui/Identity/IdEditDialog.h" #include "util/TokenQueue.h" #define IMAGE_IDDIALOG ":/images/identity/identities_32.png" +namespace Ui { +class IdDialog; +} + class UIStateHelper; +class QTreeWidgetItem; class IdDialog : public RsGxsUpdateBroadcastPage, public TokenResponse { @@ -68,21 +69,23 @@ private slots: void todo(); void modifyReputation(); - - /** Create the context popup menu and it's submenus */ + + /** Create the context popup menu and it's submenus */ void IdListCustomPopupMenu( QPoint point ); private: - void requestIdDetails(RsGxsGroupId &id); + void processSettings(bool load); + + void requestIdDetails(); void insertIdDetails(uint32_t token); void requestIdList(); - void requestIdData(std::list &ids); + void requestIdData(std::list &ids); bool fillIdListItem(const RsGxsIdGroup& data, QTreeWidgetItem *&item, const RsPgpId &ownPgpId, int accept); void insertIdList(uint32_t token); void filterIds(); - void requestRepList(const RsGxsGroupId &aboutId); + void requestRepList(); void insertRepList(uint32_t token); void requestIdEdit(std::string &id); @@ -92,8 +95,10 @@ private: TokenQueue *mIdQueue; UIStateHelper *mStateHelper; + RsGxsGroupId mId; + /* UI - from Designer */ - Ui::IdDialog ui; + Ui::IdDialog *ui; }; #endif diff --git a/retroshare-gui/src/gui/gxs/GxsIdChooser.cpp b/retroshare-gui/src/gui/gxs/GxsIdChooser.cpp index 3f488d5ec..4a9d1c8ef 100644 --- a/retroshare-gui/src/gui/gxs/GxsIdChooser.cpp +++ b/retroshare-gui/src/gui/gxs/GxsIdChooser.cpp @@ -24,7 +24,7 @@ #include "GxsIdChooser.h" #include "GxsIdDetails.h" #include "RsGxsUpdateBroadcastBase.h" -#include "gui/Identity/IdDialog.h" +#include "gui/Identity/IdEditDialog.h" #include #include diff --git a/retroshare-gui/src/lang/retroshare_en.ts b/retroshare-gui/src/lang/retroshare_en.ts index 88572084c..54c7fd24c 100644 --- a/retroshare-gui/src/lang/retroshare_en.ts +++ b/retroshare-gui/src/lang/retroshare_en.ts @@ -2860,14 +2860,6 @@ p, li { white-space: pre-wrap; } Signed by known nodes - - Create new Identity - - - - New ID - - Edit Circle @@ -3091,14 +3083,6 @@ p, li { white-space: pre-wrap; } Generate mass data - - Create new Identity - - - - New ID - - Do you really want to generate %1 messages ? @@ -5637,6 +5621,18 @@ p, li { white-space: pre-wrap; } Loading + + Open + + + + Open File + + + + Play Media + + GxsChannelPostsWidget @@ -5773,14 +5769,6 @@ p, li { white-space: pre-wrap; } OwnVote - - Create new Identity - - - - New ID - - GxsCommentTreeWidget @@ -5848,14 +5836,6 @@ p, li { white-space: pre-wrap; } before you can comment - - Create new Identity - - - - New ID - - GxsForumGroupDialog @@ -6320,14 +6300,6 @@ before you can comment Load Group Logo - - Create new Identity - - - - New ID - - Create Forum @@ -6414,6 +6386,10 @@ before you can comment No Signature + + Create new Identity + + GxsIdDetails @@ -6816,10 +6792,6 @@ p, li { white-space: pre-wrap; } Launches a distant chat with this peer - - Do you really want to delete this Identity ? - - Really delete? @@ -6908,6 +6880,26 @@ p, li { white-space: pre-wrap; } Anonymous identity + + Do you really want to delete this Identity? + + + + Chat with this peer as... + + + + Distant chat cannot work + + + + Distant chat refused with this peer. + + + + Error code + + IdEditDialog @@ -9674,14 +9666,6 @@ malicious behavior of crafted plugins. Please add a Title - - Create new Identity - - - - New ID - - Title @@ -9885,14 +9869,6 @@ malicious behavior of crafted plugins. This Year - - Create new Identity - - - - New ID - - Submit a new Post