diff options
author | Vadim ProductEngine <vsavchuk@productengine.com> | 2011-11-16 19:46:31 +0200 |
---|---|---|
committer | Vadim ProductEngine <vsavchuk@productengine.com> | 2011-11-16 19:46:31 +0200 |
commit | 0a25d9b1ba4f01ae391319d35e4f573dc6624365 (patch) | |
tree | ea47456c06d706d58837b60c11bfa8c66bb29316 | |
parent | e7ef0512a27adce621b8523f6cb81a8daa73e12d (diff) |
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.
-rw-r--r-- | indra/newview/llfloatersnapshot.cpp | 16 | ||||
-rw-r--r-- | indra/newview/llfloatersnapshot.h | 2 | ||||
-rw-r--r-- | indra/newview/llpanelsnapshotlocal.cpp | 27 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_snapshot_local.xml | 15 |
4 files changed, 37 insertions, 23 deletions
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<LLPanelSnapshotLocal> 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<LLUICtrl>("image_quality_slider")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onQualitySliderCommit, this, _1)); getChild<LLUICtrl>("local_format_combo")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onFormatComboCommit, this, _1)); + getChild<LLUICtrl>("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 @@ <button.commit_callback function="Local.Cancel" /> </button> - <button + <flyout_button follows="right|bottom" height="23" label="Save" layout="topleft" left_delta="-106" name="save_btn" + tool_tip="Save image to a file" top_delta="0" width="100"> - <button.commit_callback - function="Local.Save" /> - </button> + <flyout_button.item + label="Save" + name="save_item" + value="save" /> + <flyout_button.item + label="Save As..." + name="saveas_item" + value="save as" /> + </flyout_button> </panel> |