diff options
author | Vadim ProductEngine <vsavchuk@productengine.com> | 2011-11-03 15:39:12 +0200 |
---|---|---|
committer | Vadim ProductEngine <vsavchuk@productengine.com> | 2011-11-03 15:39:12 +0200 |
commit | ce05b9f7e5347c28780b399efa70992cb7bf5229 (patch) | |
tree | c1a420a8d8a68661f9b10db7b188ac91ed70c61c /indra | |
parent | 33b17af15c6fbf0762e99342042a20d0f89f732f (diff) |
STORM-1580 WIP Implemented new "Working" and "Success/Failure" screens.
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/CMakeLists.txt | 2 | ||||
-rw-r--r-- | indra/newview/llfloatersnapshot.cpp | 127 | ||||
-rw-r--r-- | indra/newview/llfloatersnapshot.h | 4 | ||||
-rw-r--r-- | indra/newview/llpanelpostprogress.cpp | 59 | ||||
-rw-r--r-- | indra/newview/llpanelpostresult.cpp | 90 | ||||
-rw-r--r-- | indra/newview/llpanelsnapshot.cpp | 28 | ||||
-rw-r--r-- | indra/newview/llpanelsnapshot.h | 7 | ||||
-rw-r--r-- | indra/newview/llpanelsnapshotinventory.cpp | 23 | ||||
-rw-r--r-- | indra/newview/llpanelsnapshotlocal.cpp | 24 | ||||
-rw-r--r-- | indra/newview/llpanelsnapshotpostcard.cpp | 25 | ||||
-rw-r--r-- | indra/newview/llpanelsnapshotprofile.cpp | 23 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_snapshot.xml | 90 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_post_progress.xml | 55 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_post_result.xml | 78 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_snapshot_options.xml | 64 |
15 files changed, 314 insertions, 385 deletions
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<LLAnimPauseRequest> mAvatarPauseHandles; @@ -1129,6 +1142,7 @@ public: LLToolset* mLastToolset; LLHandle<LLView> mPreviewHandle; bool mAspectRatioCheckOff ; + EStatus mStatus; }; // static @@ -1576,6 +1590,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) { if (previewp) @@ -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<LLUICtrl>("working_lbl"); + working_lbl->setVisible(working); + floater->getChild<LLUICtrl>("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<LLUICtrl>("succeeded_panel")->setVisible(finished && ok); + floater->getChild<LLUICtrl>("failed_panel")->setVisible(finished && !ok); + + if (finished) + { + LLUICtrl* finished_lbl = floater->getChild<LLUICtrl>(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<LLUICtrl>("thumbnail_placeholder")->getRect(); + sThumbnailPlaceholder = getChild<LLUICtrl>("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<LLPanelPostProgress> 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<LLTextBox>("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<LLPanelPostResult> 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<LLTextBox>("result_lbl")->setText(result_text); - } - else - { - llwarns << "Invalid key" << llendl; - } -} - -void LLPanelPostResult::onBack() -{ - LLSideTrayPanelContainer* parent = dynamic_cast<LLSideTrayPanelContainer*>(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<LLTextBox>("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<LLPanelSnapshotInventory> panel_class("llpanelsnapshotinventory"); @@ -68,7 +67,7 @@ static LLRegisterPanelClassWrapper<LLPanelSnapshotInventory> 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<LLUICtrl>(getWidthSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotInventory::onCustomResolutionCommit, this, _1)); getChild<LLUICtrl>(getHeightSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotInventory::onCustomResolutionCommit, this, _1)); getChild<LLUICtrl>(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<LLComboBox>(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<LLPanelSnapshotLocal> panel_class("llpanelsnapshotlocal"); @@ -72,7 +71,7 @@ static LLRegisterPanelClassWrapper<LLPanelSnapshotLocal> 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<LLUICtrl>("image_quality_slider")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onQualitySliderCommit, this, _1)); getChild<LLUICtrl>("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<LLButton>("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<LLUICtrl>("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<LLPanelSnapshotProfile> 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<LLUICtrl>(getWidthSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotProfile::onCustomResolutionCommit, this, _1)); getChild<LLUICtrl>(getHeightSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshotProfile::onCustomResolutionCommit, this, _1)); getChild<LLUICtrl>(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 </floater.string> + <string + name="postcard_progress_str"> + Sending Email + </string> + <string + name="profile_progress_str"> + Posting + </string> + <string + name="inventory_progress_str"> + Saving to Inventory + </string> + <string + name="local_progress_str"> + Saving to Computer + </string> + <string + name="profile_succeeded_str"> + Your Profile Feed has been updated! + </string> + <string + name="postcard_succeeded_str"> + Email Sent! + </string> + <string + name="inventory_succeeded_str"> + Saved to Inventory! + </string> + <string + name="local_succeeded_str"> + Saved to Computer! + </string> + <string + name="profile_failed_str"> + Failed to update your Profile Feed. + </string> + <string + name="postcard_failed_str"> + Failed to send email. + </string> + <string + name="inventory_failed_str"> + Failed to save to inventory. + </string> + <string + name="local_failed_str"> + Failed to save to computer. + </string> <view_border bevel_style="in" follows="left|top" @@ -65,8 +113,34 @@ name="thumbnail_placeholder" top="50" follows="left|top" - left="10" - /> + left="10"> + <loading_indicator + follows="left|top" + height="48" + layout="topleft" + name="working_indicator" + left="101" + top="46" + visible="false" + width="48" /> + <text + follows="left|top|right" + font="SansSerifBold" + height="14" + layout="topleft" + left="5" + length="1" + halign="center" + name="working_lbl" + right="-5" + top="98" + translate="false" + type="string" + visible="false" + width="130"> + Working + </text> + </ui_ctrl> <view_border bevel_style="in" height="21" @@ -146,18 +220,6 @@ layout="topleft" name="panel_snapshot_local" filename="panel_snapshot_local.xml" /> - <panel - class="llpanelpostprogress" - follows="all" - layout="topleft" - name="panel_post_progress" - filename="panel_post_progress.xml" /> - <panel - class="llpanelpostresult" - follows="all" - layout="topleft" - name="panel_post_result" - filename="panel_post_result.xml" /> </panel_container> <panel height="295" diff --git a/indra/newview/skins/default/xui/en/panel_post_progress.xml b/indra/newview/skins/default/xui/en/panel_post_progress.xml deleted file mode 100644 index 418e6e7527..0000000000 --- a/indra/newview/skins/default/xui/en/panel_post_progress.xml +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel - height="380" - layout="topleft" - name="panel_post_progress" - width="490"> - <string - name="postcard_progress_str"> - Sending Email - </string> - <string - name="profile_progress_str"> - Posting - </string> - <string - name="inventory_progress_str"> - Saving to Inventory - </string> - <string - name="local_progress_str"> - Saving to Computer - </string> - <view_border - follows="left|top" - height="110" - layout="topleft" - left="40" - name="rect" - top="120" - width="190" - /> - <loading_indicator - follows="left|top" - height="40" - left_delta="75" - layout="topleft" - top_delta="20" - width="40" - /> - <text - follows="top|left" - font="SansSerifLargeBold" - halign="center" - height="20" - layout="topleft" - left_delta="-75" - length="1" - name="progress_lbl" - translate="false" - type="string" - top_pad="10" - width="190"> - Working - </text> -</panel> 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 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel - height="380" - layout="topleft" - name="panel_post_result" - width="490"> - <string - name="profile_succeeded_str"> - Your Profile Feed has been updated! - </string> - <string - name="postcard_succeeded_str"> - Email Sent! - </string> - <string - name="inventory_succeeded_str"> - Saved to Inventory! - </string> - <string - name="local_succeeded_str"> - Saved to Computer! - </string> - <string - name="profile_failed_str"> - Failed to update your Profile Feed. - </string> - <string - name="postcard_failed_str"> - Failed to send email. - </string> - <string - name="inventory_failed_str"> - Failed to save to inventory. - </string> - <string - name="local_failed_str"> - Failed to save to computer. - </string> - <text - follows="top|left|right" - font="SansSerif" - halign="center" - height="30" - layout="topleft" - left="20" - length="1" - name="result_lbl" - right="-20" - type="string" - top="100" - word_wrap="true"> - Result - </text> - <button - follows="left|top" - height="22" - label="Done, Close This Window" - layout="topleft" - left="10" - name="close_btn" - top_pad="10" - width="160"> - <commit_callback - function="Snapshot.Result.Close" /> - </button> - <button - follows="right|top" - height="22" - label="Main Menu" - layout="topleft" - name="back_btn" - right="-10" - top_delta="0" - width="80"> - <commit_callback - function="Snapshot.Result.Back" /> - </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 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 @@ <button.commit_callback function="Snapshot.SaveToComputer" /> </button> + <panel + background_visible="true" + bg_alpha_color="0.9 1 0.9 1" + bottom="-10" + follows="left|bottom|right" + font="SansSerifLarge" + halign="center" + height="20" + layout="topleft" + left_delta="0" + length="1" + name="succeeded_panel" + right="-10" + type="string" + visible="false"> + <text + follows="all" + font="SansSerif" + halign="center" + height="18" + layout="topleft" + left="1" + length="1" + name="succeeded_lbl" + right="-1" + text_color="0.2 0.5 0.2 1" + top="4" + translate="false" + type="string"> + Succeeded + </text> + </panel> + <panel + background_visible="true" + bg_alpha_color="1 0.9 0.9 1" + bottom="-10" + follows="left|bottom|right" + font="SansSerifLarge" + halign="center" + height="20" + layout="topleft" + left_delta="0" + length="1" + name="failed_panel" + right="-10" + type="string" + visible="false"> + <text + follows="all" + font="SansSerif" + halign="center" + height="18" + layout="topleft" + left="1" + length="1" + name="failed_lbl" + right="-1" + text_color="0.5 0.2 0.2 1" + top="4" + translate="false" + type="string"> + Failed + </text> + </panel> </panel> |