diff --git a/retroshare-gui/src/gui/Identity/IdDialog.cpp b/retroshare-gui/src/gui/Identity/IdDialog.cpp index eccfd7f9a..fbe83212d 100644 --- a/retroshare-gui/src/gui/Identity/IdDialog.cpp +++ b/retroshare-gui/src/gui/Identity/IdDialog.cpp @@ -298,7 +298,7 @@ IdDialog::IdDialog(QWidget *parent) connect(ui->idTreeWidget->header(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(headerContextMenuRequested(QPoint))); connect(ui->filterLineEdit, SIGNAL(textChanged(QString)), this, SLOT(filterChanged(QString))); - connect(ui->ownOpinion_CB, SIGNAL(currentIndexChanged(int)), this, SLOT(modifyReputation())); + //connect(ui->ownOpinion_CB, SIGNAL(currentIndexChanged(int)), this, SLOT(modifyReputation())); connect(ui->inviteButton, SIGNAL(clicked()), this, SLOT(sendInvite())); connect(ui->editButton, SIGNAL(clicked()), this, SLOT(editIdentity())); @@ -388,8 +388,8 @@ IdDialog::IdDialog(QWidget *parent) ui->toolButton_New->setMenu(menu); /* Add filter actions */ - ui->filterLineEdit->addFilter(QIcon(), tr("Name"), RsIdentityListModel::COLUMN_THREAD_NAME, QString("%1 %2").arg(tr("Search"), tr("Search name"))); - ui->filterLineEdit->addFilter(QIcon(), tr("ID"), RsIdentityListModel::COLUMN_THREAD_ID, tr("Search ID")); + //ui->filterLineEdit->addFilter(QIcon(), tr("Name"), RsIdentityListModel::COLUMN_THREAD_NAME, QString("%1 %2").arg(tr("Search"), tr("Search name"))); + //ui->filterLineEdit->addFilter(QIcon(), tr("ID"), RsIdentityListModel::COLUMN_THREAD_ID, tr("Search ID")); /* Set initial section sizes */ QHeaderView * circlesheader = ui->treeWidget_membership->header () ; @@ -1300,7 +1300,7 @@ void IdDialog::processSettings(bool load) // load settings // filterColumn - ui->filterLineEdit->setCurrentFilter(Settings->value("filterColumn", RsIdentityListModel::COLUMN_THREAD_NAME).toInt()); + //ui->filterLineEdit->setCurrentFilter(Settings->value("filterColumn", RsIdentityListModel::COLUMN_THREAD_NAME).toInt()); // state of splitter ui->mainSplitter->restoreState(Settings->value("splitter").toByteArray()); @@ -1322,7 +1322,7 @@ void IdDialog::processSettings(bool load) // save settings // filterColumn - Settings->setValue("filterColumn", ui->filterLineEdit->currentFilter()); + //Settings->setValue("filterColumn", ui->filterLineEdit->currentFilter()); // state of splitter Settings->setValue("splitter", ui->mainSplitter->saveState()); @@ -2112,20 +2112,15 @@ void IdDialog::editIdentity() void IdDialog::filterIds() { - int filterColumn = ui->filterLineEdit->currentFilter(); QString text = ui->filterLineEdit->text(); - RsIdentityListModel::FilterType ft; + int8_t ft=0; - switch(filterColumn) - { - case RsIdentityListModel::COLUMN_THREAD_ID: ft = RsIdentityListModel::FILTER_TYPE_ID; - break; - default: - case RsIdentityListModel::COLUMN_THREAD_NAME: ft = RsIdentityListModel::FILTER_TYPE_NAME; - break; + if(!ui->idTreeWidget->isColumnHidden(RsIdentityListModel::COLUMN_THREAD_ID)) ft |= RsIdentityListModel::FILTER_TYPE_ID; + if(!ui->idTreeWidget->isColumnHidden(RsIdentityListModel::COLUMN_THREAD_NAME)) ft |= RsIdentityListModel::FILTER_TYPE_NAME; + if(!ui->idTreeWidget->isColumnHidden(RsIdentityListModel::COLUMN_THREAD_OWNER_NAME)) ft |= RsIdentityListModel::FILTER_TYPE_OWNER_NAME; + if(!ui->idTreeWidget->isColumnHidden(RsIdentityListModel::COLUMN_THREAD_OWNER_ID)) ft |= RsIdentityListModel::FILTER_TYPE_OWNER_ID; - } mIdListModel->setFilter(ft,{ text }); } diff --git a/retroshare-gui/src/gui/Identity/IdDialog.ui b/retroshare-gui/src/gui/Identity/IdDialog.ui index faab8a48b..b60f24854 100644 --- a/retroshare-gui/src/gui/Identity/IdDialog.ui +++ b/retroshare-gui/src/gui/Identity/IdDialog.ui @@ -127,7 +127,7 @@ Qt::NoFocus - + :/icons/help_64.png:/icons/help_64.png @@ -173,7 +173,11 @@ 1 - + + + Search... + + @@ -1037,11 +1041,6 @@ border-image: url(:/images/closepressed.png) - - LineEditClear - QLineEdit -
gui/common/LineEditClear.h
-
RSComboBox QComboBox @@ -1063,8 +1062,8 @@ border-image: url(:/images/closepressed.png) idTreeWidget - + diff --git a/retroshare-gui/src/gui/Identity/IdentityListModel.cpp b/retroshare-gui/src/gui/Identity/IdentityListModel.cpp index 945b7359d..3cea16668 100644 --- a/retroshare-gui/src/gui/Identity/IdentityListModel.cpp +++ b/retroshare-gui/src/gui/Identity/IdentityListModel.cpp @@ -367,29 +367,25 @@ QVariant RsIdentityListModel::data(const QModelIndex &index, int role) const bool RsIdentityListModel::passesFilter(const EntryIndex& e,int /*column*/) const { QString s ; - bool passes_strings = true ; - if(e.type == ENTRY_TYPE_IDENTITY && !mFilterStrings.empty()) - { - switch(mFilterType) - { - case FILTER_TYPE_ID: s = displayRole(e,COLUMN_THREAD_ID).toString(); - break; + if(mFilterStrings.empty() || e.type != ENTRY_TYPE_IDENTITY) + return true; - case FILTER_TYPE_NAME: s = displayRole(e,COLUMN_THREAD_NAME).toString(); - if(s.isNull()) - passes_strings = false; - break; - case FILTER_TYPE_NONE: - RS_ERR("None Type for Filter."); - }; - } + auto passes_strings = [&](const QString& s) -> bool { + bool res = true; - if(!s.isNull()) - for(auto iter(mFilterStrings.begin()); iter != mFilterStrings.end(); ++iter) - passes_strings = passes_strings && s.contains(*iter,Qt::CaseInsensitive); + for(auto iter(mFilterStrings.begin()); iter != mFilterStrings.end(); ++iter) + res = res && s.contains(*iter,Qt::CaseInsensitive); - return passes_strings; + return res; + }; + + if((mFilterType & FilterType::FILTER_TYPE_ID) && passes_strings(displayRole(e,COLUMN_THREAD_ID ).toString())) return true; + if((mFilterType & FilterType::FILTER_TYPE_NAME) && passes_strings(displayRole(e,COLUMN_THREAD_NAME ).toString())) return true; + if((mFilterType & FilterType::FILTER_TYPE_OWNER_ID) && passes_strings(displayRole(e,COLUMN_THREAD_OWNER_ID ).toString())) return true; + if((mFilterType & FilterType::FILTER_TYPE_OWNER_NAME) && passes_strings(displayRole(e,COLUMN_THREAD_OWNER_NAME).toString())) return true; + + return false; } QVariant RsIdentityListModel::filterRole(const EntryIndex& e,int column) const @@ -406,7 +402,7 @@ uint32_t RsIdentityListModel::updateFilterStatus(ForumModelIndex /*i*/,int /*col } -void RsIdentityListModel::setFilter(FilterType filter_type, const QStringList& strings) +void RsIdentityListModel::setFilter(uint8_t filter_type, const QStringList& strings) { #ifdef DEBUG_MODEL std::cerr << "Setting filter to filter_type=" << int(filter_type) << " and strings to " ; diff --git a/retroshare-gui/src/gui/Identity/IdentityListModel.h b/retroshare-gui/src/gui/Identity/IdentityListModel.h index 518c503ab..f92949f2c 100644 --- a/retroshare-gui/src/gui/Identity/IdentityListModel.h +++ b/retroshare-gui/src/gui/Identity/IdentityListModel.h @@ -58,9 +58,11 @@ public: TreePathRole = Qt::UserRole+5, }; - enum FilterType{ FILTER_TYPE_NONE = 0x00, - FILTER_TYPE_ID = 0x01, - FILTER_TYPE_NAME = 0x02 + enum FilterType{ FILTER_TYPE_NONE = 0x00, + FILTER_TYPE_ID = 0x01, + FILTER_TYPE_NAME = 0x02, + FILTER_TYPE_OWNER_NAME = 0x04, + FILTER_TYPE_OWNER_ID = 0x08 }; enum EntryType{ ENTRY_TYPE_TOP_LEVEL = 0x00, @@ -142,7 +144,7 @@ public: RsGxsId getIdentity(const QModelIndex&) const; int getCategory(const QModelIndex&) const; - void setFilter(FilterType filter_type, const QStringList& strings) ; + void setFilter(uint8_t filter_type, const QStringList& strings) ; void expandItem(const QModelIndex&) ; void collapseItem(const QModelIndex&) ; @@ -218,7 +220,7 @@ private: uint32_t updateFilterStatus(ForumModelIndex i,int column,const QStringList& strings); QStringList mFilterStrings; - FilterType mFilterType; + uint8_t mFilterType; rstime_t mLastInternalDataUpdate; rstime_t mLastNodeUpdate;; @@ -245,3 +247,4 @@ private: mutable QTimer *mIdentityUpdateTimer; }; +