summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMerov Linden <merov@lindenlab.com>2013-05-31 19:07:09 -0700
committerMerov Linden <merov@lindenlab.com>2013-05-31 19:07:09 -0700
commite17b9de293084da0de0ce12290c9ae1939184337 (patch)
tree824d88fbf83aed3ed73080d2b55b681910cd9dd0
parent2bb7b3f6bcb2318d96f1be45093e5bae7b7f8167 (diff)
ACME-453, ACME-455, ACME-456, ACME-465 : Duplicate and tweak the Snapshot Profile UI to create the Snapshot Facebook UI
-rwxr-xr-xindra/newview/CMakeLists.txt1
-rwxr-xr-xindra/newview/llpanelsnapshotfacebook.cpp101
-rwxr-xr-xindra/newview/llpanelsnapshotoptions.cpp7
-rwxr-xr-xindra/newview/skins/default/textures/textures.xml1
-rwxr-xr-xindra/newview/skins/default/textures/toolbar_icons/facebook.pngbin0 -> 1180 bytes
-rwxr-xr-xindra/newview/skins/default/xui/en/floater_snapshot.xml24
-rwxr-xr-xindra/newview/skins/default/xui/en/panel_snapshot_facebook.xml199
-rwxr-xr-xindra/newview/skins/default/xui/en/panel_snapshot_options.xml23
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.png
new file mode 100755
index 0000000000..32fe2bf8ac
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/facebook.png
Binary files differ
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>