Remove more old stuff
This commit is contained in:
@@ -115,7 +115,6 @@ set(viewer_SOURCE_FILES
|
|||||||
llanimstatelabels.cpp
|
llanimstatelabels.cpp
|
||||||
llappearancemgr.cpp
|
llappearancemgr.cpp
|
||||||
llappviewer.cpp
|
llappviewer.cpp
|
||||||
llassetconverter.cpp
|
|
||||||
llassetuploadqueue.cpp
|
llassetuploadqueue.cpp
|
||||||
llassetuploadresponders.cpp
|
llassetuploadresponders.cpp
|
||||||
llattachmentsmgr.cpp
|
llattachmentsmgr.cpp
|
||||||
@@ -304,7 +303,6 @@ set(viewer_SOURCE_FILES
|
|||||||
llinventorypanel.cpp
|
llinventorypanel.cpp
|
||||||
lljoystickbutton.cpp
|
lljoystickbutton.cpp
|
||||||
lllandmarklist.cpp
|
lllandmarklist.cpp
|
||||||
lllocalinventory.cpp
|
|
||||||
lllogchat.cpp
|
lllogchat.cpp
|
||||||
llloginhandler.cpp
|
llloginhandler.cpp
|
||||||
llmainlooprepeater.cpp
|
llmainlooprepeater.cpp
|
||||||
@@ -620,7 +618,6 @@ set(viewer_HEADER_FILES
|
|||||||
llappearance.h
|
llappearance.h
|
||||||
llappearancemgr.h
|
llappearancemgr.h
|
||||||
llappviewer.h
|
llappviewer.h
|
||||||
llassetconverter.h
|
|
||||||
llassetuploadqueue.h
|
llassetuploadqueue.h
|
||||||
llassetuploadresponders.h
|
llassetuploadresponders.h
|
||||||
llattachmentsmgr.h
|
llattachmentsmgr.h
|
||||||
@@ -809,7 +806,6 @@ set(viewer_HEADER_FILES
|
|||||||
lljoystickbutton.h
|
lljoystickbutton.h
|
||||||
lllandmarklist.h
|
lllandmarklist.h
|
||||||
lllightconstants.h
|
lllightconstants.h
|
||||||
lllocalinventory.h
|
|
||||||
lllogchat.h
|
lllogchat.h
|
||||||
llloginhandler.h
|
llloginhandler.h
|
||||||
llmainlooprepeater.h
|
llmainlooprepeater.h
|
||||||
|
|||||||
@@ -235,28 +235,6 @@
|
|||||||
<key>Value</key>
|
<key>Value</key>
|
||||||
<real>0.0</real>
|
<real>0.0</real>
|
||||||
</map>
|
</map>
|
||||||
<key>AscentUseSystemFolder</key>
|
|
||||||
<map>
|
|
||||||
<key>Comment</key>
|
|
||||||
<string>Enables the System folder for setting and non-permanent asset storage.</string>
|
|
||||||
<key>Persist</key>
|
|
||||||
<integer>1</integer>
|
|
||||||
<key>Type</key>
|
|
||||||
<string>Boolean</string>
|
|
||||||
<key>Value</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
</map>
|
|
||||||
<key>AscentSystemTemporary</key>
|
|
||||||
<map>
|
|
||||||
<key>Comment</key>
|
|
||||||
<string>When enabled, temporary uploads are put in the System Asset folder (if System Folder exists).</string>
|
|
||||||
<key>Persist</key>
|
|
||||||
<integer>1</integer>
|
|
||||||
<key>Type</key>
|
|
||||||
<string>Boolean</string>
|
|
||||||
<key>Value</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
</map>
|
|
||||||
<key>AscentShowFriendsTag</key>
|
<key>AscentShowFriendsTag</key>
|
||||||
<map>
|
<map>
|
||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
|
|||||||
@@ -223,8 +223,8 @@ void LLPrefsAscentSys::refreshValues()
|
|||||||
{
|
{
|
||||||
//General -----------------------------------------------------------------------------
|
//General -----------------------------------------------------------------------------
|
||||||
mDoubleClickTeleport = gSavedSettings.getBOOL("DoubleClickTeleport");
|
mDoubleClickTeleport = gSavedSettings.getBOOL("DoubleClickTeleport");
|
||||||
mResetCameraAfterTP = gSavedSettings.getBOOL("OptionRotateCamAfterLocalTP");
|
mResetCameraAfterTP = gSavedSettings.getBOOL("OptionRotateCamAfterLocalTP");
|
||||||
mOffsetTPByUserHeight = gSavedSettings.getBOOL("OptionOffsetTPByAgentHeight");
|
mOffsetTPByUserHeight = gSavedSettings.getBOOL("OptionOffsetTPByAgentHeight");
|
||||||
mClearBeaconAfterTeleport = gSavedSettings.getBOOL("ClearBeaconAfterTeleport");
|
mClearBeaconAfterTeleport = gSavedSettings.getBOOL("ClearBeaconAfterTeleport");
|
||||||
mLiruFlyAfterTeleport = gSavedSettings.getBOOL("LiruFlyAfterTeleport");
|
mLiruFlyAfterTeleport = gSavedSettings.getBOOL("LiruFlyAfterTeleport");
|
||||||
mLiruContinueFlying = gSavedSettings.getBOOL("LiruContinueFlyingOnUnsit");
|
mLiruContinueFlying = gSavedSettings.getBOOL("LiruContinueFlyingOnUnsit");
|
||||||
@@ -235,14 +235,12 @@ void LLPrefsAscentSys::refreshValues()
|
|||||||
mAlwaysShowFly = gSavedSettings.getBOOL("AscentFlyAlwaysEnabled");
|
mAlwaysShowFly = gSavedSettings.getBOOL("AscentFlyAlwaysEnabled");
|
||||||
mDisableMinZoom = gSavedSettings.getBOOL("AscentDisableMinZoomDist");
|
mDisableMinZoom = gSavedSettings.getBOOL("AscentDisableMinZoomDist");
|
||||||
mPowerUser = gSavedSettings.getBOOL("AscentPowerfulWizard");
|
mPowerUser = gSavedSettings.getBOOL("AscentPowerfulWizard");
|
||||||
mUseSystemFolder = gSavedSettings.getBOOL("AscentUseSystemFolder");
|
|
||||||
mUploadToSystem = gSavedSettings.getBOOL("AscentSystemTemporary");
|
|
||||||
mFetchInventoryOnLogin = gSavedSettings.getBOOL("FetchInventoryOnLogin");
|
mFetchInventoryOnLogin = gSavedSettings.getBOOL("FetchInventoryOnLogin");
|
||||||
mEnableLLWind = gSavedSettings.getBOOL("WindEnabled");
|
mEnableLLWind = gSavedSettings.getBOOL("WindEnabled");
|
||||||
mEnableClouds = gSavedSettings.getBOOL("CloudsEnabled");
|
mEnableClouds = gSavedSettings.getBOOL("CloudsEnabled");
|
||||||
mEnableClassicClouds = gSavedSettings.getBOOL("SkyUseClassicClouds");
|
mEnableClassicClouds = gSavedSettings.getBOOL("SkyUseClassicClouds");
|
||||||
mSpeedRez = gSavedSettings.getBOOL("SpeedRez");
|
mSpeedRez = gSavedSettings.getBOOL("SpeedRez");
|
||||||
mSpeedRezInterval = gSavedSettings.getU32("SpeedRezInterval");
|
mSpeedRezInterval = gSavedSettings.getU32("SpeedRezInterval");
|
||||||
|
|
||||||
//Command Line ------------------------------------------------------------------------
|
//Command Line ------------------------------------------------------------------------
|
||||||
mCmdLine = gSavedSettings.getBOOL("AscentCmdLine");
|
mCmdLine = gSavedSettings.getBOOL("AscentCmdLine");
|
||||||
@@ -303,7 +301,6 @@ void LLPrefsAscentSys::refresh()
|
|||||||
childSetEnabled("offset_teleport_check", mDoubleClickTeleport);
|
childSetEnabled("offset_teleport_check", mDoubleClickTeleport);
|
||||||
childSetValue("power_user_check", mPowerUser);
|
childSetValue("power_user_check", mPowerUser);
|
||||||
childSetValue("power_user_confirm_check", mPowerUser);
|
childSetValue("power_user_confirm_check", mPowerUser);
|
||||||
childSetEnabled("temp_in_system_check", mUseSystemFolder);
|
|
||||||
childSetEnabled("speed_rez_interval", mSpeedRez);
|
childSetEnabled("speed_rez_interval", mSpeedRez);
|
||||||
childSetEnabled("speed_rez_seconds", mSpeedRez);
|
childSetEnabled("speed_rez_seconds", mSpeedRez);
|
||||||
|
|
||||||
@@ -377,8 +374,8 @@ void LLPrefsAscentSys::cancel()
|
|||||||
{
|
{
|
||||||
//General -----------------------------------------------------------------------------
|
//General -----------------------------------------------------------------------------
|
||||||
gSavedSettings.setBOOL("DoubleClickTeleport", mDoubleClickTeleport);
|
gSavedSettings.setBOOL("DoubleClickTeleport", mDoubleClickTeleport);
|
||||||
gSavedSettings.setBOOL("OptionRotateCamAfterLocalTP", mResetCameraAfterTP);
|
gSavedSettings.setBOOL("OptionRotateCamAfterLocalTP", mResetCameraAfterTP);
|
||||||
gSavedSettings.setBOOL("OptionOffsetTPByAgentHeight", mOffsetTPByUserHeight);
|
gSavedSettings.setBOOL("OptionOffsetTPByAgentHeight", mOffsetTPByUserHeight);
|
||||||
gSavedSettings.setBOOL("ClearBeaconAfterTeleport", mClearBeaconAfterTeleport);
|
gSavedSettings.setBOOL("ClearBeaconAfterTeleport", mClearBeaconAfterTeleport);
|
||||||
gSavedSettings.setBOOL("LiruFlyAfterTeleport", mLiruFlyAfterTeleport);
|
gSavedSettings.setBOOL("LiruFlyAfterTeleport", mLiruFlyAfterTeleport);
|
||||||
gSavedSettings.setBOOL("LiruContinueFlyingOnUnsit", mLiruContinueFlying);
|
gSavedSettings.setBOOL("LiruContinueFlyingOnUnsit", mLiruContinueFlying);
|
||||||
@@ -388,14 +385,12 @@ void LLPrefsAscentSys::cancel()
|
|||||||
gSavedSettings.setBOOL("AscentBuildAlwaysEnabled", mBuildAlwaysEnabled);
|
gSavedSettings.setBOOL("AscentBuildAlwaysEnabled", mBuildAlwaysEnabled);
|
||||||
gSavedSettings.setBOOL("AscentFlyAlwaysEnabled", mAlwaysShowFly);
|
gSavedSettings.setBOOL("AscentFlyAlwaysEnabled", mAlwaysShowFly);
|
||||||
gSavedSettings.setBOOL("AscentDisableMinZoomDist", mDisableMinZoom);
|
gSavedSettings.setBOOL("AscentDisableMinZoomDist", mDisableMinZoom);
|
||||||
gSavedSettings.setBOOL("AscentUseSystemFolder", mUseSystemFolder);
|
|
||||||
gSavedSettings.setBOOL("AscentSystemTemporary", mUploadToSystem);
|
|
||||||
gSavedSettings.setBOOL("FetchInventoryOnLogin", mFetchInventoryOnLogin);
|
gSavedSettings.setBOOL("FetchInventoryOnLogin", mFetchInventoryOnLogin);
|
||||||
gSavedSettings.setBOOL("WindEnabled", mEnableLLWind);
|
gSavedSettings.setBOOL("WindEnabled", mEnableLLWind);
|
||||||
gSavedSettings.setBOOL("CloudsEnabled", mEnableClouds);
|
gSavedSettings.setBOOL("CloudsEnabled", mEnableClouds);
|
||||||
gSavedSettings.setBOOL("SkyUseClassicClouds", mEnableClassicClouds);
|
gSavedSettings.setBOOL("SkyUseClassicClouds", mEnableClassicClouds);
|
||||||
gSavedSettings.setBOOL("SpeedRez", mSpeedRez);
|
gSavedSettings.setBOOL("SpeedRez", mSpeedRez);
|
||||||
gSavedSettings.setU32("SpeedRezInterval", mSpeedRezInterval);
|
gSavedSettings.setU32("SpeedRezInterval", mSpeedRezInterval);
|
||||||
|
|
||||||
//Command Line ------------------------------------------------------------------------
|
//Command Line ------------------------------------------------------------------------
|
||||||
gSavedSettings.setBOOL("AscentCmdLine", mCmdLine);
|
gSavedSettings.setBOOL("AscentCmdLine", mCmdLine);
|
||||||
|
|||||||
@@ -54,8 +54,8 @@ protected:
|
|||||||
|
|
||||||
//General -----------------------------------------------------------------------------
|
//General -----------------------------------------------------------------------------
|
||||||
BOOL mDoubleClickTeleport;
|
BOOL mDoubleClickTeleport;
|
||||||
BOOL mResetCameraAfterTP;
|
BOOL mResetCameraAfterTP;
|
||||||
BOOL mOffsetTPByUserHeight;
|
BOOL mOffsetTPByUserHeight;
|
||||||
bool mClearBeaconAfterTeleport;
|
bool mClearBeaconAfterTeleport;
|
||||||
bool mLiruFlyAfterTeleport;
|
bool mLiruFlyAfterTeleport;
|
||||||
bool mLiruContinueFlying;
|
bool mLiruContinueFlying;
|
||||||
@@ -66,14 +66,12 @@ protected:
|
|||||||
BOOL mAlwaysShowFly;
|
BOOL mAlwaysShowFly;
|
||||||
BOOL mDisableMinZoom;
|
BOOL mDisableMinZoom;
|
||||||
BOOL mPowerUser;
|
BOOL mPowerUser;
|
||||||
BOOL mUseSystemFolder;
|
|
||||||
BOOL mUploadToSystem;
|
|
||||||
BOOL mFetchInventoryOnLogin;
|
BOOL mFetchInventoryOnLogin;
|
||||||
BOOL mEnableLLWind;
|
BOOL mEnableLLWind;
|
||||||
BOOL mEnableClouds;
|
BOOL mEnableClouds;
|
||||||
BOOL mEnableClassicClouds;
|
BOOL mEnableClassicClouds;
|
||||||
BOOL mSpeedRez;
|
BOOL mSpeedRez;
|
||||||
U32 mSpeedRezInterval;
|
U32 mSpeedRezInterval;
|
||||||
|
|
||||||
//Command Line ------------------------------------------------------------------------
|
//Command Line ------------------------------------------------------------------------
|
||||||
BOOL mCmdLine;
|
BOOL mCmdLine;
|
||||||
|
|||||||
@@ -1,112 +0,0 @@
|
|||||||
// <edit>
|
|
||||||
#include "llviewerprecompiledheaders.h"
|
|
||||||
#include "llvfs.h"
|
|
||||||
#include "llapr.h"
|
|
||||||
#include "llvfile.h"
|
|
||||||
#include "llassetconverter.h"
|
|
||||||
#include "llviewertexturelist.h"
|
|
||||||
#include "llvorbisencode.h"
|
|
||||||
#include "llwearable.h"
|
|
||||||
#include "llbvhloader.h"
|
|
||||||
#include <boost/bind.hpp>
|
|
||||||
struct conversion_s
|
|
||||||
{
|
|
||||||
std::string extension;
|
|
||||||
LLAssetType::EType type;
|
|
||||||
boost::function<bool(const std::string&, const std::string&)> conv_fn;
|
|
||||||
}conversion_list[] =
|
|
||||||
{
|
|
||||||
{ "bmp", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_BMP) },
|
|
||||||
{ "tga", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_TGA) },
|
|
||||||
{ "jpg", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_JPEG)},
|
|
||||||
{ "jpeg", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_JPEG)},
|
|
||||||
{ "png", LLAssetType::AT_TEXTURE, boost::bind(&LLViewerTextureList::createUploadFile,_1,_2,IMG_CODEC_PNG) },
|
|
||||||
{ "jp2", LLAssetType::AT_TEXTURE, &LLAssetConverter::copyFile },
|
|
||||||
{ "j2k", LLAssetType::AT_TEXTURE, &LLAssetConverter::copyFile },
|
|
||||||
{ "j2c", LLAssetType::AT_TEXTURE, &LLAssetConverter::copyFile },
|
|
||||||
{ "wav", LLAssetType::AT_SOUND, &encode_vorbis_file },
|
|
||||||
{ "ogg", LLAssetType::AT_SOUND, &LLAssetConverter::copyFile },
|
|
||||||
{ "bvh", LLAssetType::AT_ANIMATION, &LLAssetConverter::copyBVH },
|
|
||||||
{ "animatn", LLAssetType::AT_ANIMATION, &LLAssetConverter::copyFile },
|
|
||||||
{ "gesture", LLAssetType::AT_GESTURE, &LLAssetConverter::copyFile },
|
|
||||||
{ "notecard", LLAssetType::AT_NOTECARD, &LLAssetConverter::copyFile },
|
|
||||||
{ "lsl", LLAssetType::AT_LSL_TEXT, &LLAssetConverter::copyFile },
|
|
||||||
//tmp ?
|
|
||||||
};
|
|
||||||
|
|
||||||
// static
|
|
||||||
extern std::string STATUS[];
|
|
||||||
LLAssetType::EType LLAssetConverter::convert(const std::string &src_filename, const std::string &filename)
|
|
||||||
{
|
|
||||||
std::string exten = gDirUtilp->getExtension(src_filename);
|
|
||||||
for(U32 i = 0;i < sizeof(conversion_list) / sizeof(conversion_list[0]); ++i)
|
|
||||||
{
|
|
||||||
if(conversion_list[i].extension == exten)
|
|
||||||
{
|
|
||||||
return conversion_list[i].conv_fn(src_filename, filename) ?
|
|
||||||
conversion_list[i].type : LLAssetType::AT_NONE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
LLWearableType::EType wear_type = LLWearableType::typeNameToType(exten);
|
|
||||||
if(wear_type != LLWearableType::WT_NONE && copyFile(src_filename, filename))
|
|
||||||
{
|
|
||||||
return LLWearableType::getAssetType(wear_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
llwarns << "Unhandled extension" << llendl;
|
|
||||||
return LLAssetType::AT_NONE;
|
|
||||||
}
|
|
||||||
bool LLAssetConverter::copyFile(const std::string &src_filename, const std::string &dst_filename)
|
|
||||||
{
|
|
||||||
S32 src_size;
|
|
||||||
|
|
||||||
LLAPRFile src_fp(src_filename, LL_APR_RB, &src_size);
|
|
||||||
if(!src_fp.getFileHandle()) return false;
|
|
||||||
|
|
||||||
LLAPRFile dst_fp(dst_filename, LL_APR_WB);
|
|
||||||
if(!dst_fp.getFileHandle()) return false;
|
|
||||||
|
|
||||||
std::vector<char> buffer(src_size + 1);
|
|
||||||
|
|
||||||
src_fp.read(&buffer[0], src_size);
|
|
||||||
dst_fp.write(&buffer[0], src_size);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
bool LLAssetConverter::copyBVH(const std::string &src_filename, const std::string &dst_filename)
|
|
||||||
{
|
|
||||||
S32 file_size;
|
|
||||||
|
|
||||||
LLAPRFile fp(src_filename, LL_APR_RB, &file_size);
|
|
||||||
if(!fp.getFileHandle()) return false;
|
|
||||||
|
|
||||||
std::vector<char> buffer(file_size + 1);
|
|
||||||
|
|
||||||
ELoadStatus load_status = E_ST_OK;
|
|
||||||
S32 line_number = 0;
|
|
||||||
|
|
||||||
LLBVHLoader* loaderp = new LLBVHLoader(&buffer[0], load_status, line_number);
|
|
||||||
|
|
||||||
if(load_status == E_ST_NO_XLT_FILE)
|
|
||||||
{
|
|
||||||
llwarns << "NOTE: No translation table found." << llendl;
|
|
||||||
}
|
|
||||||
else if(load_status != E_ST_OK)
|
|
||||||
{
|
|
||||||
llwarns << "ERROR: [line: " << line_number << "] " << STATUS[load_status].c_str() << llendl;
|
|
||||||
}
|
|
||||||
|
|
||||||
buffer.resize(loaderp->getOutputSize());
|
|
||||||
|
|
||||||
LLDataPackerBinaryBuffer dp((U8*)&buffer[0], buffer.size());
|
|
||||||
loaderp->serialize(dp);
|
|
||||||
|
|
||||||
delete loaderp;
|
|
||||||
|
|
||||||
LLAPRFile apr_file(dst_filename, LL_APR_RB, &file_size);
|
|
||||||
if(!apr_file.getFileHandle()) return false;
|
|
||||||
|
|
||||||
apr_file.write(&buffer[0], buffer.size());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// </edit>
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
// <edit>
|
|
||||||
#ifndef LL_LLASSETCONVERTER_H
|
|
||||||
#define LL_LLASSETCONVERTER_H
|
|
||||||
|
|
||||||
#include "llcommon.h"
|
|
||||||
#include "llassettype.h"
|
|
||||||
|
|
||||||
class LLAssetConverter
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
static LLAssetType::EType convert(const std::string &src_filename, const std::string &filename);
|
|
||||||
static bool copyFile(const std::string &src_filename, const std::string &dest_filename);
|
|
||||||
static bool copyBVH(const std::string &src_filename, const std::string &dst_filename);
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
// </edit>
|
|
||||||
@@ -6,7 +6,6 @@
|
|||||||
#include "llscrolllistctrl.h"
|
#include "llscrolllistctrl.h"
|
||||||
#include "llfloaterbvhpreview.h"
|
#include "llfloaterbvhpreview.h"
|
||||||
#include "llvoavatar.h"
|
#include "llvoavatar.h"
|
||||||
#include "lllocalinventory.h"
|
|
||||||
#include "llviewercamera.h"
|
#include "llviewercamera.h"
|
||||||
#include "llviewerwindow.h"
|
#include "llviewerwindow.h"
|
||||||
#include "lltoolmgr.h"
|
#include "lltoolmgr.h"
|
||||||
|
|||||||
@@ -1,561 +0,0 @@
|
|||||||
// <edit>
|
|
||||||
#include "llviewerprecompiledheaders.h"
|
|
||||||
|
|
||||||
#include "lllocalinventory.h"
|
|
||||||
|
|
||||||
#include "llviewerinventory.h"
|
|
||||||
#include "llviewercontrol.h"
|
|
||||||
|
|
||||||
#include "llpreviewsound.h"
|
|
||||||
#include "llpreviewanim.h"
|
|
||||||
#include "llpreviewtexture.h"
|
|
||||||
#include "llpreviewgesture.h"
|
|
||||||
#include "llpreviewlandmark.h"
|
|
||||||
|
|
||||||
#include "llappviewer.h"
|
|
||||||
|
|
||||||
#include "lluictrlfactory.h"
|
|
||||||
#include "llcombobox.h"
|
|
||||||
#include "llnotificationsutil.h"
|
|
||||||
|
|
||||||
#include "llagent.h" // gAgent
|
|
||||||
#include "llviewerwindow.h" // alertXml
|
|
||||||
|
|
||||||
|
|
||||||
LLUUID LLLocalInventory::addItem(std::string name, int type, LLUUID asset_id, bool open_automatically)
|
|
||||||
{
|
|
||||||
LLUUID item_id = addItem(name, type, asset_id);
|
|
||||||
if(open_automatically) open(item_id);
|
|
||||||
return item_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
LLUUID LLLocalInventory::addItem(std::string name, int type, LLUUID asset_id)
|
|
||||||
{
|
|
||||||
LLUUID item_id;
|
|
||||||
item_id.generate();
|
|
||||||
LLPermissions* perms = new LLPermissions();
|
|
||||||
perms->set(LLPermissions::DEFAULT);
|
|
||||||
perms->setOwnerAndGroup(LLUUID::null, LLUUID::null, LLUUID::null, false);
|
|
||||||
perms->setMaskBase(0);
|
|
||||||
perms->setMaskEveryone(0);
|
|
||||||
perms->setMaskGroup(0);
|
|
||||||
perms->setMaskNext(0);
|
|
||||||
perms->setMaskOwner(0);
|
|
||||||
LLViewerInventoryItem* item = new LLViewerInventoryItem(
|
|
||||||
item_id,
|
|
||||||
gSystemFolderAssets,
|
|
||||||
*perms,
|
|
||||||
asset_id,
|
|
||||||
(LLAssetType::EType)type,
|
|
||||||
(LLInventoryType::EType)type,
|
|
||||||
name,
|
|
||||||
"",
|
|
||||||
LLSaleInfo::DEFAULT,
|
|
||||||
0,
|
|
||||||
time_corrected());
|
|
||||||
addItem(item);
|
|
||||||
return item_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
void LLLocalInventory::addItem(LLViewerInventoryItem* item)
|
|
||||||
{
|
|
||||||
//gInventory.addPretendItem(item);
|
|
||||||
LLInventoryModel::update_map_t update;
|
|
||||||
++update[item->getParentUUID()];
|
|
||||||
gInventory.accountForUpdate(update);
|
|
||||||
gInventory.updateItem(item);
|
|
||||||
gInventory.notifyObservers();
|
|
||||||
}
|
|
||||||
|
|
||||||
void LLLocalInventory::open(LLUUID item_id)
|
|
||||||
{
|
|
||||||
LLViewerInventoryItem* item = gInventory.getItem(item_id);
|
|
||||||
if(!item)
|
|
||||||
{
|
|
||||||
llwarns << "Trying to open non-existent item" << llendl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
LLAssetType::EType type = item->getType();
|
|
||||||
|
|
||||||
if(type == LLAssetType::AT_SOUND)
|
|
||||||
{
|
|
||||||
S32 left, top;
|
|
||||||
gFloaterView->getNewFloaterPosition(&left, &top);
|
|
||||||
LLRect rect = gSavedSettings.getRect("PreviewSoundRect");
|
|
||||||
rect.translate(left - rect.mLeft, top - rect.mTop);
|
|
||||||
LLPreviewSound* floaterp;
|
|
||||||
floaterp = new LLPreviewSound("Preview sound",
|
|
||||||
rect,
|
|
||||||
"",
|
|
||||||
item_id);
|
|
||||||
floaterp->setFocus(TRUE);
|
|
||||||
gFloaterView->adjustToFitScreen(floaterp, FALSE);
|
|
||||||
}
|
|
||||||
else if(type == LLAssetType::AT_ANIMATION)
|
|
||||||
{
|
|
||||||
S32 left, top;
|
|
||||||
gFloaterView->getNewFloaterPosition(&left, &top);
|
|
||||||
LLRect rect = gSavedSettings.getRect("PreviewAnimRect");
|
|
||||||
rect.translate(left - rect.mLeft, top - rect.mTop);
|
|
||||||
LLPreviewAnim* floaterp;
|
|
||||||
floaterp = new LLPreviewAnim("Preview anim",
|
|
||||||
rect,
|
|
||||||
"",
|
|
||||||
item_id,
|
|
||||||
LLPreviewAnim::NONE);
|
|
||||||
floaterp->setFocus(TRUE);
|
|
||||||
gFloaterView->adjustToFitScreen(floaterp, FALSE);
|
|
||||||
}
|
|
||||||
else if(type == LLAssetType::AT_TEXTURE)
|
|
||||||
{
|
|
||||||
S32 left, top;
|
|
||||||
gFloaterView->getNewFloaterPosition(&left, &top);
|
|
||||||
LLRect rect = gSavedSettings.getRect("PreviewTextureRect");
|
|
||||||
rect.translate( left - rect.mLeft, top - rect.mTop );
|
|
||||||
|
|
||||||
LLPreviewTexture* preview;
|
|
||||||
preview = new LLPreviewTexture("preview texture",
|
|
||||||
rect,
|
|
||||||
"Preview texture",
|
|
||||||
item_id,
|
|
||||||
LLUUID::null,
|
|
||||||
FALSE);
|
|
||||||
//preview->setSourceID(source_id);
|
|
||||||
preview->setFocus(TRUE);
|
|
||||||
|
|
||||||
gFloaterView->adjustToFitScreen(preview, FALSE);
|
|
||||||
}
|
|
||||||
else if(type == LLAssetType::AT_GESTURE)
|
|
||||||
{
|
|
||||||
// If only the others were like this
|
|
||||||
LLPreviewGesture::show("preview gesture", item_id, LLUUID::null, TRUE);
|
|
||||||
}
|
|
||||||
else if(type == LLAssetType::AT_LANDMARK)
|
|
||||||
{
|
|
||||||
S32 left, top;
|
|
||||||
gFloaterView->getNewFloaterPosition(&left, &top);
|
|
||||||
LLRect rect = gSavedSettings.getRect("PreviewLandmarkRect");
|
|
||||||
rect.translate( left - rect.mLeft, top - rect.mTop );
|
|
||||||
|
|
||||||
LLPreviewLandmark* preview;
|
|
||||||
preview = new LLPreviewLandmark("preview landmark",
|
|
||||||
rect,
|
|
||||||
"Preview landmark",
|
|
||||||
item_id);
|
|
||||||
preview->setFocus(TRUE);
|
|
||||||
|
|
||||||
gFloaterView->adjustToFitScreen(preview, FALSE);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
llwarns << "Dunno how to open type " << type << llendl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
void LLLocalInventory::loadInvCache(std::string filename)
|
|
||||||
{
|
|
||||||
std::string extension = gDirUtilp->getExtension(filename);
|
|
||||||
std::string inv_filename = filename;
|
|
||||||
if(extension == "gz")
|
|
||||||
{
|
|
||||||
LLUUID random;
|
|
||||||
random.generate();
|
|
||||||
inv_filename = filename.substr(0, filename.length() - 3) + "." + random.asString();
|
|
||||||
|
|
||||||
if(!gunzip_file(filename, inv_filename))
|
|
||||||
{
|
|
||||||
// failure... message?
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LLInventoryModel::cat_array_t cats;
|
|
||||||
LLInventoryModel::item_array_t items;
|
|
||||||
bool is_cache_obsolete = false;
|
|
||||||
if(LLInventoryModel::loadFromFile(inv_filename, cats, items, is_cache_obsolete))
|
|
||||||
{
|
|
||||||
// create a container category for everything
|
|
||||||
LLViewerInventoryCategory* container = new LLViewerInventoryCategory(gAgent.getID());
|
|
||||||
container->rename(gDirUtilp->getBaseFileName(filename, false));
|
|
||||||
LLUUID container_id;
|
|
||||||
container_id.generate();
|
|
||||||
container->setUUID(container_id);
|
|
||||||
container->setParent(gSystemFolderRoot);
|
|
||||||
container->setPreferredType(LLFolderType::FT_NONE);
|
|
||||||
LLInventoryModel::update_map_t container_update;
|
|
||||||
++container_update[container->getParentUUID()];
|
|
||||||
gInventory.accountForUpdate(container_update);
|
|
||||||
gInventory.updateCategory(container);
|
|
||||||
gInventory.notifyObservers();
|
|
||||||
|
|
||||||
LLViewerInventoryCategory* orphaned_items = new LLViewerInventoryCategory(gAgent.getID());
|
|
||||||
orphaned_items->rename("Orphaned Items");
|
|
||||||
LLUUID orphaned_items_id;
|
|
||||||
|
|
||||||
orphaned_items_id.generate();
|
|
||||||
orphaned_items->setUUID(orphaned_items_id);
|
|
||||||
orphaned_items->setParent(container_id);
|
|
||||||
orphaned_items->setPreferredType(LLFolderType::FT_NONE);
|
|
||||||
|
|
||||||
LLInventoryModel::update_map_t orphaned_items_update;
|
|
||||||
++orphaned_items_update[orphaned_items->getParentUUID()];
|
|
||||||
gInventory.accountForUpdate(orphaned_items_update);
|
|
||||||
gInventory.updateCategory(orphaned_items);
|
|
||||||
gInventory.notifyObservers();
|
|
||||||
|
|
||||||
//conflict handling
|
|
||||||
std::map<LLUUID,LLUUID> conflicting_cats;
|
|
||||||
int dropped_cats = 0;
|
|
||||||
int dropped_items = 0;
|
|
||||||
|
|
||||||
// Add all categories
|
|
||||||
LLInventoryModel::cat_array_t::iterator cat_iter = cats.begin();
|
|
||||||
LLInventoryModel::cat_array_t::iterator cat_end = cats.end();
|
|
||||||
for(; cat_iter != cat_end; ++cat_iter)
|
|
||||||
{
|
|
||||||
// Conditionally change its parent
|
|
||||||
// Note: Should I search for missing parent id's?
|
|
||||||
|
|
||||||
//if the parent is null, it goes in the very root of the tree!
|
|
||||||
if((*cat_iter)->getParentUUID().isNull())
|
|
||||||
{
|
|
||||||
(*cat_iter)->setParent(container_id);
|
|
||||||
}
|
|
||||||
// If the parent exists and outside of pretend inventory, generate a new uuid
|
|
||||||
else if(gInventory.getCategory((*cat_iter)->getParentUUID()))
|
|
||||||
{
|
|
||||||
if(!gInventory.isObjectDescendentOf((*cat_iter)->getParentUUID(), gSystemFolderRoot, TRUE))
|
|
||||||
{
|
|
||||||
std::map<LLUUID,LLUUID>::iterator itr = conflicting_cats.find((*cat_iter)->getParentUUID());
|
|
||||||
if(itr == conflicting_cats.end())
|
|
||||||
{
|
|
||||||
dropped_cats++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
(*cat_iter)->setParent(itr->second);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//well balls, this is orphaned.
|
|
||||||
(*cat_iter)->setParent(orphaned_items_id);
|
|
||||||
}
|
|
||||||
// If this category already exists, generate a new uuid
|
|
||||||
if(gInventory.getCategory((*cat_iter)->getUUID()))
|
|
||||||
{
|
|
||||||
LLUUID cat_random;
|
|
||||||
cat_random.generate();
|
|
||||||
conflicting_cats[(*cat_iter)->getUUID()] = cat_random;
|
|
||||||
(*cat_iter)->setUUID(cat_random);
|
|
||||||
}
|
|
||||||
|
|
||||||
LLInventoryModel::update_map_t update;
|
|
||||||
++update[(*cat_iter)->getParentUUID()];
|
|
||||||
gInventory.accountForUpdate(update);
|
|
||||||
gInventory.updateCategory(*cat_iter);
|
|
||||||
gInventory.notifyObservers();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add all items
|
|
||||||
LLInventoryModel::item_array_t::iterator item_iter = items.begin();
|
|
||||||
LLInventoryModel::item_array_t::iterator item_end = items.end();
|
|
||||||
for(; item_iter != item_end; ++item_iter)
|
|
||||||
{
|
|
||||||
// Conditionally change its parent
|
|
||||||
// Note: Should I search for missing parent id's?
|
|
||||||
|
|
||||||
//if the parent is null, it goes in the very root of the tree!
|
|
||||||
if((*item_iter)->getParentUUID().isNull())
|
|
||||||
{
|
|
||||||
(*item_iter)->setParent(container_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the parent exists and outside of pretend inventory, generate a new uuid
|
|
||||||
if(gInventory.getCategory((*item_iter)->getParentUUID()))
|
|
||||||
{
|
|
||||||
if(!gInventory.isObjectDescendentOf((*item_iter)->getParentUUID(), gSystemFolderRoot, TRUE))
|
|
||||||
{
|
|
||||||
std::map<LLUUID,LLUUID>::iterator itr = conflicting_cats.find((*item_iter)->getParentUUID());
|
|
||||||
if(itr == conflicting_cats.end())
|
|
||||||
{
|
|
||||||
dropped_items++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
(*item_iter)->setParent(itr->second);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//well balls, this is orphaned.
|
|
||||||
(*item_iter)->setParent(orphaned_items_id);
|
|
||||||
}
|
|
||||||
// Avoid conflicts with real inventory...
|
|
||||||
// If this item id already exists, generate a new uuid
|
|
||||||
if(gInventory.getItem((*item_iter)->getUUID()))
|
|
||||||
{
|
|
||||||
LLUUID item_random;
|
|
||||||
item_random.generate();
|
|
||||||
(*item_iter)->setUUID(item_random);
|
|
||||||
}
|
|
||||||
|
|
||||||
LLInventoryModel::update_map_t update;
|
|
||||||
++update[(*item_iter)->getParentUUID()];
|
|
||||||
gInventory.accountForUpdate(update);
|
|
||||||
gInventory.updateItem(*item_iter);
|
|
||||||
gInventory.notifyObservers();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Quality time
|
|
||||||
if(dropped_items || dropped_cats)
|
|
||||||
{
|
|
||||||
std::ostringstream message;
|
|
||||||
message << "Some items were ignored due to conflicts:\n\n";
|
|
||||||
if(dropped_cats) message << dropped_cats << " folders\n";
|
|
||||||
if(dropped_items) message << dropped_items << " items\n";
|
|
||||||
|
|
||||||
LLSD args;
|
|
||||||
args["ERROR_MESSAGE"] = message.str();
|
|
||||||
LLNotificationsUtil::add("ErrorMessage", args);
|
|
||||||
}
|
|
||||||
conflicting_cats.clear();// srsly dont think this is need but w/e :D
|
|
||||||
}
|
|
||||||
|
|
||||||
// remove temporary unzipped file
|
|
||||||
if(extension == "gz")
|
|
||||||
{
|
|
||||||
LLFile::remove(inv_filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
void LLLocalInventory::saveInvCache(std::string filename, LLFolderView* folder)
|
|
||||||
{
|
|
||||||
LLInventoryModel* model = &gInventory;
|
|
||||||
std::set<LLUUID> selected_items = folder->getSelectionList();
|
|
||||||
if(selected_items.size() < 1)
|
|
||||||
{
|
|
||||||
// No items selected? Wtfboom
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
LLInventoryModel::cat_array_t cats;
|
|
||||||
LLInventoryModel::item_array_t items;
|
|
||||||
// Make complete lists of child categories and items
|
|
||||||
std::set<LLUUID>::iterator sel_iter = selected_items.begin();
|
|
||||||
std::set<LLUUID>::iterator sel_end = selected_items.end();
|
|
||||||
for( ; sel_iter != sel_end; ++sel_iter)
|
|
||||||
{
|
|
||||||
LLInventoryCategory* cat = model->getCategory(*sel_iter);
|
|
||||||
if(cat)
|
|
||||||
{
|
|
||||||
climb(cat, cats, items);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// And what about items inside a folder that wasn't selected?
|
|
||||||
// I guess I will just add selected items, so long as they aren't already added
|
|
||||||
for(sel_iter = selected_items.begin(); sel_iter != sel_end; ++sel_iter)
|
|
||||||
{
|
|
||||||
LLInventoryItem* item = model->getItem(*sel_iter);
|
|
||||||
if(item)
|
|
||||||
{
|
|
||||||
if(std::find(items.begin(), items.end(), item) == items.end())
|
|
||||||
{
|
|
||||||
items.push_back(LLPointer<LLViewerInventoryItem>((LLViewerInventoryItem*)item));
|
|
||||||
LLInventoryCategory* parent = model->getCategory(item->getParentUUID());
|
|
||||||
if(std::find(cats.begin(), cats.end(), parent) == cats.end())
|
|
||||||
{
|
|
||||||
cats.push_back(LLPointer<LLViewerInventoryCategory>((LLViewerInventoryCategory*)parent));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
LLInventoryModel::saveToFile(filename, cats, items);
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
void LLLocalInventory::climb(LLInventoryCategory* cat,
|
|
||||||
LLInventoryModel::cat_array_t& cats,
|
|
||||||
LLInventoryModel::item_array_t& items)
|
|
||||||
{
|
|
||||||
LLInventoryModel* model = &gInventory;
|
|
||||||
|
|
||||||
// Add this category
|
|
||||||
cats.push_back(LLPointer<LLViewerInventoryCategory>((LLViewerInventoryCategory*)cat));
|
|
||||||
|
|
||||||
LLInventoryModel::cat_array_t *direct_cats;
|
|
||||||
LLInventoryModel::item_array_t *direct_items;
|
|
||||||
model->getDirectDescendentsOf(cat->getUUID(), direct_cats, direct_items);
|
|
||||||
|
|
||||||
// Add items
|
|
||||||
LLInventoryModel::item_array_t::iterator item_iter = direct_items->begin();
|
|
||||||
LLInventoryModel::item_array_t::iterator item_end = direct_items->end();
|
|
||||||
for( ; item_iter != item_end; ++item_iter)
|
|
||||||
{
|
|
||||||
items.push_back(*item_iter);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do subcategories
|
|
||||||
LLInventoryModel::cat_array_t::iterator cat_iter = direct_cats->begin();
|
|
||||||
LLInventoryModel::cat_array_t::iterator cat_end = direct_cats->end();
|
|
||||||
for( ; cat_iter != cat_end; ++cat_iter)
|
|
||||||
{
|
|
||||||
climb(*cat_iter, cats, items);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LLUUID LLFloaterNewLocalInventory::sLastCreatorId = LLUUID::null;
|
|
||||||
|
|
||||||
LLFloaterNewLocalInventory::LLFloaterNewLocalInventory()
|
|
||||||
: LLFloater()
|
|
||||||
{
|
|
||||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_new_local_inventory.xml");
|
|
||||||
}
|
|
||||||
|
|
||||||
LLFloaterNewLocalInventory::~LLFloaterNewLocalInventory()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL LLFloaterNewLocalInventory::postBuild(void)
|
|
||||||
{
|
|
||||||
// Fill in default values
|
|
||||||
|
|
||||||
getChild<LLLineEditor>("creator_id_line")->setText(std::string("00000000-0000-0000-0000-000000000000"));
|
|
||||||
getChild<LLLineEditor>("owner_id_line")->setText(gAgent.getID().asString());
|
|
||||||
getChild<LLLineEditor>("asset_id_line")->setText(std::string("00000000-0000-0000-0000-000000000000"));
|
|
||||||
getChild<LLLineEditor>("name_line")->setText(std::string(""));
|
|
||||||
getChild<LLLineEditor>("desc_line")->setText(std::string(""));
|
|
||||||
|
|
||||||
// Set up callbacks
|
|
||||||
|
|
||||||
childSetAction("ok_btn", onClickOK, this);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
void LLFloaterNewLocalInventory::onClickOK(void* user_data)
|
|
||||||
{
|
|
||||||
LLFloaterNewLocalInventory* floater = (LLFloaterNewLocalInventory*)user_data;
|
|
||||||
|
|
||||||
LLUUID item_id;
|
|
||||||
item_id.generate();
|
|
||||||
|
|
||||||
std::string name = floater->getChild<LLLineEditor>("name_line")->getText();
|
|
||||||
std::string desc = floater->getChild<LLLineEditor>("desc_line")->getText();
|
|
||||||
LLUUID asset_id = LLUUID(floater->getChild<LLLineEditor>("asset_id_line")->getText());
|
|
||||||
LLUUID creator_id = LLUUID(floater->getChild<LLLineEditor>("creator_id_line")->getText());
|
|
||||||
LLUUID owner_id = LLUUID(floater->getChild<LLLineEditor>("owner_id_line")->getText());
|
|
||||||
|
|
||||||
LLAssetType::EType type = LLAssetType::lookup(floater->getChild<LLComboBox>("type_combo")->getValue().asString());
|
|
||||||
LLInventoryType::EType inv_type = LLInventoryType::IT_NONE;
|
|
||||||
switch(type)
|
|
||||||
{
|
|
||||||
case LLAssetType::AT_TEXTURE:
|
|
||||||
case LLAssetType::AT_TEXTURE_TGA:
|
|
||||||
case LLAssetType::AT_IMAGE_TGA:
|
|
||||||
case LLAssetType::AT_IMAGE_JPEG:
|
|
||||||
inv_type = LLInventoryType::IT_TEXTURE;
|
|
||||||
break;
|
|
||||||
case LLAssetType::AT_SOUND:
|
|
||||||
case LLAssetType::AT_SOUND_WAV:
|
|
||||||
inv_type = LLInventoryType::IT_SOUND;
|
|
||||||
break;
|
|
||||||
case LLAssetType::AT_CALLINGCARD:
|
|
||||||
inv_type = LLInventoryType::IT_CALLINGCARD;
|
|
||||||
break;
|
|
||||||
case LLAssetType::AT_LANDMARK:
|
|
||||||
inv_type = LLInventoryType::IT_LANDMARK;
|
|
||||||
break;
|
|
||||||
case LLAssetType::AT_SCRIPT:
|
|
||||||
inv_type = LLInventoryType::IT_LSL;
|
|
||||||
break;
|
|
||||||
case LLAssetType::AT_CLOTHING:
|
|
||||||
inv_type = LLInventoryType::IT_WEARABLE;
|
|
||||||
break;
|
|
||||||
case LLAssetType::AT_OBJECT:
|
|
||||||
inv_type = LLInventoryType::IT_OBJECT;
|
|
||||||
break;
|
|
||||||
case LLAssetType::AT_NOTECARD:
|
|
||||||
inv_type = LLInventoryType::IT_NOTECARD;
|
|
||||||
break;
|
|
||||||
case LLAssetType::AT_CATEGORY:
|
|
||||||
inv_type = LLInventoryType::IT_CATEGORY;
|
|
||||||
break;
|
|
||||||
//No longer asset types.
|
|
||||||
/*case LLFolderType::FT_ROOT_CATEGORY:
|
|
||||||
case LLFolderType::FT_TRASH:
|
|
||||||
case LLFolderType::FT_SNAPSHOT_CATEGORY:
|
|
||||||
case LLFolderType::FT_LOST_AND_FOUND:
|
|
||||||
inv_type = LLInventoryType::IT_ROOT_CATEGORY;
|
|
||||||
break;*/
|
|
||||||
case LLAssetType::AT_LSL_TEXT:
|
|
||||||
case LLAssetType::AT_LSL_BYTECODE:
|
|
||||||
inv_type = LLInventoryType::IT_LSL;
|
|
||||||
break;
|
|
||||||
case LLAssetType::AT_BODYPART:
|
|
||||||
inv_type = LLInventoryType::IT_WEARABLE;
|
|
||||||
break;
|
|
||||||
case LLAssetType::AT_ANIMATION:
|
|
||||||
inv_type = LLInventoryType::IT_ANIMATION;
|
|
||||||
break;
|
|
||||||
case LLAssetType::AT_GESTURE:
|
|
||||||
inv_type = LLInventoryType::IT_GESTURE;
|
|
||||||
break;
|
|
||||||
//case LLAssetType::AT_SIMSTATE:
|
|
||||||
default:
|
|
||||||
//inv_type = LLInventoryType::IT_CALLINGCARD;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(inv_type == LLInventoryType::IT_NONE)
|
|
||||||
return;
|
|
||||||
|
|
||||||
LLPermissions* perms = new LLPermissions();
|
|
||||||
perms->init(creator_id, owner_id, LLUUID::null, LLUUID::null);
|
|
||||||
|
|
||||||
LLViewerInventoryItem* item = new LLViewerInventoryItem(
|
|
||||||
item_id,
|
|
||||||
gSystemFolderRoot,
|
|
||||||
*perms,
|
|
||||||
asset_id,
|
|
||||||
type,
|
|
||||||
inv_type,
|
|
||||||
name,
|
|
||||||
desc,
|
|
||||||
LLSaleInfo::DEFAULT,
|
|
||||||
0,
|
|
||||||
0);
|
|
||||||
|
|
||||||
LLLocalInventory::addItem(item);
|
|
||||||
if(floater->childGetValue("chk_open"))
|
|
||||||
{
|
|
||||||
LLLocalInventory::open(item_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
LLFloaterNewLocalInventory::sLastCreatorId = creator_id;
|
|
||||||
floater->close();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// </edit>
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
// <edit>
|
|
||||||
#ifndef LL_LLLOCALINVENTORY_H
|
|
||||||
#define LL_LLLOCALINVENTORY_H
|
|
||||||
|
|
||||||
#include "llviewerinventory.h"
|
|
||||||
|
|
||||||
#include "llfloater.h"
|
|
||||||
|
|
||||||
#include "llfolderview.h"
|
|
||||||
#include "llinventorymodel.h" // cat_array_t, item_array_t
|
|
||||||
|
|
||||||
class LLLocalInventory
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
static LLUUID addItem(std::string name, int type, LLUUID asset_id, bool open);
|
|
||||||
static LLUUID addItem(std::string name, int type, LLUUID asset_id);
|
|
||||||
static void addItem(LLViewerInventoryItem* item);
|
|
||||||
static void open(LLUUID item_id);
|
|
||||||
static void loadInvCache(std::string filename);
|
|
||||||
static void saveInvCache(std::string filename, LLFolderView* folder);
|
|
||||||
static void climb(LLInventoryCategory* cat,
|
|
||||||
LLInventoryModel::cat_array_t& cats,
|
|
||||||
LLInventoryModel::item_array_t& items);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class LLFloaterNewLocalInventory
|
|
||||||
: public LLFloater
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
LLFloaterNewLocalInventory();
|
|
||||||
BOOL postBuild(void);
|
|
||||||
|
|
||||||
static void onClickOK(void* user_data);
|
|
||||||
static LLUUID sLastCreatorId;
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual ~LLFloaterNewLocalInventory();
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
// </edit>
|
|
||||||
@@ -2193,41 +2193,6 @@ bool idle_startup()
|
|||||||
}
|
}
|
||||||
display_startup();
|
display_startup();
|
||||||
|
|
||||||
// <edit> testing adding a local inventory folder...
|
|
||||||
if (gSavedSettings.getBOOL("AscentUseSystemFolder"))
|
|
||||||
{
|
|
||||||
LLViewerInventoryCategory* system_folder = new LLViewerInventoryCategory(gAgent.getID());
|
|
||||||
system_folder->rename(std::string("System Inventory"));
|
|
||||||
LLUUID system_folder_id = LLUUID("00000000-0000-0000-0000-000000000001");//"FFFFFFFF-0000-F113-7357-000000000001");
|
|
||||||
system_folder->setUUID(system_folder_id);
|
|
||||||
gSystemFolderRoot = system_folder_id;
|
|
||||||
system_folder->setParent(LLUUID::null);
|
|
||||||
system_folder->setPreferredType(LLFolderType::FT_NONE);
|
|
||||||
gInventory.addCategory(system_folder);
|
|
||||||
|
|
||||||
LLViewerInventoryCategory* settings_folder = new LLViewerInventoryCategory(gAgent.getID());
|
|
||||||
settings_folder->rename(std::string("Settings"));
|
|
||||||
LLUUID settings_folder_id;
|
|
||||||
settings_folder_id.generate();
|
|
||||||
settings_folder->setUUID(settings_folder_id);
|
|
||||||
gSystemFolderSettings = settings_folder_id;
|
|
||||||
settings_folder->setParent(gSystemFolderRoot);
|
|
||||||
settings_folder->setPreferredType(LLFolderType::FT_NONE);
|
|
||||||
gInventory.addCategory(settings_folder);
|
|
||||||
|
|
||||||
LLViewerInventoryCategory* assets_folder = new LLViewerInventoryCategory(gAgent.getID());
|
|
||||||
assets_folder->rename(std::string("Assets"));
|
|
||||||
LLUUID assets_folder_id;
|
|
||||||
assets_folder_id.generate();
|
|
||||||
assets_folder->setUUID(assets_folder_id);
|
|
||||||
gSystemFolderAssets = assets_folder_id;
|
|
||||||
assets_folder->setParent(gSystemFolderRoot);
|
|
||||||
assets_folder->setPreferredType(LLFolderType::FT_NONE);
|
|
||||||
gInventory.addCategory(assets_folder);
|
|
||||||
}
|
|
||||||
display_startup();
|
|
||||||
// </edit>
|
|
||||||
|
|
||||||
LLSD buddy_list = response["buddy-list"];
|
LLSD buddy_list = response["buddy-list"];
|
||||||
if(buddy_list.isDefined())
|
if(buddy_list.isDefined())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -71,7 +71,6 @@
|
|||||||
#include "lltrans.h"
|
#include "lltrans.h"
|
||||||
// <edit>
|
// <edit>
|
||||||
#include "llmenugl.h"
|
#include "llmenugl.h"
|
||||||
#include "lllocalinventory.h"
|
|
||||||
// </edit>
|
// </edit>
|
||||||
|
|
||||||
// tag: vaa emerald local_asset_browser [begin]
|
// tag: vaa emerald local_asset_browser [begin]
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
<panel border="true" left="1" bottom="-408" height="408" width="500" label="General" name="User Interface">
|
<panel border="true" left="1" bottom="-408" height="408" width="500" label="General" name="User Interface">
|
||||||
<check_box left="10" bottom_delta="-25" control_name="DoubleClickTeleport" follows="top" initial_value="false"
|
<check_box left="10" bottom_delta="-25" control_name="DoubleClickTeleport" follows="top" initial_value="false"
|
||||||
label="Enable teleporting via double-click in-world" tool_tip="Double-clicking on an object/person will teleport you to that location." name="double_click_teleport_check"/>
|
label="Enable teleporting via double-click in-world" tool_tip="Double-clicking on an object/person will teleport you to that location." name="double_click_teleport_check"/>
|
||||||
<check_box left="20" bottom_delta="-18" control_name="OptionRotateCamAfterLocalTP" follows="top" initial_value="false"
|
<check_box left="20" bottom_delta="-18" control_name="OptionRotateCamAfterLocalTP" follows="top" initial_value="false"
|
||||||
label="Reset camera after teleporting" tool_tip="Centers the camera behind you after a local teleport." name="center_after_teleport_check"/>
|
label="Reset camera after teleporting" tool_tip="Centers the camera behind you after a local teleport." name="center_after_teleport_check"/>
|
||||||
<check_box bottom_delta="-18" control_name="OptionOffsetTPByAgentHeight" follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
|
<check_box bottom_delta="-18" control_name="OptionOffsetTPByAgentHeight" follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
|
||||||
label="Offset TP target by half agent height" tool_tip="Tries to aim the TP so that your feet land at the point you're aiming for." name="offset_teleport_check"/>
|
label="Offset TP target by half agent height" tool_tip="Tries to aim the TP so that your feet land at the point you're aiming for." name="offset_teleport_check"/>
|
||||||
<check_box left="10" follows="top" bottom_delta="-18" control_name="ClearBeaconAfterTeleport" name="clear_beacon_after_tp" label="Clear red destination beacon after teleporting"/>
|
<check_box left="10" follows="top" bottom_delta="-18" control_name="ClearBeaconAfterTeleport" name="clear_beacon_after_tp" label="Clear red destination beacon after teleporting"/>
|
||||||
@@ -28,10 +28,6 @@
|
|||||||
label="Enable Power User functionality" tool_tip="Adds features deemed too dangerous for normal use. These features can wreak havoc or do bad things if misused - Mostly to yourself or your belongings. If you're sure, activate the checkbox below as well." name="power_user_check"/>
|
label="Enable Power User functionality" tool_tip="Adds features deemed too dangerous for normal use. These features can wreak havoc or do bad things if misused - Mostly to yourself or your belongings. If you're sure, activate the checkbox below as well." name="power_user_check"/>
|
||||||
<check_box bottom_delta="-18" enabled="true" follows="top" left="20" initial_value="true"
|
<check_box bottom_delta="-18" enabled="true" follows="top" left="20" initial_value="true"
|
||||||
label="Confirm Power User functionality" tool_tip="Confirms Power User activation. Turn this on at your own risk, and use any features it enables responsibly. Singularity devs won't replace anything you break. We recommend having a backup copy of anything to be victim to these powers. Unlike most checkboxes, you must click Apply or OK before this will activate." name="power_user_confirm_check"/>
|
label="Confirm Power User functionality" tool_tip="Confirms Power User activation. Turn this on at your own risk, and use any features it enables responsibly. Singularity devs won't replace anything you break. We recommend having a backup copy of anything to be victim to these powers. Unlike most checkboxes, you must click Apply or OK before this will activate." name="power_user_confirm_check"/>
|
||||||
<check_box bottom_delta="-18" control_name="AscentUseSystemFolder" follows="top" left="10" initial_value="true"
|
|
||||||
label="Enable Ascent System Inventory (Requires Restart)" tool_tip="Creates a new folder in the inventory for storing settings files and non-permanent assets." name="system_folder_check"/>
|
|
||||||
<check_box bottom_delta="-18" control_name="AscentSystemTemporary" follows="top" left="20" initial_value="false"
|
|
||||||
label="Temporary uploads go in the System Asset folder." tool_tip="Puts temporary uploads in the Asset folder which separates them from actual uploads, making them easier to find." name="temp_in_system_check"/>
|
|
||||||
<check_box bottom_delta="-18" control_name="FetchInventoryOnLogin" follows="top" left="10" initial_value="true"
|
<check_box bottom_delta="-18" control_name="FetchInventoryOnLogin" follows="top" left="10" initial_value="true"
|
||||||
label="Automatically fetch the inventory in the background after login" tool_tip="Inventory will preload when you log in, so you don't have to wait for it to load when doing an initial search." name="fetch_inventory_on_login_check"/>
|
label="Automatically fetch the inventory in the background after login" tool_tip="Inventory will preload when you log in, so you don't have to wait for it to load when doing an initial search." name="fetch_inventory_on_login_check"/>
|
||||||
<check_box bottom_delta="-18" control_name="WindEnabled" follows="left|top" initial_value="false" label="Enable Wind Effects" name="enable_wind"/>
|
<check_box bottom_delta="-18" control_name="WindEnabled" follows="left|top" initial_value="false" label="Enable Wind Effects" name="enable_wind"/>
|
||||||
@@ -117,9 +113,9 @@
|
|||||||
<combo_item name="Rubber" value="Rubber">Rubber</combo_item>
|
<combo_item name="Rubber" value="Rubber">Rubber</combo_item>
|
||||||
</combo_box>
|
</combo_box>
|
||||||
<text bottom="-19" left_delta="85" name="text_box7" halign="center" width="115">Next Owner Perms</text>
|
<text bottom="-19" left_delta="85" name="text_box7" halign="center" width="115">Next Owner Perms</text>
|
||||||
<check_box follows="top" height="16" initial_value="false" label="Copy permission" tool_tip="Next owner can make copies of creations" name="next_owner_copy" control_name="NextOwnerCopy"/>
|
<check_box follows="top" height="16" initial_value="false" label="Copy permission" tool_tip="Next owner can make copies of creations" name="next_owner_copy" control_name="NextOwnerCopy"/>
|
||||||
<check_box follows="top" height="16" initial_value="false" label="Modify permission" tool_tip="Next owner can edit creations" name="next_owner_modify" control_name="NextOwnerModify"/>
|
<check_box follows="top" height="16" initial_value="false" label="Modify permission" tool_tip="Next owner can edit creations" name="next_owner_modify" control_name="NextOwnerModify"/>
|
||||||
<check_box follows="top" height="16" initial_value="true" label="Transfer permission" tool_tip="Next owner can give(or sell) creations" name="next_owner_transfer" control_name="NextOwnerTransfer"/>
|
<check_box follows="top" height="16" initial_value="true" label="Transfer permission" tool_tip="Next owner can give(or sell) creations" name="next_owner_transfer" control_name="NextOwnerTransfer"/>
|
||||||
<check_box bottom="-131" left="5" follows="top" height="16" label="Phantom" name="EmPhantomToggle" control_name="EmeraldBuildPrefs_Phantom"/>
|
<check_box bottom="-131" left="5" follows="top" height="16" label="Phantom" name="EmPhantomToggle" control_name="EmeraldBuildPrefs_Phantom"/>
|
||||||
<check_box follows="top" height="16" label="Physical" name="EmPhysicalToggle" control_name="EmeraldBuildPrefs_Physical"/>
|
<check_box follows="top" height="16" label="Physical" name="EmPhysicalToggle" control_name="EmeraldBuildPrefs_Physical"/>
|
||||||
<check_box follows="top" height="16" label="Temporary" name="EmTemporaryToggle" control_name="EmeraldBuildPrefs_Temporary"/>
|
<check_box follows="top" height="16" label="Temporary" name="EmTemporaryToggle" control_name="EmeraldBuildPrefs_Temporary"/>
|
||||||
@@ -136,7 +132,7 @@
|
|||||||
<combo_item name="High" value="High">High</combo_item>
|
<combo_item name="High" value="High">High</combo_item>
|
||||||
</combo_box>
|
</combo_box>
|
||||||
<check_box name="EmeraldBuildPrefsEmbedItem" left="5" bottom_delta="-20" follows="top" initial_value="false" label="Put an item into new objects" control_name="EmeraldBuildPrefs_EmbedItem"/>
|
<check_box name="EmeraldBuildPrefsEmbedItem" left="5" bottom_delta="-20" follows="top" initial_value="false" label="Put an item into new objects" control_name="EmeraldBuildPrefs_EmbedItem"/>
|
||||||
<drop_target control_name="EmeraldBuildPrefs_Item" bottom_delta="-5" left="10" height="15" name="build_item_add_disp_rect" width="270"/>
|
<drop_target control_name="EmeraldBuildPrefs_Item" bottom_delta="-5" left="10" height="15" name="build_item_add_disp_rect" width="270"/>
|
||||||
<check_box bottom_delta="4" follows="top" left_delta="274" label="Highlight selected prims" name="EmBuildPrefsRenderHighlight_toggle" control_name="RenderHighlightSelections"/>
|
<check_box bottom_delta="4" follows="top" left_delta="274" label="Highlight selected prims" name="EmBuildPrefsRenderHighlight_toggle" control_name="RenderHighlightSelections"/>
|
||||||
<check_box bottom_delta="-20" follows="top" initial_value="false" label="Axis arrow on root prim position" tool_tip="Default behaviour is to show the axis on the center of mass of a linkset. If enabled, the axis will be shown on the root prim of the linkset instead." name="EmBuildPrefsActualRoot_toggle" control_name="AscentBuildPrefs_ActualRoot"/>
|
<check_box bottom_delta="-20" follows="top" initial_value="false" label="Axis arrow on root prim position" tool_tip="Default behaviour is to show the axis on the center of mass of a linkset. If enabled, the axis will be shown on the root prim of the linkset instead." name="EmBuildPrefsActualRoot_toggle" control_name="AscentBuildPrefs_ActualRoot"/>
|
||||||
</panel>
|
</panel>
|
||||||
|
|||||||
Reference in New Issue
Block a user