LLCallFloater::LLCallFloater(const LLSD& key)
: LLTransientDockableFloater(NULL, false, key)
, mSpeakerManager(NULL)
, mParticipants(NULL)
, mAvatarList(NULL)
, mNonAvatarCaller(NULL)
, mVoiceType(VC_LOCAL_CHAT)
, mAgentPanel(NULL)
, mSpeakingIndicator(NULL)
, mIsModeratorMutedVoice(false)
, mInitParticipantsVoiceState(false)
{
	static LLUICachedControl<S32> voice_left_remove_delay ("VoiceParticipantLeftRemoveDelay", 10);
	mSpeakerDelayRemover = new LLSpeakersDelayActionsStorage(boost::bind(&LLCallFloater::removeVoiceLeftParticipant, this, _1), voice_left_remove_delay);

	mFactoryMap["non_avatar_caller"] = LLCallbackMap(create_non_avatar_caller, NULL);
	LLVoiceClient::instance().addObserver(this);
	LLTransientFloaterMgr::getInstance()->addControlView(this);

	// force docked state since this floater doesn't save it between recreations
	setDocked(true);

	// update the agent's name if display name setting change
	LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&LLCallFloater::updateAgentModeratorState, this));
	LLViewerDisplayName::addNameChangedCallback(boost::bind(&LLCallFloater::updateAgentModeratorState, this));

}
Exemplo n.º 2
0
void LLDockableFloater::setVisible(BOOL visible)
{
	// Force docking if requested
	if (visible && mForceDocking)
	{
		setCanDock(true);
		setDocked(true);
		mForceDocking = false;
	}

	if(visible && isDocked())
	{
		resetInstance();
	}

	if (visible && mDockControl.get() != NULL)
	{
		mDockControl.get()->repositionDockable();
	}

	if (visible)
	{
		LLFloater::setFrontmost(getAutoFocus());
	}
	LLFloater::setVisible(visible);
}
Exemplo n.º 3
0
// protected
LLFloaterSoundDevices::LLFloaterSoundDevices(const LLSD& key)
:	LLTransientDockableFloater(NULL, false, key)
{
	LLTransientFloaterMgr::getInstance()->addControlView(this);

	// force docked state since this floater doesn't save it between recreations
	setDocked(true);
}
Exemplo n.º 4
0
LLIMFloater::LLIMFloater(const LLUUID& session_id)
    : LLTransientDockableFloater(NULL, true, session_id),
      mControlPanel(NULL),
      mSessionID(session_id),
      mLastMessageIndex(-1),
      mDialog(IM_NOTHING_SPECIAL),
      mChatHistory(NULL),
      mInputEditor(NULL),
      mSavedTitle(),
      mTypingStart(),
      mShouldSendTypingState(false),
      mMeTyping(false),
      mOtherTyping(false),
      mTypingTimer(),
      mTypingTimeoutTimer(),
      mPositioned(false),
      mSessionInitialized(false)
{
    LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(mSessionID);
    if (im_session)
    {
        mSessionInitialized = im_session->mSessionInitialized;

        mDialog = im_session->mType;
        switch(mDialog) {
        case IM_NOTHING_SPECIAL:
        case IM_SESSION_P2P_INVITE:
            mFactoryMap["panel_im_control_panel"] = LLCallbackMap(createPanelIMControl, this);
            break;
        case IM_SESSION_CONFERENCE_START:
            mFactoryMap["panel_im_control_panel"] = LLCallbackMap(createPanelAdHocControl, this);
            break;
        case IM_SESSION_GROUP_START:
            mFactoryMap["panel_im_control_panel"] = LLCallbackMap(createPanelGroupControl, this);
            break;
        case IM_SESSION_INVITE:
            if (gAgent.isInGroup(mSessionID))
            {
                mFactoryMap["panel_im_control_panel"] = LLCallbackMap(createPanelGroupControl, this);
            }
            else
            {
                mFactoryMap["panel_im_control_panel"] = LLCallbackMap(createPanelAdHocControl, this);
            }
            break;
        default:
            break;
        }
    }
    setOverlapsScreenChannel(true);

    LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::IM, this);

    setDocked(true);
}
Exemplo n.º 5
0
void Prefs::loadMiscSettings()
{
  QSettings * settings = getSettings();
  setDocked(settings->value(QString::fromUtf8("/misc/docked"),false).toBool());
  setHiddenOnStartup(settings->value(QString::fromUtf8("/misc/hiddenOnStartup"),false).toBool());
  setConnectedOnStartup(settings->value(QString::fromUtf8("/misc/connectedOnStartup"),true).toBool());
  setRaiseWindow(settings->value(QString::fromUtf8("/misc/raiseWindow"),true).toBool());
  setMaxCalls(settings->value(QString::fromUtf8("/misc/maxCalls"),1).toInt());
  setExecCommandOnRing(settings->value(QString::fromUtf8("/misc/ExecuteCommandOnRing"), false).toBool());
  setCommandOnRing(settings->value(QString::fromUtf8("/misc/CommandOnRing"), QString::fromUtf8("")).toString());
  delete settings;
}
Exemplo n.º 6
0
void LLFloaterCamera::onClose(bool app_quitting)
{
	//We don't care of camera mode if app is quitting
	if(app_quitting)
		return;
	// When mCurrMode is in CAMERA_CTRL_MODE_PAN
	// switchMode won't modify mPrevMode, so force it here.
	// It is needed to correctly return to previous mode on open, see EXT-2727.
	if (mCurrMode == CAMERA_CTRL_MODE_PAN)
		mPrevMode = CAMERA_CTRL_MODE_PAN;

	// HACK: Should always close as docked to prevent toggleInstance without calling onOpen.
	if ( !isDocked() )
		setDocked(true);
	switchMode(CAMERA_CTRL_MODE_PAN);
	mClosed = TRUE;
}
Exemplo n.º 7
0
void LLDockableFloater::setDockControl(LLDockControl* dockControl)
{
	mDockControl.reset(dockControl);
	setDocked(isDocked());
}
//virtual
BOOL LLIMFloater::postBuild()
{
	const LLUUID& other_party_id = LLIMModel::getInstance()->getOtherParticipantID(mSessionID);
	if (other_party_id.notNull())
	{
		mOtherParticipantUUID = other_party_id;
	}

	mControlPanel->setSessionId(mSessionID);
	mControlPanel->getParent()->setVisible(gSavedSettings.getBOOL("IMShowControlPanel"));

	LLButton* slide_left = getChild<LLButton>("slide_left_btn");
	slide_left->setVisible(mControlPanel->getParent()->getVisible());
	slide_left->setClickedCallback(boost::bind(&LLIMFloater::onSlide, this));

	LLButton* slide_right = getChild<LLButton>("slide_right_btn");
	slide_right->setVisible(!mControlPanel->getParent()->getVisible());
	slide_right->setClickedCallback(boost::bind(&LLIMFloater::onSlide, this));

	mInputEditor = getChild<LLLineEditor>("chat_editor");
	mInputEditor->setMaxTextLength(1023);
	// enable line history support for instant message bar
	mInputEditor->setEnableLineHistory(TRUE);
	// *TODO Establish LineEditor with autoreplace callback
	mInputEditor->setAutoreplaceCallback(boost::bind(&LLAutoReplace::autoreplaceCallback, LLAutoReplace::getInstance(), _1, _2));

	LLFontGL* font = LLViewerChat::getChatFont();
	mInputEditor->setFont(font);	
	
	mInputEditor->setFocusReceivedCallback( boost::bind(onInputEditorFocusReceived, _1, this) );
	mInputEditor->setFocusLostCallback( boost::bind(onInputEditorFocusLost, _1, this) );
	mInputEditor->setKeystrokeCallback( onInputEditorKeystroke, this );
	mInputEditor->setCommitOnFocusLost( FALSE );
	mInputEditor->setRevertOnEsc( FALSE );
	mInputEditor->setReplaceNewlinesWithSpaces( FALSE );
	mInputEditor->setPassDelete( TRUE );

	childSetCommitCallback("chat_editor", onSendMsg, this);
	
	mChatHistory = getChild<LLChatHistory>("chat_history");

	setDocked(true);

	mTypingStart = LLTrans::getString("IM_typing_start_string");

	// Disable input editor if session cannot accept text
	LLIMModel::LLIMSession* im_session =
		LLIMModel::instance().findIMSession(mSessionID);
	if( im_session && !im_session->mTextIMPossible )
	{
		mInputEditor->setEnabled(FALSE);
		mInputEditor->setLabel(LLTrans::getString("IM_unavailable_text_label"));
	}

	if ( im_session && im_session->isP2PSessionType())
	{
		// look up display name for window title
		LLAvatarNameCache::get(im_session->mOtherParticipantID,
							   boost::bind(&LLIMFloater::onAvatarNameCache,
										   this, _1, _2));
	}
	else
	{
		std::string session_name(LLIMModel::instance().getName(mSessionID));
		updateSessionName(session_name, session_name);
	}
	
	//*TODO if session is not initialized yet, add some sort of a warning message like "starting session...blablabla"
	//see LLFloaterIMPanel for how it is done (IB)

	if(isChatMultiTab())
	{
		return LLFloater::postBuild();
	}
	else
	{
		return LLDockableFloater::postBuild();
	}
}