From 65e144d9fec4bb441050e73136ed95b48e6e363c Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine Date: Wed, 2 Nov 2011 19:05:13 +0200 Subject: STORM-1580 WIP Initial commit for PO review. --- indra/newview/llpanelsnapshotlocal.cpp | 209 +++++++++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 indra/newview/llpanelsnapshotlocal.cpp (limited to 'indra/newview/llpanelsnapshotlocal.cpp') diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp new file mode 100644 index 0000000000..5dc32d228f --- /dev/null +++ b/indra/newview/llpanelsnapshotlocal.cpp @@ -0,0 +1,209 @@ +/** + * @file llpanelsnapshotlocal.cpp + * @brief The panel provides UI for saving snapshot to a local folder. + * + * $LicenseInfo:firstyear=2011&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, 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" + +#include "llcombobox.h" +#include "llsidetraypanelcontainer.h" +#include "llsliderctrl.h" +#include "llspinctrl.h" + +#include "llfloatersnapshot.h" // FIXME: replace with a snapshot storage model +#include "llpanelsnapshot.h" +#include "llviewercontrol.h" // gSavedSettings + +/** + * The panel provides UI for saving snapshot to a local folder. + */ +class LLPanelSnapshotLocal +: public LLPanelSnapshot +{ + LOG_CLASS(LLPanelSnapshotLocal); + +public: + LLPanelSnapshotLocal(); + /*virtual*/ BOOL postBuild(); + /*virtual*/ void onOpen(const LLSD& key); + +private: + /*virtual*/ std::string getWidthSpinnerName() const { return "local_snapshot_width"; } + /*virtual*/ std::string getHeightSpinnerName() const { return "local_snapshot_height"; } + /*virtual*/ std::string getAspectRatioCBName() const { return "local_keep_aspect_check"; } + /*virtual*/ std::string getImageSizeComboName() const { return "local_size_combo"; } + /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const; + /*virtual*/ void updateControls(const LLSD& info); + + void updateCustomResControls(); ///< Show/hide custom resolution controls (spinners and checkbox) + + void onFormatComboCommit(LLUICtrl* ctrl); + void onResolutionComboCommit(LLUICtrl* ctrl); + void onCustomResolutionCommit(LLUICtrl* ctrl); + void onKeepAspectRatioCommit(LLUICtrl* ctrl); + void onQualitySliderCommit(LLUICtrl* ctrl); + void onSend(); + void onCancel(); +}; + +static LLRegisterPanelClassWrapper panel_class("llpanelsnapshotlocal"); + +LLPanelSnapshotLocal::LLPanelSnapshotLocal() +{ + mCommitCallbackRegistrar.add("Local.Save", boost::bind(&LLPanelSnapshotLocal::onSend, this)); + mCommitCallbackRegistrar.add("Local.Cancel", boost::bind(&LLPanelSnapshotLocal::onCancel, this)); +} + +// virtual +BOOL LLPanelSnapshotLocal::postBuild() +{ + getChild(getImageSizeComboName())->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onResolutionComboCommit, this, _1)); + getChild(getWidthSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onCustomResolutionCommit, this, _1)); + getChild(getHeightSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onCustomResolutionCommit, this, _1)); + getChild(getAspectRatioCBName())->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onKeepAspectRatioCommit, this, _1)); + getChild("image_quality_slider")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onQualitySliderCommit, this, _1)); + getChild("local_format_combo")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onFormatComboCommit, this, _1)); + + updateControls(LLSD()); + + return TRUE; +} + +// virtual +void LLPanelSnapshotLocal::onOpen(const LLSD& key) +{ + updateCustomResControls(); +} + +// virtual +LLFloaterSnapshot::ESnapshotFormat LLPanelSnapshotLocal::getImageFormat() const +{ + LLFloaterSnapshot::ESnapshotFormat fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG; + + LLComboBox* local_format_combo = getChild("local_format_combo"); + const std::string id = local_format_combo->getSelectedItemLabel(); + if (id == "PNG") + { + fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG; + } + else if (id == "JPEG") + { + fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG; + } + else if (id == "BMP") + { + fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_BMP; + } + + return fmt; +} + +// virtual +void LLPanelSnapshotLocal::updateControls(const LLSD& info) +{ + LLFloaterSnapshot::ESnapshotFormat fmt = + (LLFloaterSnapshot::ESnapshotFormat) gSavedSettings.getS32("SnapshotFormat"); + getChild("local_format_combo")->selectNthItem((S32) fmt); + + const bool show_quality_ctrls = (fmt == LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG); + getChild("image_quality_slider")->setVisible(show_quality_ctrls); + getChild("image_quality_level")->setVisible(show_quality_ctrls); + + getChild("image_quality_slider")->setValue(gSavedSettings.getS32("SnapshotQuality")); + updateImageQualityLevel(); + + const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true; + getChild("save_btn")->setEnabled(have_snapshot); +} + +void LLPanelSnapshotLocal::updateCustomResControls() +{ + LLComboBox* combo = getChild(getImageSizeComboName()); + S32 selected_idx = combo->getFirstSelectedIndex(); + bool enable = selected_idx == 0 || selected_idx == (combo->getItemCount() - 1); // Current Window or Custom selected + + getChild(getWidthSpinnerName())->setEnabled(enable); + getChild(getWidthSpinnerName())->setAllowEdit(enable); + getChild(getHeightSpinnerName())->setEnabled(enable); + getChild(getHeightSpinnerName())->setAllowEdit(enable); + getChild(getAspectRatioCBName())->setEnabled(enable); +} + +void LLPanelSnapshotLocal::onFormatComboCommit(LLUICtrl* ctrl) +{ +#if 0 // redundant? + gSavedSettings.setS32("SnapshotFormat", ctrl->getValue().asInteger()); +#endif + + // will call updateControls() + LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true)); +} + +void LLPanelSnapshotLocal::onResolutionComboCommit(LLUICtrl* ctrl) +{ + updateCustomResControls(); + + LLSD info; + info["combo-res-change"]["control-name"] = ctrl->getName(); + LLFloaterSnapshot::getInstance()->notify(info); +} + +void LLPanelSnapshotLocal::onCustomResolutionCommit(LLUICtrl* ctrl) +{ + LLSD info; + info["w"] = getChild(getWidthSpinnerName())->getValue().asInteger(); + info["h"] = getChild(getHeightSpinnerName())->getValue().asInteger(); + LLFloaterSnapshot::getInstance()->notify(LLSD().with("custom-res-change", info)); +} + +void LLPanelSnapshotLocal::onKeepAspectRatioCommit(LLUICtrl* ctrl) +{ + LLFloaterSnapshot::getInstance()->notify(LLSD().with("keep-aspect-change", ctrl->getValue().asBoolean())); +} + +void LLPanelSnapshotLocal::onQualitySliderCommit(LLUICtrl* ctrl) +{ + updateImageQualityLevel(); + + LLSliderCtrl* slider = (LLSliderCtrl*)ctrl; + S32 quality_val = llfloor((F32)slider->getValue().asReal()); + LLSD info; + info["image-quality-change"] = quality_val; + LLFloaterSnapshot::getInstance()->notify(info); +} + +void LLPanelSnapshotLocal::onSend() +{ + LLFloaterSnapshot::saveLocal(); + onCancel(); +} + +void LLPanelSnapshotLocal::onCancel() +{ + LLSideTrayPanelContainer* parent = getParentContainer(); + if (parent) + { + parent->openPreviousPanel(); + } +} -- cgit v1.3 From ce05b9f7e5347c28780b399efa70992cb7bf5229 Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine Date: Thu, 3 Nov 2011 15:39:12 +0200 Subject: STORM-1580 WIP Implemented new "Working" and "Success/Failure" screens. --- indra/newview/CMakeLists.txt | 2 - indra/newview/llfloatersnapshot.cpp | 127 +++++++++++++++++++-- indra/newview/llfloatersnapshot.h | 4 +- indra/newview/llpanelpostprogress.cpp | 59 ---------- indra/newview/llpanelpostresult.cpp | 90 --------------- indra/newview/llpanelsnapshot.cpp | 28 +++++ indra/newview/llpanelsnapshot.h | 7 +- indra/newview/llpanelsnapshotinventory.cpp | 23 +--- indra/newview/llpanelsnapshotlocal.cpp | 24 ++-- indra/newview/llpanelsnapshotpostcard.cpp | 25 +--- indra/newview/llpanelsnapshotprofile.cpp | 23 +--- .../skins/default/xui/en/floater_snapshot.xml | 90 ++++++++++++--- .../skins/default/xui/en/panel_post_progress.xml | 55 --------- .../skins/default/xui/en/panel_post_result.xml | 78 ------------- .../default/xui/en/panel_snapshot_options.xml | 64 +++++++++++ 15 files changed, 314 insertions(+), 385 deletions(-) delete mode 100644 indra/newview/llpanelpostprogress.cpp delete mode 100644 indra/newview/llpanelpostresult.cpp delete mode 100644 indra/newview/skins/default/xui/en/panel_post_progress.xml delete mode 100644 indra/newview/skins/default/xui/en/panel_post_result.xml (limited to 'indra/newview/llpanelsnapshotlocal.cpp') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 63b05f5a1d..ff9cf3199e 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -392,8 +392,6 @@ set(viewer_SOURCE_FILES llpanelplaceprofile.cpp llpanelplaces.cpp llpanelplacestab.cpp - llpanelpostprogress.cpp - llpanelpostresult.cpp llpanelprimmediacontrols.cpp llpanelprofile.cpp llpanelprofileview.cpp diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 08ca1e8cea..3df715e24b 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -86,7 +86,7 @@ ///---------------------------------------------------------------------------- /// Local function declarations, constants, enums, and typedefs ///---------------------------------------------------------------------------- -LLRect LLFloaterSnapshot::sThumbnailPlaceholderRect; +LLUICtrl* LLFloaterSnapshot::sThumbnailPlaceholder = NULL; LLSnapshotFloaterView* gSnapshotFloaterView = NULL; const F32 AUTO_SNAPSHOT_TIME_DELAY = 1.f; @@ -1063,10 +1063,18 @@ void LLSnapshotLivePreview::regionNameCallback(LLImageJPEG* snapshot, LLSD& meta class LLFloaterSnapshot::Impl { public: + typedef enum e_status + { + STATUS_READY, + STATUS_WORKING, + STATUS_FINISHED + } EStatus; + Impl() : mAvatarPauseHandles(), mLastToolset(NULL), - mAspectRatioCheckOff(false) + mAspectRatioCheckOff(false), + mStatus(STATUS_READY) { } ~Impl() @@ -1114,6 +1122,8 @@ public: static void updateControls(LLFloaterSnapshot* floater); static void updateLayout(LLFloaterSnapshot* floater); static void updateResolutionTextEntry(LLFloaterSnapshot* floater); + static void setStatus(EStatus status, bool ok = true, const std::string& msg = LLStringUtil::null); + EStatus getStatus() const { return mStatus; } private: static LLSnapshotLivePreview::ESnapshotType getTypeIndex(const std::string& id); @@ -1122,6 +1132,9 @@ private: static void comboSetCustom(LLFloaterSnapshot *floater, const std::string& comboname); static void checkAutoSnapshot(LLSnapshotLivePreview* floater, BOOL update_thumbnail = FALSE); static void checkAspectRatio(LLFloaterSnapshot *view, S32 index) ; + static void setWorking(LLFloaterSnapshot* floater, bool working); + static void setFinished(LLFloaterSnapshot* floater, bool finished, bool ok = true, const std::string& msg = LLStringUtil::null); + public: std::vector mAvatarPauseHandles; @@ -1129,6 +1142,7 @@ public: LLToolset* mLastToolset; LLHandle mPreviewHandle; bool mAspectRatioCheckOff ; + EStatus mStatus; }; // static @@ -1575,6 +1589,29 @@ void LLFloaterSnapshot::Impl::updateResolutionTextEntry(LLFloaterSnapshot* float } } +// static +void LLFloaterSnapshot::Impl::setStatus(EStatus status, bool ok, const std::string& msg) +{ + LLFloaterSnapshot* floater = LLFloaterSnapshot::getInstance(); + switch (status) + { + case STATUS_READY: + setWorking(floater, false); + setFinished(floater, false); + break; + case STATUS_WORKING: + setWorking(floater, true); + setFinished(floater, false); + break; + case STATUS_FINISHED: + setWorking(floater, false); + setFinished(floater, true, ok, msg); + break; + } + + floater->impl.mStatus = status; +} + // static void LLFloaterSnapshot::Impl::checkAutoSnapshot(LLSnapshotLivePreview* previewp, BOOL update_thumbnail) { @@ -1770,6 +1807,44 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde return ; } +// static +void LLFloaterSnapshot::Impl::setWorking(LLFloaterSnapshot* floater, bool working) +{ + LLUICtrl* working_lbl = floater->getChild("working_lbl"); + working_lbl->setVisible(working); + floater->getChild("working_indicator")->setVisible(working); + + if (working) + { + const std::string panel_name = getActivePanel(floater, false)->getName(); + const std::string prefix = panel_name.substr(std::string("panel_snapshot_").size()); + std::string progress_text = floater->getString(prefix + "_" + "progress_str"); + working_lbl->setValue(progress_text); + } + + // All controls should be disable while posting. + floater->setCtrlsEnabled(!working); + LLPanelSnapshot* active_panel = getActivePanel(floater); + if (active_panel) + { + active_panel->setCtrlsEnabled(!working); + } +} + +// static +void LLFloaterSnapshot::Impl::setFinished(LLFloaterSnapshot* floater, bool finished, bool ok, const std::string& msg) +{ + floater->getChild("succeeded_panel")->setVisible(finished && ok); + floater->getChild("failed_panel")->setVisible(finished && !ok); + + if (finished) + { + LLUICtrl* finished_lbl = floater->getChild(ok ? "succeeded_lbl" : "failed_lbl"); + std::string result_text = floater->getString(msg + "_" + (ok ? "succeeded_str" : "failed_str")); + finished_lbl->setValue(result_text); + } +} + static std::string lastSnapshotWidthName(S32 shot_type) { switch (shot_type) @@ -2167,14 +2242,16 @@ void LLFloaterSnapshot::Impl::applyCustomResolution(LLFloaterSnapshot* view, S32 // static void LLFloaterSnapshot::Impl::onSnapshotUploadFinished(LLSideTrayPanelContainer* panel_container, bool status) { - panel_container->openPanel("panel_post_result", LLSD().with("post-result", status).with("post-type", "profile")); + panel_container->openPreviousPanel(); + setStatus(STATUS_FINISHED, status, "profile"); } // static void LLFloaterSnapshot::Impl::onSendingPostcardFinished(LLSideTrayPanelContainer* panel_container, bool status) { - panel_container->openPanel("panel_post_result", LLSD().with("post-result", status).with("post-type", "postcard")); + panel_container->openPreviousPanel(); + setStatus(STATUS_FINISHED, status, "postcard"); } ///---------------------------------------------------------------------------- @@ -2265,8 +2342,7 @@ BOOL LLFloaterSnapshot::postBuild() LLWebProfile::setImageUploadResultCallback(boost::bind(&LLFloaterSnapshot::Impl::onSnapshotUploadFinished, panel_container, _1)); LLPostCard::setPostResultCallback(boost::bind(&LLFloaterSnapshot::Impl::onSendingPostcardFinished, panel_container, _1)); - // remember preview rect - sThumbnailPlaceholderRect = getChild("thumbnail_placeholder")->getRect(); + sThumbnailPlaceholder = getChild("thumbnail_placeholder"); // create preview window LLRect full_screen_rect = getRootView()->getRect(); @@ -2307,18 +2383,32 @@ void LLFloaterSnapshot::draw() { if(previewp->getThumbnailImage()) { - LLRect& thumbnail_rect = sThumbnailPlaceholderRect; + bool working = impl.getStatus() == Impl::STATUS_WORKING; + const LLRect& thumbnail_rect = getThumbnailPlaceholderRect(); S32 offset_x = thumbnail_rect.mLeft + (thumbnail_rect.getWidth() - previewp->getThumbnailWidth()) / 2 ; S32 offset_y = thumbnail_rect.mBottom + (thumbnail_rect.getHeight() - previewp->getThumbnailHeight()) / 2 ; glMatrixMode(GL_MODELVIEW); // Apply floater transparency to the texture unless the floater is focused. F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency(); + LLColor4 color = working ? LLColor4::grey4 : LLColor4::white; gl_draw_scaled_image(offset_x, offset_y, previewp->getThumbnailWidth(), previewp->getThumbnailHeight(), - previewp->getThumbnailImage(), LLColor4::white % alpha); + previewp->getThumbnailImage(), color % alpha); previewp->drawPreviewRect(offset_x, offset_y) ; + + if (working) + { + gGL.pushUIMatrix(); + { + const LLRect& r = getThumbnailPlaceholderRect(); + //gGL.translateUI((F32) r.mLeft, (F32) r.mBottom, 0.f); + LLUI::translate((F32) r.mLeft, (F32) r.mBottom); + sThumbnailPlaceholder->draw(); + } + gGL.popUIMatrix(); + } } } } @@ -2377,6 +2467,24 @@ S32 LLFloaterSnapshot::notify(const LLSD& info) return 1; } + if (info.has("set-ready")) + { + impl.setStatus(Impl::STATUS_READY); + return 1; + } + + if (info.has("set-working")) + { + impl.setStatus(Impl::STATUS_WORKING); + return 1; + } + + if (info.has("set-finished")) + { + LLSD data = info["set-finished"]; + impl.setStatus(Impl::STATUS_FINISHED, data["ok"].asBoolean(), data["msg"].asString()); + return 1; + } return 0; } @@ -2425,7 +2533,6 @@ void LLFloaterSnapshot::saveTexture() } previewp->saveTexture(); - instance->postSave(); } // static @@ -2447,7 +2554,6 @@ void LLFloaterSnapshot::saveLocal() } previewp->saveLocal(); - instance->postSave(); } // static @@ -2483,6 +2589,7 @@ void LLFloaterSnapshot::postSave() } instance->impl.updateControls(instance); + instance->impl.setStatus(Impl::STATUS_WORKING); } // static diff --git a/indra/newview/llfloatersnapshot.h b/indra/newview/llfloatersnapshot.h index de69824ad0..2c79c749d6 100644 --- a/indra/newview/llfloatersnapshot.h +++ b/indra/newview/llfloatersnapshot.h @@ -67,10 +67,10 @@ public: static const LLVector3d& getPosTakenGlobal(); static void setAgentEmail(const std::string& email); - static const LLRect& getThumbnailPlaceholderRect() { return sThumbnailPlaceholderRect; } + static const LLRect& getThumbnailPlaceholderRect() { return sThumbnailPlaceholder->getRect(); } private: - static LLRect sThumbnailPlaceholderRect; + static LLUICtrl* sThumbnailPlaceholder; class Impl; Impl& impl; diff --git a/indra/newview/llpanelpostprogress.cpp b/indra/newview/llpanelpostprogress.cpp deleted file mode 100644 index 9b7de2cb23..0000000000 --- a/indra/newview/llpanelpostprogress.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @file llpanelpostprogress.cpp - * @brief Displays progress of publishing a snapshot. - * - * $LicenseInfo:firstyear=2011&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2011, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the termsllpanelpostprogress 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" - -#include "llfloaterreg.h" -#include "llpanel.h" -#include "llsidetraypanelcontainer.h" - -/** - * Displays progress of publishing a snapshot. - */ -class LLPanelPostProgress -: public LLPanel -{ - LOG_CLASS(LLPanelPostProgress); - -public: - /*virtual*/ void onOpen(const LLSD& key); -}; - -static LLRegisterPanelClassWrapper panel_class("llpanelpostprogress"); - -// virtual -void LLPanelPostProgress::onOpen(const LLSD& key) -{ - if (key.has("post-type")) - { - std::string progress_text = getString(key["post-type"].asString() + "_" + "progress_str"); - getChild("progress_lbl")->setText(progress_text); - } - else - { - llwarns << "Invalid key" << llendl; - } -} diff --git a/indra/newview/llpanelpostresult.cpp b/indra/newview/llpanelpostresult.cpp deleted file mode 100644 index 2b937d83b9..0000000000 --- a/indra/newview/llpanelpostresult.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/** - * @file llpanelpostresult.cpp - * @brief Result of publishing a snapshot (success/failure). - * - * $LicenseInfo:firstyear=2011&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2011, 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" - -#include "llfloaterreg.h" -#include "llpanel.h" -#include "llsidetraypanelcontainer.h" - -/** - * Displays snapshot publishing result. - */ -class LLPanelPostResult -: public LLPanel -{ - LOG_CLASS(LLPanelPostResult); - -public: - LLPanelPostResult(); - - /*virtual*/ void onOpen(const LLSD& key); -private: - void onBack(); - void onClose(); -}; - -static LLRegisterPanelClassWrapper panel_class("llpanelpostresult"); - -LLPanelPostResult::LLPanelPostResult() -{ - mCommitCallbackRegistrar.add("Snapshot.Result.Back", boost::bind(&LLPanelPostResult::onBack, this)); - mCommitCallbackRegistrar.add("Snapshot.Result.Close", boost::bind(&LLPanelPostResult::onClose, this)); -} - - -// virtual -void LLPanelPostResult::onOpen(const LLSD& key) -{ - if (key.isMap() && key.has("post-result") && key.has("post-type")) - { - bool ok = key["post-result"].asBoolean(); - std::string type = key["post-type"].asString(); - std::string result_text = getString(type + "_" + (ok ? "succeeded_str" : "failed_str")); - getChild("result_lbl")->setText(result_text); - } - else - { - llwarns << "Invalid key" << llendl; - } -} - -void LLPanelPostResult::onBack() -{ - LLSideTrayPanelContainer* parent = dynamic_cast(getParent()); - if (!parent) - { - llwarns << "Cannot find panel container" << llendl; - return; - } - - parent->openPreviousPanel(); -} - -void LLPanelPostResult::onClose() -{ - LLFloaterReg::hideInstance("snapshot"); -} diff --git a/indra/newview/llpanelsnapshot.cpp b/indra/newview/llpanelsnapshot.cpp index e89e62c750..893f1ca43c 100644 --- a/indra/newview/llpanelsnapshot.cpp +++ b/indra/newview/llpanelsnapshot.cpp @@ -35,6 +35,19 @@ // newview #include "llsidetraypanelcontainer.h" +// virtual +BOOL LLPanelSnapshot::postBuild() +{ + updateControls(LLSD()); + return TRUE; +} + +// virtual +void LLPanelSnapshot::onOpen(const LLSD& key) +{ + setCtrlsEnabled(true); +} + LLFloaterSnapshot::ESnapshotFormat LLPanelSnapshot::getImageFormat() const { return LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG; @@ -107,3 +120,18 @@ void LLPanelSnapshot::updateImageQualityLevel() getChild("image_quality_level")->setTextArg("[QLVL]", quality_lvl); } + +void LLPanelSnapshot::goBack() +{ + LLSideTrayPanelContainer* parent = getParentContainer(); + if (parent) + { + parent->openPreviousPanel(); + } +} + +void LLPanelSnapshot::cancel() +{ + goBack(); + LLFloaterSnapshot::getInstance()->notify(LLSD().with("set-ready", true)); +} diff --git a/indra/newview/llpanelsnapshot.h b/indra/newview/llpanelsnapshot.h index a227317d2f..eaa0bc42c6 100644 --- a/indra/newview/llpanelsnapshot.h +++ b/indra/newview/llpanelsnapshot.h @@ -37,6 +37,9 @@ class LLSideTrayPanelContainer; class LLPanelSnapshot: public LLPanel { public: + /*virtual*/ BOOL postBuild(); + /*virtual*/ void onOpen(const LLSD& key); + virtual std::string getWidthSpinnerName() const = 0; virtual std::string getHeightSpinnerName() const = 0; virtual std::string getAspectRatioCBName() const = 0; @@ -48,11 +51,13 @@ public: virtual LLSpinCtrl* getHeightSpinner(); virtual void enableAspectRatioCheckbox(BOOL enable); virtual LLFloaterSnapshot::ESnapshotFormat getImageFormat() const; - virtual void updateControls(const LLSD& info) {} ///< Update controls from saved settings + virtual void updateControls(const LLSD& info) = 0; ///< Update controls from saved settings protected: LLSideTrayPanelContainer* getParentContainer(); void updateImageQualityLevel(); + void goBack(); ///< Switch to the default (Snapshot Options) panel + void cancel(); }; #endif // LL_LLPANELSNAPSHOT_H diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp index 6419c37494..c781138f88 100644 --- a/indra/newview/llpanelsnapshotinventory.cpp +++ b/indra/newview/llpanelsnapshotinventory.cpp @@ -60,7 +60,6 @@ private: void onCustomResolutionCommit(LLUICtrl* ctrl); void onKeepAspectRatioCommit(LLUICtrl* ctrl); void onSend(); - void onCancel(); }; static LLRegisterPanelClassWrapper panel_class("llpanelsnapshotinventory"); @@ -68,7 +67,7 @@ static LLRegisterPanelClassWrapper panel_class("llpane LLPanelSnapshotInventory::LLPanelSnapshotInventory() { mCommitCallbackRegistrar.add("Inventory.Save", boost::bind(&LLPanelSnapshotInventory::onSend, this)); - mCommitCallbackRegistrar.add("Inventory.Cancel", boost::bind(&LLPanelSnapshotInventory::onCancel, this)); + mCommitCallbackRegistrar.add("Inventory.Cancel", boost::bind(&LLPanelSnapshotInventory::cancel, this)); } // virtual @@ -78,7 +77,7 @@ BOOL LLPanelSnapshotInventory::postBuild() getChild(getWidthSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotInventory::onCustomResolutionCommit, this, _1)); getChild(getHeightSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotInventory::onCustomResolutionCommit, this, _1)); getChild(getAspectRatioCBName())->setCommitCallback(boost::bind(&LLPanelSnapshotInventory::onKeepAspectRatioCommit, this, _1)); - return TRUE; + return LLPanelSnapshot::postBuild(); } // virtual @@ -88,6 +87,7 @@ void LLPanelSnapshotInventory::onOpen(const LLSD& key) getChild(getImageSizeComboName())->selectNthItem(0); // FIXME? has no effect #endif updateCustomResControls(); + LLPanelSnapshot::onOpen(key); } void LLPanelSnapshotInventory::updateCustomResControls() @@ -132,21 +132,6 @@ void LLPanelSnapshotInventory::onKeepAspectRatioCommit(LLUICtrl* ctrl) void LLPanelSnapshotInventory::onSend() { - // Switch to upload progress display. - LLSideTrayPanelContainer* parent = getParentContainer(); - if (parent) - { - parent->openPanel("panel_post_progress", LLSD().with("post-type", "inventory")); - } - LLFloaterSnapshot::saveTexture(); -} - -void LLPanelSnapshotInventory::onCancel() -{ - LLSideTrayPanelContainer* parent = getParentContainer(); - if (parent) - { - parent->openPreviousPanel(); - } + LLFloaterSnapshot::postSave(); } diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp index 5dc32d228f..b67c4ec673 100644 --- a/indra/newview/llpanelsnapshotlocal.cpp +++ b/indra/newview/llpanelsnapshotlocal.cpp @@ -64,7 +64,6 @@ private: void onKeepAspectRatioCommit(LLUICtrl* ctrl); void onQualitySliderCommit(LLUICtrl* ctrl); void onSend(); - void onCancel(); }; static LLRegisterPanelClassWrapper panel_class("llpanelsnapshotlocal"); @@ -72,7 +71,7 @@ static LLRegisterPanelClassWrapper panel_class("llpanelsna LLPanelSnapshotLocal::LLPanelSnapshotLocal() { mCommitCallbackRegistrar.add("Local.Save", boost::bind(&LLPanelSnapshotLocal::onSend, this)); - mCommitCallbackRegistrar.add("Local.Cancel", boost::bind(&LLPanelSnapshotLocal::onCancel, this)); + mCommitCallbackRegistrar.add("Local.Cancel", boost::bind(&LLPanelSnapshotLocal::cancel, this)); } // virtual @@ -85,15 +84,14 @@ BOOL LLPanelSnapshotLocal::postBuild() getChild("image_quality_slider")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onQualitySliderCommit, this, _1)); getChild("local_format_combo")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onFormatComboCommit, this, _1)); - updateControls(LLSD()); - - return TRUE; + return LLPanelSnapshot::postBuild(); } // virtual void LLPanelSnapshotLocal::onOpen(const LLSD& key) { updateCustomResControls(); + LLPanelSnapshot::onOpen(key); } // virtual @@ -195,15 +193,11 @@ void LLPanelSnapshotLocal::onQualitySliderCommit(LLUICtrl* ctrl) void LLPanelSnapshotLocal::onSend() { - LLFloaterSnapshot::saveLocal(); - onCancel(); -} + LLFloaterSnapshot* floater = LLFloaterSnapshot::getInstance(); -void LLPanelSnapshotLocal::onCancel() -{ - LLSideTrayPanelContainer* parent = getParentContainer(); - if (parent) - { - parent->openPreviousPanel(); - } + floater->notify(LLSD().with("set-working", true)); + LLFloaterSnapshot::saveLocal(); + LLFloaterSnapshot::postSave(); + goBack(); + floater->notify(LLSD().with("set-finished", LLSD().with("ok", true).with("msg", "local"))); } diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp index c2b83d5c19..9f3f6d7cb6 100644 --- a/indra/newview/llpanelsnapshotpostcard.cpp +++ b/indra/newview/llpanelsnapshotpostcard.cpp @@ -76,7 +76,6 @@ private: void onQualitySliderCommit(LLUICtrl* ctrl); void onTabButtonPress(S32 btn_idx); void onSend(); - void onCancel(); bool mHasFirstMsgFocus; }; @@ -87,7 +86,7 @@ LLPanelSnapshotPostcard::LLPanelSnapshotPostcard() : mHasFirstMsgFocus(false) { mCommitCallbackRegistrar.add("Postcard.Send", boost::bind(&LLPanelSnapshotPostcard::onSend, this)); - mCommitCallbackRegistrar.add("Postcard.Cancel", boost::bind(&LLPanelSnapshotPostcard::onCancel, this)); + mCommitCallbackRegistrar.add("Postcard.Cancel", boost::bind(&LLPanelSnapshotPostcard::cancel, this)); mCommitCallbackRegistrar.add("Postcard.Message", boost::bind(&LLPanelSnapshotPostcard::onTabButtonPress, this, 0)); mCommitCallbackRegistrar.add("Postcard.Settings", boost::bind(&LLPanelSnapshotPostcard::onTabButtonPress, this, 1)); @@ -118,9 +117,7 @@ BOOL LLPanelSnapshotPostcard::postBuild() getChild("message_btn")->setToggleState(TRUE); - updateControls(LLSD()); - - return TRUE; + return LLPanelSnapshot::postBuild(); } // virtual @@ -128,6 +125,7 @@ void LLPanelSnapshotPostcard::onOpen(const LLSD& key) { gSavedSettings.setS32("SnapshotFormat", getImageFormat()); updateCustomResControls(); + LLPanelSnapshot::onOpen(key); } // virtual @@ -212,17 +210,11 @@ void LLPanelSnapshotPostcard::sendPostcard() postcard["subject"] = subject; postcard["msg"] = getChild("msg_form")->getValue().asString(); LLPostCard::send(LLFloaterSnapshot::getImageData(), postcard); - LLFloaterSnapshot::postSave(); // Give user feedback of the event. gViewerWindow->playSnapshotAnimAndSound(); - // Switch to upload progress display. - LLSideTrayPanelContainer* parent = getParentContainer(); - if (parent) - { - parent->openPanel("panel_post_progress", LLSD().with("post-type", "postcard")); - } + LLFloaterSnapshot::postSave(); } void LLPanelSnapshotPostcard::onMsgFormFocusRecieved() @@ -325,12 +317,3 @@ void LLPanelSnapshotPostcard::onSend() // Send postcard. sendPostcard(); } - -void LLPanelSnapshotPostcard::onCancel() -{ - LLSideTrayPanelContainer* parent = getParentContainer(); - if (parent) - { - parent->openPreviousPanel(); - } -} diff --git a/indra/newview/llpanelsnapshotprofile.cpp b/indra/newview/llpanelsnapshotprofile.cpp index 80a379a5a0..33237fd84f 100644 --- a/indra/newview/llpanelsnapshotprofile.cpp +++ b/indra/newview/llpanelsnapshotprofile.cpp @@ -62,7 +62,6 @@ private: void updateCustomResControls(); ///< Enable/disable custom resolution controls (spinners and checkbox) void onSend(); - void onCancel(); void onResolutionComboCommit(LLUICtrl* ctrl); void onCustomResolutionCommit(LLUICtrl* ctrl); void onKeepAspectRatioCommit(LLUICtrl* ctrl); @@ -73,7 +72,7 @@ static LLRegisterPanelClassWrapper panel_class("llpanels LLPanelSnapshotProfile::LLPanelSnapshotProfile() { mCommitCallbackRegistrar.add("PostToProfile.Send", boost::bind(&LLPanelSnapshotProfile::onSend, this)); - mCommitCallbackRegistrar.add("PostToProfile.Cancel", boost::bind(&LLPanelSnapshotProfile::onCancel, this)); + mCommitCallbackRegistrar.add("PostToProfile.Cancel", boost::bind(&LLPanelSnapshotProfile::cancel, this)); } // virtual @@ -83,13 +82,15 @@ BOOL LLPanelSnapshotProfile::postBuild() getChild(getWidthSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotProfile::onCustomResolutionCommit, this, _1)); getChild(getHeightSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotProfile::onCustomResolutionCommit, this, _1)); getChild(getAspectRatioCBName())->setCommitCallback(boost::bind(&LLPanelSnapshotProfile::onKeepAspectRatioCommit, this, _1)); - return TRUE; + + return LLPanelSnapshot::postBuild(); } // virtual void LLPanelSnapshotProfile::onOpen(const LLSD& key) { updateCustomResControls(); + LLPanelSnapshot::onOpen(key); } // virtual @@ -119,22 +120,6 @@ void LLPanelSnapshotProfile::onSend() LLWebProfile::uploadImage(LLFloaterSnapshot::getImageData(), caption, add_location); LLFloaterSnapshot::postSave(); - - // Switch to upload progress display. - LLSideTrayPanelContainer* parent = getParentContainer(); - if (parent) - { - parent->openPanel("panel_post_progress", LLSD().with("post-type", "profile")); - } -} - -void LLPanelSnapshotProfile::onCancel() -{ - LLSideTrayPanelContainer* parent = getParentContainer(); - if (parent) - { - parent->openPreviousPanel(); - } } void LLPanelSnapshotProfile::onResolutionComboCommit(LLUICtrl* ctrl) diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index bc48561196..22d6ba5bdb 100644 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -17,6 +17,54 @@ name="unknown"> unknown + + Sending Email + + + Posting + + + Saving to Inventory + + + Saving to Computer + + + Your Profile Feed has been updated! + + + Email Sent! + + + Saved to Inventory! + + + Saved to Computer! + + + Failed to update your Profile Feed. + + + Failed to send email. + + + Failed to save to inventory. + + + Failed to save to computer. + + left="10"> + + + Working + + - - - - - Sending Email - - - Posting - - - Saving to Inventory - - - Saving to Computer - - - - - Working - - diff --git a/indra/newview/skins/default/xui/en/panel_post_result.xml b/indra/newview/skins/default/xui/en/panel_post_result.xml deleted file mode 100644 index 4a64b8469b..0000000000 --- a/indra/newview/skins/default/xui/en/panel_post_result.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - Your Profile Feed has been updated! - - - Email Sent! - - - Saved to Inventory! - - - Saved to Computer! - - - Failed to update your Profile Feed. - - - Failed to send email. - - - Failed to save to inventory. - - - Failed to save to computer. - - - Result - - - - 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 e6324f8923..6fb17ed6a6 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml @@ -77,4 +77,68 @@ + + + Succeeded + + + + + Failed + + -- cgit v1.3 From 3b3b6c38a4afe3a061c54cc9fa9f8d7c65dcb990 Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine Date: Mon, 7 Nov 2011 15:12:22 +0200 Subject: STORM-1580 WIP Switched profile feed snapshot format to PNG for better clarity. --- indra/newview/llfloatersnapshot.cpp | 89 ++-------------------- indra/newview/llpanelsnapshot.cpp | 13 ++++ indra/newview/llpanelsnapshotlocal.cpp | 6 +- indra/newview/llpanelsnapshotpostcard.cpp | 2 +- indra/newview/llpanelsnapshotprofile.cpp | 1 + indra/newview/llwebprofile.cpp | 16 +++- .../skins/default/xui/en/panel_snapshot_local.xml | 9 ++- 7 files changed, 39 insertions(+), 97 deletions(-) (limited to 'indra/newview/llpanelsnapshotlocal.cpp') diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 49da41dc0c..d25275f66b 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -849,18 +849,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) // delete any existing image previewp->mFormattedImage = NULL; // now create the new one of the appropriate format. - // note: postcards and web hardcoded to use jpeg always. - LLFloaterSnapshot::ESnapshotFormat format; - - if (previewp->getSnapshotType() == SNAPSHOT_POSTCARD || - previewp->getSnapshotType() == SNAPSHOT_WEB) - { - format = LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG; - } - else - { - format = previewp->getSnapshotFormat(); - } + LLFloaterSnapshot::ESnapshotFormat format = previewp->getSnapshotFormat(); lldebugs << "Encoding new image of format " << format << llendl; switch(format) @@ -1062,6 +1051,7 @@ void LLSnapshotLivePreview::regionNameCallback(LLImageJPEG* snapshot, LLSD& meta class LLFloaterSnapshot::Impl { + LOG_CLASS(LLFloaterSnapshot::Impl); public: typedef enum e_status { @@ -1125,8 +1115,6 @@ public: EStatus getStatus() const { return mStatus; } private: - static LLSnapshotLivePreview::ESnapshotType getTypeIndex(const std::string& id); - static LLSD getTypeName(LLSnapshotLivePreview::ESnapshotType index); static LLViewerWindow::ESnapshotType getLayerType(LLFloaterSnapshot* floater); static void comboSetCustom(LLFloaterSnapshot *floater, const std::string& comboname); static void checkAutoSnapshot(LLSnapshotLivePreview* floater, BOOL update_thumbnail = FALSE); @@ -1188,7 +1176,8 @@ LLSnapshotLivePreview::ESnapshotType LLFloaterSnapshot::Impl::getActiveSnapshotT LLFloaterSnapshot::ESnapshotFormat LLFloaterSnapshot::Impl::getImageFormat(LLFloaterSnapshot* floater) { LLPanelSnapshot* active_panel = getActivePanel(floater); - return active_panel ? active_panel->getImageFormat() : LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG; + // FIXME: if the default is not PNG, profile uploads may fail. + return active_panel ? active_panel->getImageFormat() : LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG; } // static @@ -1222,54 +1211,6 @@ LLSnapshotLivePreview* LLFloaterSnapshot::Impl::getPreviewView(LLFloaterSnapshot return previewp; } -// static -LLSnapshotLivePreview::ESnapshotType LLFloaterSnapshot::Impl::getTypeIndex(const std::string& id) -{ - LLSnapshotLivePreview::ESnapshotType index = LLSnapshotLivePreview::SNAPSHOT_POSTCARD; - - if (id == "postcard") - { - index = LLSnapshotLivePreview::SNAPSHOT_POSTCARD; - } - else if (id == "texture") - { - index = LLSnapshotLivePreview::SNAPSHOT_TEXTURE; - } - else if (id == "local") - { - index = LLSnapshotLivePreview::SNAPSHOT_LOCAL; - } - else if (id == "share_to_web") - { - index = LLSnapshotLivePreview::SNAPSHOT_WEB; - } - - return index; -} - -// static -LLSD LLFloaterSnapshot::Impl::getTypeName(LLSnapshotLivePreview::ESnapshotType index) -{ - std::string id; - switch (index) - { - case LLSnapshotLivePreview::SNAPSHOT_WEB: - id = "share_to_web"; - break; - case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: - id = "postcard"; - break; - case LLSnapshotLivePreview::SNAPSHOT_TEXTURE: - id = "texture"; - break; - case LLSnapshotLivePreview::SNAPSHOT_LOCAL: - default: - id = "local"; - break; - } - return LLSD(id); -} - // static LLViewerWindow::ESnapshotType LLFloaterSnapshot::Impl::getLayerType(LLFloaterSnapshot* floater) { @@ -1417,9 +1358,7 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) floater->getChild("postcard_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotPostcardLastResolution")); floater->getChild("texture_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotTextureLastResolution")); floater->getChild("local_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotLocalLastResolution")); -#if 0 floater->getChild("local_format_combo")->selectNthItem(gSavedSettings.getS32("SnapshotFormat")); -#endif // *TODO: Separate settings for Web images from postcards enableAspectRatioCheckbox(floater, shot_type != LLSnapshotLivePreview::SNAPSHOT_TEXTURE && !floater->impl.mAspectRatioCheckOff); @@ -1489,11 +1428,7 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) image_res_tb->setVisible(got_snap); if (got_snap) { -#if 1 LLPointer img = previewp->getEncodedImage(); -#else - LLPointer fimg = previewp->getFormattedImage(); -#endif image_res_tb->setTextArg("[WIDTH]", llformat("%d", img->getWidth())); image_res_tb->setTextArg("[HEIGHT]", llformat("%d", img->getHeight())); } @@ -1532,6 +1467,7 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) if (previewp) { + lldebugs << "Setting snapshot type (" << shot_type << "), format (" << shot_format << ")" << llendl; previewp->setSnapshotType(shot_type); previewp->setSnapshotFormat(shot_format); previewp->setSnapshotBufferType(layer_type); @@ -2005,20 +1941,6 @@ void LLFloaterSnapshot::Impl::onCommitSnapshotType(LLUICtrl* ctrl, void* data) } #endif -#if 0 -//static. -void LLFloaterSnapshot::Impl::onCommitSnapshotFormat(LLUICtrl* ctrl, void* data) -{ - LLFloaterSnapshot *view = (LLFloaterSnapshot *)data; - if (view) - { - gSavedSettings.setS32("SnapshotFormat", getFormatIndex(view)); - getPreviewView(view)->updateSnapshot(TRUE); - updateControls(view); - } -} -#endif - // Sets the named size combo to "custom" mode. // static void LLFloaterSnapshot::Impl::comboSetCustom(LLFloaterSnapshot* floater, const std::string& comboname) @@ -2262,7 +2184,6 @@ BOOL LLFloaterSnapshot::postBuild() #if 0 childSetCommitCallback("snapshot_type_radio", Impl::onCommitSnapshotType, this); - childSetCommitCallback("local_format_combo", Impl::onCommitSnapshotFormat, this); #endif childSetAction("new_snapshot_btn", Impl::onClickNewSnapshot, this); diff --git a/indra/newview/llpanelsnapshot.cpp b/indra/newview/llpanelsnapshot.cpp index 35627ababe..d00089b181 100644 --- a/indra/newview/llpanelsnapshot.cpp +++ b/indra/newview/llpanelsnapshot.cpp @@ -34,6 +34,7 @@ // newview #include "llsidetraypanelcontainer.h" +#include "llviewercontrol.h" // gSavedSettings // virtual BOOL LLPanelSnapshot::postBuild() @@ -45,7 +46,19 @@ BOOL LLPanelSnapshot::postBuild() // virtual void LLPanelSnapshot::onOpen(const LLSD& key) { + S32 old_format = gSavedSettings.getS32("SnapshotFormat"); + S32 new_format = (S32) getImageFormat(); + + gSavedSettings.setS32("SnapshotFormat", new_format); setCtrlsEnabled(true); + + // Switching panels will likely change image format. + // Not updating preview right away may lead to errors, + // e.g. attempt to send a large BMP image by email. + if (old_format != new_format) + { + LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true)); + } } LLFloaterSnapshot::ESnapshotFormat LLPanelSnapshot::getImageFormat() const diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp index b67c4ec673..e32c34157a 100644 --- a/indra/newview/llpanelsnapshotlocal.cpp +++ b/indra/newview/llpanelsnapshotlocal.cpp @@ -100,7 +100,7 @@ LLFloaterSnapshot::ESnapshotFormat LLPanelSnapshotLocal::getImageFormat() const LLFloaterSnapshot::ESnapshotFormat fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG; LLComboBox* local_format_combo = getChild("local_format_combo"); - const std::string id = local_format_combo->getSelectedItemLabel(); + const std::string id = local_format_combo->getValue().asString(); if (id == "PNG") { fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG; @@ -150,10 +150,6 @@ void LLPanelSnapshotLocal::updateCustomResControls() void LLPanelSnapshotLocal::onFormatComboCommit(LLUICtrl* ctrl) { -#if 0 // redundant? - gSavedSettings.setS32("SnapshotFormat", ctrl->getValue().asInteger()); -#endif - // will call updateControls() LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true)); } diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp index 9f3f6d7cb6..eead96d67a 100644 --- a/indra/newview/llpanelsnapshotpostcard.cpp +++ b/indra/newview/llpanelsnapshotpostcard.cpp @@ -62,6 +62,7 @@ private: /*virtual*/ std::string getHeightSpinnerName() const { return "postcard_snapshot_height"; } /*virtual*/ std::string getAspectRatioCBName() const { return "postcard_keep_aspect_check"; } /*virtual*/ std::string getImageSizeComboName() const { return "postcard_size_combo"; } + /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const { return LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG; } /*virtual*/ void updateControls(const LLSD& info); void updateCustomResControls(); ///< Enable/disable custom resolution controls (spinners and checkbox) @@ -123,7 +124,6 @@ BOOL LLPanelSnapshotPostcard::postBuild() // virtual void LLPanelSnapshotPostcard::onOpen(const LLSD& key) { - gSavedSettings.setS32("SnapshotFormat", getImageFormat()); updateCustomResControls(); LLPanelSnapshot::onOpen(key); } diff --git a/indra/newview/llpanelsnapshotprofile.cpp b/indra/newview/llpanelsnapshotprofile.cpp index 33237fd84f..e633049af8 100644 --- a/indra/newview/llpanelsnapshotprofile.cpp +++ b/indra/newview/llpanelsnapshotprofile.cpp @@ -57,6 +57,7 @@ private: /*virtual*/ std::string getHeightSpinnerName() const { return "profile_snapshot_height"; } /*virtual*/ std::string getAspectRatioCBName() const { return "profile_keep_aspect_check"; } /*virtual*/ std::string getImageSizeComboName() const { return "profile_size_combo"; } + /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const { return LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG; } /*virtual*/ void updateControls(const LLSD& info); void updateCustomResControls(); ///< Enable/disable custom resolution controls (spinners and checkbox) diff --git a/indra/newview/llwebprofile.cpp b/indra/newview/llwebprofile.cpp index bb8a9a491b..641f338f2c 100644 --- a/indra/newview/llwebprofile.cpp +++ b/indra/newview/llwebprofile.cpp @@ -31,6 +31,7 @@ // libs #include "llbufferstream.h" #include "llhttpclient.h" +#include "llimagepng.h" #include "llplugincookiestore.h" // newview @@ -219,7 +220,12 @@ void LLWebProfile::setAuthCookie(const std::string& cookie) // static void LLWebProfile::post(LLPointer image, const LLSD& config, const std::string& url) { - // *TODO: make sure it's a jpeg? + if (dynamic_cast(image.get()) == 0) + { + llwarns << "Image to upload is not a PNG" << llendl; + llassert(dynamic_cast(image.get()) != 0); + return; + } const std::string boundary = "----------------------------0123abcdefab"; @@ -259,8 +265,8 @@ void LLWebProfile::post(LLPointer image, const LLSD& config, c << config["success_action_redirect"].asString() << "\r\n"; body << "--" << boundary << "\r\n" - << "Content-Disposition: form-data; name=\"file\"; filename=\"snapshot.jpg\"\r\n" - << "Content-Type: image/jpeg\r\n\r\n"; + << "Content-Disposition: form-data; name=\"file\"; filename=\"snapshot.png\"\r\n" + << "Content-Type: image/png\r\n\r\n"; // Insert the image data. // *FIX: Treating this as a string will probably screw it up ... @@ -293,5 +299,7 @@ void LLWebProfile::reportImageUploadStatus(bool ok) // static std::string LLWebProfile::getAuthCookie() { - return sAuthCookie; + // This is needed to test image uploads on Linux viewer built with OpenSSL 1.0.0 (0.9.8 works fine). + const char* debug_cookie = getenv("LL_SNAPSHOT_COOKIE"); + return debug_cookie ? debug_cookie : sAuthCookie; } diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml index fd2c735df7..c7a2a88287 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml @@ -128,13 +128,16 @@ width="120"> + name="PNG" + value="PNG" /> + name="JPEG" + value="JPEG" /> + name="BMP" + value="BMP" /> Date: Mon, 7 Nov 2011 19:47:11 +0200 Subject: STORM-1690 FIXED Constrain Proportions option was broken. By the way: - Fixed a crash in the postcard floater (accessing destroyed buttons). - Minor code cleanups. --- indra/newview/llfloatersnapshot.cpp | 63 ++++++++++++------------------ indra/newview/llpanelsnapshot.cpp | 44 +++++++++++++++++++++ indra/newview/llpanelsnapshot.h | 6 +++ indra/newview/llpanelsnapshotinventory.cpp | 42 +++----------------- indra/newview/llpanelsnapshotlocal.cpp | 45 --------------------- indra/newview/llpanelsnapshotpostcard.cpp | 50 ++---------------------- indra/newview/llpanelsnapshotprofile.cpp | 48 ----------------------- 7 files changed, 84 insertions(+), 214 deletions(-) (limited to 'indra/newview/llpanelsnapshotlocal.cpp') diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 4091b2e7bb..48e6cca623 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -1105,12 +1105,12 @@ public: static LLSpinCtrl* getWidthSpinner(LLFloaterSnapshot* floater); static LLSpinCtrl* getHeightSpinner(LLFloaterSnapshot* floater); static void enableAspectRatioCheckbox(LLFloaterSnapshot* floater, BOOL enable); + static void setAspectRatioCheckboxValue(LLFloaterSnapshot* floater, BOOL checked); static LLSnapshotLivePreview* getPreviewView(LLFloaterSnapshot *floater); static void setResolution(LLFloaterSnapshot* floater, const std::string& comboname); static void updateControls(LLFloaterSnapshot* floater); static void updateLayout(LLFloaterSnapshot* floater); - static void updateResolutionTextEntry(LLFloaterSnapshot* floater); static void setStatus(EStatus status, bool ok = true, const std::string& msg = LLStringUtil::null); EStatus getStatus() const { return mStatus; } @@ -1204,6 +1204,16 @@ void LLFloaterSnapshot::Impl::enableAspectRatioCheckbox(LLFloaterSnapshot* float } } +// static +void LLFloaterSnapshot::Impl::setAspectRatioCheckboxValue(LLFloaterSnapshot* floater, BOOL checked) +{ + LLPanelSnapshot* active_panel = getActivePanel(floater); + if (active_panel) + { + active_panel->getChild(active_panel->getAspectRatioCBName())->setValue(checked); + } +} + // static LLSnapshotLivePreview* LLFloaterSnapshot::Impl::getPreviewView(LLFloaterSnapshot *floater) { @@ -1361,7 +1371,8 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) floater->getChild("local_format_combo")->selectNthItem(gSavedSettings.getS32("SnapshotFormat")); // *TODO: Separate settings for Web images from postcards - enableAspectRatioCheckbox(floater, shot_type != LLSnapshotLivePreview::SNAPSHOT_TEXTURE && !floater->impl.mAspectRatioCheckOff); + enableAspectRatioCheckbox(floater, !floater->impl.mAspectRatioCheckOff); + setAspectRatioCheckboxValue(floater, gSavedSettings.getBOOL("KeepAspectForSnapshot")); floater->getChildView("layer_types")->setEnabled(shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL); LLPanelSnapshot* active_panel = getActivePanel(floater); @@ -1463,8 +1474,6 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) break; } - updateResolutionTextEntry(floater); - if (previewp) { lldebugs << "Setting snapshot type (" << shot_type << "), format (" << shot_format << ")" << llendl; @@ -1482,24 +1491,6 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) } } -// static -void LLFloaterSnapshot::Impl::updateResolutionTextEntry(LLFloaterSnapshot* floater) -{ - LLSpinCtrl* width_spinner = getWidthSpinner(floater); - LLSpinCtrl* height_spinner = getHeightSpinner(floater); - - if(getActiveSnapshotType(floater) == LLSnapshotLivePreview::SNAPSHOT_TEXTURE) - { - width_spinner->setAllowEdit(FALSE); - height_spinner->setAllowEdit(FALSE); - } - else - { - width_spinner->setAllowEdit(TRUE); - height_spinner->setAllowEdit(TRUE); - } -} - // static void LLFloaterSnapshot::Impl::setStatus(EStatus status, bool ok, const std::string& msg) { @@ -1685,16 +1676,11 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde else if(-1 == index) //custom { view->impl.mAspectRatioCheckOff = false ; -#if 0 - //if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE != gSavedSettings.getS32("LastSnapshotType")) -#endif - { - enableAspectRatioCheckbox(view, TRUE); + enableAspectRatioCheckbox(view, TRUE); - if(previewp) - { - previewp->mKeepAspectRatio = gSavedSettings.getBOOL("KeepAspectForSnapshot") ; - } + if(previewp) + { + previewp->mKeepAspectRatio = gSavedSettings.getBOOL("KeepAspectForSnapshot") ; } } else @@ -1816,23 +1802,24 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL { // load last custom value #if 1 + S32 new_width = 0, new_height = 0; LLPanelSnapshot* spanel = getActivePanel(view); if (spanel) { lldebugs << "Loading typed res from panel " << spanel->getName() << llendl; - width = spanel->getTypedPreviewWidth(); - height = spanel->getTypedPreviewWidth(); + new_width = spanel->getTypedPreviewWidth(); + new_height = spanel->getTypedPreviewHeight(); } else { const S32 shot_type = getActiveSnapshotType(view); lldebugs << "Loading saved res for shot_type " << shot_type << llendl; - width = gSavedSettings.getS32(lastSnapshotWidthName(shot_type)); - height = gSavedSettings.getS32(lastSnapshotHeightName(shot_type)); + new_width = gSavedSettings.getS32(lastSnapshotWidthName(shot_type)); + new_height = gSavedSettings.getS32(lastSnapshotHeightName(shot_type)); } - llassert(width > 0 && height > 0); - previewp->setSize(width, height); + llassert(new_width > 0 && new_height > 0); + previewp->setSize(new_width, new_height); #else LLPanelSnapshot* spanel = getActivePanel(view); if (spanel) @@ -2204,7 +2191,7 @@ BOOL LLFloaterSnapshot::postBuild() #if 0 childSetCommitCallback("keep_aspect_check", Impl::onClickKeepAspectCheck, this); #endif - impl.enableAspectRatioCheckbox(this, gSavedSettings.getBOOL("KeepAspectForSnapshot")); + impl.setAspectRatioCheckboxValue(this, gSavedSettings.getBOOL("KeepAspectForSnapshot")); childSetCommitCallback("layer_types", Impl::onCommitLayerTypes, this); getChild("layer_types")->setValue("colors"); diff --git a/indra/newview/llpanelsnapshot.cpp b/indra/newview/llpanelsnapshot.cpp index d00089b181..fdae521ac5 100644 --- a/indra/newview/llpanelsnapshot.cpp +++ b/indra/newview/llpanelsnapshot.cpp @@ -28,6 +28,7 @@ #include "llpanelsnapshot.h" // libs +#include "llcombobox.h" #include "llsliderctrl.h" #include "llspinctrl.h" #include "lltrans.h" @@ -39,6 +40,11 @@ // virtual BOOL LLPanelSnapshot::postBuild() { + getChild(getImageSizeComboName())->setCommitCallback(boost::bind(&LLPanelSnapshot::onResolutionComboCommit, this, _1)); + getChild(getWidthSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshot::onCustomResolutionCommit, this)); + getChild(getHeightSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshot::onCustomResolutionCommit, this)); + getChild(getAspectRatioCBName())->setCommitCallback(boost::bind(&LLPanelSnapshot::onKeepAspectRatioCommit, this, _1)); + updateControls(LLSD()); return TRUE; } @@ -59,6 +65,8 @@ void LLPanelSnapshot::onOpen(const LLSD& key) { LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true)); } + + updateCustomResControls(); } LLFloaterSnapshot::ESnapshotFormat LLPanelSnapshot::getImageFormat() const @@ -103,6 +111,20 @@ LLSideTrayPanelContainer* LLPanelSnapshot::getParentContainer() return parent; } +// virtual +void LLPanelSnapshot::updateCustomResControls() +{ + LLComboBox* combo = getChild(getImageSizeComboName()); + S32 selected_idx = combo->getFirstSelectedIndex(); + const bool enable = selected_idx == (combo->getItemCount() - 1); // Current Window or Custom selected + + getChild(getWidthSpinnerName())->setEnabled(enable); + getChild(getWidthSpinnerName())->setAllowEdit(enable); + getChild(getHeightSpinnerName())->setEnabled(enable); + getChild(getHeightSpinnerName())->setAllowEdit(enable); + enableAspectRatioCheckbox(enable); +} + void LLPanelSnapshot::updateImageQualityLevel() { LLSliderCtrl* quality_slider = getChild("image_quality_slider"); @@ -149,3 +171,25 @@ void LLPanelSnapshot::cancel() goBack(); LLFloaterSnapshot::getInstance()->notify(LLSD().with("set-ready", true)); } + +void LLPanelSnapshot::onCustomResolutionCommit() +{ + LLSD info; + info["w"] = getChild(getWidthSpinnerName())->getValue().asInteger(); + info["h"] = getChild(getHeightSpinnerName())->getValue().asInteger(); + LLFloaterSnapshot::getInstance()->notify(LLSD().with("custom-res-change", info)); +} + +void LLPanelSnapshot::onResolutionComboCommit(LLUICtrl* ctrl) +{ + updateCustomResControls(); + + LLSD info; + info["combo-res-change"]["control-name"] = ctrl->getName(); + LLFloaterSnapshot::getInstance()->notify(info); +} + +void LLPanelSnapshot::onKeepAspectRatioCommit(LLUICtrl* ctrl) +{ + LLFloaterSnapshot::getInstance()->notify(LLSD().with("keep-aspect-change", ctrl->getValue().asBoolean())); +} diff --git a/indra/newview/llpanelsnapshot.h b/indra/newview/llpanelsnapshot.h index eaa0bc42c6..a49782a3e0 100644 --- a/indra/newview/llpanelsnapshot.h +++ b/indra/newview/llpanelsnapshot.h @@ -55,9 +55,15 @@ public: protected: LLSideTrayPanelContainer* getParentContainer(); + virtual void updateCustomResControls(); void updateImageQualityLevel(); void goBack(); ///< Switch to the default (Snapshot Options) panel void cancel(); + + // common UI callbacks + void onCustomResolutionCommit(); + void onResolutionComboCommit(LLUICtrl* ctrl); + void onKeepAspectRatioCommit(LLUICtrl* ctrl); }; #endif // LL_LLPANELSNAPSHOT_H diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp index d517d3811d..63ccbc1b02 100644 --- a/indra/newview/llpanelsnapshotinventory.cpp +++ b/indra/newview/llpanelsnapshotinventory.cpp @@ -49,17 +49,13 @@ public: /*virtual*/ void onOpen(const LLSD& key); private: - void updateCustomResControls(); ///< Show/hide custom resolution controls (spinners and checkbox) - + /*virtual*/ void updateCustomResControls(); ///< Show/hide custom resolution controls (spinners and checkbox) /*virtual*/ std::string getWidthSpinnerName() const { return "inventory_snapshot_width"; } /*virtual*/ std::string getHeightSpinnerName() const { return "inventory_snapshot_height"; } /*virtual*/ std::string getAspectRatioCBName() const { return "inventory_keep_aspect_check"; } /*virtual*/ std::string getImageSizeComboName() const { return "texture_size_combo"; } /*virtual*/ void updateControls(const LLSD& info); - void onResolutionComboCommit(LLUICtrl* ctrl); - void onCustomResolutionCommit(LLUICtrl* ctrl); - void onKeepAspectRatioCommit(LLUICtrl* ctrl); void onSend(); }; @@ -74,33 +70,29 @@ LLPanelSnapshotInventory::LLPanelSnapshotInventory() // virtual BOOL LLPanelSnapshotInventory::postBuild() { - getChild(getImageSizeComboName())->setCommitCallback(boost::bind(&LLPanelSnapshotInventory::onResolutionComboCommit, this, _1)); - getChild(getWidthSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotInventory::onCustomResolutionCommit, this, _1)); - getChild(getHeightSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotInventory::onCustomResolutionCommit, this, _1)); - getChild(getAspectRatioCBName())->setCommitCallback(boost::bind(&LLPanelSnapshotInventory::onKeepAspectRatioCommit, this, _1)); return LLPanelSnapshot::postBuild(); } // virtual void LLPanelSnapshotInventory::onOpen(const LLSD& key) { -#if 0 - getChild(getImageSizeComboName())->selectNthItem(0); // FIXME? has no effect -#endif getChild("hint_lbl")->setTextArg("[UPLOAD_COST]", llformat("%d", LLGlobalEconomy::Singleton::getInstance()->getPriceUpload())); - updateCustomResControls(); LLPanelSnapshot::onOpen(key); } +// virtual void LLPanelSnapshotInventory::updateCustomResControls() { LLComboBox* combo = getChild(getImageSizeComboName()); S32 selected_idx = combo->getFirstSelectedIndex(); - bool show = selected_idx == 0 || selected_idx == (combo->getItemCount() - 1); // Current Window or Custom selected + const bool show = selected_idx == (combo->getItemCount() - 1); // Custom selected getChild(getWidthSpinnerName())->setVisible(show); getChild(getHeightSpinnerName())->setVisible(show); getChild(getAspectRatioCBName())->setVisible(show); + + // enable controls if possible + LLPanelSnapshot::updateCustomResControls(); } // virtual @@ -110,28 +102,6 @@ void LLPanelSnapshotInventory::updateControls(const LLSD& info) getChild("save_btn")->setEnabled(have_snapshot); } -void LLPanelSnapshotInventory::onResolutionComboCommit(LLUICtrl* ctrl) -{ - updateCustomResControls(); - - LLSD info; - info["combo-res-change"]["control-name"] = ctrl->getName(); - LLFloaterSnapshot::getInstance()->notify(info); -} - -void LLPanelSnapshotInventory::onCustomResolutionCommit(LLUICtrl* ctrl) -{ - LLSD info; - info["w"] = getChild(getWidthSpinnerName())->getValue().asInteger();; - info["h"] = getChild(getHeightSpinnerName())->getValue().asInteger();; - LLFloaterSnapshot::getInstance()->notify(LLSD().with("custom-res-change", info)); -} - -void LLPanelSnapshotInventory::onKeepAspectRatioCommit(LLUICtrl* ctrl) -{ - LLFloaterSnapshot::getInstance()->notify(LLSD().with("keep-aspect-change", ctrl->getValue().asBoolean())); -} - void LLPanelSnapshotInventory::onSend() { LLFloaterSnapshot::saveTexture(); diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp index e32c34157a..eaa27b8d41 100644 --- a/indra/newview/llpanelsnapshotlocal.cpp +++ b/indra/newview/llpanelsnapshotlocal.cpp @@ -56,12 +56,7 @@ private: /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const; /*virtual*/ void updateControls(const LLSD& info); - void updateCustomResControls(); ///< Show/hide custom resolution controls (spinners and checkbox) - void onFormatComboCommit(LLUICtrl* ctrl); - void onResolutionComboCommit(LLUICtrl* ctrl); - void onCustomResolutionCommit(LLUICtrl* ctrl); - void onKeepAspectRatioCommit(LLUICtrl* ctrl); void onQualitySliderCommit(LLUICtrl* ctrl); void onSend(); }; @@ -77,10 +72,6 @@ LLPanelSnapshotLocal::LLPanelSnapshotLocal() // virtual BOOL LLPanelSnapshotLocal::postBuild() { - getChild(getImageSizeComboName())->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onResolutionComboCommit, this, _1)); - getChild(getWidthSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onCustomResolutionCommit, this, _1)); - getChild(getHeightSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onCustomResolutionCommit, this, _1)); - getChild(getAspectRatioCBName())->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onKeepAspectRatioCommit, this, _1)); getChild("image_quality_slider")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onQualitySliderCommit, this, _1)); getChild("local_format_combo")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onFormatComboCommit, this, _1)); @@ -90,7 +81,6 @@ BOOL LLPanelSnapshotLocal::postBuild() // virtual void LLPanelSnapshotLocal::onOpen(const LLSD& key) { - updateCustomResControls(); LLPanelSnapshot::onOpen(key); } @@ -135,47 +125,12 @@ void LLPanelSnapshotLocal::updateControls(const LLSD& info) getChild("save_btn")->setEnabled(have_snapshot); } -void LLPanelSnapshotLocal::updateCustomResControls() -{ - LLComboBox* combo = getChild(getImageSizeComboName()); - S32 selected_idx = combo->getFirstSelectedIndex(); - bool enable = selected_idx == 0 || selected_idx == (combo->getItemCount() - 1); // Current Window or Custom selected - - getChild(getWidthSpinnerName())->setEnabled(enable); - getChild(getWidthSpinnerName())->setAllowEdit(enable); - getChild(getHeightSpinnerName())->setEnabled(enable); - getChild(getHeightSpinnerName())->setAllowEdit(enable); - getChild(getAspectRatioCBName())->setEnabled(enable); -} - void LLPanelSnapshotLocal::onFormatComboCommit(LLUICtrl* ctrl) { // will call updateControls() LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true)); } -void LLPanelSnapshotLocal::onResolutionComboCommit(LLUICtrl* ctrl) -{ - updateCustomResControls(); - - LLSD info; - info["combo-res-change"]["control-name"] = ctrl->getName(); - LLFloaterSnapshot::getInstance()->notify(info); -} - -void LLPanelSnapshotLocal::onCustomResolutionCommit(LLUICtrl* ctrl) -{ - LLSD info; - info["w"] = getChild(getWidthSpinnerName())->getValue().asInteger(); - info["h"] = getChild(getHeightSpinnerName())->getValue().asInteger(); - LLFloaterSnapshot::getInstance()->notify(LLSD().with("custom-res-change", info)); -} - -void LLPanelSnapshotLocal::onKeepAspectRatioCommit(LLUICtrl* ctrl) -{ - LLFloaterSnapshot::getInstance()->notify(LLSD().with("keep-aspect-change", ctrl->getValue().asBoolean())); -} - void LLPanelSnapshotLocal::onQualitySliderCommit(LLUICtrl* ctrl) { updateImageQualityLevel(); diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp index eead96d67a..0db15deec9 100644 --- a/indra/newview/llpanelsnapshotpostcard.cpp +++ b/indra/newview/llpanelsnapshotpostcard.cpp @@ -65,15 +65,11 @@ private: /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const { return LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG; } /*virtual*/ void updateControls(const LLSD& info); - void updateCustomResControls(); ///< Enable/disable custom resolution controls (spinners and checkbox) bool missingSubjMsgAlertCallback(const LLSD& notification, const LLSD& response); void sendPostcard(); void onMsgFormFocusRecieved(); void onFormatComboCommit(LLUICtrl* ctrl); - void onResolutionComboCommit(LLUICtrl* ctrl); - void onCustomResolutionCommit(LLUICtrl* ctrl); - void onKeepAspectRatioCommit(LLUICtrl* ctrl); void onQualitySliderCommit(LLUICtrl* ctrl); void onTabButtonPress(S32 btn_idx); void onSend(); @@ -110,10 +106,6 @@ BOOL LLPanelSnapshotPostcard::postBuild() getChild("to_form")->setFocus(TRUE); - getChild(getImageSizeComboName())->setCommitCallback(boost::bind(&LLPanelSnapshotPostcard::onResolutionComboCommit, this, _1)); - getChild(getWidthSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotPostcard::onCustomResolutionCommit, this, _1)); - getChild(getHeightSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotPostcard::onCustomResolutionCommit, this, _1)); - getChild(getAspectRatioCBName())->setCommitCallback(boost::bind(&LLPanelSnapshotPostcard::onKeepAspectRatioCommit, this, _1)); getChild("image_quality_slider")->setCommitCallback(boost::bind(&LLPanelSnapshotPostcard::onQualitySliderCommit, this, _1)); getChild("message_btn")->setToggleState(TRUE); @@ -124,7 +116,6 @@ BOOL LLPanelSnapshotPostcard::postBuild() // virtual void LLPanelSnapshotPostcard::onOpen(const LLSD& key) { - updateCustomResControls(); LLPanelSnapshot::onOpen(key); } @@ -158,19 +149,6 @@ void LLPanelSnapshotPostcard::updateControls(const LLSD& info) getChild("send_btn")->setEnabled(have_snapshot); } -void LLPanelSnapshotPostcard::updateCustomResControls() -{ - LLComboBox* combo = getChild(getImageSizeComboName()); - S32 selected_idx = combo->getFirstSelectedIndex(); - bool enable = selected_idx == 0 || selected_idx == (combo->getItemCount() - 1); // Current Window or Custom selected - - getChild(getWidthSpinnerName())->setEnabled(enable); - getChild(getWidthSpinnerName())->setAllowEdit(enable); - getChild(getHeightSpinnerName())->setEnabled(enable); - getChild(getHeightSpinnerName())->setAllowEdit(enable); - getChild(getAspectRatioCBName())->setEnabled(enable); -} - bool LLPanelSnapshotPostcard::missingSubjMsgAlertCallback(const LLSD& notification, const LLSD& response) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); @@ -233,28 +211,6 @@ void LLPanelSnapshotPostcard::onFormatComboCommit(LLUICtrl* ctrl) LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true)); } -void LLPanelSnapshotPostcard::onResolutionComboCommit(LLUICtrl* ctrl) -{ - updateCustomResControls(); - - LLSD info; - info["combo-res-change"]["control-name"] = ctrl->getName(); - LLFloaterSnapshot::getInstance()->notify(info); -} - -void LLPanelSnapshotPostcard::onCustomResolutionCommit(LLUICtrl* ctrl) -{ - LLSD info; - info["w"] = getChild(getWidthSpinnerName())->getValue().asInteger(); - info["h"] = getChild(getHeightSpinnerName())->getValue().asInteger(); - LLFloaterSnapshot::getInstance()->notify(LLSD().with("custom-res-change", info)); -} - -void LLPanelSnapshotPostcard::onKeepAspectRatioCommit(LLUICtrl* ctrl) -{ - LLFloaterSnapshot::getInstance()->notify(LLSD().with("keep-aspect-change", ctrl->getValue().asBoolean())); -} - void LLPanelSnapshotPostcard::onQualitySliderCommit(LLUICtrl* ctrl) { updateImageQualityLevel(); @@ -268,14 +224,14 @@ void LLPanelSnapshotPostcard::onQualitySliderCommit(LLUICtrl* ctrl) void LLPanelSnapshotPostcard::onTabButtonPress(S32 btn_idx) { - static LLButton* sButtons[2] = { + LLButton* buttons[2] = { getChild("message_btn"), getChild("settings_btn"), }; // Switch between Message and Settings tabs. - LLButton* clicked_btn = sButtons[btn_idx]; - LLButton* other_btn = sButtons[!btn_idx]; + LLButton* clicked_btn = buttons[btn_idx]; + LLButton* other_btn = buttons[!btn_idx]; LLSideTrayPanelContainer* container = getChild("postcard_panel_container"); diff --git a/indra/newview/llpanelsnapshotprofile.cpp b/indra/newview/llpanelsnapshotprofile.cpp index e633049af8..89245fc804 100644 --- a/indra/newview/llpanelsnapshotprofile.cpp +++ b/indra/newview/llpanelsnapshotprofile.cpp @@ -60,12 +60,7 @@ private: /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const { return LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG; } /*virtual*/ void updateControls(const LLSD& info); - void updateCustomResControls(); ///< Enable/disable custom resolution controls (spinners and checkbox) - void onSend(); - void onResolutionComboCommit(LLUICtrl* ctrl); - void onCustomResolutionCommit(LLUICtrl* ctrl); - void onKeepAspectRatioCommit(LLUICtrl* ctrl); }; static LLRegisterPanelClassWrapper panel_class("llpanelsnapshotprofile"); @@ -79,18 +74,12 @@ LLPanelSnapshotProfile::LLPanelSnapshotProfile() // virtual BOOL LLPanelSnapshotProfile::postBuild() { - getChild(getImageSizeComboName())->setCommitCallback(boost::bind(&LLPanelSnapshotProfile::onResolutionComboCommit, this, _1)); - getChild(getWidthSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotProfile::onCustomResolutionCommit, this, _1)); - getChild(getHeightSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotProfile::onCustomResolutionCommit, this, _1)); - getChild(getAspectRatioCBName())->setCommitCallback(boost::bind(&LLPanelSnapshotProfile::onKeepAspectRatioCommit, this, _1)); - return LLPanelSnapshot::postBuild(); } // virtual void LLPanelSnapshotProfile::onOpen(const LLSD& key) { - updateCustomResControls(); LLPanelSnapshot::onOpen(key); } @@ -101,19 +90,6 @@ void LLPanelSnapshotProfile::updateControls(const LLSD& info) getChild("post_btn")->setEnabled(have_snapshot); } -void LLPanelSnapshotProfile::updateCustomResControls() ///< Enable/disable custom resolution controls (spinners and checkbox) -{ - LLComboBox* combo = getChild(getImageSizeComboName()); - S32 selected_idx = combo->getFirstSelectedIndex(); - bool enable = selected_idx == 0 || selected_idx == (combo->getItemCount() - 1); // Current Window or Custom selected - - getChild(getWidthSpinnerName())->setEnabled(enable); - getChild(getWidthSpinnerName())->setAllowEdit(enable); - getChild(getHeightSpinnerName())->setEnabled(enable); - getChild(getHeightSpinnerName())->setAllowEdit(enable); - getChild(getAspectRatioCBName())->setEnabled(enable); -} - void LLPanelSnapshotProfile::onSend() { std::string caption = getChild("caption")->getValue().asString(); @@ -122,27 +98,3 @@ void LLPanelSnapshotProfile::onSend() LLWebProfile::uploadImage(LLFloaterSnapshot::getImageData(), caption, add_location); LLFloaterSnapshot::postSave(); } - -void LLPanelSnapshotProfile::onResolutionComboCommit(LLUICtrl* ctrl) -{ - updateCustomResControls(); - - LLSD info; - info["combo-res-change"]["control-name"] = ctrl->getName(); - LLFloaterSnapshot::getInstance()->notify(info); -} - -void LLPanelSnapshotProfile::onCustomResolutionCommit(LLUICtrl* ctrl) -{ - S32 w = getChild(getWidthSpinnerName())->getValue().asInteger(); - S32 h = getChild(getHeightSpinnerName())->getValue().asInteger(); - LLSD info; - info["w"] = w; - info["h"] = h; - LLFloaterSnapshot::getInstance()->notify(LLSD().with("custom-res-change", info)); -} - -void LLPanelSnapshotProfile::onKeepAspectRatioCommit(LLUICtrl* ctrl) -{ - LLFloaterSnapshot::getInstance()->notify(LLSD().with("keep-aspect-change", ctrl->getValue().asBoolean())); -} -- cgit v1.3 From 0a25d9b1ba4f01ae391319d35e4f573dc6624365 Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine Date: Wed, 16 Nov 2011 19:46:31 +0200 Subject: EXP-1562 WIP Turned the Save button into flyout (Save / Save as). By the way, fixed: * inability to save a snapshot to disk after pressing "Cancel" in the file picker. * displaying "Saved to computer!" after pressing "Cancel" in the file picker. --- indra/newview/llfloatersnapshot.cpp | 16 ++++--------- indra/newview/llfloatersnapshot.h | 2 +- indra/newview/llpanelsnapshotlocal.cpp | 27 ++++++++++++++++------ .../skins/default/xui/en/panel_snapshot_local.xml | 15 ++++++++---- 4 files changed, 37 insertions(+), 23 deletions(-) (limited to 'indra/newview/llpanelsnapshotlocal.cpp') diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 181570138e..5b26e93898 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -997,13 +997,7 @@ void LLSnapshotLivePreview::saveTexture() BOOL LLSnapshotLivePreview::saveLocal() { - BOOL success = gViewerWindow->saveImageNumbered(mFormattedImage, true); - - // Relinquish image memory. Save button will be disabled as a side-effect. - lldebugs << "resetting formatted image after saving to disk" << llendl; - mFormattedImage = NULL; - mDataSize = 0; - updateSnapshot(FALSE, FALSE); + BOOL success = gViewerWindow->saveImageNumbered(mFormattedImage); if(success) { @@ -2465,7 +2459,7 @@ void LLFloaterSnapshot::saveTexture() } // static -void LLFloaterSnapshot::saveLocal() +BOOL LLFloaterSnapshot::saveLocal() { lldebugs << "saveLocal" << llendl; // FIXME: duplicated code @@ -2473,16 +2467,16 @@ void LLFloaterSnapshot::saveLocal() if (!instance) { llassert(instance != NULL); - return; + return FALSE; } LLSnapshotLivePreview* previewp = Impl::getPreviewView(instance); if (!previewp) { llassert(previewp != NULL); - return; + return FALSE; } - previewp->saveLocal(); + return previewp->saveLocal(); } // static diff --git a/indra/newview/llfloatersnapshot.h b/indra/newview/llfloatersnapshot.h index 48015ad4d7..afe135fa40 100644 --- a/indra/newview/llfloatersnapshot.h +++ b/indra/newview/llfloatersnapshot.h @@ -58,7 +58,7 @@ public: // TODO: create a snapshot model instead static LLFloaterSnapshot* getInstance(); static void saveTexture(); - static void saveLocal(); + static BOOL saveLocal(); static void preUpdate(); static void postUpdate(); static void postSave(); diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp index eaa27b8d41..4a2614fa7d 100644 --- a/indra/newview/llpanelsnapshotlocal.cpp +++ b/indra/newview/llpanelsnapshotlocal.cpp @@ -34,6 +34,7 @@ #include "llfloatersnapshot.h" // FIXME: replace with a snapshot storage model #include "llpanelsnapshot.h" #include "llviewercontrol.h" // gSavedSettings +#include "llviewerwindow.h" /** * The panel provides UI for saving snapshot to a local folder. @@ -58,14 +59,13 @@ private: void onFormatComboCommit(LLUICtrl* ctrl); void onQualitySliderCommit(LLUICtrl* ctrl); - void onSend(); + void onSaveFlyoutCommit(LLUICtrl* ctrl); }; static LLRegisterPanelClassWrapper panel_class("llpanelsnapshotlocal"); LLPanelSnapshotLocal::LLPanelSnapshotLocal() { - mCommitCallbackRegistrar.add("Local.Save", boost::bind(&LLPanelSnapshotLocal::onSend, this)); mCommitCallbackRegistrar.add("Local.Cancel", boost::bind(&LLPanelSnapshotLocal::cancel, this)); } @@ -74,6 +74,7 @@ BOOL LLPanelSnapshotLocal::postBuild() { getChild("image_quality_slider")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onQualitySliderCommit, this, _1)); getChild("local_format_combo")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onFormatComboCommit, this, _1)); + getChild("save_btn")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onSaveFlyoutCommit, this, _1)); return LLPanelSnapshot::postBuild(); } @@ -142,13 +143,25 @@ void LLPanelSnapshotLocal::onQualitySliderCommit(LLUICtrl* ctrl) LLFloaterSnapshot::getInstance()->notify(info); } -void LLPanelSnapshotLocal::onSend() +void LLPanelSnapshotLocal::onSaveFlyoutCommit(LLUICtrl* ctrl) { + if (ctrl->getValue().asString() == "save as") + { + gViewerWindow->resetSnapshotLoc(); + } + LLFloaterSnapshot* floater = LLFloaterSnapshot::getInstance(); floater->notify(LLSD().with("set-working", true)); - LLFloaterSnapshot::saveLocal(); - LLFloaterSnapshot::postSave(); - goBack(); - floater->notify(LLSD().with("set-finished", LLSD().with("ok", true).with("msg", "local"))); + BOOL saved = LLFloaterSnapshot::saveLocal(); + if (saved) + { + LLFloaterSnapshot::postSave(); + goBack(); + floater->notify(LLSD().with("set-finished", LLSD().with("ok", true).with("msg", "local"))); + } + else + { + cancel(); + } } diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml index fc4b85ae2a..30403a21dd 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml @@ -179,16 +179,23 @@ - + + + -- cgit v1.3 From 4cb3634932fe8175fb878894cce584bfb8bba8c6 Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine Date: Mon, 21 Nov 2011 13:55:09 +0200 Subject: EXP-1630 FIXED Only show snapshot size spinners and "Constrain proportions" checkbox when Custom resolution is selected. --- indra/newview/llpanelsnapshot.cpp | 12 +- indra/newview/llpanelsnapshot.h | 1 + indra/newview/llpanelsnapshotinventory.cpp | 7 +- indra/newview/llpanelsnapshotlocal.cpp | 1 + indra/newview/llpanelsnapshotpostcard.cpp | 1 + indra/newview/llpanelsnapshotprofile.cpp | 1 + .../default/xui/en/panel_postcard_settings.xml | 163 +++++++++------- .../skins/default/xui/en/panel_snapshot_local.xml | 205 ++++++++++++--------- .../default/xui/en/panel_snapshot_profile.xml | 171 ++++++++++------- 9 files changed, 333 insertions(+), 229 deletions(-) (limited to 'indra/newview/llpanelsnapshotlocal.cpp') diff --git a/indra/newview/llpanelsnapshot.cpp b/indra/newview/llpanelsnapshot.cpp index 90e32f973f..2f29e758c6 100644 --- a/indra/newview/llpanelsnapshot.cpp +++ b/indra/newview/llpanelsnapshot.cpp @@ -124,15 +124,11 @@ LLSideTrayPanelContainer* LLPanelSnapshot::getParentContainer() // virtual void LLPanelSnapshot::updateCustomResControls() { + // Only show width/height spinners and the aspect ratio checkbox + // when a custom resolution is chosen. LLComboBox* combo = getChild(getImageSizeComboName()); - S32 selected_idx = combo->getFirstSelectedIndex(); - const bool enable = selected_idx == (combo->getItemCount() - 1); // Current Window or Custom selected - - getChild(getWidthSpinnerName())->setEnabled(enable); - getChild(getWidthSpinnerName())->setAllowEdit(enable); - getChild(getHeightSpinnerName())->setEnabled(enable); - getChild(getHeightSpinnerName())->setAllowEdit(enable); - enableAspectRatioCheckbox(enable); + const bool show = combo->getFirstSelectedIndex() == (combo->getItemCount() - 1); + getChild(getImageSizePanelName())->setVisible(show); } void LLPanelSnapshot::updateImageQualityLevel() diff --git a/indra/newview/llpanelsnapshot.h b/indra/newview/llpanelsnapshot.h index 7adb2fabc7..f3274cf594 100644 --- a/indra/newview/llpanelsnapshot.h +++ b/indra/newview/llpanelsnapshot.h @@ -44,6 +44,7 @@ public: virtual std::string getHeightSpinnerName() const = 0; virtual std::string getAspectRatioCBName() const = 0; virtual std::string getImageSizeComboName() const = 0; + virtual std::string getImageSizePanelName() const = 0; virtual S32 getTypedPreviewWidth() const; virtual S32 getTypedPreviewHeight() const; diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp index aca0ee6700..381c11348d 100644 --- a/indra/newview/llpanelsnapshotinventory.cpp +++ b/indra/newview/llpanelsnapshotinventory.cpp @@ -54,6 +54,7 @@ private: /*virtual*/ std::string getHeightSpinnerName() const { return "inventory_snapshot_height"; } /*virtual*/ std::string getAspectRatioCBName() const { return "inventory_keep_aspect_check"; } /*virtual*/ std::string getImageSizeComboName() const { return "texture_size_combo"; } + /*virtual*/ std::string getImageSizePanelName() const { return LLStringUtil::null; } /*virtual*/ void updateControls(const LLSD& info); void onSend(); @@ -70,6 +71,8 @@ LLPanelSnapshotInventory::LLPanelSnapshotInventory() // virtual BOOL LLPanelSnapshotInventory::postBuild() { + getChild(getWidthSpinnerName())->setAllowEdit(FALSE); + getChild(getHeightSpinnerName())->setAllowEdit(FALSE); getChild(getAspectRatioCBName())->setVisible(FALSE); // we don't keep aspect ratio for inventory textures return LLPanelSnapshot::postBuild(); } @@ -90,10 +93,6 @@ void LLPanelSnapshotInventory::updateCustomResControls() getChild(getWidthSpinnerName())->setVisible(show); getChild(getHeightSpinnerName())->setVisible(show); - - // Editing gets often enable elsewhere in common snapshot panel code. Override that. - getChild(getWidthSpinnerName())->setAllowEdit(FALSE); - getChild(getHeightSpinnerName())->setAllowEdit(FALSE); } // virtual diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp index 4a2614fa7d..d153ff598d 100644 --- a/indra/newview/llpanelsnapshotlocal.cpp +++ b/indra/newview/llpanelsnapshotlocal.cpp @@ -54,6 +54,7 @@ private: /*virtual*/ std::string getHeightSpinnerName() const { return "local_snapshot_height"; } /*virtual*/ std::string getAspectRatioCBName() const { return "local_keep_aspect_check"; } /*virtual*/ std::string getImageSizeComboName() const { return "local_size_combo"; } + /*virtual*/ std::string getImageSizePanelName() const { return "local_image_size_lp"; } /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const; /*virtual*/ void updateControls(const LLSD& info); diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp index 6867c7af4e..f2bb8f530b 100644 --- a/indra/newview/llpanelsnapshotpostcard.cpp +++ b/indra/newview/llpanelsnapshotpostcard.cpp @@ -62,6 +62,7 @@ private: /*virtual*/ std::string getHeightSpinnerName() const { return "postcard_snapshot_height"; } /*virtual*/ std::string getAspectRatioCBName() const { return "postcard_keep_aspect_check"; } /*virtual*/ std::string getImageSizeComboName() const { return "postcard_size_combo"; } + /*virtual*/ std::string getImageSizePanelName() const { return "postcard_image_size_lp"; } /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const { return LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG; } /*virtual*/ void updateControls(const LLSD& info); diff --git a/indra/newview/llpanelsnapshotprofile.cpp b/indra/newview/llpanelsnapshotprofile.cpp index 89245fc804..a706318369 100644 --- a/indra/newview/llpanelsnapshotprofile.cpp +++ b/indra/newview/llpanelsnapshotprofile.cpp @@ -57,6 +57,7 @@ private: /*virtual*/ std::string getHeightSpinnerName() const { return "profile_snapshot_height"; } /*virtual*/ std::string getAspectRatioCBName() const { return "profile_keep_aspect_check"; } /*virtual*/ std::string getImageSizeComboName() const { return "profile_size_combo"; } + /*virtual*/ std::string getImageSizePanelName() const { return "profile_image_size_lp"; } /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const { return LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG; } /*virtual*/ void updateControls(const LLSD& info); diff --git a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml index 84e3593798..aebbc51be1 100644 --- a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml @@ -34,69 +34,104 @@ name="Custom" value="[i-1,i-1]" /> - - - - - - ([QLVL]) - + right="-10"> + + + + + + + + + ([QLVL]) + + + diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml index 30403a21dd..ae0215a578 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml @@ -80,93 +80,128 @@ name="Custom" value="[i-1,i-1]" /> - - - - - - - - - - - ([QLVL]) - + right="-10"> + + + + + + + + + + + + + + ([QLVL]) + + +