Add Allow exportation checkbox to Default Upload Permissions floater.

Setting is per account and defaults to false.
This commit is contained in:
Lirusaito
2013-02-17 00:07:13 -05:00
committed by Melanie
parent e7cf0b716d
commit d5e6f9950d
4 changed files with 70 additions and 20 deletions

View File

@@ -41,6 +41,33 @@
#include "lluictrlfactory.h"
#include "llpermissions.h"
namespace
{
bool everyone_export;
void handle_checkboxes(LLUICtrl* ctrl, const LLSD& value)
{
LLPanel* view = static_cast<LLPanel*>(ctrl->getParent());
if (ctrl->getName() == "everyone_export")
{
view->childSetEnabled("next_owner_copy", !value);
view->childSetEnabled("next_owner_modify", !value);
view->childSetEnabled("next_owner_transfer", !value);
}
else
{
if (ctrl->getName() == "next_owner_copy")
{
if (!value) // Implements fair use
gSavedSettings.setBOOL("NextOwnerTransfer", true);
view->childSetEnabled("next_owner_transfer", value);
}
if (!value) // If any of these are unchecked, export can no longer be checked.
view->childSetEnabled("everyone_export", false);
else // TODO: Implement Simulator Feature for Export.
view->childSetEnabled("everyone_export", /*simSupportsExport() &&*/ (LLFloaterPerms::getNextOwnerPerms() & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED);
}
}
}
LLFloaterPerms::LLFloaterPerms(const LLSD& seed)
{
@@ -49,11 +76,30 @@ LLFloaterPerms::LLFloaterPerms(const LLSD& seed)
BOOL LLFloaterPerms::postBuild()
{
childSetEnabled("next_owner_transfer", gSavedSettings.getBOOL("NextOwnerCopy"));
//handle_checkboxes
{
bool export_support = true; //simSupportsExport(); // TODO: Implement Simulator Feature for Export.
const U32 next_owner_perms = getNextOwnerPerms();
childSetEnabled("everyone_export", export_support && (next_owner_perms & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED);
if (!next_owner_perms & PERM_COPY)
childSetEnabled("next_owner_transfer", false);
else if (export_support)
{
bool export_off = !gSavedPerAccountSettings.getBOOL("EveryoneExport");
childSetEnabled("next_owner_copy", export_off);
childSetEnabled("next_owner_modify", export_off);
childSetEnabled("next_owner_transfer", export_off);
}
else // Set EveryoneExport false, just in case.
gSavedPerAccountSettings.setBOOL("EveryoneExport", false);
}
childSetAction("help", onClickHelp, this);
childSetAction("ok", onClickOK, this);
childSetAction("cancel", onClickCancel, this);
childSetCommitCallback("next_owner_copy", &onCommitCopy, this);
getChild<LLUICtrl>("next_owner_copy")->setCommitCallback(handle_checkboxes);
getChild<LLUICtrl>("next_owner_modify")->setCommitCallback(handle_checkboxes);
getChild<LLUICtrl>("next_owner_transfer")->setCommitCallback(handle_checkboxes);
getChild<LLUICtrl>("everyone_export")->setCommitCallback(handle_checkboxes);
refresh();
@@ -76,20 +122,6 @@ void LLFloaterPerms::onClickCancel(void* data)
self->close();
}
//static
void LLFloaterPerms::onCommitCopy(LLUICtrl* ctrl, void* data)
{
LLFloaterPerms* self = static_cast<LLFloaterPerms*>(data);
// Implements fair use
BOOL copyable = gSavedSettings.getBOOL("NextOwnerCopy");
if(!copyable)
{
gSavedSettings.setBOOL("NextOwnerTransfer", TRUE);
}
LLCheckBoxCtrl* xfer = self->getChild<LLCheckBoxCtrl>("next_owner_transfer");
xfer->setEnabled(copyable);
}
void LLFloaterPerms::ok()
{
refresh(); // Changes were already applied to saved settings. Refreshing internal values makes it official.
@@ -102,6 +134,7 @@ void LLFloaterPerms::cancel()
gSavedSettings.setBOOL("NextOwnerCopy", mNextOwnerCopy);
gSavedSettings.setBOOL("NextOwnerModify", mNextOwnerModify);
gSavedSettings.setBOOL("NextOwnerTransfer", mNextOwnerTransfer);
gSavedPerAccountSettings.setBOOL("EveryoneExport", everyone_export);
}
void LLFloaterPerms::refresh()
@@ -111,6 +144,7 @@ void LLFloaterPerms::refresh()
mNextOwnerCopy = gSavedSettings.getBOOL("NextOwnerCopy");
mNextOwnerModify = gSavedSettings.getBOOL("NextOwnerModify");
mNextOwnerTransfer = gSavedSettings.getBOOL("NextOwnerTransfer");
everyone_export = gSavedPerAccountSettings.getBOOL("EveryoneExport");
}
void LLFloaterPerms::onClose(bool app_quitting)
@@ -130,7 +164,12 @@ U32 LLFloaterPerms::getGroupPerms(std::string prefix)
//static
U32 LLFloaterPerms::getEveryonePerms(std::string prefix)
{
return gSavedSettings.getBOOL(prefix+"EveryoneCopy") ? PERM_COPY : PERM_NONE;
U32 flags = PERM_NONE;
if (prefix.empty() && gSavedPerAccountSettings.getBOOL("EveryoneExport")) // TODO: Bulk enable export?
flags |= PERM_EXPORT;
if (gSavedSettings.getBOOL(prefix+"EveryoneCopy"))
flags |= PERM_COPY;
return flags;
}
//static