From c74c8650589f7258c8a6ee6e1a3f57648d54efbe Mon Sep 17 00:00:00 2001 From: Phenom Date: Mon, 17 Jul 2017 14:10:26 +0200 Subject: [PATCH] Add new Filter by ID in FriendList. --- retroshare-gui/src/gui/common/FriendList.cpp | 31 ++++++++++++++++---- retroshare-gui/src/gui/common/FriendList.h | 3 +- retroshare-gui/src/gui/common/FriendList.ui | 7 ++++- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/retroshare-gui/src/gui/common/FriendList.cpp b/retroshare-gui/src/gui/common/FriendList.cpp index 47cec8f70..c251a9575 100644 --- a/retroshare-gui/src/gui/common/FriendList.cpp +++ b/retroshare-gui/src/gui/common/FriendList.cpp @@ -139,6 +139,12 @@ FriendList::FriendList(QWidget *parent) : ui->filterLineEdit->setPlaceholderText(tr("Search")) ; ui->filterLineEdit->showFilterIcon(); + /* Add filter actions */ + QTreeWidgetItem *headerItem = ui->peerTreeWidget->headerItem(); + QString headerText = headerItem->text(COLUMN_NAME); + ui->filterLineEdit->addFilter(QIcon(), headerText, COLUMN_NAME, QString("%1 %2").arg(tr("Search"), headerText)); + ui->filterLineEdit->addFilter(QIcon(), tr("ID"), COLUMN_ID, tr("Search ID")); + mActionSortByState = new QAction(tr("Sort by state"), this); mActionSortByState->setCheckable(true); connect(mActionSortByState, SIGNAL(toggled(bool)), this, SLOT(sortByState(bool))); @@ -167,6 +173,7 @@ FriendList::FriendList(QWidget *parent) : ui->peerTreeWidget->setColumnWidth(COLUMN_NAME, 22 * fontWidth); ui->peerTreeWidget->setColumnWidth(COLUMN_LAST_CONTACT, 12 * fontWidth); ui->peerTreeWidget->setColumnWidth(COLUMN_IP, 15 * fontWidth); + ui->peerTreeWidget->setColumnWidth(COLUMN_ID, 32 * fontWidth); int avatarHeight = fontMetrics.height() * 3; ui->peerTreeWidget->setIconSize(QSize(avatarHeight, avatarHeight)); @@ -706,7 +713,12 @@ void FriendList::insertPeers() groupItem->setForeground(COLUMN_NAME, QBrush(textColorGroup())); /* used to find back the item */ - groupItem->setData(COLUMN_DATA, ROLE_ID, QString::fromStdString(groupInfo->id.toStdString())); + QString strID = QString::fromStdString(groupInfo->id.toStdString()); + groupItem->setData(COLUMN_DATA, ROLE_ID, strID); + //No needs for group ??? + //groupItem->setText(COLUMN_ID, strID); + //groupItem->setData(COLUMN_ID, ROLE_SORT_NAME, strID); + //groupItem->setData(COLUMN_ID, ROLE_FILTER, strID); groupItem->setData(COLUMN_DATA, ROLE_STANDARD, (groupInfo->flag & RS_GROUP_FLAG_STANDARD) ? true : false); /* Sort data */ @@ -808,7 +820,11 @@ void FriendList::insertPeers() gpgItem->setTextAlignment(COLUMN_NAME, Qt::AlignLeft | Qt::AlignVCenter); /* not displayed, used to find back the item */ - gpgItem->setData(COLUMN_DATA, ROLE_ID, QString::fromStdString(detail.gpg_id.toStdString())); + QString strID = QString::fromStdString(detail.gpg_id.toStdString()); + gpgItem->setData(COLUMN_DATA, ROLE_ID, strID); + gpgItem->setText(COLUMN_ID, strID); + gpgItem->setData(COLUMN_ID, ROLE_SORT_NAME, strID); + gpgItem->setData(COLUMN_ID, ROLE_FILTER, strID); /* Sort data */ for (int i = 0; i < columnCount; ++i) { @@ -893,7 +909,11 @@ void FriendList::insertPeers() } /* not displayed, used to find back the item */ - sslItem->setData(COLUMN_DATA, ROLE_ID, QString::fromStdString(sslDetail.id.toStdString())); + QString strID = QString::fromStdString(sslDetail.id.toStdString()); + sslItem->setData(COLUMN_DATA, ROLE_ID, strID); + sslItem->setText(COLUMN_ID, strID); + sslItem->setData(COLUMN_ID, ROLE_SORT_NAME, strID); + sslItem->setData(COLUMN_ID, ROLE_FILTER, strID); /* Custom state string */ QString customStateString; @@ -2262,8 +2282,9 @@ void FriendList::setShowGroups(bool show) */ void FriendList::filterItems(const QString &text) { - mFilterText = text; - ui->peerTreeWidget->filterItems(COLUMN_NAME, mFilterText, ROLE_FILTER); + int filterColumn = ui->filterLineEdit->currentFilter(); + mFilterText = text; + ui->peerTreeWidget->filterItems(filterColumn, mFilterText, ROLE_FILTER); } /** diff --git a/retroshare-gui/src/gui/common/FriendList.h b/retroshare-gui/src/gui/common/FriendList.h index 80b62f86d..f4a061e90 100644 --- a/retroshare-gui/src/gui/common/FriendList.h +++ b/retroshare-gui/src/gui/common/FriendList.h @@ -53,7 +53,8 @@ public: { COLUMN_NAME = 0, COLUMN_LAST_CONTACT = 1, - COLUMN_IP = 2 + COLUMN_IP = 2, + COLUMN_ID = 3 }; public: diff --git a/retroshare-gui/src/gui/common/FriendList.ui b/retroshare-gui/src/gui/common/FriendList.ui index d6f64ff5b..49a875088 100644 --- a/retroshare-gui/src/gui/common/FriendList.ui +++ b/retroshare-gui/src/gui/common/FriendList.ui @@ -71,7 +71,7 @@ false - 3 + 4 120 @@ -97,6 +97,11 @@ IP + + + ID + +