diff options
25 files changed, 365 insertions, 209 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 746991a6f0..b937d53bd8 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -229,6 +229,7 @@ set(viewer_SOURCE_FILES      llfloatereditwater.cpp      llfloaterenvironmentsettings.cpp      llfloaterevent.cpp +    llfloaterfacebook.cpp      llfloaterflickr.cpp      llfloaterfonttest.cpp      llfloatergesture.cpp @@ -276,7 +277,6 @@ set(viewer_SOURCE_FILES      llfloatersettingsdebug.cpp      llfloatersidepanelcontainer.cpp      llfloatersnapshot.cpp -    llfloatersocial.cpp      llfloatersounddevices.cpp      llfloaterspellchecksettings.cpp      llfloatertelehub.cpp @@ -821,6 +821,7 @@ set(viewer_HEADER_FILES      llfloatereditwater.h      llfloaterenvironmentsettings.h      llfloaterevent.h +    llfloaterfacebook.h      llfloaterflickr.h      llfloaterfonttest.h      llfloatergesture.h @@ -868,7 +869,6 @@ set(viewer_HEADER_FILES      llfloatersettingsdebug.h      llfloatersidepanelcontainer.h      llfloatersnapshot.h -    llfloatersocial.h      llfloatersounddevices.h      llfloaterspellchecksettings.h      llfloatertelehub.h diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml index f4e9cc0136..7b329e2092 100755 --- a/indra/newview/app_settings/commands.xml +++ b/indra/newview/app_settings/commands.xml @@ -216,15 +216,15 @@             is_running_function="Floater.IsOpen"             is_running_parameters="snapshot"             /> -  <command name="social" +  <command name="facebook"             available_in_toybox="true" -           icon="Command_Social_Icon" -           label_ref="Command_Social_Label" -           tooltip_ref="Command_Social_Tooltip" +           icon="Command_Facebook_Icon" +           label_ref="Command_Facebook_Label" +           tooltip_ref="Command_Facebook_Tooltip"             execute_function="Floater.ToggleOrBringToFront" -           execute_parameters="social" +           execute_parameters="facebook"             is_running_function="Floater.IsOpen" -           is_running_parameters="social" +           is_running_parameters="facebook"             />    <command name="flickr"             available_in_toybox="true" diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 41aac583d7..0f60fc0210 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -13108,7 +13108,7 @@      <key>SocialPhotoResolution</key>      <map>        <key>Comment</key> -      <string>Default resolution when sharing photo using the social floater</string> +      <string>Default resolution when sharing photo using the social floaters</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> diff --git a/indra/newview/app_settings/toolbars.xml b/indra/newview/app_settings/toolbars.xml index c65b79affb..d61aee9a14 100755 --- a/indra/newview/app_settings/toolbars.xml +++ b/indra/newview/app_settings/toolbars.xml @@ -21,6 +21,6 @@      <command name="voice"/>      <command name="minimap"/>      <command name="snapshot"/> -    <command name="social"/> +    <command name="facebook"/>    </left_toolbar>  </toolbars> diff --git a/indra/newview/llfacebookconnect.cpp b/indra/newview/llfacebookconnect.cpp index 8cde871cd1..eeb28376a9 100644 --- a/indra/newview/llfacebookconnect.cpp +++ b/indra/newview/llfacebookconnect.cpp @@ -69,6 +69,75 @@ void toast_user_for_facebook_success()  ///////////////////////////////////////////////////////////////////////////////  // +class LLSLShareHandler : public LLCommandHandler +{ +public: +	LLSLShareHandler() : LLCommandHandler("slshare", UNTRUSTED_THROTTLE) { } +     +	bool handle(const LLSD& tokens, const LLSD& query_map, LLMediaCtrl* web) +	{ +		if (tokens.size() >= 1) +		{ +			if (tokens[0].asString() == "connect") +			{ +				if (tokens.size() >= 2 && tokens[1].asString() == "flickr") +				{ +					// this command probably came from the flickr_web browser, so close it +					LLFloater* flickr_web = LLFloaterReg::getInstance("flickr_web"); +					if (flickr_web) +					{ +						flickr_web->closeFloater(); +					} + +					// connect to flickr +					if (query_map.has("oauth_token")) +					{ +						LLFlickrConnect::instance().connectToFlickr(query_map["oauth_token"], query_map.get("oauth_verifier")); +					} +					return true; +				} +				else if (tokens.size() >= 2 && tokens[1].asString() == "twitter") +				{ +					// this command probably came from the twitter_web browser, so close it +					LLFloater* twitter_web = LLFloaterReg::getInstance("twitter_web"); +					if (twitter_web) +					{ +						twitter_web->closeFloater(); +					} + +					// connect to twitter +					if (query_map.has("oauth_token")) +					{ +						LLTwitterConnect::instance().connectToTwitter(query_map["oauth_token"], query_map.get("oauth_verifier")); +					} +					return true; +				} +				else //if (tokens.size() >= 2 && tokens[1].asString() == "facebook") +				{ +					// this command probably came from the fbc_web browser, so close it +					LLFloater* fbc_web = LLFloaterReg::getInstance("fbc_web"); +					if (fbc_web) +					{ +						fbc_web->closeFloater(); +					} + +					// connect to facebook +					if (query_map.has("code")) +					{ +						LLFacebookConnect::instance().connectToFacebook(query_map["code"], query_map.get("state")); +					} +					return true; +				} +			} +		} +		return false; +	} +}; +LLSLShareHandler gSLShareHandler; + +/////////////////////////////////////////////////////////////////////////////// +// +// DEPRECATED - please remove once "fbc" is phased out of the web service  class LLFacebookConnectHandler : public LLCommandHandler  {  public: diff --git a/indra/newview/llfloatersocial.cpp b/indra/newview/llfloaterfacebook.cpp index e7be8cc8cc..6488e7ea00 100644 --- a/indra/newview/llfloatersocial.cpp +++ b/indra/newview/llfloaterfacebook.cpp @@ -1,6 +1,6 @@  /**  -* @file llfloatersocial.cpp -* @brief Implementation of llfloatersocial +* @file llfloaterfacebook.cpp +* @brief Implementation of llfloaterfacebook  * @author Gilbert@lindenlab.com  *  * $LicenseInfo:firstyear=2013&license=viewerlgpl$ @@ -27,7 +27,7 @@  #include "llviewerprecompiledheaders.h" -#include "llfloatersocial.h" +#include "llfloaterfacebook.h"  #include "llagent.h"  #include "llagentui.h" @@ -48,10 +48,10 @@  #include "llviewermedia.h"  #include "lltabcontainer.h" -static LLRegisterPanelClassWrapper<LLSocialStatusPanel> t_panel_status("llsocialstatuspanel"); -static LLRegisterPanelClassWrapper<LLSocialPhotoPanel> t_panel_photo("llsocialphotopanel"); -static LLRegisterPanelClassWrapper<LLSocialCheckinPanel> t_panel_checkin("llsocialcheckinpanel"); -static LLRegisterPanelClassWrapper<LLSocialAccountPanel> t_panel_account("llsocialaccountpanel"); +static LLRegisterPanelClassWrapper<LLFacebookStatusPanel> t_panel_status("llfacebookstatuspanel"); +static LLRegisterPanelClassWrapper<LLFacebookPhotoPanel> t_panel_photo("llfacebookphotopanel"); +static LLRegisterPanelClassWrapper<LLFacebookCheckinPanel> t_panel_checkin("llfacebookcheckinpanel"); +static LLRegisterPanelClassWrapper<LLFacebookAccountPanel> t_panel_account("llfacebookaccountpanel");  const S32 MAX_POSTCARD_DATASIZE = 1024 * 1024; // one megabyte  const std::string DEFAULT_CHECKIN_LOCATION_URL = "http://maps.secondlife.com/"; @@ -74,18 +74,18 @@ std::string get_map_url()  }  /////////////////////////// -//LLSocialStatusPanel////// +//LLFacebookStatusPanel//////  /////////////////////////// -LLSocialStatusPanel::LLSocialStatusPanel() : +LLFacebookStatusPanel::LLFacebookStatusPanel() :  	mMessageTextEditor(NULL),  	mPostButton(NULL),      mCancelButton(NULL)  { -	mCommitCallbackRegistrar.add("SocialSharing.SendStatus", boost::bind(&LLSocialStatusPanel::onSend, this)); +	mCommitCallbackRegistrar.add("SocialSharing.SendStatus", boost::bind(&LLFacebookStatusPanel::onSend, this));  } -BOOL LLSocialStatusPanel::postBuild() +BOOL LLFacebookStatusPanel::postBuild()  {  	mMessageTextEditor = getChild<LLUICtrl>("status_message");  	mPostButton = getChild<LLUICtrl>("post_status_btn"); @@ -94,7 +94,7 @@ BOOL LLSocialStatusPanel::postBuild()  	return LLPanel::postBuild();  } -void LLSocialStatusPanel::draw() +void LLFacebookStatusPanel::draw()  {      if (mMessageTextEditor && mPostButton && mCancelButton)  	{ @@ -108,10 +108,10 @@ void LLSocialStatusPanel::draw()  	LLPanel::draw();  } -void LLSocialStatusPanel::onSend() +void LLFacebookStatusPanel::onSend()  { -	LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLSocialStatusPanel"); // just in case it is already listening -	LLEventPumps::instance().obtain("FacebookConnectState").listen("LLSocialStatusPanel", boost::bind(&LLSocialStatusPanel::onFacebookConnectStateChange, this, _1)); +	LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookStatusPanel"); // just in case it is already listening +	LLEventPumps::instance().obtain("FacebookConnectState").listen("LLFacebookStatusPanel", boost::bind(&LLFacebookStatusPanel::onFacebookConnectStateChange, this, _1));  	// Connect to Facebook if necessary and then post  	if (LLFacebookConnect::instance().isConnected()) @@ -124,7 +124,7 @@ void LLSocialStatusPanel::onSend()  	}  } -bool LLSocialStatusPanel::onFacebookConnectStateChange(const LLSD& data) +bool LLFacebookStatusPanel::onFacebookConnectStateChange(const LLSD& data)  {  	switch (data.get("enum").asInteger())  	{ @@ -133,7 +133,7 @@ bool LLSocialStatusPanel::onFacebookConnectStateChange(const LLSD& data)  			break;  		case LLFacebookConnect::FB_POSTED: -			LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLSocialStatusPanel"); +			LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookStatusPanel");  			clearAndClose();  			break;  	} @@ -141,7 +141,7 @@ bool LLSocialStatusPanel::onFacebookConnectStateChange(const LLSD& data)  	return false;  } -void LLSocialStatusPanel::sendStatus() +void LLFacebookStatusPanel::sendStatus()  {  	std::string message = mMessageTextEditor->getValue().asString();  	if (!message.empty()) @@ -150,7 +150,7 @@ void LLSocialStatusPanel::sendStatus()  	}  } -void LLSocialStatusPanel::clearAndClose() +void LLFacebookStatusPanel::clearAndClose()  {  	mMessageTextEditor->setValue(""); @@ -162,10 +162,10 @@ void LLSocialStatusPanel::clearAndClose()  }  /////////////////////////// -//LLSocialPhotoPanel/////// +//LLFacebookPhotoPanel///////  /////////////////////////// -LLSocialPhotoPanel::LLSocialPhotoPanel() : +LLFacebookPhotoPanel::LLFacebookPhotoPanel() :  mSnapshotPanel(NULL),  mResolutionComboBox(NULL),  mRefreshBtn(NULL), @@ -175,11 +175,11 @@ mCaptionTextBox(NULL),  mLocationCheckbox(NULL),  mPostButton(NULL)  { -	mCommitCallbackRegistrar.add("SocialSharing.SendPhoto", boost::bind(&LLSocialPhotoPanel::onSend, this)); -	mCommitCallbackRegistrar.add("SocialSharing.RefreshPhoto", boost::bind(&LLSocialPhotoPanel::onClickNewSnapshot, this)); +	mCommitCallbackRegistrar.add("SocialSharing.SendPhoto", boost::bind(&LLFacebookPhotoPanel::onSend, this)); +	mCommitCallbackRegistrar.add("SocialSharing.RefreshPhoto", boost::bind(&LLFacebookPhotoPanel::onClickNewSnapshot, this));  } -LLSocialPhotoPanel::~LLSocialPhotoPanel() +LLFacebookPhotoPanel::~LLFacebookPhotoPanel()  {  	if(mPreviewHandle.get())  	{ @@ -187,13 +187,13 @@ LLSocialPhotoPanel::~LLSocialPhotoPanel()  	}  } -BOOL LLSocialPhotoPanel::postBuild() +BOOL LLFacebookPhotoPanel::postBuild()  { -	setVisibleCallback(boost::bind(&LLSocialPhotoPanel::onVisibilityChange, this, _2)); +	setVisibleCallback(boost::bind(&LLFacebookPhotoPanel::onVisibilityChange, this, _2));  	mSnapshotPanel = getChild<LLUICtrl>("snapshot_panel");  	mResolutionComboBox = getChild<LLUICtrl>("resolution_combobox"); -	mResolutionComboBox->setCommitCallback(boost::bind(&LLSocialPhotoPanel::updateResolution, this, TRUE)); +	mResolutionComboBox->setCommitCallback(boost::bind(&LLFacebookPhotoPanel::updateResolution, this, TRUE));  	mRefreshBtn = getChild<LLUICtrl>("new_snapshot_btn");      mWorkingLabel = getChild<LLUICtrl>("working_lbl");  	mThumbnailPlaceholder = getChild<LLUICtrl>("thumbnail_placeholder"); @@ -205,7 +205,7 @@ BOOL LLSocialPhotoPanel::postBuild()  	return LLPanel::postBuild();  } -void LLSocialPhotoPanel::draw() +void LLFacebookPhotoPanel::draw()  {   	LLSnapshotLivePreview * previewp = static_cast<LLSnapshotLivePreview *>(mPreviewHandle.get()); @@ -258,13 +258,13 @@ void LLSocialPhotoPanel::draw()  	LLPanel::draw();  } -LLSnapshotLivePreview* LLSocialPhotoPanel::getPreviewView() +LLSnapshotLivePreview* LLFacebookPhotoPanel::getPreviewView()  {  	LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)mPreviewHandle.get();  	return previewp;  } -void LLSocialPhotoPanel::onVisibilityChange(const LLSD& new_visibility) +void LLFacebookPhotoPanel::onVisibilityChange(const LLSD& new_visibility)  {  	bool visible = new_visibility.asBoolean();  	if (visible) @@ -296,7 +296,7 @@ void LLSocialPhotoPanel::onVisibilityChange(const LLSD& new_visibility)  	}  } -void LLSocialPhotoPanel::onClickNewSnapshot() +void LLFacebookPhotoPanel::onClickNewSnapshot()  {  	LLSnapshotLivePreview* previewp = getPreviewView();  	if (previewp) @@ -307,10 +307,10 @@ void LLSocialPhotoPanel::onClickNewSnapshot()  	}  } -void LLSocialPhotoPanel::onSend() +void LLFacebookPhotoPanel::onSend()  { -	LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLSocialPhotoPanel"); // just in case it is already listening -	LLEventPumps::instance().obtain("FacebookConnectState").listen("LLSocialPhotoPanel", boost::bind(&LLSocialPhotoPanel::onFacebookConnectStateChange, this, _1)); +	LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookPhotoPanel"); // just in case it is already listening +	LLEventPumps::instance().obtain("FacebookConnectState").listen("LLFacebookPhotoPanel", boost::bind(&LLFacebookPhotoPanel::onFacebookConnectStateChange, this, _1));  	// Connect to Facebook if necessary and then post  	if (LLFacebookConnect::instance().isConnected()) @@ -323,7 +323,7 @@ void LLSocialPhotoPanel::onSend()  	}  } -bool LLSocialPhotoPanel::onFacebookConnectStateChange(const LLSD& data) +bool LLFacebookPhotoPanel::onFacebookConnectStateChange(const LLSD& data)  {  	switch (data.get("enum").asInteger())  	{ @@ -332,7 +332,7 @@ bool LLSocialPhotoPanel::onFacebookConnectStateChange(const LLSD& data)  			break;  		case LLFacebookConnect::FB_POSTED: -			LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLSocialPhotoPanel"); +			LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookPhotoPanel");  			clearAndClose();  			break;  	} @@ -340,7 +340,7 @@ bool LLSocialPhotoPanel::onFacebookConnectStateChange(const LLSD& data)  	return false;  } -void LLSocialPhotoPanel::sendPhoto() +void LLFacebookPhotoPanel::sendPhoto()  {  	// Get the caption  	std::string caption = mCaptionTextBox->getValue().asString(); @@ -373,7 +373,7 @@ void LLSocialPhotoPanel::sendPhoto()  	updateControls();  } -void LLSocialPhotoPanel::clearAndClose() +void LLFacebookPhotoPanel::clearAndClose()  {  	mCaptionTextBox->setValue(""); @@ -384,7 +384,7 @@ void LLSocialPhotoPanel::clearAndClose()  	}  } -void LLSocialPhotoPanel::updateControls() +void LLFacebookPhotoPanel::updateControls()  {  	LLSnapshotLivePreview* previewp = getPreviewView();  	BOOL got_bytes = previewp && previewp->getDataSize() > 0; @@ -411,7 +411,7 @@ void LLSocialPhotoPanel::updateControls()  	updateResolution(FALSE);  } -void LLSocialPhotoPanel::updateResolution(BOOL do_update) +void LLFacebookPhotoPanel::updateResolution(BOOL do_update)  {  	LLComboBox* combobox = static_cast<LLComboBox *>(mResolutionComboBox); @@ -458,14 +458,14 @@ void LLSocialPhotoPanel::updateResolution(BOOL do_update)  			{  				lldebugs << "Will update controls" << llendl;  				updateControls(); -                LLSocialPhotoPanel::onClickNewSnapshot(); +                LLFacebookPhotoPanel::onClickNewSnapshot();  			}  		}  	}  } -void LLSocialPhotoPanel::checkAspectRatio(S32 index) +void LLFacebookPhotoPanel::checkAspectRatio(S32 index)  {  	LLSnapshotLivePreview *previewp = getPreviewView() ; @@ -486,23 +486,23 @@ void LLSocialPhotoPanel::checkAspectRatio(S32 index)  	}  } -LLUICtrl* LLSocialPhotoPanel::getRefreshBtn() +LLUICtrl* LLFacebookPhotoPanel::getRefreshBtn()  {  	return mRefreshBtn;  }  //////////////////////// -//LLSocialCheckinPanel// +//LLFacebookCheckinPanel//  //////////////////////// -LLSocialCheckinPanel::LLSocialCheckinPanel() : +LLFacebookCheckinPanel::LLFacebookCheckinPanel() :      mMapUrl(""),      mReloadingMapTexture(false)  { -	mCommitCallbackRegistrar.add("SocialSharing.SendCheckin", boost::bind(&LLSocialCheckinPanel::onSend, this)); +	mCommitCallbackRegistrar.add("SocialSharing.SendCheckin", boost::bind(&LLFacebookCheckinPanel::onSend, this));  } -BOOL LLSocialCheckinPanel::postBuild() +BOOL LLFacebookCheckinPanel::postBuild()  {      // Keep pointers to widgets so we don't traverse the UI hierarchy too often  	mPostButton = getChild<LLUICtrl>("post_place_btn"); @@ -516,7 +516,7 @@ BOOL LLSocialCheckinPanel::postBuild()  	return LLPanel::postBuild();  } -void LLSocialCheckinPanel::draw() +void LLFacebookCheckinPanel::draw()  {      bool no_ongoing_connection = !(LLFacebookConnect::instance().isTransactionOngoing());      mPostButton->setEnabled(no_ongoing_connection); @@ -557,10 +557,10 @@ void LLSocialCheckinPanel::draw()  	LLPanel::draw();  } -void LLSocialCheckinPanel::onSend() +void LLFacebookCheckinPanel::onSend()  { -	LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLSocialCheckinPanel"); // just in case it is already listening -	LLEventPumps::instance().obtain("FacebookConnectState").listen("LLSocialCheckinPanel", boost::bind(&LLSocialCheckinPanel::onFacebookConnectStateChange, this, _1)); +	LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookCheckinPanel"); // just in case it is already listening +	LLEventPumps::instance().obtain("FacebookConnectState").listen("LLFacebookCheckinPanel", boost::bind(&LLFacebookCheckinPanel::onFacebookConnectStateChange, this, _1));  	// Connect to Facebook if necessary and then post  	if (LLFacebookConnect::instance().isConnected()) @@ -573,7 +573,7 @@ void LLSocialCheckinPanel::onSend()  	}  } -bool LLSocialCheckinPanel::onFacebookConnectStateChange(const LLSD& data) +bool LLFacebookCheckinPanel::onFacebookConnectStateChange(const LLSD& data)  {  	switch (data.get("enum").asInteger())  	{ @@ -582,7 +582,7 @@ bool LLSocialCheckinPanel::onFacebookConnectStateChange(const LLSD& data)  			break;  		case LLFacebookConnect::FB_POSTED: -			LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLSocialCheckinPanel"); +			LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookCheckinPanel");  			clearAndClose();  			break;  	} @@ -590,7 +590,7 @@ bool LLSocialCheckinPanel::onFacebookConnectStateChange(const LLSD& data)  	return false;  } -void LLSocialCheckinPanel::sendCheckin() +void LLFacebookCheckinPanel::sendCheckin()  {  	// Get the location SLURL  	LLSLURL slurl; @@ -630,7 +630,7 @@ void LLSocialCheckinPanel::sendCheckin()  	LLFacebookConnect::instance().postCheckin(slurl_string, region_name, description, map_url, caption);  } -void LLSocialCheckinPanel::clearAndClose() +void LLFacebookCheckinPanel::clearAndClose()  {  	mMessageTextEditor->setValue(""); @@ -642,23 +642,23 @@ void LLSocialCheckinPanel::clearAndClose()  }  /////////////////////////// -//LLSocialAccountPanel////// +//LLFacebookAccountPanel//////  /////////////////////////// -LLSocialAccountPanel::LLSocialAccountPanel() :  +LLFacebookAccountPanel::LLFacebookAccountPanel() :   mAccountCaptionLabel(NULL),  mAccountNameLabel(NULL),  mPanelButtons(NULL),  mConnectButton(NULL),  mDisconnectButton(NULL)  { -	mCommitCallbackRegistrar.add("SocialSharing.Connect", boost::bind(&LLSocialAccountPanel::onConnect, this)); -	mCommitCallbackRegistrar.add("SocialSharing.Disconnect", boost::bind(&LLSocialAccountPanel::onDisconnect, this)); +	mCommitCallbackRegistrar.add("SocialSharing.Connect", boost::bind(&LLFacebookAccountPanel::onConnect, this)); +	mCommitCallbackRegistrar.add("SocialSharing.Disconnect", boost::bind(&LLFacebookAccountPanel::onDisconnect, this)); -	setVisibleCallback(boost::bind(&LLSocialAccountPanel::onVisibilityChange, this, _2)); +	setVisibleCallback(boost::bind(&LLFacebookAccountPanel::onVisibilityChange, this, _2));  } -BOOL LLSocialAccountPanel::postBuild() +BOOL LLFacebookAccountPanel::postBuild()  {  	mAccountCaptionLabel = getChild<LLTextBox>("account_caption_label");  	mAccountNameLabel = getChild<LLTextBox>("account_name_label"); @@ -669,7 +669,7 @@ BOOL LLSocialAccountPanel::postBuild()  	return LLPanel::postBuild();  } -void LLSocialAccountPanel::draw() +void LLFacebookAccountPanel::draw()  {  	LLFacebookConnect::EConnectionState connection_state = LLFacebookConnect::instance().getConnectionState(); @@ -684,17 +684,17 @@ void LLSocialAccountPanel::draw()  	LLPanel::draw();  } -void LLSocialAccountPanel::onVisibilityChange(const LLSD& new_visibility) +void LLFacebookAccountPanel::onVisibilityChange(const LLSD& new_visibility)  {  	bool visible = new_visibility.asBoolean();  	if(visible)  	{ -		LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLSocialAccountPanel"); -		LLEventPumps::instance().obtain("FacebookConnectState").listen("LLSocialAccountPanel", boost::bind(&LLSocialAccountPanel::onFacebookConnectStateChange, this, _1)); +		LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookAccountPanel"); +		LLEventPumps::instance().obtain("FacebookConnectState").listen("LLFacebookAccountPanel", boost::bind(&LLFacebookAccountPanel::onFacebookConnectStateChange, this, _1)); -		LLEventPumps::instance().obtain("FacebookConnectInfo").stopListening("LLSocialAccountPanel"); -		LLEventPumps::instance().obtain("FacebookConnectInfo").listen("LLSocialAccountPanel", boost::bind(&LLSocialAccountPanel::onFacebookConnectInfoChange, this)); +		LLEventPumps::instance().obtain("FacebookConnectInfo").stopListening("LLFacebookAccountPanel"); +		LLEventPumps::instance().obtain("FacebookConnectInfo").listen("LLFacebookAccountPanel", boost::bind(&LLFacebookAccountPanel::onFacebookConnectInfoChange, this));  		//Connected  		if(LLFacebookConnect::instance().isConnected()) @@ -714,12 +714,12 @@ void LLSocialAccountPanel::onVisibilityChange(const LLSD& new_visibility)  	}  	else  	{ -		LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLSocialAccountPanel"); -		LLEventPumps::instance().obtain("FacebookConnectInfo").stopListening("LLSocialAccountPanel"); +		LLEventPumps::instance().obtain("FacebookConnectState").stopListening("LLFacebookAccountPanel"); +		LLEventPumps::instance().obtain("FacebookConnectInfo").stopListening("LLFacebookAccountPanel");  	}  } -bool LLSocialAccountPanel::onFacebookConnectStateChange(const LLSD& data) +bool LLFacebookAccountPanel::onFacebookConnectStateChange(const LLSD& data)  {  	if(LLFacebookConnect::instance().isConnected())  	{ @@ -737,7 +737,7 @@ bool LLSocialAccountPanel::onFacebookConnectStateChange(const LLSD& data)  	return false;  } -bool LLSocialAccountPanel::onFacebookConnectInfoChange() +bool LLFacebookAccountPanel::onFacebookConnectInfoChange()  {  	LLSD info = LLFacebookConnect::instance().getInfo();  	std::string clickable_name; @@ -753,7 +753,7 @@ bool LLSocialAccountPanel::onFacebookConnectInfoChange()  	return false;  } -void LLSocialAccountPanel::showConnectButton() +void LLFacebookAccountPanel::showConnectButton()  {  	if(!mConnectButton->getVisible())  	{ @@ -762,7 +762,7 @@ void LLSocialAccountPanel::showConnectButton()  	}  } -void LLSocialAccountPanel::hideConnectButton() +void LLFacebookAccountPanel::hideConnectButton()  {  	if(mConnectButton->getVisible())  	{ @@ -771,14 +771,14 @@ void LLSocialAccountPanel::hideConnectButton()  	}  } -void LLSocialAccountPanel::showDisconnectedLayout() +void LLFacebookAccountPanel::showDisconnectedLayout()  {  	mAccountCaptionLabel->setText(getString("facebook_disconnected"));  	mAccountNameLabel->setText(std::string(""));  	showConnectButton();  } -void LLSocialAccountPanel::showConnectedLayout() +void LLFacebookAccountPanel::showConnectedLayout()  {  	LLFacebookConnect::instance().loadFacebookInfo(); @@ -786,7 +786,7 @@ void LLSocialAccountPanel::showConnectedLayout()  	hideConnectButton();  } -void LLSocialAccountPanel::onConnect() +void LLFacebookAccountPanel::onConnect()  {  	LLFacebookConnect::instance().checkConnectionToFacebook(true); @@ -794,7 +794,7 @@ void LLSocialAccountPanel::onConnect()  	LLViewerMedia::getCookieStore()->removeCookiesByDomain(".facebook.com");   } -void LLSocialAccountPanel::onDisconnect() +void LLFacebookAccountPanel::onDisconnect()  {  	LLFacebookConnect::instance().disconnectFromFacebook(); @@ -802,27 +802,27 @@ void LLSocialAccountPanel::onDisconnect()  }  //////////////////////// -//LLFloaterSocial/////// +//LLFloaterFacebook///////  //////////////////////// -LLFloaterSocial::LLFloaterSocial(const LLSD& key) : LLFloater(key), -    mSocialPhotoPanel(NULL), +LLFloaterFacebook::LLFloaterFacebook(const LLSD& key) : LLFloater(key), +    mFacebookPhotoPanel(NULL),      mStatusErrorText(NULL),      mStatusLoadingText(NULL),      mStatusLoadingIndicator(NULL)  { -	mCommitCallbackRegistrar.add("SocialSharing.Cancel", boost::bind(&LLFloaterSocial::onCancel, this)); +	mCommitCallbackRegistrar.add("SocialSharing.Cancel", boost::bind(&LLFloaterFacebook::onCancel, this));  } -void LLFloaterSocial::onCancel() +void LLFloaterFacebook::onCancel()  {      closeFloater();  } -BOOL LLFloaterSocial::postBuild() +BOOL LLFloaterFacebook::postBuild()  {      // Keep tab of the Photo Panel -	mSocialPhotoPanel = static_cast<LLSocialPhotoPanel*>(getChild<LLUICtrl>("panel_social_photo")); +	mFacebookPhotoPanel = static_cast<LLFacebookPhotoPanel*>(getChild<LLUICtrl>("panel_facebook_photo"));      // Connection status widgets      mStatusErrorText = getChild<LLTextBox>("connection_error_text");      mStatusLoadingText = getChild<LLTextBox>("connection_loading_text"); @@ -830,41 +830,41 @@ BOOL LLFloaterSocial::postBuild()  	return LLFloater::postBuild();  } -void LLFloaterSocial::showPhotoPanel() +void LLFloaterFacebook::showPhotoPanel()  { -	LLTabContainer* parent = dynamic_cast<LLTabContainer*>(mSocialPhotoPanel->getParent()); +	LLTabContainer* parent = dynamic_cast<LLTabContainer*>(mFacebookPhotoPanel->getParent());  	if (!parent)  	{  		llwarns << "Cannot find panel container" << llendl;  		return;  	} -	parent->selectTabPanel(mSocialPhotoPanel); +	parent->selectTabPanel(mFacebookPhotoPanel);  }  // static -void LLFloaterSocial::preUpdate() +void LLFloaterFacebook::preUpdate()  { -	LLFloaterSocial* instance = LLFloaterReg::findTypedInstance<LLFloaterSocial>("social"); +	LLFloaterFacebook* instance = LLFloaterReg::findTypedInstance<LLFloaterFacebook>("facebook");  	if (instance)  	{  		//Will set file size text to 'unknown' -		instance->mSocialPhotoPanel->updateControls(); +		instance->mFacebookPhotoPanel->updateControls();  	}  }  // static -void LLFloaterSocial::postUpdate() +void LLFloaterFacebook::postUpdate()  { -	LLFloaterSocial* instance = LLFloaterReg::findTypedInstance<LLFloaterSocial>("social"); +	LLFloaterFacebook* instance = LLFloaterReg::findTypedInstance<LLFloaterFacebook>("facebook");  	if (instance)  	{  		//Will set the file size text -		instance->mSocialPhotoPanel->updateControls(); +		instance->mFacebookPhotoPanel->updateControls();  		// The refresh button is initially hidden. We show it after the first update,  		// i.e. after snapshot is taken -		LLUICtrl * refresh_button = instance->mSocialPhotoPanel->getRefreshBtn(); +		LLUICtrl * refresh_button = instance->mFacebookPhotoPanel->getRefreshBtn();  		if (!refresh_button->getVisible())  		{ @@ -874,7 +874,7 @@ void LLFloaterSocial::postUpdate()  	}  } -void LLFloaterSocial::draw() +void LLFloaterFacebook::draw()  {      if (mStatusErrorText && mStatusLoadingText && mStatusLoadingIndicator)      { diff --git a/indra/newview/llfloatersocial.h b/indra/newview/llfloaterfacebook.h index 041ae8a268..ab6420264b 100644 --- a/indra/newview/llfloatersocial.h +++ b/indra/newview/llfloaterfacebook.h @@ -1,6 +1,6 @@  /**  -* @file   llfloatersocial.h -* @brief  Header file for llfloatersocial +* @file   llfloaterfacebook.h +* @brief  Header file for llfloaterfacebook  * @author Gilbert@lindenlab.com  *  * $LicenseInfo:firstyear=2013&license=viewerlgpl$ @@ -24,8 +24,8 @@  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA  * $/LicenseInfo$  */ -#ifndef LL_LLFLOATERSOCIAL_H -#define LL_LLFLOATERSOCIAL_H +#ifndef LL_LLFLOATERFACEBOOK_H +#define LL_LLFLOATERFACEBOOK_H  #include "llfloater.h"  #include "lltextbox.h" @@ -35,10 +35,10 @@ class LLIconCtrl;  class LLCheckBoxCtrl;  class LLSnapshotLivePreview; -class LLSocialStatusPanel : public LLPanel +class LLFacebookStatusPanel : public LLPanel  {  public: -    LLSocialStatusPanel(); +    LLFacebookStatusPanel();  	BOOL postBuild();  	void draw();      void onSend(); @@ -53,11 +53,11 @@ private:  	LLUICtrl* mCancelButton;  }; -class LLSocialPhotoPanel : public LLPanel +class LLFacebookPhotoPanel : public LLPanel  {  public: -	LLSocialPhotoPanel(); -	~LLSocialPhotoPanel(); +	LLFacebookPhotoPanel(); +	~LLFacebookPhotoPanel();  	BOOL postBuild();  	void draw(); @@ -90,10 +90,10 @@ private:  	LLUICtrl* mCancelButton;  }; -class LLSocialCheckinPanel : public LLPanel +class LLFacebookCheckinPanel : public LLPanel  {  public: -    LLSocialCheckinPanel(); +    LLFacebookCheckinPanel();  	BOOL postBuild();  	void draw();      void onSend(); @@ -115,10 +115,10 @@ private:      bool mReloadingMapTexture;  }; -class LLSocialAccountPanel : public LLPanel +class LLFacebookAccountPanel : public LLPanel  {  public: -	LLSocialAccountPanel(); +	LLFacebookAccountPanel();  	BOOL postBuild();  	void draw(); @@ -143,10 +143,10 @@ private:  }; -class LLFloaterSocial : public LLFloater +class LLFloaterFacebook : public LLFloater  {  public: -	LLFloaterSocial(const LLSD& key); +	LLFloaterFacebook(const LLSD& key);  	BOOL postBuild();  	void draw();  	void onCancel(); @@ -157,11 +157,11 @@ public:  	static void postUpdate();  private: -	LLSocialPhotoPanel* mSocialPhotoPanel; +	LLFacebookPhotoPanel* mFacebookPhotoPanel;      LLTextBox* mStatusErrorText;      LLTextBox* mStatusLoadingText;      LLUICtrl*  mStatusLoadingIndicator;  }; -#endif // LL_LLFLOATERSOCIAL_H +#endif // LL_LLFLOATERFACEBOOK_H diff --git a/indra/newview/llfloaterflickr.cpp b/indra/newview/llfloaterflickr.cpp index 61ebe563a3..0a4c3f091b 100644 --- a/indra/newview/llfloaterflickr.cpp +++ b/indra/newview/llfloaterflickr.cpp @@ -570,7 +570,7 @@ void LLFlickrAccountPanel::onDisconnect()  ////////////////////////  LLFloaterFlickr::LLFloaterFlickr(const LLSD& key) : LLFloater(key), -    mSocialPhotoPanel(NULL), +    mFlickrPhotoPanel(NULL),      mStatusErrorText(NULL),      mStatusLoadingText(NULL),      mStatusLoadingIndicator(NULL) @@ -586,7 +586,7 @@ void LLFloaterFlickr::onCancel()  BOOL LLFloaterFlickr::postBuild()  {      // Keep tab of the Photo Panel -	mSocialPhotoPanel = static_cast<LLFlickrPhotoPanel*>(getChild<LLUICtrl>("panel_flickr_photo")); +	mFlickrPhotoPanel = static_cast<LLFlickrPhotoPanel*>(getChild<LLUICtrl>("panel_flickr_photo"));      // Connection status widgets      mStatusErrorText = getChild<LLTextBox>("connection_error_text");      mStatusLoadingText = getChild<LLTextBox>("connection_loading_text"); @@ -596,14 +596,14 @@ BOOL LLFloaterFlickr::postBuild()  void LLFloaterFlickr::showPhotoPanel()  { -	LLTabContainer* parent = dynamic_cast<LLTabContainer*>(mSocialPhotoPanel->getParent()); +	LLTabContainer* parent = dynamic_cast<LLTabContainer*>(mFlickrPhotoPanel->getParent());  	if (!parent)  	{  		llwarns << "Cannot find panel container" << llendl;  		return;  	} -	parent->selectTabPanel(mSocialPhotoPanel); +	parent->selectTabPanel(mFlickrPhotoPanel);  }  // static @@ -613,7 +613,7 @@ void LLFloaterFlickr::preUpdate()  	if (instance)  	{  		//Will set file size text to 'unknown' -		instance->mSocialPhotoPanel->updateControls(); +		instance->mFlickrPhotoPanel->updateControls();  	}  } @@ -624,11 +624,11 @@ void LLFloaterFlickr::postUpdate()  	if (instance)  	{  		//Will set the file size text -		instance->mSocialPhotoPanel->updateControls(); +		instance->mFlickrPhotoPanel->updateControls();  		// The refresh button is initially hidden. We show it after the first update,  		// i.e. after snapshot is taken -		LLUICtrl * refresh_button = instance->mSocialPhotoPanel->getRefreshBtn(); +		LLUICtrl * refresh_button = instance->mFlickrPhotoPanel->getRefreshBtn();  		if (!refresh_button->getVisible())  		{ diff --git a/indra/newview/llfloaterflickr.h b/indra/newview/llfloaterflickr.h index e9005444d8..9a329d4451 100644 --- a/indra/newview/llfloaterflickr.h +++ b/indra/newview/llfloaterflickr.h @@ -117,7 +117,7 @@ public:  	static void postUpdate();  private: -	LLFlickrPhotoPanel* mSocialPhotoPanel; +	LLFlickrPhotoPanel* mFlickrPhotoPanel;      LLTextBox* mStatusErrorText;      LLTextBox* mStatusLoadingText;      LLUICtrl*  mStatusLoadingIndicator; diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 4701e128d3..c3efc26991 100755 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -31,7 +31,7 @@  #include "llagent.h"  #include "llfacebookconnect.h"  #include "llfloaterreg.h" -#include "llfloatersocial.h" +#include "llfloaterfacebook.h"  #include "llfloaterflickr.h"  #include "llfloatertwitter.h"  #include "llcheckboxctrl.h" @@ -1266,11 +1266,11 @@ S32 LLFloaterSnapshot::notify(const LLSD& info)  void LLFloaterSnapshot::update()  {  	LLFloaterSnapshot* inst = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot"); -	LLFloaterSocial* floater_social = LLFloaterReg::findTypedInstance<LLFloaterSocial>("social");  +	LLFloaterFacebook* floater_facebook = LLFloaterReg::findTypedInstance<LLFloaterFacebook>("facebook");   	LLFloaterFlickr* floater_flickr = LLFloaterReg::findTypedInstance<LLFloaterFlickr>("flickr");   	LLFloaterTwitter* floater_twitter = LLFloaterReg::findTypedInstance<LLFloaterTwitter>("twitter");  -	if (!inst && !floater_social && !floater_flickr && !floater_twitter) +	if (!inst && !floater_facebook && !floater_flickr && !floater_twitter)  		return;  	BOOL changed = FALSE; diff --git a/indra/newview/llfloatertwitter.cpp b/indra/newview/llfloatertwitter.cpp index 06d0fb5542..18a1fcbba9 100644 --- a/indra/newview/llfloatertwitter.cpp +++ b/indra/newview/llfloatertwitter.cpp @@ -65,7 +65,9 @@ mResolutionComboBox(NULL),  mRefreshBtn(NULL),  mWorkingLabel(NULL),  mThumbnailPlaceholder(NULL), +mStatusCounterLabel(NULL),  mStatusTextBox(NULL), +mLocationCheckbox(NULL),  mPhotoCheckbox(NULL),  mPostButton(NULL)  { @@ -91,8 +93,12 @@ BOOL LLTwitterPhotoPanel::postBuild()  	mRefreshBtn = getChild<LLUICtrl>("new_snapshot_btn");      mWorkingLabel = getChild<LLUICtrl>("working_lbl");  	mThumbnailPlaceholder = getChild<LLUICtrl>("thumbnail_placeholder"); +	mStatusCounterLabel = getChild<LLUICtrl>("status_counter_label");  	mStatusTextBox = getChild<LLUICtrl>("photo_status"); +	mLocationCheckbox = getChild<LLUICtrl>("add_location_cb"); +	mLocationCheckbox->setCommitCallback(boost::bind(&LLTwitterPhotoPanel::onAddLocationToggled, this));  	mPhotoCheckbox = getChild<LLUICtrl>("add_photo_cb"); +	mPhotoCheckbox->setCommitCallback(boost::bind(&LLTwitterPhotoPanel::onAddPhotoToggled, this));  	mPostButton = getChild<LLUICtrl>("post_photo_btn");  	mCancelButton = getChild<LLUICtrl>("cancel_photo_btn"); @@ -109,30 +115,12 @@ void LLTwitterPhotoPanel::draw()      mStatusTextBox->setEnabled(no_ongoing_connection);      mResolutionComboBox->setEnabled(no_ongoing_connection && mPhotoCheckbox->getValue().asBoolean());      mRefreshBtn->setEnabled(no_ongoing_connection && mPhotoCheckbox->getValue().asBoolean()); +    mLocationCheckbox->setEnabled(no_ongoing_connection);      mPhotoCheckbox->setEnabled(no_ongoing_connection); +	bool add_location = mLocationCheckbox->getValue().asBoolean();  	bool add_photo = mPhotoCheckbox->getValue().asBoolean(); - -	// Restrict the status text length to Twitter's character limit -	LLTextEditor* status_text_box = dynamic_cast<LLTextEditor*>(mStatusTextBox); -	if (status_text_box) -	{ -		int max_status_length = add_photo ? 100 : 140; -		status_text_box->setMaxTextLength(max_status_length); -		if (!add_photo) -		{ -			if (mOldStatusText.length() > status_text_box->getText().length() && status_text_box->getText() == mOldStatusText.substr(0, status_text_box->getText().length())) -			{ -				status_text_box->setText(mOldStatusText); -			} -			mOldStatusText = ""; -		} -		if (status_text_box->getText().length() > max_status_length) -		{ -			mOldStatusText = status_text_box->getText(); -			status_text_box->setText(mOldStatusText.substr(0, max_status_length)); -		} -	} +	updateStatusTextLength(false);      // Display the preview if one is available  	if (previewp && previewp->getThumbnailImage()) @@ -169,7 +157,7 @@ void LLTwitterPhotoPanel::draw()      mWorkingLabel->setVisible(!(previewp && previewp->getSnapshotUpToDate()));      // Enable Post if we have a preview to send and no on going connection being processed -    mPostButton->setEnabled(no_ongoing_connection && ((add_photo && previewp && previewp->getSnapshotUpToDate()) || !mStatusTextBox->getValue().asString().empty())); +    mPostButton->setEnabled(no_ongoing_connection && ((add_photo && previewp && previewp->getSnapshotUpToDate()) || add_location || !mStatusTextBox->getValue().asString().empty()));      // Draw the rest of the panel on top of it  	LLPanel::draw(); @@ -213,6 +201,18 @@ void LLTwitterPhotoPanel::onVisibilityChange(const LLSD& new_visibility)  	}  } +void LLTwitterPhotoPanel::onAddLocationToggled() +{ +	bool add_location = mLocationCheckbox->getValue().asBoolean(); +	updateStatusTextLength(!add_location); +} + +void LLTwitterPhotoPanel::onAddPhotoToggled() +{ +	bool add_photo = mPhotoCheckbox->getValue().asBoolean(); +	updateStatusTextLength(!add_photo); +} +  void LLTwitterPhotoPanel::onClickNewSnapshot()  {  	LLSnapshotLivePreview* previewp = getPreviewView(); @@ -261,6 +261,26 @@ void LLTwitterPhotoPanel::sendPhoto()  {  	// Get the status text  	std::string status = mStatusTextBox->getValue().asString(); +	 +	// Add the location if required +	bool add_location = mLocationCheckbox->getValue().asBoolean(); +	if (add_location) +	{ +		// Get the SLURL for the location +		LLSLURL slurl; +		LLAgentUI::buildSLURL(slurl); +		std::string slurl_string = slurl.getSLURLString(); + +		// Add query parameters so Google Analytics can track incoming clicks! +		slurl_string += DEFAULT_PHOTO_QUERY_PARAMETERS; + +		// Add it to the status (pretty crude, but we don't have a better option with photos) +		if (status.empty()) +			status = slurl_string; +		else +			status = status + " " + slurl_string; +	} +  	// Add the photo if required  	bool add_photo = mPhotoCheckbox->getValue().asBoolean(); @@ -292,6 +312,44 @@ void LLTwitterPhotoPanel::clearAndClose()  	}  } +void LLTwitterPhotoPanel::updateStatusTextLength(BOOL restore_old_status_text) +{ +	bool add_location = mLocationCheckbox->getValue().asBoolean(); +	bool add_photo = mPhotoCheckbox->getValue().asBoolean(); + +	// Restrict the status text length to Twitter's character limit +	LLTextEditor* status_text_box = dynamic_cast<LLTextEditor*>(mStatusTextBox); +	if (status_text_box) +	{ +		int max_status_length = 140 - (add_location ? 40 : 0) - (add_photo ? 40 : 0); +		status_text_box->setMaxTextLength(max_status_length); +		if (restore_old_status_text) +		{ +			if (mOldStatusText.length() > status_text_box->getText().length() && status_text_box->getText() == mOldStatusText.substr(0, status_text_box->getText().length())) +			{ +				status_text_box->setText(mOldStatusText); +			} +			if (mOldStatusText.length() <= max_status_length) +			{ +				mOldStatusText = ""; +			} +		} +		if (status_text_box->getText().length() > max_status_length) +		{ +			if (mOldStatusText.length() < status_text_box->getText().length() || status_text_box->getText() != mOldStatusText.substr(0, status_text_box->getText().length())) +			{ +				mOldStatusText = status_text_box->getText(); +			} +			status_text_box->setText(mOldStatusText.substr(0, max_status_length)); +		} + +		// Update the status character counter +		int characters_remaining = max_status_length - status_text_box->getText().length(); +		mStatusCounterLabel->setValue(characters_remaining); +	} + +} +  void LLTwitterPhotoPanel::updateControls()  {  	LLSnapshotLivePreview* previewp = getPreviewView(); @@ -564,7 +622,7 @@ void LLTwitterAccountPanel::onDisconnect()  ////////////////////////  LLFloaterTwitter::LLFloaterTwitter(const LLSD& key) : LLFloater(key), -    mSocialPhotoPanel(NULL), +    mTwitterPhotoPanel(NULL),      mStatusErrorText(NULL),      mStatusLoadingText(NULL),      mStatusLoadingIndicator(NULL) @@ -580,7 +638,7 @@ void LLFloaterTwitter::onCancel()  BOOL LLFloaterTwitter::postBuild()  {      // Keep tab of the Photo Panel -	mSocialPhotoPanel = static_cast<LLTwitterPhotoPanel*>(getChild<LLUICtrl>("panel_twitter_photo")); +	mTwitterPhotoPanel = static_cast<LLTwitterPhotoPanel*>(getChild<LLUICtrl>("panel_twitter_photo"));      // Connection status widgets      mStatusErrorText = getChild<LLTextBox>("connection_error_text");      mStatusLoadingText = getChild<LLTextBox>("connection_loading_text"); @@ -590,14 +648,14 @@ BOOL LLFloaterTwitter::postBuild()  void LLFloaterTwitter::showPhotoPanel()  { -	LLTabContainer* parent = dynamic_cast<LLTabContainer*>(mSocialPhotoPanel->getParent()); +	LLTabContainer* parent = dynamic_cast<LLTabContainer*>(mTwitterPhotoPanel->getParent());  	if (!parent)  	{  		llwarns << "Cannot find panel container" << llendl;  		return;  	} -	parent->selectTabPanel(mSocialPhotoPanel); +	parent->selectTabPanel(mTwitterPhotoPanel);  }  // static @@ -607,7 +665,7 @@ void LLFloaterTwitter::preUpdate()  	if (instance)  	{  		//Will set file size text to 'unknown' -		instance->mSocialPhotoPanel->updateControls(); +		instance->mTwitterPhotoPanel->updateControls();  	}  } @@ -618,11 +676,11 @@ void LLFloaterTwitter::postUpdate()  	if (instance)  	{  		//Will set the file size text -		instance->mSocialPhotoPanel->updateControls(); +		instance->mTwitterPhotoPanel->updateControls();  		// The refresh button is initially hidden. We show it after the first update,  		// i.e. after snapshot is taken -		LLUICtrl * refresh_button = instance->mSocialPhotoPanel->getRefreshBtn(); +		LLUICtrl * refresh_button = instance->mTwitterPhotoPanel->getRefreshBtn();  		if (!refresh_button->getVisible())  		{ diff --git a/indra/newview/llfloatertwitter.h b/indra/newview/llfloatertwitter.h index 686e167b1f..f267f76694 100644 --- a/indra/newview/llfloatertwitter.h +++ b/indra/newview/llfloatertwitter.h @@ -46,6 +46,8 @@ public:  	LLSnapshotLivePreview* getPreviewView();  	void onVisibilityChange(const LLSD& new_visibility); +	void onAddLocationToggled(); +	void onAddPhotoToggled();  	void onClickNewSnapshot();  	void onSend();  	bool onTwitterConnectStateChange(const LLSD& data); @@ -53,6 +55,7 @@ public:  	void sendPhoto();  	void clearAndClose(); +	void updateStatusTextLength(BOOL restore_old_status_text);  	void updateControls();  	void updateResolution(BOOL do_update);  	void checkAspectRatio(S32 index); @@ -66,7 +69,9 @@ private:  	LLUICtrl * mRefreshBtn;  	LLUICtrl * mWorkingLabel;  	LLUICtrl * mThumbnailPlaceholder; +	LLUICtrl * mStatusCounterLabel;  	LLUICtrl * mStatusTextBox; +	LLUICtrl * mLocationCheckbox;  	LLUICtrl * mPhotoCheckbox;  	LLUICtrl * mPostButton;  	LLUICtrl* mCancelButton; @@ -116,7 +121,7 @@ public:  	static void postUpdate();  private: -	LLTwitterPhotoPanel* mSocialPhotoPanel; +	LLTwitterPhotoPanel* mTwitterPhotoPanel;      LLTextBox* mStatusErrorText;      LLTextBox* mStatusLoadingText;      LLUICtrl*  mStatusLoadingIndicator; diff --git a/indra/newview/llpanelsnapshotoptions.cpp b/indra/newview/llpanelsnapshotoptions.cpp index 4cadd837d1..a7b9b6d22e 100755 --- a/indra/newview/llpanelsnapshotoptions.cpp +++ b/indra/newview/llpanelsnapshotoptions.cpp @@ -32,7 +32,7 @@  #include "llfloatersnapshot.h" // FIXME: create a snapshot model  #include "llfloaterreg.h" -#include "llfloatersocial.h" +#include "llfloaterfacebook.h"  #include "llfloaterflickr.h"  #include "llfloatertwitter.h" @@ -144,12 +144,12 @@ void LLPanelSnapshotOptions::onSendToFacebook()  {  	LLFloaterReg::hideInstance("snapshot"); -	LLFloaterSocial* social_floater = dynamic_cast<LLFloaterSocial*>(LLFloaterReg::getInstance("social")); -	if (social_floater) +	LLFloaterFacebook* facebook_floater = dynamic_cast<LLFloaterFacebook*>(LLFloaterReg::getInstance("facebook")); +	if (facebook_floater)  	{ -		social_floater->showPhotoPanel(); +		facebook_floater->showPhotoPanel();  	} -	LLFloaterReg::showInstance("social"); +	LLFloaterReg::showInstance("facebook");  }  void LLPanelSnapshotOptions::onSendToTwitter() diff --git a/indra/newview/llsnapshotlivepreview.cpp b/indra/newview/llsnapshotlivepreview.cpp index 67952f83c7..9feeea1644 100644 --- a/indra/newview/llsnapshotlivepreview.cpp +++ b/indra/newview/llsnapshotlivepreview.cpp @@ -34,7 +34,7 @@  #include "lleconomy.h"  #include "llfloaterperms.h"  #include "llfloaterreg.h" -#include "llfloatersocial.h" +#include "llfloaterfacebook.h"  #include "llfloaterflickr.h"  #include "llfloatertwitter.h"  #include "llimagebmp.h" @@ -210,7 +210,7 @@ void LLSnapshotLivePreview::updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail  		mSnapshotDelayTimer.start();  		mSnapshotDelayTimer.setTimerExpirySec(delay);  		LLFloaterSnapshot::preUpdate(); -		LLFloaterSocial::preUpdate(); +		LLFloaterFacebook::preUpdate();  		LLFloaterFlickr::preUpdate();  		LLFloaterTwitter::preUpdate();  	} @@ -769,7 +769,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )  	}  	lldebugs << "done creating snapshot" << llendl;  	LLFloaterSnapshot::postUpdate(); -	LLFloaterSocial::postUpdate(); +	LLFloaterFacebook::postUpdate();  	LLFloaterFlickr::postUpdate();  	LLFloaterTwitter::postUpdate(); diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 1e07aaf5ec..e38ffbbc63 100755 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -60,6 +60,7 @@  #include "llfloatereditwater.h"  #include "llfloaterenvironmentsettings.h"  #include "llfloaterevent.h" +#include "llfloaterfacebook.h"  #include "llfloaterflickr.h"  #include "llfloaterfonttest.h"  #include "llfloatergesture.h" @@ -104,7 +105,6 @@  #include "llfloatersettingsdebug.h"  #include "llfloatersidepanelcontainer.h"  #include "llfloatersnapshot.h" -#include "llfloatersocial.h"  #include "llfloatersounddevices.h"  #include "llfloaterspellchecksettings.h"  #include "llfloatertelehub.h" @@ -306,9 +306,6 @@ void LLViewerFloaterReg::registerFloaters()  	LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);  	LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>);  	LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundDevices>); -	LLFloaterReg::add("social", "floater_social.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSocial>); -	LLFloaterReg::add("flickr", "floater_flickr.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFlickr>); -	LLFloaterReg::add("twitter", "floater_twitter.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTwitter>);  	LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);  	LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRunQueue>);  	LLFloaterReg::add("stop_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotRunQueue>); @@ -317,10 +314,15 @@ void LLViewerFloaterReg::registerFloaters()  	LLFloaterReg::add("my_profile", "floater_my_web_profile.xml", (LLFloaterBuildFunc)&LLFloaterWebProfile::create);  	LLFloaterReg::add("profile", "floater_web_profile.xml", (LLFloaterBuildFunc)&LLFloaterWebProfile::create);  	LLFloaterReg::add("how_to", "floater_how_to.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create); +  	LLFloaterReg::add("fbc_web", "floater_fbc_web.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create);  	LLFloaterReg::add("flickr_web", "floater_fbc_web.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create);  	LLFloaterReg::add("twitter_web", "floater_fbc_web.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create); +	LLFloaterReg::add("facebook", "floater_facebook.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFacebook>); +	LLFloaterReg::add("flickr", "floater_flickr.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFlickr>); +	LLFloaterReg::add("twitter", "floater_twitter.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTwitter>); +	  	LLFloaterUIPreviewUtil::registerFloater();  	LLFloaterReg::add("upload_anim_bvh", "floater_animation_bvh_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBvhPreview>, "upload");  	LLFloaterReg::add("upload_anim_anim", "floater_animation_anim_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAnimPreview>, "upload"); diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index e42743824e..751558fc93 100755 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -133,6 +133,8 @@ with the same filename but different name    <texture name="Command_Chat_Icon"         file_name="toolbar_icons/chat.png"         preload="true" />    <texture name="Command_Compass_Icon"      file_name="toolbar_icons/land.png"         preload="true" />    <texture name="Command_Destinations_Icon" file_name="toolbar_icons/destinations.png" preload="true" /> +  <texture name="Command_Facebook_Icon"     file_name="toolbar_icons/facebook.png"     preload="true" /> +  <texture name="Command_Flickr_Icon"       file_name="toolbar_icons/flickr.png"       preload="true" />    <texture name="Command_Gestures_Icon"     file_name="toolbar_icons/gestures.png"     preload="true" />    <texture name="Command_HowTo_Icon"        file_name="toolbar_icons/howto.png"        preload="true" />    <texture name="Command_Inventory_Icon"    file_name="toolbar_icons/inventory.png"    preload="true" /> @@ -148,11 +150,9 @@ with the same filename but different name    <texture name="Command_Preferences_Icon"  file_name="toolbar_icons/preferences.png"  preload="true" />    <texture name="Command_Profile_Icon"      file_name="toolbar_icons/profile.png"      preload="true" />    <texture name="Command_Search_Icon"       file_name="toolbar_icons/search.png"       preload="true" /> -  <texture name="Command_Social_Icon"       file_name="toolbar_icons/facebook.png"     preload="true" /> -  <texture name="Command_Flickr_Icon"       file_name="toolbar_icons/flickr.png"     preload="true" /> -  <texture name="Command_Twitter_Icon"      file_name="toolbar_icons/twitter.png"     preload="true" />    <texture name="Command_Snapshot_Icon"     file_name="toolbar_icons/snapshot.png"     preload="true" />    <texture name="Command_Speak_Icon"        file_name="toolbar_icons/speak.png"        preload="true" /> +  <texture name="Command_Twitter_Icon"      file_name="toolbar_icons/twitter.png"      preload="true" />    <texture name="Command_View_Icon"         file_name="toolbar_icons/view.png"         preload="true" />    <texture name="Command_Voice_Icon"        file_name="toolbar_icons/nearbyvoice.png"  preload="true" />    <texture name="Caret_Bottom_Icon"         file_name="toolbar_icons/caret_bottom.png" preload="true" scale.left="1" scale.top="23" scale.right="15" scale.bottom="1" /> diff --git a/indra/newview/skins/default/xui/en/floater_social.xml b/indra/newview/skins/default/xui/en/floater_facebook.xml index b7ff374d5f..820e105e53 100644 --- a/indra/newview/skins/default/xui/en/floater_social.xml +++ b/indra/newview/skins/default/xui/en/floater_facebook.xml @@ -3,9 +3,9 @@    positioning="cascading"    can_close="true"    can_resize="false" -  help_topic="floater_social" +  help_topic="floater_facebook"    layout="topleft" -  name="floater_social" +  name="floater_facebook"    save_rect="true"    single_instance="true"    reuse_instance="true" @@ -30,29 +30,29 @@       height="437"       halign="center">       <panel -       filename="panel_social_status.xml" -       class="llsocialstatuspanel" +       filename="panel_facebook_status.xml" +       class="llfacebookstatuspanel"         follows="all"         label="STATUS" -       name="panel_social_status"/> +       name="panel_facebook_status"/>       <panel -       filename="panel_social_photo.xml" -       class="llsocialphotopanel" +       filename="panel_facebook_photo.xml" +       class="llfacebookphotopanel"         follows="all"         label="PHOTO" -       name="panel_social_photo"/> +       name="panel_facebook_photo"/>       <panel -       filename="panel_social_place.xml" -       class="llsocialcheckinpanel" +       filename="panel_facebook_place.xml" +       class="llfacebookcheckinpanel"         follows="all"         label="CHECK IN" -       name="panel_social_place"/> +       name="panel_facebook_place"/>       <panel -       filename="panel_social_account.xml" -       class="llsocialaccountpanel" +       filename="panel_facebook_account.xml" +       class="llfacebookaccountpanel"         follows="all"         label="ACCOUNT" -       name="panel_social_account"/>      +       name="panel_facebook_account"/>           </tab_container>      <panel       name="connection_status_panel" diff --git a/indra/newview/skins/default/xui/en/floater_twitter.xml b/indra/newview/skins/default/xui/en/floater_twitter.xml index 7007a14cdb..751914141c 100644 --- a/indra/newview/skins/default/xui/en/floater_twitter.xml +++ b/indra/newview/skins/default/xui/en/floater_twitter.xml @@ -10,10 +10,10 @@    single_instance="true"    reuse_instance="true"    title="TWITTER" -  height="482" +  height="502"    width="304">    <panel -   height="482" +   height="502"     width="304"     visible="true"     name="background" @@ -27,7 +27,7 @@       tab_height="30"       tab_position="top"       top="7" -     height="437" +     height="457"       halign="center">       <panel         filename="panel_twitter_photo.xml" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 79adb4e8bb..905988e09d 100755 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -285,7 +285,7 @@          name="Facebook">          <menu_item_call.on_click            function="Floater.Toggle" -          parameter="social"/> +          parameter="facebook"/>        </menu_item_call>        <menu_item_call          label="Twitter..." diff --git a/indra/newview/skins/default/xui/en/panel_social_account.xml b/indra/newview/skins/default/xui/en/panel_facebook_account.xml index d7235396fe..f091d2e9b9 100644 --- a/indra/newview/skins/default/xui/en/panel_social_account.xml +++ b/indra/newview/skins/default/xui/en/panel_facebook_account.xml @@ -2,7 +2,7 @@  	 height="400"  	 width="304"  	 layout="topleft" -   name="panel_social_account"> +   name="panel_facebook_account">    <string        name="facebook_connected"        value="You are connected to Facebook as:" /> diff --git a/indra/newview/skins/default/xui/en/panel_social_photo.xml b/indra/newview/skins/default/xui/en/panel_facebook_photo.xml index a55613b52a..19f9f2fb74 100644 --- a/indra/newview/skins/default/xui/en/panel_social_photo.xml +++ b/indra/newview/skins/default/xui/en/panel_facebook_photo.xml @@ -2,7 +2,7 @@        height="400"        width="304"        layout="topleft" -      name="panel_social_photo"> +      name="panel_facebook_photo">        <layout_stack  	   layout="topleft"         border_size="0" diff --git a/indra/newview/skins/default/xui/en/panel_social_place.xml b/indra/newview/skins/default/xui/en/panel_facebook_place.xml index 13e94f6998..1eea8f317b 100644 --- a/indra/newview/skins/default/xui/en/panel_social_place.xml +++ b/indra/newview/skins/default/xui/en/panel_facebook_place.xml @@ -2,7 +2,7 @@        height="400"        width="304"  	  layout="topleft" -      name="panel_social_place"> +      name="panel_facebook_place">        <layout_stack  	    layout="topleft"          border_size="0" diff --git a/indra/newview/skins/default/xui/en/panel_social_status.xml b/indra/newview/skins/default/xui/en/panel_facebook_status.xml index 54cfa3f524..50e15c2e80 100644 --- a/indra/newview/skins/default/xui/en/panel_social_status.xml +++ b/indra/newview/skins/default/xui/en/panel_facebook_status.xml @@ -2,7 +2,7 @@  	 height="400"  	 width="304"  	 layout="topleft" -     name="panel_social_status"> +     name="panel_facebook_status">       <layout_stack        layout="topleft"        border_size="0" diff --git a/indra/newview/skins/default/xui/en/panel_twitter_photo.xml b/indra/newview/skins/default/xui/en/panel_twitter_photo.xml index 8e2412c84e..14268c1bcf 100644 --- a/indra/newview/skins/default/xui/en/panel_twitter_photo.xml +++ b/indra/newview/skins/default/xui/en/panel_twitter_photo.xml @@ -1,19 +1,19 @@      <panel -      height="400" +      height="420"        width="304"        layout="topleft"        name="panel_twitter_photo">        <layout_stack  	   layout="topleft"         border_size="0" -       height="392" +       height="412"         follows="all"         orientation="vertical"         name="stack_photo"         top="8">          <layout_panel           name="text_panel" -         height="140"> +         height="160">            <text             length="1"             follows="top|left|right" @@ -25,6 +25,20 @@             type="string">              What's happening?            </text> +          <text +           length="1" +           follows="top|left" +           font="SansSerif" +           text_color="EmphasisColor" +           halign="right" +           height="16" +           width="30" +           left="227" +           name="status_counter_label" +           top="3" +           type="string"> +            140 +          </text>            <text_editor             follows="left|top"             height="87" @@ -39,6 +53,14 @@            <check_box             follows="left|top"             initial_value="true" +           label="Include SL location" +           name="add_location_cb" +            left="9" +            height="16" +           top_pad="10"/> +          <check_box +           follows="left|top" +           initial_value="true"             label="Include a photo"             name="add_photo_cb"              left="9" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index b24cca588e..3806e1287c 100755 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -3877,6 +3877,8 @@ Try enclosing path to the editor with double quotes.    <string name="Command_Conversations_Label">Conversations</string>    <string name="Command_Compass_Label">Compass</string>    <string name="Command_Destinations_Label">Destinations</string> +  <string name="Command_Facebook_Label">Facebook</string> +  <string name="Command_Flickr_Label">Flickr</string>    <string name="Command_Gestures_Label">Gestures</string>    <string name="Command_HowTo_Label">How to</string>    <string name="Command_Inventory_Label">Inventory</string> @@ -3892,10 +3894,8 @@ Try enclosing path to the editor with double quotes.    <string name="Command_Profile_Label">Profile</string>    <string name="Command_Search_Label">Search</string>    <string name="Command_Snapshot_Label">Snapshot</string> -  <string name="Command_Social_Label">Facebook</string> -  <string name="Command_Flickr_Label">Flickr</string> -  <string name="Command_Twitter_Label">Twitter</string>    <string name="Command_Speak_Label">Speak</string> +  <string name="Command_Twitter_Label">Twitter</string>    <string name="Command_View_Label">Camera controls</string>    <string name="Command_Voice_Label">Voice settings</string> @@ -3907,6 +3907,8 @@ Try enclosing path to the editor with double quotes.    <string name="Command_Conversations_Tooltip">Converse with everyone</string>    <string name="Command_Compass_Tooltip">Compass</string>    <string name="Command_Destinations_Tooltip">Destinations of interest</string> +  <string name="Command_Facebook_Tooltip">Post to Facebook</string> +  <string name="Command_Flickr_Tooltip">Upload to Flickr</string>    <string name="Command_Gestures_Tooltip">Gestures for your avatar</string>    <string name="Command_HowTo_Tooltip">How to do common tasks</string>    <string name="Command_Inventory_Tooltip">View and use your belongings</string> @@ -3922,10 +3924,8 @@ Try enclosing path to the editor with double quotes.    <string name="Command_Profile_Tooltip">Edit or view your profile</string>    <string name="Command_Search_Tooltip">Find places, events, people</string>    <string name="Command_Snapshot_Tooltip">Take a picture</string> -  <string name="Command_Social_Tooltip">Post to Facebook</string> -  <string name="Command_Flickr_Tooltip">Upload to Flickr</string> -  <string name="Command_Twitter_Tooltip">Twitter</string>    <string name="Command_Speak_Tooltip">Speak with people nearby using your microphone</string> +  <string name="Command_Twitter_Tooltip">Twitter</string>    <string name="Command_View_Tooltip">Changing camera angle</string>    <string name="Command_Voice_Tooltip">Volume controls for calls and people near you in world</string>  | 
