Skip to content
35 changes: 34 additions & 1 deletion indra/newview/llblocklist.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ LLBlockList::LLBlockList(const Params& p)

LLMuteList::getInstance()->addObserver(this);
mMuteListSize = static_cast<U32>(LLMuteList::getInstance()->getMutes().size());
updateNoItemsCommentText();

// Set up context menu.
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
Expand Down Expand Up @@ -101,8 +102,35 @@ BlockListActionType LLBlockList::getCurrentMuteListActionType()
return type;
}

void LLBlockList::updateNoItemsCommentText()
{
const LLMuteList* mute_list = LLMuteList::getInstance();
if (!mute_list->isLoaded() && !mute_list->isFailed())
{
setNoItemsCommentText(mLoadingItemsMsg);
}
else if (mute_list->isFailed())
{
setNoItemsCommentText(mFailedItemsMsg);
}
else
{
updateNoItemsMessage(mNameFilter);
}
}

void LLBlockList::onChange()
{
// Something changed, not sure what so force a refresh.
mShouldAddAll = true;
mActionType = NONE;
updateNoItemsCommentText();
setDirty();
}

void LLBlockList::onChangeDetailed(const LLMute &mute)
{
updateNoItemsCommentText();
mActionType = getCurrentMuteListActionType();

mCurItemId = mute.mID;
Expand Down Expand Up @@ -197,6 +225,7 @@ void LLBlockList::addNewItem(const LLMute* mute)

void LLBlockList::refresh()
{
updateNoItemsCommentText();
bool have_filter = !mNameFilter.empty();

// save selection to restore it after list rebuilt
Expand All @@ -208,6 +237,8 @@ void LLBlockList::refresh()
clear();
createList();
mShouldAddAll = false;
// Full rebuild supersedes any queued incremental action. This ensures list consistency.
mActionType = NONE;
}
else
{
Expand Down Expand Up @@ -246,7 +277,9 @@ void LLBlockList::refresh()
{
LLBlockedListItem * curItem = dynamic_cast<LLBlockedListItem *> (*it);
if(curItem)
{
{
// Refresh item text styling each pass so filtering keeps highlight in sync.
curItem->highlightName(mNameFilter);
hideListItem(curItem, findInsensitive(curItem->getName(), mNameFilter));
}
}
Expand Down
7 changes: 6 additions & 1 deletion indra/newview/llblocklist.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ class LLBlockList: public LLFlatListViewEx, public LLMuteListObserver
LLToggleableMenu* getContextMenu() const { return mContextMenu.get(); }
LLBlockedListItem* getBlockedItem() const;

virtual void onChange() { }
virtual void onChange();
virtual void onChangeDetailed(const LLMute& );
virtual void draw();

Expand All @@ -68,6 +68,8 @@ class LLBlockList: public LLFlatListViewEx, public LLMuteListObserver
void refresh();

U32 getMuteListSize() { return mMuteListSize; }
void setLoadingItemsMsg(const std::string& msg) { mLoadingItemsMsg = msg; updateNoItemsCommentText(); }
void setFailedItemsMsg(const std::string& msg) { mFailedItemsMsg = msg; updateNoItemsCommentText(); }

private:

Expand All @@ -83,6 +85,7 @@ class LLBlockList: public LLFlatListViewEx, public LLMuteListObserver
bool isMenuItemVisible(const LLSD& userdata);
void toggleMute(U32 flags);
void createList();
void updateNoItemsCommentText();

BlockListActionType getCurrentMuteListActionType();

Expand All @@ -100,6 +103,8 @@ class LLBlockList: public LLFlatListViewEx, public LLMuteListObserver
LLMute::EType mCurItemType;
U32 mCurItemFlags;
std::string mPrevNameFilter;
std::string mLoadingItemsMsg;
std::string mFailedItemsMsg;

};

Expand Down
2 changes: 1 addition & 1 deletion indra/newview/llimprocessing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1534,7 +1534,7 @@ void LLIMProcessing::requestOfflineMessages()
&& isAgentAvatarValid()
&& gAgent.getRegion()
&& gAgent.getRegion()->capabilitiesReceived()
&& (LLMuteList::getInstance()->isLoaded() || LLMuteList::getInstance()->getLoadFailed()))
&& LLMuteList::getInstance()->updateLoadState())
{
std::string cap_url = gAgent.getRegionCapability("ReadOfflineMsgs");

Expand Down
Loading
Loading