aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/llfolderview.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--linden/indra/newview/llfolderview.cpp92
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
590const std::string& LLFolderViewItem::getSearchableLabel() const 657const 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
595const std::string& LLFolderViewItem::getName( void ) const 669const 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;