summaryrefslogtreecommitdiff
path: root/indra/newview/llfloaterbulkupload.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfloaterbulkupload.cpp')
-rw-r--r--indra/newview/llfloaterbulkupload.cpp136
1 files changed, 136 insertions, 0 deletions
diff --git a/indra/newview/llfloaterbulkupload.cpp b/indra/newview/llfloaterbulkupload.cpp
new file mode 100644
index 0000000000..b898cb28b6
--- /dev/null
+++ b/indra/newview/llfloaterbulkupload.cpp
@@ -0,0 +1,136 @@
+/**
+ * @file llfloaterbulkupload.cpp
+ * @author Andrey Kleshchev
+ * @brief LLFloaterBulkUpload class implementation
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, 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 "llfloaterbulkupload.h"
+
+#include "lltextbox.h"
+#include "llviewercontrol.h"
+#include "llviewermenufile.h"
+
+constexpr S32 MAX_HEIGH = 211;
+
+LLFloaterBulkUpload::LLFloaterBulkUpload(const LLSD& key)
+: LLModalDialog(key, true)
+{
+ mUploadCost = key["upload_cost"].asInteger();
+ mUploadCount = key["upload_count"].asInteger();
+ mHas2kTextures = key["has_2k_textures"].asBoolean();
+ if (key["files"].isArray())
+ {
+ const LLSD& files = key["files"];
+ for (LLSD::array_const_iterator it = files.beginArray();
+ it != files.endArray();
+ ++it)
+ {
+ mFiles.push_back(it->asString());
+ }
+ }
+}
+
+LLFloaterBulkUpload::~LLFloaterBulkUpload()
+{
+}
+
+bool LLFloaterBulkUpload::postBuild()
+{
+ childSetAction("upload_btn", [this](void*) { onClickUpload(); }, this);
+ childSetAction("cancel_btn", [this](void*) { onClickCancel(); }, this);
+
+ mCountLabel = getChild<LLTextBox>("number_of_items", true);
+ mCostLabel = getChild<LLTextBox>("upload_cost", true);
+
+ mCheckboxPanel = getChild<LLPanel>("checkbox_panel", true);
+ mLinkPanel = getChild<LLPanel>("link_panel", true);
+ mWarningPanel = getChild<LLPanel>("warning_panel", true);
+
+ mCheckboxUpload2K = getChild<LLUICtrl>("upload_2k");
+ mCheckboxUpload2K->setCommitCallback([this](LLUICtrl* ctrl, const LLSD& data) { onUpload2KCheckBox(); });
+
+ mAllow2kTextures = gSavedSettings.getBOOL("BulkUpload2KTextures");
+ mCheckboxUpload2K->setValue(!mAllow2kTextures);
+
+ if (!mAllow2kTextures && mHas2kTextures)
+ {
+ // provided cost is for 2K textures, recalculate cost
+ S32 bvh_count;
+ S32 textures_2k_count;
+ get_bulk_upload_expected_cost(mFiles, mAllow2kTextures, mUploadCost, mUploadCount, bvh_count, textures_2k_count);
+
+ update();
+ }
+
+
+ update();
+
+ return LLModalDialog::postBuild();
+}
+
+void LLFloaterBulkUpload::update()
+{
+ mCountLabel->setTextArg("[COUNT]", llformat("%d", mUploadCount));
+ mCostLabel->setTextArg("[COST]", llformat("%d", mUploadCost));
+
+ mCheckboxPanel->setVisible(mHas2kTextures);
+ mLinkPanel->setVisible(mHas2kTextures);
+ mWarningPanel->setVisible(mHas2kTextures);
+
+ S32 new_height = MAX_HEIGH;
+ if (!mHas2kTextures)
+ {
+ new_height -= mCheckboxPanel->getRect().getHeight();
+ new_height -= mLinkPanel->getRect().getHeight();
+ new_height -= mWarningPanel->getRect().getHeight();
+ }
+ reshape(getRect().getWidth(), new_height, false);
+}
+
+void LLFloaterBulkUpload::onUpload2KCheckBox()
+{
+ mAllow2kTextures = !mCheckboxUpload2K->getValue().asBoolean();
+ gSavedSettings.setBOOL("BulkUpload2KTextures", mAllow2kTextures);
+
+ S32 bvh_count;
+ S32 textures_2k_count;
+ get_bulk_upload_expected_cost(mFiles, mAllow2kTextures, mUploadCost, mUploadCount, bvh_count, textures_2k_count);
+ // keep old value of mHas2kTextures to show checkbox
+
+ update();
+}
+
+void LLFloaterBulkUpload::onClickUpload()
+{
+ do_bulk_upload(mFiles, mAllow2kTextures);
+ closeFloater();
+}
+
+
+void LLFloaterBulkUpload::onClickCancel()
+{
+ closeFloater();
+}