diff options
| -rwxr-xr-x | indra/newview/CMakeLists.txt | 1 | ||||
| -rwxr-xr-x | indra/newview/llpanelsnapshotfacebook.cpp | 101 | ||||
| -rwxr-xr-x | indra/newview/llpanelsnapshotoptions.cpp | 7 | ||||
| -rwxr-xr-x | indra/newview/skins/default/textures/textures.xml | 1 | ||||
| -rwxr-xr-x | indra/newview/skins/default/textures/toolbar_icons/facebook.png | bin | 0 -> 1180 bytes | |||
| -rwxr-xr-x | indra/newview/skins/default/xui/en/floater_snapshot.xml | 24 | ||||
| -rwxr-xr-x | indra/newview/skins/default/xui/en/panel_snapshot_facebook.xml | 199 | ||||
| -rwxr-xr-x | indra/newview/skins/default/xui/en/panel_snapshot_options.xml | 23 | 
8 files changed, 351 insertions, 5 deletions
| diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 477600ca01..f01c2f714d 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -434,6 +434,7 @@ set(viewer_SOURCE_FILES      llpanelprimmediacontrols.cpp      llpanelprofile.cpp      llpanelsnapshot.cpp +    llpanelsnapshotfacebook.cpp      llpanelsnapshotinventory.cpp      llpanelsnapshotlocal.cpp      llpanelsnapshotoptions.cpp diff --git a/indra/newview/llpanelsnapshotfacebook.cpp b/indra/newview/llpanelsnapshotfacebook.cpp new file mode 100755 index 0000000000..50c5b62fe7 --- /dev/null +++ b/indra/newview/llpanelsnapshotfacebook.cpp @@ -0,0 +1,101 @@ +/**  + * @file llpanelsnapshotfacebook.cpp + * @brief Posts a snapshot to the resident Facebook account. + * + * $LicenseInfo:firstyear=2013&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2013, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +// libs +#include "llcombobox.h" +#include "llfloaterreg.h" +#include "llpanel.h" +#include "llspinctrl.h" + +// newview +#include "llfloatersnapshot.h" +#include "llpanelsnapshot.h" +#include "llsidetraypanelcontainer.h" +#include "llwebprofile.h" + +/** + * Posts a snapshot to the resident Facebook account. + */ +class LLPanelSnapshotFacebook +:	public LLPanelSnapshot +{ +	LOG_CLASS(LLPanelSnapshotFacebook); + +public: +	LLPanelSnapshotFacebook(); + +	/*virtual*/ BOOL postBuild(); +	/*virtual*/ void onOpen(const LLSD& key); + +private: +	/*virtual*/ std::string getWidthSpinnerName() const		{ return "facebook_snapshot_width"; } +	/*virtual*/ std::string getHeightSpinnerName() const	{ return "facebook_snapshot_height"; } +	/*virtual*/ std::string getAspectRatioCBName() const	{ return "facebook_keep_aspect_check"; } +	/*virtual*/ std::string getImageSizeComboName() const	{ return "facebook_size_combo"; } +	/*virtual*/ std::string getImageSizePanelName() const	{ return "facebook_image_size_lp"; } +	/*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const { return LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG; } +	/*virtual*/ void updateControls(const LLSD& info); + +	void onSend(); +}; + +static LLRegisterPanelClassWrapper<LLPanelSnapshotFacebook> panel_class("llpanelsnapshotfacebook"); + +LLPanelSnapshotFacebook::LLPanelSnapshotFacebook() +{ +	mCommitCallbackRegistrar.add("PostToFacebook.Send",		boost::bind(&LLPanelSnapshotFacebook::onSend,		this)); +	mCommitCallbackRegistrar.add("PostToFacebook.Cancel",	boost::bind(&LLPanelSnapshotFacebook::cancel,		this)); +} + +// virtual +BOOL LLPanelSnapshotFacebook::postBuild() +{ +	return LLPanelSnapshot::postBuild(); +} + +// virtual +void LLPanelSnapshotFacebook::onOpen(const LLSD& key) +{ +	LLPanelSnapshot::onOpen(key); +} + +// virtual +void LLPanelSnapshotFacebook::updateControls(const LLSD& info) +{ +	const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true; +	getChild<LLUICtrl>("post_btn")->setEnabled(have_snapshot); +} + +void LLPanelSnapshotFacebook::onSend() +{ +	std::string caption = getChild<LLUICtrl>("caption")->getValue().asString(); +	bool add_location = getChild<LLUICtrl>("add_location_cb")->getValue().asBoolean(); + +	LLWebProfile::uploadImage(LLFloaterSnapshot::getImageData(), caption, add_location); +	LLFloaterSnapshot::postSave(); +} diff --git a/indra/newview/llpanelsnapshotoptions.cpp b/indra/newview/llpanelsnapshotoptions.cpp index 554fabe5b3..14953f3cf9 100755 --- a/indra/newview/llpanelsnapshotoptions.cpp +++ b/indra/newview/llpanelsnapshotoptions.cpp @@ -51,6 +51,7 @@ private:  	void updateUploadCost();  	void openPanel(const std::string& panel_name);  	void onSaveToProfile(); +	void onSaveToFacebook();  	void onSaveToEmail();  	void onSaveToInventory();  	void onSaveToComputer(); @@ -60,6 +61,7 @@ static LLRegisterPanelClassWrapper<LLPanelSnapshotOptions> panel_class("llpanels  LLPanelSnapshotOptions::LLPanelSnapshotOptions()  { +	mCommitCallbackRegistrar.add("Snapshot.SaveToFacebook",		boost::bind(&LLPanelSnapshotOptions::onSaveToFacebook,	this));  	mCommitCallbackRegistrar.add("Snapshot.SaveToProfile",		boost::bind(&LLPanelSnapshotOptions::onSaveToProfile,	this));  	mCommitCallbackRegistrar.add("Snapshot.SaveToEmail",		boost::bind(&LLPanelSnapshotOptions::onSaveToEmail,		this));  	mCommitCallbackRegistrar.add("Snapshot.SaveToInventory",	boost::bind(&LLPanelSnapshotOptions::onSaveToInventory,	this)); @@ -99,6 +101,11 @@ void LLPanelSnapshotOptions::openPanel(const std::string& panel_name)  	LLFloaterSnapshot::postPanelSwitch();  } +void LLPanelSnapshotOptions::onSaveToFacebook() +{ +	openPanel("panel_snapshot_facebook"); +} +  void LLPanelSnapshotOptions::onSaveToProfile()  {  	openPanel("panel_snapshot_profile"); diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 18146943a5..a0b46bab0b 100755 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -567,6 +567,7 @@ with the same filename but different name    <texture name="Snapshot_Email" file_name="snapshot_email.png" preload="false" />    <texture name="Snapshot_Inventory" file_name="toolbar_icons/inventory.png" preload="false" />    <texture name="Snapshot_Profile" file_name="toolbar_icons/profile.png" preload="false" /> +  <texture name="Snapshot_Facebook" file_name="toolbar_icons/facebook.png" preload="false" />    <texture name="startup_logo"  file_name="windows/startup_logo.png" preload="true" /> diff --git a/indra/newview/skins/default/textures/toolbar_icons/facebook.png b/indra/newview/skins/default/textures/toolbar_icons/facebook.pngBinary files differ new file mode 100755 index 0000000000..32fe2bf8ac --- /dev/null +++ b/indra/newview/skins/default/textures/toolbar_icons/facebook.png diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index 49d64767cc..e8e7fb77c1 100755 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -21,7 +21,11 @@          Sending Email      </string>      <string -     name="profile_progress_str"> +        name="facebook_progress_str"> +        Posting to Facebook +    </string> +    <string +        name="profile_progress_str">          Posting      </string>      <string @@ -33,7 +37,11 @@          Saving to Computer      </string>   	<string - 	 name="profile_succeeded_str"> +        name="facebook_succeeded_str"> + 	    Image uploaded + 	</string> + 	<string +        name="profile_succeeded_str">   	    Image uploaded   	</string>   	<string @@ -49,7 +57,11 @@   	    Saved to Computer!   	</string>   	<string - 	 name="profile_failed_str"> +        name="facebook_failed_str"> + 	    Failed to upload image to your Facebook timeline. + 	</string> + 	<string +        name="profile_failed_str">   	    Failed to upload image to your Profile Feed.   	</string>   	<string @@ -257,6 +269,12 @@         name="panel_snapshot_options"         top="0" />        <panel +       class="llpanelsnapshotfacebook" +       follows="all" +       layout="topleft" +       name="panel_snapshot_facebook" +       filename="panel_snapshot_facebook.xml" /> +      <panel         class="llpanelsnapshotprofile"         follows="all"         layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_facebook.xml b/indra/newview/skins/default/xui/en/panel_snapshot_facebook.xml new file mode 100755 index 0000000000..2810f97ca6 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_snapshot_facebook.xml @@ -0,0 +1,199 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + height="380" + layout="topleft" + name="panel_snapshot_facebook" + width="490"> +    <icon +     follows="top|left" +     height="18" +     image_name="Snapshot_Facebook" +     layout="topleft" +     left="12" +     mouse_opaque="true" +     name="title_icon" +     top="5" +     width="18" /> +    <text +     follows="top|left|right" +     font="SansSerifBold" +     height="20" +     layout="topleft" +     left_pad="12" +     length="1" +     name="title" +     right="-10" +     text_color="white" +     type="string" +     top_delta="4"> +        Post to my Facebook timeline +    </text> +    <view_border  +     bevel_style="in" +     follows="left|top|right"  +     height="1" +     left="10" +     layout="topleft" +     name="hr" +     right="-10" +     top_pad="5" +     /> +    <combo_box +     follows="left|top" +     height="23" +     label="Resolution" +     layout="topleft" +     left_delta="0" +     name="facebook_size_combo" +     top_pad="10" +     width="250"> +        <combo_box.item +         label="Current Window" +         name="CurrentWindow" +         value="[i0,i0]" /> +        <combo_box.item +         label="640x480" +         name="640x480" +         value="[i640,i480]" /> +        <combo_box.item +         label="800x600" +         name="800x600" +         value="[i800,i600]" /> +        <combo_box.item +         label="1024x768" +         name="1024x768" +         value="[i1024,i768]" /> +        <combo_box.item +         label="Custom" +         name="Custom" +         value="[i-1,i-1]" /> +    </combo_box> +    <layout_stack +     animate="false" +     follows="all" +     height="270" +     layout="bottomleft" +     name="facebook_image_params_ls" +     left_delta="0" +     orientation="vertical" +     top_pad="10" +     right="-10"> +        <layout_panel +         follows="top|left|right" +         height="55" +         layout="topleft" +         left="0" +         name="facebook_image_size_lp" +         auto_resize="false" +         top="0" +         right="-1" +         visible="true"> +            <spinner +             allow_text_entry="false" +             decimal_digits="0" +             follows="left|top" +             height="20" +             increment="32" +             label="Width" +             label_width="40" +             layout="topleft" +             left="10" +             max_val="6016" +             min_val="32" +             name="facebook_snapshot_width" +             top_pad="10" +             width="95" /> +            <spinner +             allow_text_entry="false" +             decimal_digits="0" +             follows="left|top" +             height="20" +             increment="32" +             label="Height" +             label_width="40" +             layout="topleft" +             left_pad="5" +             max_val="6016" +             min_val="32" +             name="facebook_snapshot_height" +             top_delta="0" +             width="95" /> +            <check_box +              height="10" +             bottom_delta="20" +             label="Constrain proportions" +             layout="topleft" +             left="10" +             name="facebook_keep_aspect_check" /> +        </layout_panel> +        <layout_panel +         follows="top|left|right" +         height="200" +         layout="topleft" +         left="0" +         name="facebook_image_metadata_lp" +         auto_resize="true" +         top="0" +         right="-1" +         visible="true"> +            <text +             length="1" +             follows="top|left|right" +             font="SansSerif" +             height="16" +             layout="topleft" +             left="0" +             name="caption_label" +             right="-10" +             top_pad="0" +             type="string"> +                Caption: +            </text> +            <text_editor +             follows="all" +             height="155" +             layout="topleft" +             left_delta="0" +             length="1" +             max_length="700" +             name="caption" +             right="-10" +             top_pad="5" +             type="string" +             word_wrap="true"> +            </text_editor> +            <check_box +             follows="left|bottom" +             initial_value="true" +             label="Include location" +             layout="topleft" +             left_delta="0" +             name="add_location_cb" +             top_pad="15" /> +        </layout_panel> +    </layout_stack> +    <button +     follows="right|bottom" +     height="23" +     label="Cancel" +     layout="topleft" +     name="cancel_btn" +     right="-32" +     top="350" +     width="100"> +      <button.commit_callback +       function="PostToFacebook.Cancel" /> +    </button> +    <button +     follows="right|bottom" +     height="23" +     label="Post" +     layout="topleft" +     left_delta="-106" +     name="post_btn" +     top_delta="0" +     width="100"> +      <button.commit_callback +       function="PostToFacebook.Send" /> +    </button> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml index d2f29ade44..8cf5bfb426 100755 --- a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml @@ -5,6 +5,25 @@   layout="topleft"   name="panel_snapshot_options"   width="490"> + <button +  follows="left|top|right" +  font="SansSerif" +  halign="left" +  height="38" +  image_overlay="Snapshot_Facebook" +  image_overlay_alignment="left" +  image_top_pad="-2" +  imgoverlay_label_space="10" +  label="Post to my Facebook timeline" +  layout="topleft" +  left="10" +  name="save_to_facebook_btn" +  pad_left="10" +  right="-10" +  top="5"> +  <button.commit_callback +   function="Snapshot.SaveToFacebook" /> +  </button>    <button     follows="left|top|right"     font="SansSerif" @@ -16,11 +35,11 @@     imgoverlay_label_space="10"     label="Post to My Profile Feed"     layout="topleft" -   left="10" +   left_delta="0"     name="save_to_profile_btn"     pad_left="10"     right="-10" -   top="5"> +   top_pad="10">      <button.commit_callback       function="Snapshot.SaveToProfile" />    </button> | 
