mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-07-21 05:39:11 -04:00
made identity list searchable by whatever is displayed
This commit is contained in:
parent
85f411463b
commit
aa268c8745
4 changed files with 41 additions and 48 deletions
|
@ -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 });
|
||||
}
|
||||
|
||||
|
|
|
@ -127,7 +127,7 @@
|
|||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../icons.qrc">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/icons/help_64.png</normaloff>:/icons/help_64.png</iconset>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
|
@ -173,7 +173,11 @@
|
|||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="LineEditClear" name="filterLineEdit"/>
|
||||
<widget class="QLineEdit" name="filterLineEdit">
|
||||
<property name="placeholderText">
|
||||
<string>Search...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="toolButton_New">
|
||||
|
@ -1037,11 +1041,6 @@ border-image: url(:/images/closepressed.png)
|
|||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>LineEditClear</class>
|
||||
<extends>QLineEdit</extends>
|
||||
<header>gui/common/LineEditClear.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>RSComboBox</class>
|
||||
<extends>QComboBox</extends>
|
||||
|
@ -1063,8 +1062,8 @@ border-image: url(:/images/closepressed.png)
|
|||
<tabstop>idTreeWidget</tabstop>
|
||||
</tabstops>
|
||||
<resources>
|
||||
<include location="../icons.qrc"/>
|
||||
<include location="../images.qrc"/>
|
||||
<include location="../icons.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
|
|
@ -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);
|
||||
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 " ;
|
||||
|
|
|
@ -60,7 +60,9 @@ public:
|
|||
|
||||
enum FilterType{ FILTER_TYPE_NONE = 0x00,
|
||||
FILTER_TYPE_ID = 0x01,
|
||||
FILTER_TYPE_NAME = 0x02
|
||||
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;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue