diff options
| author | Brad Linden <brad@lindenlab.com> | 2024-05-23 11:31:19 -0700 | 
|---|---|---|
| committer | Brad Linden <brad@lindenlab.com> | 2024-05-23 11:31:19 -0700 | 
| commit | a1f49564d670a2c41bfa25c833bba2564b9b7f48 (patch) | |
| tree | 1d205e51bc37621916a17d459ad83782fe41f975 /indra/newview/llchannelmanager.cpp | |
| parent | 6af5db09faf5ea33a2d4c47b64e76f42edae178a (diff) | |
| parent | 6377610f6587989c126b00f490dfc8d527a1c2ce (diff) | |
Merge remote-tracking branch 'origin/DRTVWR-600-maint-A' into brad/merge-maint-a-to-dev
Diffstat (limited to 'indra/newview/llchannelmanager.cpp')
| -rw-r--r-- | indra/newview/llchannelmanager.cpp | 287 | 
1 files changed, 143 insertions, 144 deletions
diff --git a/indra/newview/llchannelmanager.cpp b/indra/newview/llchannelmanager.cpp index a67c0614c6..060430862b 100644 --- a/indra/newview/llchannelmanager.cpp +++ b/indra/newview/llchannelmanager.cpp @@ -1,25 +1,25 @@ -/**  +/**   * @file llchannelmanager.cpp   * @brief This class rules screen notification channels.   *   * $LicenseInfo:firstyear=2000&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2010, Linden Research, Inc. - *  + *   * This library is free software; you can redistribute it and/or   * modify it under the terms of the GNU Lesser General Public   * License as published by the Free Software Foundation;   * version 2.1 of the License only. - *  + *   * This library is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   * Lesser General Public License for more details. - *  + *   * You should have received a copy of the GNU Lesser General Public   * License along with this library; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  + *   * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ @@ -45,21 +45,21 @@ using namespace LLNotificationsUI;  //--------------------------------------------------------------------------  LLChannelManager::LLChannelManager()  { -	LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLChannelManager::onLoginCompleted, this)); -	mChannelList.clear(); -	mStartUpChannel = NULL; - -	if(!gViewerWindow) -	{ -		LL_ERRS() << "LLChannelManager::LLChannelManager() - viwer window is not initialized yet" << LL_ENDL; -	} - -	// We don't actually need this instance right now, but our -	// cleanupSingleton() method deletes LLScreenChannels, which need to -	// unregister from LLUI. Calling LLUI::instance() here establishes the -	// dependency so LLSingletonBase::deleteAll() calls our deleteSingleton() -	// before LLUI::deleteSingleton(). -	LLUI::instance(); +    LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLChannelManager::onLoginCompleted, this)); +    mChannelList.clear(); +    mStartUpChannel = NULL; + +    if(!gViewerWindow) +    { +        LL_ERRS() << "LLChannelManager::LLChannelManager() - viwer window is not initialized yet" << LL_ENDL; +    } + +    // We don't actually need this instance right now, but our +    // cleanupSingleton() method deletes LLScreenChannels, which need to +    // unregister from LLUI. Calling LLUI::instance() here establishes the +    // dependency so LLSingletonBase::deleteAll() calls our deleteSingleton() +    // before LLUI::deleteSingleton(). +    LLUI::instance();  }  //-------------------------------------------------------------------------- @@ -86,186 +86,185 @@ void LLChannelManager::cleanupSingleton()  //--------------------------------------------------------------------------  LLScreenChannel* LLChannelManager::createNotificationChannel()  { -	//  creating params for a channel -	LLScreenChannelBase::Params p; -	p.id = LLUUID(gSavedSettings.getString("NotificationChannelUUID")); -	p.channel_align = CA_RIGHT; -	p.toast_align = NA_TOP; - -	// Getting a Channel for our notifications -	return dynamic_cast<LLScreenChannel*> (LLChannelManager::getInstance()->getChannel(p)); +    //  creating params for a channel +    LLScreenChannelBase::Params p; +    p.id = NOTIFICATION_CHANNEL_UUID; +    p.channel_align = CA_RIGHT; +    p.toast_align = NA_TOP; + +    // Getting a Channel for our notifications +    return dynamic_cast<LLScreenChannel*> (LLChannelManager::getInstance()->getChannel(p));  }  //--------------------------------------------------------------------------  void LLChannelManager::onLoginCompleted()  { -	S32 away_notifications = 0; - -	// calc a number of all offline notifications -	for(std::vector<ChannelElem>::iterator it = mChannelList.begin(); it !=  mChannelList.end(); ++it) -	{ -		LLScreenChannelBase* channel = it->channel.get(); -		if (!channel) continue; - -		// don't calc notifications for Nearby Chat -		if(channel->getChannelID() == LLUUID(gSavedSettings.getString("NearByChatChannelUUID"))) -		{ -			continue; -		} - -		// don't calc notifications for channels that always show their notifications -		if(!channel->getDisplayToastsAlways()) -		{ -			away_notifications +=channel->getNumberOfHiddenToasts(); -		} -	} - -	away_notifications += gIMMgr->getNumberOfUnreadIM(); - -	if(!away_notifications) -	{ -		onStartUpToastClose(); -	} -	else -	{ -		// create a channel for the StartUp Toast -		LLScreenChannelBase::Params p; -		p.id = LLUUID(gSavedSettings.getString("StartUpChannelUUID")); -		p.channel_align = CA_RIGHT; -		mStartUpChannel = createChannel(p); - -		if(!mStartUpChannel) -		{ -			onStartUpToastClose(); -		} -		else -		{ -			gViewerWindow->getRootView()->addChild(mStartUpChannel); - -			// init channel's position and size -			S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin");  -			S32 channel_width = gSavedSettings.getS32("NotifyBoxWidth"); -			mStartUpChannel->init(channel_right_bound - channel_width, channel_right_bound); -			mStartUpChannel->setMouseDownCallback(boost::bind(&LLFloaterNotificationsTabbed::onStartUpToastClick, LLFloaterNotificationsTabbed::getInstance(), _2, _3, _4)); - -			mStartUpChannel->setCommitCallback(boost::bind(&LLChannelManager::onStartUpToastClose, this)); -			mStartUpChannel->createStartUpToast(away_notifications, gSavedSettings.getS32("StartUpToastLifeTime")); -		} -	} - -	LLPersistentNotificationStorage::getInstance()->loadNotifications(); -	LLDoNotDisturbNotificationStorage::getInstance()->loadNotifications(); +    S32 away_notifications = 0; + +    // calc a number of all offline notifications +    for(std::vector<ChannelElem>::iterator it = mChannelList.begin(); it !=  mChannelList.end(); ++it) +    { +        LLScreenChannelBase* channel = it->channel.get(); +        if (!channel) continue; + +        // don't calc notifications for Nearby Chat +        if(channel->getChannelID() == NEARBY_CHAT_CHANNEL_UUID) +        { +            continue; +        } + +        // don't calc notifications for channels that always show their notifications +        if(!channel->getDisplayToastsAlways()) +        { +            away_notifications +=channel->getNumberOfHiddenToasts(); +        } +    } + +    away_notifications += gIMMgr->getNumberOfUnreadIM(); + +    if(!away_notifications) +    { +        onStartUpToastClose(); +    } +    else +    { +        // create a channel for the StartUp Toast +        LLScreenChannelBase::Params p; +        p.id = STARTUP_CHANNEL_UUID; +        p.channel_align = CA_RIGHT; +        mStartUpChannel = createChannel(p); + +        if(!mStartUpChannel) +        { +            onStartUpToastClose(); +        } +        else +        { +            gViewerWindow->getRootView()->addChild(mStartUpChannel); + +            // init channel's position and size +            S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); +            mStartUpChannel->init(channel_right_bound - NOTIFY_BOX_WIDTH, channel_right_bound); +            mStartUpChannel->setMouseDownCallback(boost::bind(&LLFloaterNotificationsTabbed::onStartUpToastClick, LLFloaterNotificationsTabbed::getInstance(), _2, _3, _4)); + +            mStartUpChannel->setCommitCallback(boost::bind(&LLChannelManager::onStartUpToastClose, this)); +            mStartUpChannel->createStartUpToast(away_notifications, gSavedSettings.getS32("StartUpToastLifeTime")); +        } +    } + +    LLPersistentNotificationStorage::getInstance()->loadNotifications(); +    LLDoNotDisturbNotificationStorage::getInstance()->loadNotifications();  }  //--------------------------------------------------------------------------  void LLChannelManager::onStartUpToastClose()  { -	if(mStartUpChannel) -	{ -		mStartUpChannel->setVisible(false); -		mStartUpChannel->closeStartUpToast(); -		removeChannelByID(LLUUID(gSavedSettings.getString("StartUpChannelUUID"))); -		mStartUpChannel = NULL; -	} - -	// set StartUp Toast Flag to allow all other channels to show incoming toasts -	LLScreenChannel::setStartUpToastShown(); +    if(mStartUpChannel) +    { +        mStartUpChannel->setVisible(false); +        mStartUpChannel->closeStartUpToast(); +        removeChannelByID(STARTUP_CHANNEL_UUID); +        mStartUpChannel = NULL; +    } + +    // set StartUp Toast Flag to allow all other channels to show incoming toasts +    LLScreenChannel::setStartUpToastShown();  }  //-------------------------------------------------------------------------- -LLScreenChannelBase*	LLChannelManager::addChannel(LLScreenChannelBase* channel) +LLScreenChannelBase*    LLChannelManager::addChannel(LLScreenChannelBase* channel)  { -	if(!channel) -		return 0; +    if(!channel) +        return 0; -	ChannelElem new_elem; -	new_elem.id = channel->getChannelID(); -	new_elem.channel = channel->getHandle(); +    ChannelElem new_elem; +    new_elem.id = channel->getChannelID(); +    new_elem.channel = channel->getHandle(); -	mChannelList.push_back(new_elem);  +    mChannelList.push_back(new_elem); -	return channel; +    return channel;  }  LLScreenChannel* LLChannelManager::createChannel(LLScreenChannelBase::Params& p)  { -	LLScreenChannel* new_channel = new LLScreenChannel(p);  +    LLScreenChannel* new_channel = new LLScreenChannel(p); -	addChannel(new_channel); -	return new_channel; +    addChannel(new_channel); +    return new_channel;  }  LLScreenChannelBase* LLChannelManager::getChannel(LLScreenChannelBase::Params& p)  { -	LLScreenChannelBase* new_channel = findChannelByID(p.id); +    LLScreenChannelBase* new_channel = findChannelByID(p.id); -	if(new_channel) -		return new_channel; +    if(new_channel) +        return new_channel; -	return createChannel(p); +    return createChannel(p);  }  //--------------------------------------------------------------------------  LLScreenChannelBase* LLChannelManager::findChannelByID(const LLUUID& id)  { -	std::vector<ChannelElem>::iterator it = find(mChannelList.begin(), mChannelList.end(), id);  -	if(it != mChannelList.end()) -	{ -		return (*it).channel.get(); -	} +    std::vector<ChannelElem>::iterator it = find(mChannelList.begin(), mChannelList.end(), id); +    if(it != mChannelList.end()) +    { +        return (*it).channel.get(); +    } -	return NULL; +    return NULL;  }  //--------------------------------------------------------------------------  void LLChannelManager::removeChannelByID(const LLUUID& id)  { -	std::vector<ChannelElem>::iterator it = find(mChannelList.begin(), mChannelList.end(), id);  -	if(it != mChannelList.end()) -	{ -		mChannelList.erase(it); -	} +    std::vector<ChannelElem>::iterator it = find(mChannelList.begin(), mChannelList.end(), id); +    if(it != mChannelList.end()) +    { +        mChannelList.erase(it); +    }  }  //--------------------------------------------------------------------------  void LLChannelManager::muteAllChannels(bool mute)  { -	for (std::vector<ChannelElem>::iterator it = mChannelList.begin(); -			it != mChannelList.end(); it++) -	{ -		if (it->channel.get()) -		{ -			it->channel.get()->setShowToasts(!mute); -		} -	} +    for (std::vector<ChannelElem>::iterator it = mChannelList.begin(); +            it != mChannelList.end(); it++) +    { +        if (it->channel.get()) +        { +            it->channel.get()->setShowToasts(!mute); +        } +    }  }  void LLChannelManager::killToastsFromChannel(const LLUUID& channel_id, const LLScreenChannel::Matcher& matcher)  { -	LLScreenChannel -			* screen_channel = -					dynamic_cast<LLScreenChannel*> (findChannelByID(channel_id)); -	if (screen_channel != NULL) -	{ -		screen_channel->killMatchedToasts(matcher); -	} +    LLScreenChannel +            * screen_channel = +                    dynamic_cast<LLScreenChannel*> (findChannelByID(channel_id)); +    if (screen_channel != NULL) +    { +        screen_channel->killMatchedToasts(matcher); +    }  }  // static  LLNotificationsUI::LLScreenChannel* LLChannelManager::getNotificationScreenChannel()  { -	LLNotificationsUI::LLScreenChannel* channel = static_cast<LLNotificationsUI::LLScreenChannel*> -	(LLNotificationsUI::LLChannelManager::getInstance()-> -										findChannelByID(LLUUID(gSavedSettings.getString("NotificationChannelUUID")))); +    LLNotificationsUI::LLScreenChannel* channel = static_cast<LLNotificationsUI::LLScreenChannel*> +    (LLNotificationsUI::LLChannelManager::getInstance()-> +                                        findChannelByID(NOTIFICATION_CHANNEL_UUID)); -	if (channel == NULL) -	{ -		LL_WARNS() << "Can't find screen channel by NotificationChannelUUID" << LL_ENDL; -		llassert(!"Can't find screen channel by NotificationChannelUUID"); -	} +    if (channel == NULL) +    { +        LL_WARNS() << "Can't find screen channel by NotificationChannelUUID" << LL_ENDL; +        llassert(!"Can't find screen channel by NotificationChannelUUID"); +    } -	return channel; +    return channel;  }  | 
