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->idTreeWidget->header(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(headerContextMenuRequested(QPoint)));
|
||||||
|
|
||||||
connect(ui->filterLineEdit, SIGNAL(textChanged(QString)), this, SLOT(filterChanged(QString)));
|
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->inviteButton, SIGNAL(clicked()), this, SLOT(sendInvite()));
|
||||||
connect(ui->editButton, SIGNAL(clicked()), this, SLOT(editIdentity()));
|
connect(ui->editButton, SIGNAL(clicked()), this, SLOT(editIdentity()));
|
||||||
|
@ -388,8 +388,8 @@ IdDialog::IdDialog(QWidget *parent)
|
||||||
ui->toolButton_New->setMenu(menu);
|
ui->toolButton_New->setMenu(menu);
|
||||||
|
|
||||||
/* Add filter actions */
|
/* 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("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("ID"), RsIdentityListModel::COLUMN_THREAD_ID, tr("Search ID"));
|
||||||
|
|
||||||
/* Set initial section sizes */
|
/* Set initial section sizes */
|
||||||
QHeaderView * circlesheader = ui->treeWidget_membership->header () ;
|
QHeaderView * circlesheader = ui->treeWidget_membership->header () ;
|
||||||
|
@ -1300,7 +1300,7 @@ void IdDialog::processSettings(bool load)
|
||||||
// load settings
|
// load settings
|
||||||
|
|
||||||
// filterColumn
|
// 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
|
// state of splitter
|
||||||
ui->mainSplitter->restoreState(Settings->value("splitter").toByteArray());
|
ui->mainSplitter->restoreState(Settings->value("splitter").toByteArray());
|
||||||
|
@ -1322,7 +1322,7 @@ void IdDialog::processSettings(bool load)
|
||||||
// save settings
|
// save settings
|
||||||
|
|
||||||
// filterColumn
|
// filterColumn
|
||||||
Settings->setValue("filterColumn", ui->filterLineEdit->currentFilter());
|
//Settings->setValue("filterColumn", ui->filterLineEdit->currentFilter());
|
||||||
|
|
||||||
// state of splitter
|
// state of splitter
|
||||||
Settings->setValue("splitter", ui->mainSplitter->saveState());
|
Settings->setValue("splitter", ui->mainSplitter->saveState());
|
||||||
|
@ -2112,20 +2112,15 @@ void IdDialog::editIdentity()
|
||||||
|
|
||||||
void IdDialog::filterIds()
|
void IdDialog::filterIds()
|
||||||
{
|
{
|
||||||
int filterColumn = ui->filterLineEdit->currentFilter();
|
|
||||||
QString text = ui->filterLineEdit->text();
|
QString text = ui->filterLineEdit->text();
|
||||||
|
|
||||||
RsIdentityListModel::FilterType ft;
|
int8_t ft=0;
|
||||||
|
|
||||||
switch(filterColumn)
|
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;
|
||||||
case RsIdentityListModel::COLUMN_THREAD_ID: ft = RsIdentityListModel::FILTER_TYPE_ID;
|
if(!ui->idTreeWidget->isColumnHidden(RsIdentityListModel::COLUMN_THREAD_OWNER_NAME)) ft |= RsIdentityListModel::FILTER_TYPE_OWNER_NAME;
|
||||||
break;
|
if(!ui->idTreeWidget->isColumnHidden(RsIdentityListModel::COLUMN_THREAD_OWNER_ID)) ft |= RsIdentityListModel::FILTER_TYPE_OWNER_ID;
|
||||||
default:
|
|
||||||
case RsIdentityListModel::COLUMN_THREAD_NAME: ft = RsIdentityListModel::FILTER_TYPE_NAME;
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
mIdListModel->setFilter(ft,{ text });
|
mIdListModel->setFilter(ft,{ text });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -127,7 +127,7 @@
|
||||||
<enum>Qt::NoFocus</enum>
|
<enum>Qt::NoFocus</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="../icons.qrc">
|
<iconset resource="../images.qrc">
|
||||||
<normaloff>:/icons/help_64.png</normaloff>:/icons/help_64.png</iconset>
|
<normaloff>:/icons/help_64.png</normaloff>:/icons/help_64.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="checkable">
|
<property name="checkable">
|
||||||
|
@ -173,7 +173,11 @@
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="LineEditClear" name="filterLineEdit"/>
|
<widget class="QLineEdit" name="filterLineEdit">
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>Search...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QToolButton" name="toolButton_New">
|
<widget class="QToolButton" name="toolButton_New">
|
||||||
|
@ -1037,11 +1041,6 @@ border-image: url(:/images/closepressed.png)
|
||||||
</action>
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
|
||||||
<class>LineEditClear</class>
|
|
||||||
<extends>QLineEdit</extends>
|
|
||||||
<header>gui/common/LineEditClear.h</header>
|
|
||||||
</customwidget>
|
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>RSComboBox</class>
|
<class>RSComboBox</class>
|
||||||
<extends>QComboBox</extends>
|
<extends>QComboBox</extends>
|
||||||
|
@ -1063,8 +1062,8 @@ border-image: url(:/images/closepressed.png)
|
||||||
<tabstop>idTreeWidget</tabstop>
|
<tabstop>idTreeWidget</tabstop>
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../icons.qrc"/>
|
|
||||||
<include location="../images.qrc"/>
|
<include location="../images.qrc"/>
|
||||||
|
<include location="../icons.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|
|
@ -367,29 +367,25 @@ QVariant RsIdentityListModel::data(const QModelIndex &index, int role) const
|
||||||
bool RsIdentityListModel::passesFilter(const EntryIndex& e,int /*column*/) const
|
bool RsIdentityListModel::passesFilter(const EntryIndex& e,int /*column*/) const
|
||||||
{
|
{
|
||||||
QString s ;
|
QString s ;
|
||||||
bool passes_strings = true ;
|
|
||||||
|
|
||||||
if(e.type == ENTRY_TYPE_IDENTITY && !mFilterStrings.empty())
|
if(mFilterStrings.empty() || e.type != ENTRY_TYPE_IDENTITY)
|
||||||
{
|
return true;
|
||||||
switch(mFilterType)
|
|
||||||
{
|
|
||||||
case FILTER_TYPE_ID: s = displayRole(e,COLUMN_THREAD_ID).toString();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FILTER_TYPE_NAME: s = displayRole(e,COLUMN_THREAD_NAME).toString();
|
auto passes_strings = [&](const QString& s) -> bool {
|
||||||
if(s.isNull())
|
bool res = true;
|
||||||
passes_strings = false;
|
|
||||||
break;
|
|
||||||
case FILTER_TYPE_NONE:
|
|
||||||
RS_ERR("None Type for Filter.");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!s.isNull())
|
|
||||||
for(auto iter(mFilterStrings.begin()); iter != mFilterStrings.end(); ++iter)
|
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
|
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
|
#ifdef DEBUG_MODEL
|
||||||
std::cerr << "Setting filter to filter_type=" << int(filter_type) << " and strings to " ;
|
std::cerr << "Setting filter to filter_type=" << int(filter_type) << " and strings to " ;
|
||||||
|
|
|
@ -60,7 +60,9 @@ public:
|
||||||
|
|
||||||
enum FilterType{ FILTER_TYPE_NONE = 0x00,
|
enum FilterType{ FILTER_TYPE_NONE = 0x00,
|
||||||
FILTER_TYPE_ID = 0x01,
|
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,
|
enum EntryType{ ENTRY_TYPE_TOP_LEVEL = 0x00,
|
||||||
|
@ -142,7 +144,7 @@ public:
|
||||||
RsGxsId getIdentity(const QModelIndex&) const;
|
RsGxsId getIdentity(const QModelIndex&) const;
|
||||||
int getCategory(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 expandItem(const QModelIndex&) ;
|
||||||
void collapseItem(const QModelIndex&) ;
|
void collapseItem(const QModelIndex&) ;
|
||||||
|
@ -218,7 +220,7 @@ private:
|
||||||
uint32_t updateFilterStatus(ForumModelIndex i,int column,const QStringList& strings);
|
uint32_t updateFilterStatus(ForumModelIndex i,int column,const QStringList& strings);
|
||||||
|
|
||||||
QStringList mFilterStrings;
|
QStringList mFilterStrings;
|
||||||
FilterType mFilterType;
|
uint8_t mFilterType;
|
||||||
|
|
||||||
rstime_t mLastInternalDataUpdate;
|
rstime_t mLastInternalDataUpdate;
|
||||||
rstime_t mLastNodeUpdate;;
|
rstime_t mLastNodeUpdate;;
|
||||||
|
@ -245,3 +247,4 @@ private:
|
||||||
mutable QTimer *mIdentityUpdateTimer;
|
mutable QTimer *mIdentityUpdateTimer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue