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
Nyx (Neal Orman) 2011-06-30 15:55:19 -04:00
parent e4b12b83e8
commit 17060f4e92
7 changed files with 73 additions and 13 deletions

View File

@ -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);

View File

@ -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

View File

@ -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)

View File

@ -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;

View File

@ -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
{

View File

@ -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
};

View File

@ -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: