summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xindra/newview/CMakeLists.txt4
-rwxr-xr-xindra/newview/app_settings/commands.xml12
-rwxr-xr-xindra/newview/app_settings/settings.xml2
-rwxr-xr-xindra/newview/app_settings/toolbars.xml2
-rw-r--r--indra/newview/llfacebookconnect.cpp69
-rw-r--r--indra/newview/llfloaterfacebook.cpp (renamed from indra/newview/llfloatersocial.cpp)190
-rw-r--r--indra/newview/llfloaterfacebook.h (renamed from indra/newview/llfloatersocial.h)34
-rw-r--r--indra/newview/llfloaterflickr.cpp14
-rw-r--r--indra/newview/llfloaterflickr.h2
-rwxr-xr-xindra/newview/llfloatersnapshot.cpp6
-rw-r--r--indra/newview/llfloatertwitter.cpp116
-rw-r--r--indra/newview/llfloatertwitter.h7
-rwxr-xr-xindra/newview/llpanelsnapshotoptions.cpp10
-rw-r--r--indra/newview/llsnapshotlivepreview.cpp6
-rwxr-xr-xindra/newview/llviewerfloaterreg.cpp10
-rwxr-xr-xindra/newview/skins/default/textures/textures.xml6
-rw-r--r--indra/newview/skins/default/xui/en/floater_facebook.xml (renamed from indra/newview/skins/default/xui/en/floater_social.xml)28
-rw-r--r--indra/newview/skins/default/xui/en/floater_twitter.xml6
-rwxr-xr-xindra/newview/skins/default/xui/en/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_facebook_account.xml (renamed from indra/newview/skins/default/xui/en/panel_social_account.xml)2
-rw-r--r--indra/newview/skins/default/xui/en/panel_facebook_photo.xml (renamed from indra/newview/skins/default/xui/en/panel_social_photo.xml)2
-rw-r--r--indra/newview/skins/default/xui/en/panel_facebook_place.xml (renamed from indra/newview/skins/default/xui/en/panel_social_place.xml)2
-rw-r--r--indra/newview/skins/default/xui/en/panel_facebook_status.xml (renamed from indra/newview/skins/default/xui/en/panel_social_status.xml)2
-rw-r--r--indra/newview/skins/default/xui/en/panel_twitter_photo.xml28
-rwxr-xr-xindra/newview/skins/default/xui/en/strings.xml12
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>