LLFolderView * LLInventoryPanel::createFolderView(LLInvFVBridge * bridge, bool useLabelSuffix) { LLRect folder_rect(0, 0, getRect().getWidth(), 0); LLFolderView* ret = new LLFolderView( getName(), folder_rect, LLUUID::null, this, bridge); ret->setAllowMultiSelect(mAllowMultiSelect); return ret; }
BOOL LLInventoryPanel::postBuild() { init_inventory_panel_actions(this); LLRect folder_rect(0, 0, getRect().getWidth(), 0); mFolders = new LLFolderView(getName(), NULL, folder_rect, LLUUID::null, this); mFolders->setAllowMultiSelect(mAllowMultiSelect); // scroller LLRect scroller_view_rect = getRect(); scroller_view_rect.translate(-scroller_view_rect.mLeft, -scroller_view_rect.mBottom); mScroller = new LLScrollableContainerView(std::string("Inventory Scroller"), scroller_view_rect, mFolders); mScroller->setFollowsAll(); mScroller->setReserveScrollCorner(TRUE); addChild(mScroller); mFolders->setScrollContainer(mScroller); // set up the callbacks from the inventory we're viewing, and then // build everything. mInventoryObserver = new LLInventoryPanelObserver(this); mInventory->addObserver(mInventoryObserver); rebuildViewsFor(LLUUID::null, LLInventoryObserver::ADD); // bit of a hack to make sure the inventory is open. mFolders->openFolder(std::string("My Inventory")); if (mSortOrderSetting != INHERIT_SORT_ORDER) { setSortOrder(gSavedSettings.getU32(mSortOrderSetting)); } else { setSortOrder(gSavedSettings.getU32(DEFAULT_SORT_ORDER)); } mFolders->setSortOrder(mFolders->getFilter()->getSortOrder()); return TRUE; }
LLFolderView * LLInventoryPanel::createFolderView(LLInvFVBridge * bridge, bool useLabelSuffix) { LLRect folder_rect(0, 0, getRect().getWidth(), 0); LLFolderView::Params p; p.name = getName(); p.title = getLabel(); p.rect = folder_rect; p.parent_panel = this; p.tool_tip = p.name; p.listener = bridge; p.use_label_suffix = useLabelSuffix; p.allow_multiselect = mAllowMultiSelect; p.show_empty_message = mShowEmptyMessage; p.show_load_status = mShowLoadStatus; return LLUICtrlFactory::create<LLFolderView>(p); }
void LLPlacesInventoryPanel::buildFolderView(const LLInventoryPanel::Params& params) { // Determine the root folder in case specified, and // build the views starting with that folder. const LLFolderType::EType preferred_type = LLViewerFolderType::lookupTypeFromNewCategoryName(params.start_folder); LLUUID root_id; if ("LIBRARY" == params.start_folder()) { root_id = gInventory.getLibraryRootFolderID(); } else { root_id = (preferred_type != LLFolderType::FT_NONE ? gInventory.findCategoryUUIDForType(preferred_type) : LLUUID::null); } LLRect folder_rect(0, 0, getRect().getWidth(), 0); LLPlacesFolderView::Params p; p.name = getName(); p.title = getLabel(); p.rect = folder_rect; p.listener = mInvFVBridgeBuilder->createBridge(LLAssetType::AT_CATEGORY, LLAssetType::AT_CATEGORY, LLInventoryType::IT_CATEGORY, this, NULL, root_id); p.parent_panel = this; p.allow_multiselect = mAllowMultiSelect; p.use_ellipses = true; // truncate inventory item text so remove horizontal scroller mFolderRoot = (LLFolderView*)LLUICtrlFactory::create<LLPlacesFolderView>(p); }
BOOL LLPlacesInventoryPanel::postBuild() { LLInventoryPanel::postBuild(); // clear Contents(); { mFolderRoot->destroyView(); mFolderRoot->getParent()->removeChild(mFolderRoot); mFolderRoot->die(); if( mScroller ) { removeChild( mScroller ); mScroller->die(); mScroller = NULL; } mFolderRoot = NULL; } mCommitCallbackRegistrar.pushScope(); // registered as a widget; need to push callback scope ourselves // create root folder { LLRect folder_rect(0, 0, getRect().getWidth(), 0); LLPlacesFolderView::Params p; p.name = getName(); p.title = getLabel(); p.rect = folder_rect; p.parent_panel = this; mFolderRoot = (LLFolderView*)LLUICtrlFactory::create<LLPlacesFolderView>(p); mFolderRoot->setAllowMultiSelect(mAllowMultiSelect); } mCommitCallbackRegistrar.popScope(); mFolderRoot->setCallbackRegistrar(&mCommitCallbackRegistrar); // scroller { LLRect scroller_view_rect = getRect(); scroller_view_rect.translate(-scroller_view_rect.mLeft, -scroller_view_rect.mBottom); LLScrollContainer::Params p; p.name("Inventory Scroller"); p.rect(scroller_view_rect); p.follows.flags(FOLLOWS_ALL); p.reserve_scroll_corner(true); p.tab_stop(true); mScroller = LLUICtrlFactory::create<LLScrollContainer>(p); } addChild(mScroller); mScroller->addChild(mFolderRoot); mFolderRoot->setScrollContainer(mScroller); mFolderRoot->addChild(mFolderRoot->mStatusTextBox); // cut subitems mFolderRoot->setUseEllipses(true); return TRUE; }
void LLInventoryPanel::initFromParams(const LLInventoryPanel::Params& params) { LLMemType mt(LLMemType::MTYPE_INVENTORY_POST_BUILD); mCommitCallbackRegistrar.pushScope(); // registered as a widget; need to push callback scope ourselves // Create root folder { LLRect folder_rect(0, 0, getRect().getWidth(), 0); LLFolderView::Params p; p.name = getName(); p.title = getLabel(); p.rect = folder_rect; p.parent_panel = this; p.tool_tip = p.name; p.use_label_suffix = params.use_label_suffix; mFolderRoot = LLUICtrlFactory::create<LLFolderView>(p); mFolderRoot->setAllowMultiSelect(mAllowMultiSelect); } mCommitCallbackRegistrar.popScope(); mFolderRoot->setCallbackRegistrar(&mCommitCallbackRegistrar); // Scroller { LLRect scroller_view_rect = getRect(); scroller_view_rect.translate(-scroller_view_rect.mLeft, -scroller_view_rect.mBottom); LLScrollContainer::Params p; p.name("Inventory Scroller"); p.rect(scroller_view_rect); p.follows.flags(FOLLOWS_ALL); p.reserve_scroll_corner(true); p.tab_stop(true); mScroller = LLUICtrlFactory::create<LLScrollContainer>(p); addChild(mScroller); mScroller->addChild(mFolderRoot); mFolderRoot->setScrollContainer(mScroller); mFolderRoot->addChild(mFolderRoot->mStatusTextBox); } // Set up the callbacks from the inventory we're viewing, and then build everything. mInventoryObserver = new LLInventoryPanelObserver(this); mInventory->addObserver(mInventoryObserver); mCompletionObserver = new LLInvPanelComplObserver(boost::bind(&LLInventoryPanel::onItemsCompletion, this)); mInventory->addObserver(mCompletionObserver); // Build view of inventory if we need default full hierarchy and inventory ready, // otherwise wait for idle callback. if (mBuildDefaultHierarchy && mInventory->isInventoryUsable() && !mViewsInitialized) { initializeViews(); } gIdleCallbacks.addFunction(onIdle, (void*)this); if (mSortOrderSetting != INHERIT_SORT_ORDER) { setSortOrder(gSavedSettings.getU32(mSortOrderSetting)); } else { setSortOrder(gSavedSettings.getU32(DEFAULT_SORT_ORDER)); } mFolderRoot->setSortOrder(getFilter()->getSortOrder()); // Initialize base class params. LLPanel::initFromParams(params); }