fixed forum search by content (patch from Phenom)

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7720 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2014-11-29 18:45:01 +00:00
parent 21fe2413cd
commit d164428bf9
4 changed files with 22 additions and 9 deletions

View File

@ -62,13 +62,13 @@
#define VIEW_FLAT 2 #define VIEW_FLAT 2
/* Thread constants */ /* Thread constants */
#define COLUMN_THREAD_COUNT 6
#define COLUMN_THREAD_TITLE 0 #define COLUMN_THREAD_TITLE 0
#define COLUMN_THREAD_READ 1 #define COLUMN_THREAD_READ 1
#define COLUMN_THREAD_DATE 2 #define COLUMN_THREAD_DATE 2
#define COLUMN_THREAD_AUTHOR 3 #define COLUMN_THREAD_AUTHOR 3
#define COLUMN_THREAD_SIGNED 4 #define COLUMN_THREAD_SIGNED 4
#define COLUMN_THREAD_CONTENT 5 #define COLUMN_THREAD_CONTENT 5
#define COLUMN_THREAD_COUNT 6
#define COLUMN_THREAD_DATA 0 // column for storing the userdata like msgid and parentid #define COLUMN_THREAD_DATA 0 // column for storing the userdata like msgid and parentid
@ -815,7 +815,7 @@ void GxsForumThreadWidget::fillThreadStatus(QString text)
ui->progressText->setText(text); ui->progressText->setText(text);
} }
QTreeWidgetItem *GxsForumThreadWidget::convertMsgToThreadWidget(const RsGxsForumMsg &msg, bool useChildTS, uint32_t filterColumn) QTreeWidgetItem *GxsForumThreadWidget::convertMsgToThreadWidget(const RsGxsForumMsg &msg, bool useChildTS, uint32_t filterColumn, QString filterString)
{ {
GxsIdRSTreeWidgetItem *item = new GxsIdRSTreeWidgetItem(mThreadCompareRole); GxsIdRSTreeWidgetItem *item = new GxsIdRSTreeWidgetItem(mThreadCompareRole);
item->moveToThread(ui->threadTreeWidget->thread()); item->moveToThread(ui->threadTreeWidget->thread());
@ -874,12 +874,12 @@ QTreeWidgetItem *GxsForumThreadWidget::convertMsgToThreadWidget(const RsGxsForum
} }
#endif #endif
if (filterColumn == COLUMN_THREAD_CONTENT) { //if (filterColumn == COLUMN_THREAD_CONTENT) {
// need content for filter // need content for filter
QTextDocument doc; QTextDocument doc;
doc.setHtml(QString::fromUtf8(msg.mMsg.c_str())); doc.setHtml(QString::fromUtf8(msg.mMsg.c_str()));
item->setText(COLUMN_THREAD_CONTENT, doc.toPlainText().replace(QString("\n"), QString(" "))); item->setText(COLUMN_THREAD_CONTENT, doc.toPlainText().replace(QString("\n"), QString(" ")));
} //}
item->setData(COLUMN_THREAD_DATA, ROLE_THREAD_MSGID, QString::fromStdString(msg.mMeta.mMsgId.toStdString())); item->setData(COLUMN_THREAD_DATA, ROLE_THREAD_MSGID, QString::fromStdString(msg.mMeta.mMsgId.toStdString()));
//#TODO //#TODO
@ -895,6 +895,9 @@ QTreeWidgetItem *GxsForumThreadWidget::convertMsgToThreadWidget(const RsGxsForum
item->setData(COLUMN_THREAD_DATA, ROLE_THREAD_MISSING, false); item->setData(COLUMN_THREAD_DATA, ROLE_THREAD_MISSING, false);
item->setHidden(!item->text(filterColumn).contains(filterString, Qt::CaseInsensitive));
return item; return item;
} }
@ -961,7 +964,8 @@ void GxsForumThreadWidget::insertThreads()
mFillThread->mCompareRole = mThreadCompareRole; mFillThread->mCompareRole = mThreadCompareRole;
mFillThread->mForumId = mForumId; mFillThread->mForumId = mForumId;
mFillThread->mFilterColumn = ui->filterLineEdit->currentFilter(); mFillThread->mFilterColumn = ui->filterLineEdit->currentFilter();
mFillThread->mFilterColumn = COLUMN_THREAD_TITLE; mFillThread->mFilterString = ui->filterLineEdit->text();
//mFillThread->mFilterColumn = COLUMN_THREAD_TITLE;
mFillThread->mExpandNewMessages = Settings->getForumExpandNewMessages(); mFillThread->mExpandNewMessages = Settings->getForumExpandNewMessages();
mFillThread->mViewType = ui->viewBox->currentIndex(); mFillThread->mViewType = ui->viewBox->currentIndex();
if (mLastViewType != mFillThread->mViewType || mLastForumID != mForumId) { if (mLastViewType != mFillThread->mViewType || mLastForumID != mForumId) {

View File

@ -52,7 +52,7 @@ public:
unsigned int newCount() { return mNewCount; } unsigned int newCount() { return mNewCount; }
unsigned int unreadCount() { return mUnreadCount; } unsigned int unreadCount() { return mUnreadCount; }
QTreeWidgetItem *convertMsgToThreadWidget(const RsGxsForumMsg &msg, bool useChildTS, uint32_t filterColumn); QTreeWidgetItem *convertMsgToThreadWidget(const RsGxsForumMsg &msg, bool useChildTS, uint32_t filterColumn, QString filterString);
QTreeWidgetItem *generateMissingItem(const RsGxsMessageId &msgId); QTreeWidgetItem *generateMissingItem(const RsGxsMessageId &msgId);
// Callback for all Loads. // Callback for all Loads.

View File

@ -45,6 +45,7 @@ GxsForumsFillThread::GxsForumsFillThread(GxsForumThreadWidget *parent)
mFillComplete = false; mFillComplete = false;
mFilterColumn = 0; mFilterColumn = 0;
mFilterString = QString();
mViewType = 0; mViewType = 0;
mFlatView = false; mFlatView = false;
@ -110,7 +111,7 @@ void GxsForumsFillThread::run()
service->requestMsgInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, grpIds); service->requestMsgInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, grpIds);
/* wait for the answer */ /* wait for the answer */
uint32_t requestStatus; uint32_t requestStatus = RsTokenService::GXS_REQUEST_V2_STATUS_PENDING;
while (!wasStopped()) { while (!wasStopped()) {
requestStatus = service->requestStatus(token); requestStatus = service->requestStatus(token);
if (requestStatus == RsTokenService::GXS_REQUEST_V2_STATUS_FAILED || if (requestStatus == RsTokenService::GXS_REQUEST_V2_STATUS_FAILED ||
@ -176,7 +177,7 @@ void GxsForumsFillThread::run()
std::cerr << "GxsForumsFillThread::run() Adding TopLevel Thread: mId: " << msg.mMeta.mMsgId << std::endl; std::cerr << "GxsForumsFillThread::run() Adding TopLevel Thread: mId: " << msg.mMeta.mMsgId << std::endl;
#endif #endif
QTreeWidgetItem *item = mParent->convertMsgToThreadWidget(msg, mUseChildTS, mFilterColumn); QTreeWidgetItem *item = mParent->convertMsgToThreadWidget(msg, mUseChildTS, mFilterColumn, mFilterString);
if (!mFlatView) { if (!mFlatView) {
threadList.push_back(QPair<std::string, QTreeWidgetItem*>(msg.mMeta.mMsgId.toStdString(), item)); threadList.push_back(QPair<std::string, QTreeWidgetItem*>(msg.mMeta.mMsgId.toStdString(), item));
} }
@ -218,9 +219,16 @@ void GxsForumsFillThread::run()
std::cerr << "GxsForumsFillThread::run() adding " << msg.mMeta.mMsgId << std::endl; std::cerr << "GxsForumsFillThread::run() adding " << msg.mMeta.mMsgId << std::endl;
#endif #endif
QTreeWidgetItem *item = mParent->convertMsgToThreadWidget(msg, mUseChildTS, mFilterColumn); QTreeWidgetItem *item = mParent->convertMsgToThreadWidget(msg, mUseChildTS, mFilterColumn, mFilterString);
threadPair.second->addChild(item); threadPair.second->addChild(item);
if ( !item->isHidden() && threadPair.second->isHidden() ){
threadPair.second->setHidden(false);
for (QTreeWidgetItem *cursIt = threadPair.second->parent(); cursIt; cursIt = cursIt->parent()){
cursIt->setHidden(false);
}
}
calculateExpand(msg, item); calculateExpand(msg, item);
/* add item to process list */ /* add item to process list */

View File

@ -28,6 +28,7 @@ signals:
public: public:
RsGxsGroupId mForumId; RsGxsGroupId mForumId;
int mFilterColumn; int mFilterColumn;
QString mFilterString;
bool mFillComplete; bool mFillComplete;
int mViewType; int mViewType;
bool mFlatView; bool mFlatView;