diff options
-rw-r--r-- | indra/newview/llstartup.cpp | 13 | ||||
-rw-r--r-- | indra/newview/llviewermenufile.cpp | 41 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 20 |
3 files changed, 64 insertions, 10 deletions
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 7fb4764f4f..c5ef985f1b 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -244,6 +244,7 @@ static std::string gFirstSimSeedCap; static LLVector3 gAgentStartLookAt(1.0f, 0.f, 0.f); static std::string gAgentStartLocation = "safe"; static bool mLoginStatePastUI = false; +static bool mBenefitsSuccessfullyInit = false; const F32 STATE_AGENT_WAIT_TIMEOUT = 240; //seconds @@ -275,6 +276,7 @@ void general_cert_done(const LLSD& notification, const LLSD& response); void trust_cert_done(const LLSD& notification, const LLSD& response); void apply_udp_blacklist(const std::string& csv); bool process_login_success_response(); +void on_benefits_failed_callback(const LLSD& notification, const LLSD& response); void transition_back_to_login_panel(const std::string& emsg); void callback_cache_name(const LLUUID& id, const std::string& full_name, bool is_group) @@ -2157,6 +2159,11 @@ bool idle_startup() set_startup_status(1.0, "", ""); display_startup(); + if (!mBenefitsSuccessfullyInit) + { + LLNotificationsUtil::add("FailedToGetBenefits", LLSD(), LLSD(), boost::bind(on_benefits_failed_callback, _1, _2)); + } + // Let the map know about the inventory. LLFloaterWorldMap* floater_world_map = LLFloaterWorldMap::getInstance(); if(floater_world_map) @@ -3328,11 +3335,7 @@ bool process_login_success_response() { LLSD response = LLLoginInstance::getInstance()->getResponse(); - bool benefits_ok = init_benefits(response); - if (!benefits_ok) - { - LLNotificationsUtil::add("FailedToGetBenefits", LLSD(), LLSD(), boost::bind(on_benefits_failed_callback, _1, _2)); - } + mBenefitsSuccessfullyInit = init_benefits(response); std::string text(response["udp_blacklist"]); if(!text.empty()) diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 4ce39e715c..741ce7a182 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -446,15 +446,21 @@ void do_bulk_upload(std::vector<std::string> filenames, const LLSD& notification } } -bool get_bulk_upload_expected_cost(const std::vector<std::string>& filenames, S32& total_cost) +bool get_bulk_upload_expected_cost(const std::vector<std::string>& filenames, S32& total_cost, S32& file_count, S32& bvh_count) { - bool succ = true; total_cost = 0; + file_count = 0; + bvh_count = 0; for (std::vector<std::string>::const_iterator in_iter = filenames.begin(); in_iter != filenames.end(); ++in_iter) { std::string filename = (*in_iter); std::string ext = gDirUtilp->getExtension(filename); + if (ext == "bvh") + { + bvh_count++; + } + LLAssetType::EType asset_type; U32 codec; S32 cost; @@ -463,10 +469,11 @@ bool get_bulk_upload_expected_cost(const std::vector<std::string>& filenames, S3 LLAgentBenefitsMgr::current().findUploadCost(asset_type, cost)) { total_cost += cost; + file_count++; } } - return succ; + return file_count > 0; } const void upload_bulk(const std::vector<std::string>& filenames, LLFilePicker::ELoadFilter type) @@ -491,14 +498,38 @@ const void upload_bulk(const std::vector<std::string>& filenames, LLFilePicker:: filtered_filenames.push_back(filename); } } + S32 expected_upload_cost; - if (get_bulk_upload_expected_cost(filtered_filenames, expected_upload_cost)) + S32 expected_upload_count; + S32 bvh_count; + if (get_bulk_upload_expected_cost(filtered_filenames, expected_upload_cost, expected_upload_count, bvh_count)) { LLSD args; args["COST"] = expected_upload_cost; - args["COUNT"] = (S32) filtered_filenames.size(); + args["COUNT"] = expected_upload_count; LLNotificationsUtil::add("BulkUploadCostConfirmation", args, LLSD(), boost::bind(do_bulk_upload, filtered_filenames, _1, _2)); + + if (filtered_filenames.size() > expected_upload_count) + { + if (bvh_count == filtered_filenames.size() - expected_upload_count) + { + LLNotificationsUtil::add("DoNotSupportBulkAnimationUpload"); + } + else + { + LLNotificationsUtil::add("BulkUploadIncompatibleFiles"); + } + } + } + else if (bvh_count == filtered_filenames.size()) + { + LLNotificationsUtil::add("DoNotSupportBulkAnimationUpload"); } + else + { + LLNotificationsUtil::add("BulkUploadNoCompatibleFiles"); + } + } class LLFileUploadImage : public view_listener_t diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index d6b93cb42e..5557f07dfc 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -8492,6 +8492,26 @@ This will upload [COUNT] items at a total cost of L$[COST]. Do you wish to conti name="okcancelbuttons" notext="Cancel" yestext="Upload"/> + </notification> + + <notification + icon="alertmodal.tga" + name="BulkUploadNoCompatibleFiles" + type="alertmodal"> +Selected files can not be bulk-uploaded. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" + name="BulkUploadIncompatibleFiles" + type="alertmodal"> +Some of the selected files can not be bulk-uploaded. + <usetemplate + name="okbutton" + yestext="OK"/> </notification> <notification |