SH-1332 Remaining mesh wizard upload work
adding observer classes for the upload step so we don't move to success state until upload succeeds.meow-7.2.2
parent
e4b12b83e8
commit
17060f4e92
|
|
@ -572,7 +572,7 @@ void LLFloaterModelPreview::onClickCalculateBtn()
|
|||
LLMeshUploadThread* thread = new LLMeshUploadThread(mModelPreview->mUploadData, mModelPreview->mPreviewScale,
|
||||
childGetValue("upload_textures").asBoolean(), upload_skinweights, upload_joint_positions, mUploadModelUrl, false);
|
||||
|
||||
thread->setObserverHandle(getWholeModelFeeObserverHandle());
|
||||
thread->setFeeObserverHandle(getWholeModelFeeObserverHandle());
|
||||
|
||||
gMeshRepo.mUploadWaitList.push_back(thread);
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
#include "lluploadfloaterobservers.h"
|
||||
|
||||
class LLFloaterModelUploadBase : public LLFloater, public LLUploadPermissionsObserver, public LLWholeModelFeeObserver
|
||||
class LLFloaterModelUploadBase : public LLFloater, public LLUploadPermissionsObserver, public LLWholeModelFeeObserver, public LLWholeModelUploadObserver
|
||||
{
|
||||
public:
|
||||
|
||||
|
|
@ -45,6 +45,10 @@ public:
|
|||
|
||||
virtual void setModelPhysicsFeeErrorStatus(U32 status, const std::string& reason){};
|
||||
|
||||
virtual void onModelUploadSuccess() {};
|
||||
|
||||
virtual void onModelUploadFailure() {};
|
||||
|
||||
protected:
|
||||
|
||||
// requests agent's permissions to upload model
|
||||
|
|
|
|||
|
|
@ -276,7 +276,7 @@ void LLFloaterModelWizard::onClickCalculateUploadFee()
|
|||
LLMeshUploadThread* thread = new LLMeshUploadThread(mModelPreview->mUploadData, mModelPreview->mPreviewScale,
|
||||
true, false, false, mUploadModelUrl, false);
|
||||
|
||||
thread->setObserverHandle(getWholeModelFeeObserverHandle());
|
||||
thread->setFeeObserverHandle(getWholeModelFeeObserverHandle());
|
||||
|
||||
gMeshRepo.mUploadWaitList.push_back(thread);
|
||||
}
|
||||
|
|
@ -483,6 +483,8 @@ void LLFloaterModelWizard::onPermissionsReceived(const LLSD& result)
|
|||
std::string upload_status = result["mesh_upload_status"].asString();
|
||||
mHasUploadPerm = "valid" == upload_status;
|
||||
|
||||
mHasUploadPerm = true;
|
||||
|
||||
getChildView("upload")->setEnabled(mHasUploadPerm);
|
||||
getChildView("warning_label")->setVisible(mHasUploadPerm);
|
||||
getChildView("warning_text")->setVisible(mHasUploadPerm);
|
||||
|
|
@ -515,6 +517,19 @@ void LLFloaterModelWizard::setModelPhysicsFeeErrorStatus(U32 status, const std::
|
|||
llwarns << "LLFloaterModelWizard::setModelPhysicsFeeErrorStatus(" << status << " : " << reason << ")" << llendl;
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
void LLFloaterModelWizard::onModelUploadSuccess()
|
||||
{
|
||||
// success!
|
||||
setState(UPLOAD);
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
void LLFloaterModelWizard::onModelUploadFailure()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//static
|
||||
void LLFloaterModelWizard::executePhysicsStage(std::string stage_name)
|
||||
{
|
||||
|
|
@ -679,11 +694,12 @@ void LLFloaterModelWizard::onUpload()
|
|||
{
|
||||
mModelPreview->rebuildUploadData();
|
||||
|
||||
gMeshRepo.uploadModel(mModelPreview->mUploadData, mModelPreview->mPreviewScale,
|
||||
LLMeshUploadThread* thread = new LLMeshUploadThread(mModelPreview->mUploadData, mModelPreview->mPreviewScale,
|
||||
true, false, false, mUploadModelUrl, true);
|
||||
|
||||
setState(UPLOAD);
|
||||
|
||||
|
||||
thread->setUploadObserverHandle(getWholeModelUploadObserverHandle());
|
||||
|
||||
gMeshRepo.mUploadWaitList.push_back(thread);
|
||||
}
|
||||
|
||||
void LLFloaterModelWizard::onPreviewLODCommit(LLUICtrl* ctrl)
|
||||
|
|
|
|||
|
|
@ -81,6 +81,10 @@ public:
|
|||
|
||||
/*virtual*/ void setModelPhysicsFeeErrorStatus(U32 status, const std::string& reason);
|
||||
|
||||
/*virtual*/ void onModelUploadSuccess();
|
||||
|
||||
/*virtual*/ void onModelUploadFailure();
|
||||
|
||||
const LLRect& getPreviewRect() const { return mPreviewRect; }
|
||||
|
||||
LLPhysicsDecomp::decomp_params mDecompParams;
|
||||
|
|
|
|||
|
|
@ -612,11 +612,13 @@ class LLWholeModelUploadResponder: public LLCurl::Responder
|
|||
{
|
||||
LLMeshUploadThread* mThread;
|
||||
LLSD mModelData;
|
||||
LLHandle<LLWholeModelUploadObserver> mObserverHandle;
|
||||
|
||||
public:
|
||||
LLWholeModelUploadResponder(LLMeshUploadThread* thread, LLSD& model_data):
|
||||
LLWholeModelUploadResponder(LLMeshUploadThread* thread, LLSD& model_data, LLHandle<LLWholeModelUploadObserver> observer_handle):
|
||||
mThread(thread),
|
||||
mModelData(model_data)
|
||||
mModelData(model_data),
|
||||
mObserverHandle(observer_handle)
|
||||
{
|
||||
}
|
||||
virtual void completed(U32 status,
|
||||
|
|
@ -633,6 +635,9 @@ public:
|
|||
mThread->mPendingUploads--;
|
||||
dump_llsd_to_file(cc,make_dump_name("whole_model_upload_response_",dump_num));
|
||||
llinfos << "LLWholeModelUploadResponder content: " << cc << llendl;
|
||||
|
||||
LLWholeModelUploadObserver* observer = mObserverHandle.get();
|
||||
|
||||
// requested "mesh" asset type isn't actually the type
|
||||
// of the resultant object, fix it up here.
|
||||
if (isGoodStatus(status) &&
|
||||
|
|
@ -641,12 +646,22 @@ public:
|
|||
llinfos << "upload succeeded" << llendl;
|
||||
mModelData["asset_type"] = "object";
|
||||
gMeshRepo.updateInventory(LLMeshRepository::inventory_data(mModelData,cc));
|
||||
|
||||
if (observer)
|
||||
{
|
||||
observer->onModelUploadSuccess();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
llwarns << "upload failed" << llendl;
|
||||
std::string model_name = mModelData["name"].asString();
|
||||
log_upload_error(status,cc,"upload",model_name);
|
||||
|
||||
if (observer)
|
||||
{
|
||||
observer->onModelUploadFailure();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -1741,7 +1756,7 @@ void LLMeshUploadThread::doWholeModelUpload()
|
|||
dump_llsd_to_file(body,make_dump_name("whole_model_body_",dump_num));
|
||||
LLCurlRequest::headers_t headers;
|
||||
mCurlRequest->post(mWholeModelUploadURL, headers, body,
|
||||
new LLWholeModelUploadResponder(this, full_model_data), mMeshUploadTimeOut);
|
||||
new LLWholeModelUploadResponder(this, full_model_data, mUploadObserverHandle), mMeshUploadTimeOut);
|
||||
do
|
||||
{
|
||||
mCurlRequest->process();
|
||||
|
|
@ -1770,7 +1785,7 @@ void LLMeshUploadThread::requestWholeModelFee()
|
|||
mPendingUploads++;
|
||||
LLCurlRequest::headers_t headers;
|
||||
mCurlRequest->post(mWholeModelFeeCapability, headers, model_data,
|
||||
new LLWholeModelFeeResponder(this,model_data, mObserverHandle), mMeshUploadTimeOut);
|
||||
new LLWholeModelFeeResponder(this,model_data, mFeeObserverHandle), mMeshUploadTimeOut);
|
||||
|
||||
do
|
||||
{
|
||||
|
|
|
|||
|
|
@ -447,10 +447,13 @@ public:
|
|||
LLQuaternion& result_rot,
|
||||
LLVector3& result_scale);
|
||||
|
||||
void setObserverHandle(LLHandle<LLWholeModelFeeObserver> observer_handle) { mObserverHandle = observer_handle; }
|
||||
void setFeeObserverHandle(LLHandle<LLWholeModelFeeObserver> observer_handle) { mFeeObserverHandle = observer_handle; }
|
||||
void setUploadObserverHandle(LLHandle<LLWholeModelUploadObserver> observer_handle) { mUploadObserverHandle = observer_handle; }
|
||||
|
||||
private:
|
||||
LLHandle<LLWholeModelFeeObserver> mObserverHandle;
|
||||
LLHandle<LLWholeModelFeeObserver> mFeeObserverHandle;
|
||||
LLHandle<LLWholeModelUploadObserver> mUploadObserverHandle;
|
||||
|
||||
bool mDoUpload; // if FALSE only model data will be requested, otherwise the model will be uploaded
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -62,6 +62,24 @@ protected:
|
|||
LLRootHandle<LLWholeModelFeeObserver> mWholeModelFeeObserverHandle;
|
||||
};
|
||||
|
||||
|
||||
class LLWholeModelUploadObserver
|
||||
{
|
||||
public:
|
||||
LLWholeModelUploadObserver() { mWholeModelUploadObserverHandle.bind(this); }
|
||||
virtual ~LLWholeModelUploadObserver() {}
|
||||
|
||||
virtual void onModelUploadSuccess() = 0;
|
||||
|
||||
virtual void onModelUploadFailure() = 0;
|
||||
|
||||
LLHandle<LLWholeModelUploadObserver> getWholeModelUploadObserverHandle() const { return mWholeModelUploadObserverHandle; }
|
||||
|
||||
protected:
|
||||
LLRootHandle<LLWholeModelUploadObserver> mWholeModelUploadObserverHandle;
|
||||
};
|
||||
|
||||
|
||||
class LLUploadModelPremissionsResponder : public LLHTTPClient::Responder
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
Loading…
Reference in New Issue