diff options
Diffstat (limited to '')
-rw-r--r-- | linden/indra/newview/llfolderview.cpp | 92 |
1 files changed, 84 insertions, 8 deletions
diff --git a/linden/indra/newview/llfolderview.cpp b/linden/indra/newview/llfolderview.cpp index 8e010b8..e87ac0c 100644 --- a/linden/indra/newview/llfolderview.cpp +++ b/linden/indra/newview/llfolderview.cpp | |||
@@ -282,7 +282,39 @@ void LLFolderViewItem::refreshFromListener() | |||
282 | { | 282 | { |
283 | if(mListener) | 283 | if(mListener) |
284 | { | 284 | { |
285 | //Super crazy hack to build the creator search label - RK | ||
286 | LLInventoryItem* item = gInventory.getItem(mListener->getUUID()); | ||
287 | std::string creator_name; | ||
288 | if(item) | ||
289 | { | ||
290 | if(item->getCreatorUUID().notNull()) | ||
291 | { | ||
292 | gCacheName->getFullName(item->getCreatorUUID(), creator_name); | ||
293 | } | ||
294 | } | ||
295 | mLabelCreator = creator_name; | ||
296 | /*if(creator_name == "(Loading...)") | ||
297 | mLabelCreator = ""; | ||
298 | else | ||
299 | mLabelCreator = creator_name;*/ | ||
300 | |||
301 | //Label for desc search | ||
302 | std::string desc; | ||
303 | if(item) | ||
304 | { | ||
305 | if(!item->getDescription().empty()) | ||
306 | { | ||
307 | desc = item->getDescription(); | ||
308 | } | ||
309 | } | ||
310 | mLabelDesc = desc; | ||
311 | |||
312 | //Label for name search | ||
285 | mLabel = mListener->getDisplayName(); | 313 | mLabel = mListener->getDisplayName(); |
314 | |||
315 | //Build label for combined search - RK | ||
316 | mLabelAll = mLabel + " " + mLabelCreator + " " + mLabelDesc; | ||
317 | |||
286 | setIcon(mListener->getIcon()); | 318 | setIcon(mListener->getIcon()); |
287 | time_t creation_date = mListener->getCreationDate(); | 319 | time_t creation_date = mListener->getCreationDate(); |
288 | if (mCreationDate != creation_date) | 320 | if (mCreationDate != creation_date) |
@@ -300,20 +332,55 @@ void LLFolderViewItem::refresh() | |||
300 | refreshFromListener(); | 332 | refreshFromListener(); |
301 | 333 | ||
302 | std::string searchable_label(mLabel); | 334 | std::string searchable_label(mLabel); |
335 | std::string searchable_label_creator(mLabelCreator); | ||
336 | std::string searchable_label_desc(mLabelDesc); | ||
337 | std::string searchable_label_all(mLabelAll); | ||
338 | |||
339 | //add the (no modify), (no transfer) etc stuff to each label. | ||
303 | searchable_label.append(mLabelSuffix); | 340 | searchable_label.append(mLabelSuffix); |
341 | searchable_label_creator.append(mLabelSuffix); | ||
342 | searchable_label_desc.append(mLabelSuffix); | ||
343 | searchable_label_all.append(mLabelSuffix); | ||
344 | |||
345 | //all labels need to be uppercase. | ||
304 | LLStringUtil::toUpper(searchable_label); | 346 | LLStringUtil::toUpper(searchable_label); |
347 | LLStringUtil::toUpper(searchable_label_creator); | ||
348 | LLStringUtil::toUpper(searchable_label_desc); | ||
349 | LLStringUtil::toUpper(searchable_label_all); | ||
305 | 350 | ||
306 | if (mSearchableLabel.compare(searchable_label)) | 351 | if (mSearchableLabel.compare(searchable_label) || |
352 | mSearchableLabelCreator.compare(searchable_label_creator) || | ||
353 | mSearchableLabelDesc.compare(searchable_label_creator)) | ||
307 | { | 354 | { |
308 | mSearchableLabel.assign(searchable_label); | 355 | mSearchableLabel.assign(searchable_label); |
356 | mSearchableLabelCreator.assign(searchable_label_creator); | ||
357 | mSearchableLabelDesc.assign(searchable_label_desc); | ||
358 | mSearchableLabelAll.assign(searchable_label_all); | ||
359 | |||
309 | dirtyFilter(); | 360 | dirtyFilter(); |
310 | // some part of label has changed, so overall width has potentially changed | 361 | //some part of label has changed, so overall width has potentially changed |
311 | if (mParentFolder) | 362 | if (mParentFolder) |
312 | { | ||
313 | mParentFolder->requestArrange(); | 363 | mParentFolder->requestArrange(); |
314 | } | 364 | } |
365 | |||
366 | /*if(mSearchableLabelCreator.compare(searchable_label_creator)) | ||
367 | { | ||
368 | mSearchableLabelCreator.assign(searchable_label_creator); | ||
369 | |||
370 | dirtyFilter(); | ||
371 | if(mParentFolder) | ||
372 | mParentFolder->requestArrange(); | ||
315 | } | 373 | } |
316 | 374 | ||
375 | if(mSearchableLabelDesc.compare(searchable_label_desc)) | ||
376 | { | ||
377 | mSearchableLabelDesc.assign(searchable_label_desc); | ||
378 | |||
379 | dirtyFilter(); | ||
380 | if(mParentFolder) | ||
381 | mParentFolder->requestArrange(); | ||
382 | }*/ | ||
383 | |||
317 | S32 label_width = sFont->getWidth(mLabel); | 384 | S32 label_width = sFont->getWidth(mLabel); |
318 | if( mLabelSuffix.size() ) | 385 | if( mLabelSuffix.size() ) |
319 | { | 386 | { |
@@ -587,9 +654,16 @@ void LLFolderViewItem::rename(const std::string& new_name) | |||
587 | } | 654 | } |
588 | } | 655 | } |
589 | 656 | ||
590 | const std::string& LLFolderViewItem::getSearchableLabel() const | 657 | const std::string& LLFolderViewItem::getSearchableLabel(U32 search_type = 0) const |
591 | { | 658 | { |
592 | return mSearchableLabel; | 659 | if(search_type == 3) |
660 | return mSearchableLabelAll; | ||
661 | else if(search_type == 2) | ||
662 | return mSearchableLabelDesc; | ||
663 | else if(search_type == 1) | ||
664 | return mSearchableLabelCreator; | ||
665 | else | ||
666 | return mSearchableLabel; | ||
593 | } | 667 | } |
594 | 668 | ||
595 | const std::string& LLFolderViewItem::getName( void ) const | 669 | const std::string& LLFolderViewItem::getName( void ) const |
@@ -4524,11 +4598,13 @@ BOOL LLInventoryFilter::check(LLFolderViewItem* item) | |||
4524 | } | 4598 | } |
4525 | LLFolderViewEventListener* listener = item->getListener(); | 4599 | LLFolderViewEventListener* listener = item->getListener(); |
4526 | const LLUUID& item_id = listener->getUUID(); | 4600 | const LLUUID& item_id = listener->getUUID(); |
4527 | mSubStringMatchOffset = mFilterSubString.size() ? item->getSearchableLabel().find(mFilterSubString) : std::string::npos; | 4601 | |
4602 | U32 search_type = gSavedSettings.getU32("InventorySearchType"); | ||
4603 | mSubStringMatchOffset = mFilterSubString.size() ? item->getSearchableLabel(search_type).find(mFilterSubString) : std::string::npos; | ||
4528 | BOOL passed = (listener->getNInventoryType() & mFilterOps.mFilterTypes || listener->getNInventoryType() == LLInventoryType::NIT_NONE) | 4604 | BOOL passed = (listener->getNInventoryType() & mFilterOps.mFilterTypes || listener->getNInventoryType() == LLInventoryType::NIT_NONE) |
4529 | && (mFilterSubString.size() == 0 || mSubStringMatchOffset != std::string::npos) | 4605 | && (mFilterSubString.size() == 0 || mSubStringMatchOffset != std::string::npos) |
4530 | && (mFilterWorn == false || gAgent.isWearingItem(item_id) || | 4606 | && (mFilterWorn == false || gAgent.isWearingItem(item_id) || |
4531 | gAgent.getAvatarObject() && gAgent.getAvatarObject()->isWearingAttachment(item_id)) | 4607 | (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isWearingAttachment(item_id))) |
4532 | && ((listener->getPermissionMask() & mFilterOps.mPermissions) == mFilterOps.mPermissions) | 4608 | && ((listener->getPermissionMask() & mFilterOps.mPermissions) == mFilterOps.mPermissions) |
4533 | && (listener->getCreationDate() >= earliest && listener->getCreationDate() <= mFilterOps.mMaxDate); | 4609 | && (listener->getCreationDate() >= earliest && listener->getCreationDate() <= mFilterOps.mMaxDate); |
4534 | return passed; | 4610 | return passed; |