/*! Sets the given model to be used as the data provider for the list to \a playlist */ void QMediaList::setModel(const QMediaPlaylist& playlist) { if(d->mediaPlaylist != playlist) { d->mediaPlaylist = playlist; d->needsRefresh = true; connect(&playlist, SIGNAL(dataChanged(QModelIndex,QModelIndex)), d, SLOT(setNeedsRefresh())); connect(&playlist, SIGNAL(layoutChanged()), d, SLOT(setNeedsRefresh())); connect(&playlist, SIGNAL(modelReset()), d, SLOT(setNeedsRefresh())); connect(&playlist, SIGNAL(rowsInserted(QModelIndex,int,int)), d, SLOT(setNeedsRefresh())); connect(&playlist, SIGNAL(rowsRemoved(QModelIndex,int,int)), d, SLOT(setNeedsRefresh())); reset(); }
S32 LLPanelInventoryListItemBase::notify(const LLSD& info) { S32 rv = 0; if(info.has("match_filter")) { mHighlightedText = info["match_filter"].asString(); std::string test(mTitleCtrl->getText()); LLStringUtil::toUpper(test); if(mHighlightedText.empty() || std::string::npos != test.find(mHighlightedText)) { rv = 0; // substring is found } else { rv = -1; } setNeedsRefresh(true); } else { rv = LLPanel::notify(info); } return rv; }
BOOL LLPanelInventoryListItemBase::postBuild() { LLViewerInventoryItem* inv_item = getItem(); if (inv_item) { mIconImage = LLInventoryIcon::getIcon(inv_item->getType(), inv_item->getInventoryType(), inv_item->getFlags(), FALSE); updateItem(inv_item->getName()); } setNeedsRefresh(true); setWidgetsVisible(false); reshapeWidgets(); return TRUE; }
void LLInventoryItemsList::refresh() { LLFastTimer _(FTM_INVENTORY_ITEMS_REFRESH); static const unsigned ADD_LIMIT = 20; uuid_vec_t added_items; uuid_vec_t removed_items; computeDifference(getIDs(), added_items, removed_items); bool add_limit_exceeded = false; unsigned int nadded = 0; uuid_vec_t::const_iterator it = added_items.begin(); for( ; added_items.end() != it; ++it) { if(nadded >= ADD_LIMIT) { add_limit_exceeded = true; break; } LLViewerInventoryItem* item = gInventory.getItem(*it); // Do not rearrange items on each adding, let's do that on filter call llassert(item); if (item) { addNewItem(item, false); ++nadded; } } it = removed_items.begin(); for( ; removed_items.end() != it; ++it) { // don't filter items right away removeItemByUUID(*it, false); } // Filter, rearrange and notify parent about shape changes filterItems(); bool needs_refresh = add_limit_exceeded; setNeedsRefresh(needs_refresh); setForceRefresh(needs_refresh); }
void LLPanelInventoryListItemBase::draw() { if (getNeedsRefresh()) { LLViewerInventoryItem* inv_item = getItem(); if (inv_item) { updateItem(inv_item->getName()); } setNeedsRefresh(false); } if (mHovered && mHoverImage) { mHoverImage->draw(getLocalRect()); } if (mSelected && mSelectedImage) { mSelectedImage->draw(getLocalRect()); } if (mSeparatorVisible && mSeparatorImage) { // place under bottom of listitem, using image height // item_pad in list using the item should be >= image height // to avoid cropping of top of the next item. LLRect separator_rect = getLocalRect(); separator_rect.mTop = separator_rect.mBottom; separator_rect.mBottom -= mSeparatorImage->getHeight(); F32 alpha = getCurrentTransparency(); mSeparatorImage->draw(separator_rect, UI_VERTEX_COLOR % alpha); } LLPanel::draw(); }