diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index e35d5b5dd..b3547a55b 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -30,7 +30,6 @@ set(llui_SOURCE_FILES
llclipboard.cpp
llcombobox.cpp
llctrlselectioninterface.cpp
- lldelayeduidelete.cpp
lldraghandle.cpp
lleditmenuhandler.cpp
llfloater.cpp
@@ -90,7 +89,6 @@ set(llui_HEADER_FILES
llclipboard.h
llcombobox.h
llctrlselectioninterface.h
- lldelayeduidelete.h
lldraghandle.h
lleditmenuhandler.h
llfloater.h
diff --git a/indra/llui/lldelayeduidelete.cpp b/indra/llui/lldelayeduidelete.cpp
deleted file mode 100644
index 4f679c486..000000000
--- a/indra/llui/lldelayeduidelete.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-#include "linden_common.h"
-#include "lldelayeduidelete.h"
-#define DELETE_DELAY 0.1f
-#define DELETES_PER_DELAY 512
-
-LLDeleteScheduler* gDeleteScheduler;
-
-std::list LLDeleteScheduler::sJobs;
-LLDeleteScheduler::LLDeleteScheduler() : LLEventTimer(DELETE_DELAY)
-{
-}
-void LLDeleteScheduler::addViewDeleteJob(std::list views)
-{
- if(!views.empty())
- {
- LLViewDeleteJob* job = new LLViewDeleteJob(views);
- sJobs.push_back(job);
- }
-}
-BOOL LLDeleteScheduler::tick() // IMPORTANT: never return TRUE
-{
- if(!sJobs.empty())
- {
- U32 completed = 0;
- do
- {
- LLDeleteJob* job = sJobs.front();
- if(job->work(completed))
- {
- delete job;
- sJobs.pop_front();
- }
- } while((completed < DELETES_PER_DELAY) && !sJobs.empty());
- }
- return FALSE; // EVER
-}
-BOOL LLDeleteJob::work(U32& completed)
-{
- llwarns << "THIS IS SPOSED TO BE OVERRIDDEN" << llendl;
- return TRUE;
-}
-LLViewDeleteJob::LLViewDeleteJob(std::list views)
-: mList(views)
-{
-}
-LLViewDeleteJob::~LLViewDeleteJob()
-{
-}
-BOOL LLViewDeleteJob::work(U32& completed)
-{
- do
- {
- if(!mList.empty())
- {
- LLView* view = mList.front();
- delete view;
- mList.pop_front();
- }
- else
- {
- return TRUE; // job done
- }
- } while(++completed < DELETES_PER_DELAY);
- return FALSE;
-}
-//
diff --git a/indra/llui/lldelayeduidelete.h b/indra/llui/lldelayeduidelete.h
deleted file mode 100644
index 131e43424..000000000
--- a/indra/llui/lldelayeduidelete.h
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-#ifndef LL_LLDELAYEDUIDELETE_H
-#define LL_LLDELAYEDUIDELETE_H
-#include "lleventtimer.h"
-#include "llview.h"
-class LLDeleteJob
-{
-public:
- virtual BOOL work(U32& completed);
- virtual ~LLDeleteJob() {}
-};
-class LLViewDeleteJob : public LLDeleteJob
-{
-public:
- LLViewDeleteJob(std::list views);
- virtual ~LLViewDeleteJob();
- virtual BOOL work(U32& completed);
-private:
- std::list mList;
-};
-class LLDeleteScheduler : public LLEventTimer
-{
-public:
- LLDeleteScheduler();
- void addViewDeleteJob(std::list views);
- BOOL tick();
-private:
- static std::list sJobs;
-};
-extern LLDeleteScheduler* gDeleteScheduler;
-#endif
-//
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 30c1a4632..e3edbcc6f 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -59,10 +59,6 @@
#include "lltextbox.h"
#include "llfasttimer.h"
-//
-#include "lldelayeduidelete.h"
-//
-
using namespace LLOldEvents;
//HACK: this allows you to instantiate LLView from xml with "" which we don't want
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 3580a05d4..ef8628f1c 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -93,7 +93,6 @@ set(viewer_SOURCE_FILES
floaterlocalassetbrowse.cpp
floatervoicelicense.cpp
hbfloatergrouptitles.cpp
- hgfloatertexteditor.cpp
hippofloaterxml.cpp
hippogridmanager.cpp
hippolimits.cpp
@@ -122,7 +121,6 @@ set(viewer_SOURCE_FILES
llaudiosourcevo.cpp
llavatarpropertiesprocessor.cpp
llbox.cpp
- llbuildnewviewsscheduler.cpp
llcallbacklist.cpp
llcallingcard.cpp
llcapabilitylistener.cpp
@@ -293,7 +291,6 @@ set(viewer_SOURCE_FILES
llimpanel.cpp
llimview.cpp
llinventoryactions.cpp
- llinventorybackup.cpp
llinventorybridge.cpp
llinventoryclipboard.cpp
llinventoryfilter.cpp
@@ -595,7 +592,6 @@ set(viewer_HEADER_FILES
floaterlocalassetbrowse.h
floatervoicelicense.h
hbfloatergrouptitles.h
- hgfloatertexteditor.h
hippofloaterxml.h
hippogridmanager.h
hippolimits.h
@@ -625,7 +621,6 @@ set(viewer_HEADER_FILES
llaudiosourcevo.h
llavatarpropertiesprocessor.h
llbox.h
- llbuildnewviewsscheduler.h
llcallbacklist.h
llcallingcard.h
llcapabilitylistener.h
@@ -795,7 +790,6 @@ set(viewer_HEADER_FILES
llhudview.h
llimpanel.h
llimview.h
- llinventorybackup.h
llinventorybridge.h
llinventoryclipboard.h
llinventoryfilter.h
diff --git a/indra/newview/hgfloatertexteditor.cpp b/indra/newview/hgfloatertexteditor.cpp
deleted file mode 100644
index fdda09ea3..000000000
--- a/indra/newview/hgfloatertexteditor.cpp
+++ /dev/null
@@ -1,399 +0,0 @@
-/**
- * @file hgfloatertexteditor.cpp
- * @brief Asset Text Editor floater made by Hazim Gazov (based on hex editor floater by Day Oh)
- * @author Hazim Gazov
- *
- * $LicenseInfo:firstyear=2010&license=WTFPLV2$
- *
- */
-
-//
-
-#include "llviewerprecompiledheaders.h"
-
-#include "hgfloatertexteditor.h"
-#include "lluictrlfactory.h"
-#include "llinventorybackup.h" // for downloading
-#include "llviewercontrol.h" // gSavedSettings
-#include "llviewerwindow.h" // alertXML
-#include "llagent.h" // gAgent getID
-#include "llviewermenufile.h"
-#include "llviewerregion.h" // getCapability
-#include "llassetuploadresponders.h" // LLUpdateAgentInventoryResponder
-#include "llinventorymodel.h" // gInventory.updateItem
-#include "llappviewer.h" // System Folders
-#include "llfloaterperms.h" //get default perms
-#include "lllocalinventory.h"
-#include "llnotificationsutil.h"
-
-std::list HGFloaterTextEditor::sInstances;
-S32 HGFloaterTextEditor::sUploadAmount = 10;
-
-HGFloaterTextEditor::HGFloaterTextEditor(LLInventoryItem* item)
-: LLFloater()
-{
- sInstances.push_back(this);
- mItem = item;
- LLUICtrlFactory::getInstance()->buildFloater(this, "floater_asset_text_editor.xml");
-}
-
-// static
-void HGFloaterTextEditor::show(LLUUID item_id)
-{
- LLInventoryItem* item = (LLInventoryItem*)gInventory.getItem(item_id);
- if(item)
- {
- S32 left, top;
- gFloaterView->getNewFloaterPosition(&left, &top);
- LLRect rect = gSavedSettings.getRect("FloaterAssetTextEditorRect");
- rect.translate(left - rect.mLeft, top - rect.mTop);
- HGFloaterTextEditor* floaterp = new HGFloaterTextEditor(item);
- floaterp->setRect(rect);
- gFloaterView->adjustToFitScreen(floaterp, FALSE);
- }
-}
-
-HGFloaterTextEditor::~HGFloaterTextEditor()
-{
- sInstances.remove(this);
-}
-
-void HGFloaterTextEditor::close(bool app_quitting)
-{
- LLFloater::close(app_quitting);
-}
-
-BOOL HGFloaterTextEditor::postBuild(void)
-{
- LLTextEditor* editor = getChild("text_editor");
- mEditor = editor;
-
- childSetEnabled("upload_btn", false);
- childSetLabelArg("upload_btn", "[UPLOAD]", std::string("Upload"));
- childSetAction("upload_btn", onClickUpload, this);
- childSetEnabled("save_btn", false);
- childSetAction("save_btn", onClickSave, this);
-
- if(mItem)
- {
- std::string title = "Text editor: " + mItem->getName();
- const char* asset_type_name = LLAssetType::lookup(mItem->getType());
- if(asset_type_name)
- {
- title.append(" (" + std::string(asset_type_name) + ")");
- }
- setTitle(title);
- }
-#if OPENSIM_RULES!=1
- if(mItem->getCreatorUUID() == gAgentID)
- {
-#endif /* OPENSIM_RULES!=1 */
- // Load the asset
- editor->setVisible(FALSE);
- childSetText("status_text", std::string("Loading..."));
- LLInventoryBackup::download(mItem, this, imageCallback, assetCallback);
-#if OPENSIM_RULES!=1
- } else {
- this->close(false);
- }
-#endif /* OPENSIM_RULES!=1 */
-
- return TRUE;
-}
-
-// static
-void HGFloaterTextEditor::imageCallback(BOOL success,
- LLViewerFetchedTexture *src_vi,
- LLImageRaw* src,
- LLImageRaw* aux_src,
- S32 discard_level,
- BOOL final,
- void* userdata)
-{
- if(final)
- {
- LLInventoryBackup::callbackdata* data = static_cast(userdata);
- HGFloaterTextEditor* floater = (HGFloaterTextEditor*)(data->floater);
- if(!floater) return;
- if(std::find(sInstances.begin(), sInstances.end(), floater) == sInstances.end()) return; // no more crash
- //LLInventoryItem* item = data->item;
-
- if(!success)
- {
- floater->childSetText("status_text", std::string("Unable to download asset."));
- return;
- }
-
- U8* src_data = src->getData();
- S32 size = src->getDataSize();
- std::string new_data;
- for(S32 i = 0; i < size; i++)
- new_data += (char)src_data[i];
-
- delete[] src_data;
-
- floater->mEditor->setValue(new_data);
- floater->mEditor->setVisible(TRUE);
- floater->childSetText("status_text", std::string("Note: Image data shown isn't the actual asset data, yet"));
-
- floater->childSetEnabled("save_btn", false);
- floater->childSetEnabled("upload_btn", true);
- floater->childSetLabelArg("upload_btn", "[UPLOAD]", std::string("Upload (L$10)"));
- }
- else
- {
- src_vi->setBoostLevel(LLGLTexture::BOOST_UI);
- }
-}
-
-// static
-void HGFloaterTextEditor::assetCallback(LLVFS *vfs,
- const LLUUID& asset_uuid,
- LLAssetType::EType type,
- void* user_data, S32 status, LLExtStat ext_status)
-{
- LLInventoryBackup::callbackdata* data = static_cast(user_data);
- HGFloaterTextEditor* floater = (HGFloaterTextEditor*)(data->floater);
- if(!floater) return;
- if(std::find(sInstances.begin(), sInstances.end(), floater) == sInstances.end()) return; // no more crash
- LLInventoryItem* item = data->item;
-
- if(status != 0 && item->getType() != LLAssetType::AT_NOTECARD)
- {
- floater->childSetText("status_text", std::string("Unable to download asset."));
- return;
- }
-
- // Todo: this doesn't work for static vfs shit
- LLVFile file(vfs, asset_uuid, type, LLVFile::READ);
- S32 size = file.getSize();
-
- std::string new_data("");
- if(size > 0)
- {
- char* buffer = new char[size + 1];
- if (buffer == NULL)
- {
- llerrs << "Memory Allocation Failed" << llendl;
- return;
- }
-
- file.read((U8*)buffer, size);
- buffer[size - 1] = 0;
-
- new_data = std::string(buffer);
- delete[] buffer;
- }
-
-
- floater->mEditor->setText(LLStringExplicit(new_data));
- floater->mEditor->setVisible(TRUE);
- floater->childSetText("status_text", llformat("File Size: %d", size));
-
- floater->childSetEnabled("upload_btn", true);
- floater->childSetEnabled("save_btn", false);
- if(item->getPermissions().allowModifyBy(gAgent.getID()))
- {
- switch(item->getType())
- {
- case LLAssetType::AT_TEXTURE:
- case LLAssetType::AT_ANIMATION:
- case LLAssetType::AT_SOUND:
- floater->childSetLabelArg("upload_btn", "[UPLOAD]", std::string("Upload (L$10)"));
- break;
- case LLAssetType::AT_LANDMARK:
- case LLAssetType::AT_CALLINGCARD:
- floater->childSetEnabled("upload_btn", false);
- floater->childSetEnabled("save_btn", false);
- break;
- default:
- floater->childSetEnabled("save_btn", true);
- break;
- }
- }
- else
- {
- switch(item->getType())
- {
- case LLAssetType::AT_TEXTURE:
- case LLAssetType::AT_ANIMATION:
- case LLAssetType::AT_SOUND:
- floater->childSetLabelArg("upload_btn", "[UPLOAD]", std::string("Upload (L$10)"));
- break;
- default:
- break;
- }
- }
-
- // Never enable save if it's a pretend item
- if(gInventory.isObjectDescendentOf(item->getUUID(), gSystemFolderRoot))
- {
- floater->childSetEnabled("save_btn", false);
- }
-}
-
-// static
-void HGFloaterTextEditor::onClickUpload(void* user_data)
-{
- HGFloaterTextEditor* floater = (HGFloaterTextEditor*)user_data;
- LLInventoryItem* item = floater->mItem;
-
- LLTransactionID transaction_id;
- transaction_id.generate();
- LLUUID fake_asset_id = transaction_id.makeAssetID(gAgent.getSecureSessionID());
-
- const char* value = floater->mEditor->getText().c_str();
- int size = strlen(value);
- U8* buffer = new U8[size];
- for(int i = 0; i < size; i++)
- buffer[i] = (U8)value[i];
-
- delete[] value;
-
- LLVFile file(gVFS, fake_asset_id, item->getType(), LLVFile::APPEND);
- file.setMaxSize(size);
- if (!file.write(buffer, size))
- {
- LLSD args;
- args["ERROR_MESSAGE"] = "Couldn't write data to file";
- LLNotificationsUtil::add("ErrorMessage", args);
- return;
- }
-
- LLAssetStorage::LLStoreAssetCallback callback = NULL;
- void *fake_user_data = NULL;
-
- if(item->getType() != LLAssetType::AT_GESTURE && item->getType() != LLAssetType::AT_LSL_TEXT
- && item->getType() != LLAssetType::AT_NOTECARD)
- {
- upload_new_resource(transaction_id,
- item->getType(),
- item->getName(),
- item->getDescription(),
- 0,
- LLFolderType::assetTypeToFolderType(item->getType()),
- item->getInventoryType(),
- LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),
- item->getName(),
- callback,
- sUploadAmount,
- fake_user_data);
- }
- else // gestures and scripts, create an item first
- { // AND notecards
- //if(item->getType() == LLAssetType::AT_NOTECARD) gDontOpenNextNotecard = true;
- create_inventory_item( gAgent.getID(),
- gAgent.getSessionID(),
- item->getParentUUID(), //gInventory.findCategoryUUIDForType(item->getType()),
- LLTransactionID::tnull,
- item->getName(),
- fake_asset_id.asString(),
- item->getType(),
- item->getInventoryType(),
- (LLWearableType::EType)item->getFlags(),
- PERM_ITEM_UNRESTRICTED,
- new NewResourceItemCallback);
- }
-}
-
-struct LLSaveInfo
-{
- LLSaveInfo(HGFloaterTextEditor* floater, LLTransactionID transaction_id)
- : mFloater(floater), mTransactionID(transaction_id)
- {
- }
-
- HGFloaterTextEditor* mFloater;
- LLTransactionID mTransactionID;
-};
-
-// static
-void HGFloaterTextEditor::onClickSave(void* user_data)
-{
- HGFloaterTextEditor* floater = (HGFloaterTextEditor*)user_data;
- LLInventoryItem* item = floater->mItem;
-
- LLTransactionID transaction_id;
- transaction_id.generate();
- LLUUID fake_asset_id = transaction_id.makeAssetID(gAgent.getSecureSessionID());
-
- const char* value = floater->mEditor->getText().c_str();
- int size = strlen(value);
- U8* buffer = new U8[size];
- for(int i = 0; i < size; i++)
- buffer[i] = (U8)value[i];
-
- LLVFile file(gVFS, fake_asset_id, item->getType(), LLVFile::APPEND);
- file.setMaxSize(size);
- if (!file.write(buffer, size))
- {
- LLSD args;
- args["ERROR_MESSAGE"] = "Couldn't write data to file";
- LLNotificationsUtil::add("ErrorMessage", args);
- return;
- }
-
- bool caps = false;
- std::string url;
- LLSD body;
- body["item_id"] = item->getUUID();
-
- switch(item->getType())
- {
- case LLAssetType::AT_GESTURE:
- url = gAgent.getRegion()->getCapability("UpdateGestureAgentInventory");
- caps = true;
- break;
- case LLAssetType::AT_LSL_TEXT:
- url = gAgent.getRegion()->getCapability("UpdateScriptAgent");
- body["target"] = "mono";
- caps = true;
- break;
- case LLAssetType::AT_NOTECARD:
- url = gAgent.getRegion()->getCapability("UpdateNotecardAgentInventory");
- caps = true;
- break;
- default: // wearables & notecards, Oct 12 2009
- // ONLY WEARABLES, Oct 15 2009
- floater->childSetText("status_text", std::string("Saving..."));
- LLSaveInfo* info = new LLSaveInfo(floater, transaction_id);
- gAssetStorage->storeAssetData(transaction_id, item->getType(), onSaveComplete, info);
- caps = false;
- break;
- }
-
- if(caps)
- {
- LLHTTPClient::post(url, body,
- new LLUpdateAgentInventoryResponder(body, fake_asset_id, item->getType()));
- }
-}
-
-void HGFloaterTextEditor::onSaveComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status)
-{
- LLSaveInfo* info = (LLSaveInfo*)user_data;
- HGFloaterTextEditor* floater = info->mFloater;
- if(std::find(sInstances.begin(), sInstances.end(), floater) == sInstances.end()) return; // no more crash
- LLInventoryItem* item = floater->mItem;
-
- floater->childSetText("status_text", std::string(""));
-
- if(item && (status == 0))
- {
- LLPointer new_item = new LLViewerInventoryItem(item);
- new_item->setDescription(item->getDescription());
- new_item->setTransactionID(info->mTransactionID);
- new_item->setAssetUUID(asset_uuid);
- new_item->updateServer(FALSE);
- gInventory.updateItem(new_item);
- gInventory.notifyObservers();
- }
- else
- {
- LLSD args;
- args["ERROR_MESSAGE"] = llformat("Upload failed with status %d, also %d", status, ext_status);
- LLNotificationsUtil::add("ErrorMessage", args);
- }
-}
-
-//
diff --git a/indra/newview/hgfloatertexteditor.h b/indra/newview/hgfloatertexteditor.h
deleted file mode 100644
index fe6d36709..000000000
--- a/indra/newview/hgfloatertexteditor.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * @file hgfloatertexteditor.h
- * @brief Asset Text Editor floater made by Hazim Gazov (based on hex editor floater by Day Oh)
- * @author Hazim Gazov
- *
- * $LicenseInfo:firstyear=2010&license=WTFPLV2$
- *
- */
-
-
-#ifndef HG_HGFLOATERTEXT_H
-#define HG_HGFLOATERTEXT_H
-
-#include "llfloater.h"
-#include "lltexteditor.h"
-#include "llinventory.h"
-#include "llviewertexture.h"
-
-class HGFloaterTextEditor
-: public LLFloater
-{
-public:
- HGFloaterTextEditor(LLInventoryItem* item);
- static void show(LLUUID item_id);
- BOOL postBuild(void);
- void close(bool app_quitting);
- static void imageCallback(BOOL success,
- LLViewerFetchedTexture *src_vi,
- LLImageRaw* src,
- LLImageRaw* aux_src,
- S32 discard_level,
- BOOL final,
- void* userdata);
- static void assetCallback(LLVFS *vfs,
- const LLUUID& asset_uuid,
- LLAssetType::EType type,
- void* user_data, S32 status, LLExtStat ext_status);
- static void onClickSave(void* user_data);
- static void onClickUpload(void* user_data);
- static void onSaveComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status);
- LLInventoryItem* mItem;
- LLTextEditor* mEditor;
- static std::list sInstances;
-private:
- virtual ~HGFloaterTextEditor();
-protected:
- static S32 sUploadAmount;
-};
-
-#endif
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index bd791e245..019cbea14 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -117,8 +117,6 @@
#include "llimageworker.h"
//
-#include "lldelayeduidelete.h"
-#include "llbuildnewviewsscheduler.h"
#include "aicurleasyrequeststatemachine.h"
#include "aihttptimeoutpolicy.h"
//
@@ -641,9 +639,6 @@ bool LLAppViewer::init()
// Logging is initialized. Now it's safe to start the error thread.
startErrorThread();
- gDeleteScheduler = new LLDeleteScheduler();
- gBuildNewViewsScheduler = new LLBuildNewViewsScheduler();
- //
//
// OK to write stuff to logs now, we've now crash reported if necessary
//
diff --git a/indra/newview/llbuildnewviewsscheduler.cpp b/indra/newview/llbuildnewviewsscheduler.cpp
deleted file mode 100644
index 16d2900ed..000000000
--- a/indra/newview/llbuildnewviewsscheduler.cpp
+++ /dev/null
@@ -1,151 +0,0 @@
-//
-#include "llviewerprecompiledheaders.h"
-#include "llbuildnewviewsscheduler.h"
-#include "llinventorybridge.h"
-#define BUILD_DELAY 0.1f
-#define BUILD_PER_DELAY 512
-
-LLBuildNewViewsScheduler* gBuildNewViewsScheduler;
-
-std::list LLBuildNewViewsScheduler::sJobs;
-LLBuildNewViewsScheduler::LLBuildNewViewsScheduler() : LLEventTimer(BUILD_DELAY)
-{
-}
-void LLBuildNewViewsScheduler::addJob(LLInventoryPanel* inventory_panel, LLInventoryObject* inventory_object)
-{
- LLBuildNewViewsScheduler::job j;
- j.mInventoryPanel = inventory_panel;
- j.mInventoryObject = inventory_object;
- sJobs.push_back(j);
-}
-void LLBuildNewViewsScheduler::cancel(LLInventoryPanel* inventory_panel)
-{
- for(std::list::iterator iter = sJobs.begin();
- iter != sJobs.end(); )
- {
- LLInventoryPanel* job_panel = (*iter).mInventoryPanel;
- if(job_panel == inventory_panel)
- {
- iter = sJobs.erase(iter);
- }
- else
- {
- ++iter;
- }
- }
-}
-BOOL LLBuildNewViewsScheduler::tick()
-{
- U32 i = 0;
- while(!sJobs.empty() && (i < BUILD_PER_DELAY))
- {
- LLBuildNewViewsScheduler::job j = sJobs.front();
- buildNewViews(j.mInventoryPanel, j.mInventoryObject);
- sJobs.pop_front();
- ++i;
- }
- return FALSE;
-}
-void LLBuildNewViewsScheduler::buildNewViews(LLInventoryPanel* panelp, LLInventoryObject* objectp)
-{
- LLFolderViewItem* itemp = NULL;
-
- if (objectp)
- {
- if (objectp->getType() <= LLAssetType::AT_NONE ||
- objectp->getType() >= LLAssetType::AT_COUNT)
- {
- llwarns << "called with objectp->mType == "
- << ((S32) objectp->getType())
- << " (shouldn't happen)" << llendl;
- }
- else if (objectp->getType() == LLAssetType::AT_CATEGORY) // build new view for category
- {
- LLInvFVBridge* new_listener = LLInvFVBridge::createBridge(objectp->getType(),
- objectp->getType(),
- LLInventoryType::IT_CATEGORY,
- panelp,
- panelp->getRootFolder(),
- objectp->getUUID());
-
- if (new_listener)
- {
- LLFolderViewFolder* folderp = new LLFolderViewFolder(new_listener->getDisplayName(),
- new_listener->getIcon(),
- new_listener->getIcon(),
- NULL,
- panelp->getRootFolder(),
- new_listener);
-
- folderp->setItemSortOrder(panelp->getSortOrder());
- itemp = folderp;
- }
- }
- else // build new view for item
- {
- LLInventoryItem* item = (LLInventoryItem*)objectp;
- LLInvFVBridge* new_listener = LLInvFVBridge::createBridge(
- item->getType(),
- item->getActualType(),
- item->getInventoryType(),
- panelp,
- panelp->getRootFolder(),
- item->getUUID(),
- item->getFlags());
- if (new_listener)
- {
- itemp = new LLFolderViewItem(new_listener->getDisplayName(),
- new_listener->getIcon(),
- NULL,
- NULL,
- new_listener->getCreationDate(),
- panelp->getRootFolder(),
- new_listener);
- }
- }
-
- LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)panelp->getRootFolder()->getItemByID(objectp->getParentUUID());
-
- if (itemp)
- {
- //itemp->mDelayedDelete = TRUE;
- if (parent_folder)
- {
- itemp->addToFolder(parent_folder, panelp->getRootFolder());
- }
- else
- {
- llwarns << "Couldn't find parent folder for child " << itemp->getLabel() << llendl;
- delete itemp;
- }
- }
- }
-
- if (!objectp || (objectp && (objectp->getType() == LLAssetType::AT_CATEGORY)))
- {
- LLViewerInventoryCategory::cat_array_t* categories;
- LLViewerInventoryItem::item_array_t* items;
-
- panelp->getModel()->lockDirectDescendentArrays((objectp != NULL) ? objectp->getUUID() : LLUUID::null, categories, items);
- if(categories)
- {
- S32 count = categories->count();
- for(S32 i = 0; i < count; ++i)
- {
- LLInventoryCategory* cat = categories->get(i);
- addJob(panelp, cat);
- }
- }
- if(items)
- {
- S32 count = items->count();
- for(S32 i = 0; i < count; ++i)
- {
- LLInventoryItem* item = items->get(i);
- addJob(panelp, item);
- }
- }
- panelp->getModel()->unlockDirectDescendentArrays(objectp->getUUID());
- }
-}
-//
diff --git a/indra/newview/llbuildnewviewsscheduler.h b/indra/newview/llbuildnewviewsscheduler.h
deleted file mode 100644
index 83169d925..000000000
--- a/indra/newview/llbuildnewviewsscheduler.h
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-#include "llinventorypanel.h"
-#include "llinventory.h"
-#include "lleventtimer.h"
-class LLBuildNewViewsScheduler : public LLEventTimer
-{
- typedef struct
- {
- LLInventoryPanel* mInventoryPanel;
- LLInventoryObject* mInventoryObject;
- } job;
-public:
- LLBuildNewViewsScheduler();
- void addJob(LLInventoryPanel* inventory_panel, LLInventoryObject* inventory_object);
- void cancel(LLInventoryPanel* inventory_panel);
- BOOL tick();
-private:
- static std::list sJobs;
- void buildNewViews(LLInventoryPanel* panelp, LLInventoryObject* objectp);
-};
-extern LLBuildNewViewsScheduler* gBuildNewViewsScheduler;
-//
diff --git a/indra/newview/llinventoryactions.cpp b/indra/newview/llinventoryactions.cpp
index 46a92a09d..5f0c183ee 100644
--- a/indra/newview/llinventoryactions.cpp
+++ b/indra/newview/llinventoryactions.cpp
@@ -95,9 +95,6 @@
//
#include "lllocalinventory.h"
-#include "llinventorybackup.h"
-//#include "llcheats.h"
-//#include "llnotecardmagic.h"
#include "statemachine/aifilepicker.h"
//
diff --git a/indra/newview/llinventorybackup.cpp b/indra/newview/llinventorybackup.cpp
deleted file mode 100644
index 0976daf8a..000000000
--- a/indra/newview/llinventorybackup.cpp
+++ /dev/null
@@ -1,790 +0,0 @@
-//
-#include "llviewerprecompiledheaders.h"
-
-#include "llinventorybackup.h"
-#include "llinventorymodel.h"
-#include "llviewerinventory.h"
-#include "statemachine/aifilepicker.h"
-#include "statemachine/aidirpicker.h"
-#include "llviewertexturelist.h" // gTextureList
-#include "llagent.h" // gAgent
-#include "llviewerwindow.h" // gViewerWindow
-#include "llfloater.h"
-#include "lluictrlfactory.h"
-#include "llscrolllistctrl.h"
-#include "llimagetga.h"
-#include "llnotificationsutil.h"
-
-std::list LLFloaterInventoryBackup::sInstances;
-
-LLInventoryBackupOrder::LLInventoryBackupOrder()
-{
- // My personal defaults based on what is assumed to not work
- mDownloadTextures = true;
- mDownloadSounds = true;
- mDownloadCallingCards = false;
- mDownloadLandmarks = true;
- mDownloadScripts = true;
- mDownloadWearables = true;
- mDownloadObjects = false;
- mDownloadNotecards = true;
- mDownloadAnimations = true;
- mDownloadGestures = true;
- //mDownloadOthers = true;
-}
-
-LLFloaterInventoryBackupSettings::LLFloaterInventoryBackupSettings(LLInventoryBackupOrder* order)
-: LLFloater(),
- mOrder(order)
-{
- LLUICtrlFactory::getInstance()->buildFloater(this, "floater_inventory_backup_settings.xml");
-}
-
-LLFloaterInventoryBackupSettings::~LLFloaterInventoryBackupSettings()
-{
-}
-
-BOOL LLFloaterInventoryBackupSettings::postBuild(void)
-{
- childSetValue("chk_textures", mOrder->mDownloadTextures);
- childSetValue("chk_sounds", mOrder->mDownloadSounds);
- childSetValue("chk_callingcards", mOrder->mDownloadCallingCards);
- childSetValue("chk_landmarks", mOrder->mDownloadLandmarks);
- childSetValue("chk_scripts", mOrder->mDownloadScripts);
- childSetValue("chk_wearables", mOrder->mDownloadWearables);
- childSetValue("chk_objects", mOrder->mDownloadObjects);
- childSetValue("chk_notecards", mOrder->mDownloadNotecards);
- childSetValue("chk_animations", mOrder->mDownloadAnimations);
- childSetValue("chk_gestures", mOrder->mDownloadGestures);
- //childSetValue("chk_others", mOrder->mDownloadOthers);
-
- childSetAction("next_btn", LLFloaterInventoryBackupSettings::onClickNext, this);
-
- return TRUE;
-}
-
-// static
-void LLFloaterInventoryBackupSettings::onClickNext(void* userdata)
-{
- LLFloaterInventoryBackupSettings* floater = (LLFloaterInventoryBackupSettings*)userdata;
- LLInventoryBackupOrder* order = floater->mOrder;
-
- // Apply changes to filters
- order->mDownloadAnimations = floater->childGetValue("chk_animations");
- order->mDownloadCallingCards = floater->childGetValue("chk_callingcards");
- order->mDownloadGestures = floater->childGetValue("chk_gestures");
- order->mDownloadLandmarks = floater->childGetValue("chk_landmarks");
- order->mDownloadNotecards = floater->childGetValue("chk_notecards");
- order->mDownloadObjects = floater->childGetValue("chk_objects");
- //order->mDownloadOthers = floater->childGetValue("chk_others");
- order->mDownloadScripts = floater->childGetValue("chk_scripts");
- order->mDownloadSounds = floater->childGetValue("chk_sounds");
- order->mDownloadTextures = floater->childGetValue("chk_textures");
- order->mDownloadWearables = floater->childGetValue("chk_wearables");
-
- // Make filters
- std::map type_remove;
- type_remove[LLAssetType::AT_ANIMATION] = !order->mDownloadAnimations;
- type_remove[LLAssetType::AT_BODYPART] = !order->mDownloadWearables;
- type_remove[LLAssetType::AT_CALLINGCARD] = !order->mDownloadCallingCards;
- type_remove[LLAssetType::AT_CLOTHING] = !order->mDownloadWearables;
- type_remove[LLAssetType::AT_GESTURE] = !order->mDownloadGestures;
- type_remove[LLAssetType::AT_IMAGE_JPEG] = !order->mDownloadTextures;
- type_remove[LLAssetType::AT_IMAGE_TGA] = !order->mDownloadTextures;
- type_remove[LLAssetType::AT_LANDMARK] = !order->mDownloadLandmarks;
- type_remove[LLAssetType::AT_LSL_TEXT] = !order->mDownloadScripts;
- type_remove[LLAssetType::AT_NOTECARD] = !order->mDownloadNotecards;
- type_remove[LLAssetType::AT_OBJECT] = !order->mDownloadObjects;
- type_remove[LLAssetType::AT_SCRIPT] = !order->mDownloadScripts;
- type_remove[LLAssetType::AT_SOUND] = !order->mDownloadSounds;
- type_remove[LLAssetType::AT_SOUND_WAV] = !order->mDownloadSounds;
- type_remove[LLAssetType::AT_TEXTURE] = !order->mDownloadTextures;
- type_remove[LLAssetType::AT_TEXTURE_TGA] = !order->mDownloadTextures;
-
- // Apply filters
- std::vector::iterator item_iter = order->mItems.begin();
- for( ; item_iter != order->mItems.end(); )
- {
- if(type_remove[(*item_iter)->getType()])
- item_iter = order->mItems.erase(item_iter);
- else
- ++item_iter;
- }
-
- if(order->mItems.size() < 1)
- {
- LLSD args;
- args["ERROR_MESSAGE"] = "No items passed the filter \\o/";
- LLNotificationsUtil::add("ErrorMessage", args);
- return;
- }
-
- // Get dir name
- AIDirPicker* dirpicker = new AIDirPicker("New Folder");
- dirpicker->run(boost::bind(&LLFloaterInventoryBackupSettings::onClickNext_continued, userdata, dirpicker));
-}
-
-// static
-void LLFloaterInventoryBackupSettings::onClickNext_continued(void* userdata, AIDirPicker* dirpicker)
-{
- LLFloaterInventoryBackupSettings* floater = (LLFloaterInventoryBackupSettings*)userdata;
- LLInventoryBackupOrder* order = floater->mOrder;
-
- if (!dirpicker->hasDirname())
- {
- floater->close();
- return;
- }
- std::string dirname = dirpicker->getDirname();
-
- // Make local directory tree
- LLFile::mkdir(dirname);
- std::vector::iterator _cat_iter = order->mCats.begin();
- std::vector::iterator _cat_end = order->mCats.end();
- for( ; _cat_iter != _cat_end; ++_cat_iter)
- {
- std::string path = dirname + OS_SEP + LLInventoryBackup::getPath(*_cat_iter, order->mCats);
- LLFile::mkdir(path);
- }
-
- // Go go backup floater
- LLFloaterInventoryBackup* backup_floater = new LLFloaterInventoryBackup(dirname, order->mCats, order->mItems);
- backup_floater->center();
-
- // Close myself
- floater->close();
-}
-
-// static
-bool LLInventoryBackup::itemIsFolder(LLInventoryItem* item)
-{
- return ((item->getInventoryType() == LLInventoryType::IT_CATEGORY)
- || (item->getInventoryType() == LLInventoryType::IT_ROOT_CATEGORY));
-}
-
-// static
-ESaveFilter LLInventoryBackup::getSaveFilter(LLInventoryItem* item)
-{
- LLAssetType::EType type = item->getType();
- LLWearableType::EType wear = (LLWearableType::EType)(item->getFlags() & 0xFF);
- switch(type)
- {
- case LLAssetType::AT_TEXTURE:
- return FFSAVE_TGA;
- case LLAssetType::AT_SOUND:
- return FFSAVE_OGG;
- case LLAssetType::AT_SCRIPT:
- case LLAssetType::AT_LSL_TEXT:
- return FFSAVE_SCRIPT;
- case LLAssetType::AT_ANIMATION:
- return FFSAVE_ANIMATN;
- case LLAssetType::AT_GESTURE:
- return FFSAVE_GESTURE;
- case LLAssetType::AT_NOTECARD:
- return FFSAVE_NOTECARD;
- case LLAssetType::AT_LANDMARK:
- return FFSAVE_LANDMARK;
- case LLAssetType::AT_BODYPART:
- case LLAssetType::AT_CLOTHING:
- switch(wear)
- {
- case LLWearableType::WT_EYES:
- return FFSAVE_EYES;
- case LLWearableType::WT_GLOVES:
- return FFSAVE_GLOVES;
- case LLWearableType::WT_HAIR:
- return FFSAVE_HAIR;
- case LLWearableType::WT_JACKET:
- return FFSAVE_JACKET;
- case LLWearableType::WT_PANTS:
- return FFSAVE_PANTS;
- case LLWearableType::WT_SHAPE:
- return FFSAVE_SHAPE;
- case LLWearableType::WT_SHIRT:
- return FFSAVE_SHIRT;
- case LLWearableType::WT_SHOES:
- return FFSAVE_SHOES;
- case LLWearableType::WT_SKIN:
- return FFSAVE_SKIN;
- case LLWearableType::WT_SKIRT:
- return FFSAVE_SKIRT;
- case LLWearableType::WT_SOCKS:
- return FFSAVE_SOCKS;
- case LLWearableType::WT_UNDERPANTS:
- return FFSAVE_UNDERPANTS;
- case LLWearableType::WT_UNDERSHIRT:
- return FFSAVE_UNDERSHIRT;
- case LLWearableType::WT_PHYSICS:
- return FFSAVE_PHYSICS;
- default:
- return FFSAVE_ALL;
- }
- default:
- return FFSAVE_ALL;
- }
-}
-
-// static
-std::string LLInventoryBackup::getExtension(LLInventoryItem* item)
-{
- LLAssetType::EType type = item->getType();
- LLWearableType::EType wear = (LLWearableType::EType)(item->getFlags() & 0xFF);
- std::string scratch;
- switch(type)
- {
- case LLAssetType::AT_TEXTURE:
- return ".tga";
- case LLAssetType::AT_SOUND:
- return ".ogg";
- case LLAssetType::AT_SCRIPT:
- case LLAssetType::AT_LSL_TEXT:
- return ".lsl";
- case LLAssetType::AT_ANIMATION:
- return ".animatn";
- case LLAssetType::AT_GESTURE:
- return ".gesture";
- case LLAssetType::AT_NOTECARD:
- return ".notecard";
- case LLAssetType::AT_LANDMARK:
- return ".landmark";
- case LLAssetType::AT_BODYPART:
- case LLAssetType::AT_CLOTHING:
- scratch = LLWearableType::getTypeName(wear);
- if(scratch == "invalid")
- {
- if(type == LLAssetType::AT_BODYPART)
- scratch = "bodypart";
- else
- scratch = "clothing";
- }
- return "." + scratch;
- default:
- return "";
- }
-}
-
-// static
-std::string LLInventoryBackup::getUniqueFilename(std::string filename, std::string extension)
-{
- if(LLFile::isfile( (filename + extension).c_str() ))
- {
- int i = 1;
- while(LLFile::isfile( (filename + llformat(" %d", i) + extension).c_str() ))
- {
- i++;
- }
- return filename + llformat(" %d", i) + extension;
- }
- return filename + extension;
-}
-
-// static
-std::string LLInventoryBackup::getUniqueDirname(std::string dirname)
-{
- if(LLFile::isdir(dirname.c_str()))
- {
- int i = 1;
- while(LLFile::isdir( (dirname + llformat(" %d", i)).c_str() ))
- {
- i++;
- }
- return dirname + llformat(" %d", i);
- }
- return dirname;
-}
-
-
-// static
-void LLInventoryBackup::download(LLInventoryItem* item, LLFloater* floater, loaded_callback_func onImage, LLGetAssetCallback onAsset)
-{
- LLInventoryBackup::callbackdata* userdata = new LLInventoryBackup::callbackdata();
- userdata->floater = floater;
- userdata->item = item;
- LLViewerFetchedTexture* imagep;
-
- switch(item->getType())
- {
- case LLAssetType::AT_TEXTURE:
- imagep = LLViewerTextureManager::getFetchedTexture(item->getAssetUUID(), MIPMAP_TRUE, LLGLTexture::BOOST_UI);
- imagep->setLoadedCallback( onImage, 0, TRUE, FALSE, userdata, NULL ); // was setLoadedCallbackNoAuth
- break;
- case LLAssetType::AT_NOTECARD:
- case LLAssetType::AT_SCRIPT:
- case LLAssetType::AT_LSL_TEXT: // normal script download
- case LLAssetType::AT_LSL_BYTECODE:
- gAssetStorage->getInvItemAsset(LLHost::invalid,
- gAgent.getID(),
- gAgent.getSessionID(),
- item->getPermissions().getOwner(),
- LLUUID::null,
- item->getUUID(),
- item->getAssetUUID(),
- item->getType(),
- onAsset,
- userdata, // user_data
- TRUE);
- break;
- case LLAssetType::AT_SOUND:
- case LLAssetType::AT_CLOTHING:
- case LLAssetType::AT_BODYPART:
- case LLAssetType::AT_ANIMATION:
- case LLAssetType::AT_GESTURE:
- default:
- gAssetStorage->getAssetData(item->getAssetUUID(), item->getType(), onAsset, userdata, TRUE);
- break;
- }
-}
-
-// static
-void LLInventoryBackup::imageCallback(BOOL success,
- LLViewerFetchedTexture *src_vi,
- LLImageRaw* src,
- LLImageRaw* aux_src,
- S32 discard_level,
- BOOL final,
- void* userdata)
-{
- if(final)
- {
- LLInventoryBackup::callbackdata* data = static_cast(userdata);
- LLInventoryItem* item = data->item;
-
- if(!success)
- {
- LLSD args;
- args["ERROR_MESSAGE"] = "Download didn't work on " + item->getName() + ".";
- LLNotificationsUtil::add("ErrorMessage", args);
- return;
- }
-
- AIFilePicker* filepicker = AIFilePicker::create();
- filepicker->open(LLDir::getScrubbedFileName(item->getName()), getSaveFilter(item));
- filepicker->run(boost::bind(&LLInventoryBackup::imageCallback_continued, src, filepicker));
- }
- else
- {
- src_vi->setBoostLevel(LLGLTexture::BOOST_UI);
- }
-}
-
-void LLInventoryBackup::imageCallback_continued(LLImageRaw* src, AIFilePicker* filepicker)
-{
- if (!filepicker->hasFilename())
- return;
-
- std::string filename = filepicker->getFilename();
-
- LLPointer image_tga = new LLImageTGA;
- if( !image_tga->encode( src ) )
- {
- LLSD args;
- args["ERROR_MESSAGE"] = "Couldn't encode file.";
- LLNotificationsUtil::add("ErrorMessage", args);
- }
- else if( !image_tga->save( filename ) )
- {
- LLSD args;
- args["ERROR_MESSAGE"] = "Couldn't write file.";
- LLNotificationsUtil::add("ErrorMessage", args);
- }
-}
-
-// static
-void LLInventoryBackup::assetCallback(LLVFS *vfs,
- const LLUUID& asset_uuid,
- LLAssetType::EType type,
- void* user_data, S32 status, LLExtStat ext_status)
-{
- LLInventoryBackup::callbackdata* data = static_cast(user_data);
- LLInventoryItem* item = data->item;
-
- if(status != 0)
- {
- LLSD args;
- args["ERROR_MESSAGE"] = "Download didn't work on " + item->getName() + ".";
- LLNotificationsUtil::add("ErrorMessage", args);
- return;
- }
-
- // Todo: this doesn't work for static vfs shit
- LLVFile file(vfs, asset_uuid, type, LLVFile::READ);
- S32 size = file.getSize();
-
- char* buffer = new char[size]; // Deleted in assetCallback_continued.
- if (buffer == NULL)
- {
- llerrs << "Memory Allocation Failed" << llendl;
- return;
- }
-
- file.read((U8*)buffer, size);
-
- // Write it back out...
-
- AIFilePicker* filepicker = AIFilePicker::create();
- filepicker->open(LLDir::getScrubbedFileName(item->getName()), getSaveFilter(item));
- filepicker->run(boost::bind(&LLInventoryBackup::assetCallback_continued, buffer, size, filepicker));
-}
-
-// static
-void LLInventoryBackup::assetCallback_continued(char* buffer, S32 size, AIFilePicker* filepicker)
-{
- if (filepicker->hasFilename())
- {
- std::string filename = filepicker->getFilename();
- std::ofstream export_file(filename.c_str(), std::ofstream::binary);
- export_file.write(buffer, size);
- export_file.close();
- }
- delete [] buffer;
-}
-
-// static
-void LLInventoryBackup::climb(LLInventoryCategory* cat,
- std::vector& cats,
- std::vector& items)
-{
- LLInventoryModel* model = &gInventory;
-
- // Add this category
- cats.push_back(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);
- }
-}
-
-// static
-std::string LLInventoryBackup::getPath(LLInventoryCategory* cat, std::vector cats)
-{
- LLInventoryModel* model = &gInventory;
- std::string path = LLDir::getScrubbedFileName(cat->getName());
- LLInventoryCategory* parent = model->getCategory(cat->getParentUUID());
- while(parent && (std::find(cats.begin(), cats.end(), parent) != cats.end()))
- {
- path = LLDir::getScrubbedFileName(parent->getName()) + OS_SEP + path;
- parent = model->getCategory(parent->getParentUUID());
- }
- return path;
-}
-
-// static
-void LLInventoryBackup::save(LLFolderView* folder)
-{
- LLInventoryModel* model = &gInventory;
-
- std::set selected_items = folder->getSelectionList();
-
- if(selected_items.size() < 1)
- {
- // No items selected? Omg
- return;
- }
- else if(selected_items.size() == 1)
- {
- // One item. See if it's a folder
- LLUUID id = *(selected_items.begin());
- LLInventoryItem* item = model->getItem(id);
- if(item)
- {
- if(!itemIsFolder(item))
- {
- // Single item, save it now
- LLInventoryBackup::download((LLViewerInventoryItem*)item, NULL, imageCallback, assetCallback);
- return;
- }
- }
- }
-
- // We got here? We need to save multiple items or at least make a folder
-
- std::vector cats;
- std::vector items;
-
- // Make complete lists of child categories and items
- std::set::iterator sel_iter = selected_items.begin();
- std::set::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(item);
- LLInventoryCategory* parent = model->getCategory(item->getParentUUID());
- if(std::find(cats.begin(), cats.end(), parent) == cats.end())
- {
- cats.push_back(parent);
- }
- }
- }
- }
-
- LLInventoryBackupOrder* order = new LLInventoryBackupOrder();
- order->mCats = cats;
- order->mItems = items;
- LLFloaterInventoryBackupSettings* floater = new LLFloaterInventoryBackupSettings(order);
- floater->center();
-}
-
-
-
-LLFloaterInventoryBackup::LLFloaterInventoryBackup(std::string path, std::vector cats, std::vector items)
-: LLFloater(),
- mPath(path),
- mCats(cats),
- mItems(items),
- mBusy(0)
-{
- mItemsTotal = mItems.size();
- mItemsCompleted = 0;
-
- LLFloaterInventoryBackup::sInstances.push_back(this);
- LLUICtrlFactory::getInstance()->buildFloater(this, "floater_inventory_backup.xml");
-}
-
-
-LLFloaterInventoryBackup::~LLFloaterInventoryBackup()
-{
- LLFloaterInventoryBackup::sInstances.remove(this);
-}
-
-BOOL LLFloaterInventoryBackup::postBuild(void)
-{
- // Make progress bar
-
- /*
- LLLineEditor* line = new LLLineEditor(
- std::string("progress_line"),
- LLRect(4, 80, 396, 60),
- std::string("Progress"));
- line->setEnabled(FALSE);
- addChild(line);
-
- LLViewBorder* border = new LLViewBorder(
- "progress_border",
- LLRect(4, 79, 395, 60));
- addChild(border);
- */
-
- // Add all items to the list
-
- LLScrollListCtrl* list = getChild("item_list");
-
- std::vector::iterator item_iter = mItems.begin();
- std::vector::iterator item_end = mItems.end();
- for( ; item_iter != item_end; ++item_iter)
- {
- LLSD element;
- element["id"] = (*item_iter)->getUUID();
-
- LLSD& type_column = element["columns"][LIST_TYPE];
- type_column["column"] = "type";
- type_column["type"] = "icon";
- type_column["value"] = "move_down_in.tga"; // FIXME
-
- LLSD& name_column = element["columns"][LIST_NAME];
- name_column["column"] = "name";
- name_column["value"] = (*item_iter)->getName();
-
- LLSD& status_column = element["columns"][LIST_STATUS];
- status_column["column"] = "status";
- status_column["value"] = "Pending";
-
- /*LLScrollListItem* scroll_itemp = */list->addElement(element, ADD_BOTTOM);
-
- //hack to stop crashing
- //LLScrollListIcon* icon = (LLScrollListIcon*)scroll_itemp->getColumn(LIST_TYPE);
- //icon->setClickCallback(NULL);
- }
-
- // Setup and go!
- mBusy = 1;
- mItemIter = mItems.begin();
- setStatus((*mItemIter)->getUUID(), "Downloading");
- LLInventoryBackup::download(*mItemIter, this, LLFloaterInventoryBackup::imageCallback, LLFloaterInventoryBackup::assetCallback);
- advance();
-
- return TRUE;
-}
-
-void LLFloaterInventoryBackup::advance()
-{
- while((mItemIter != mItems.end()) && (mBusy < 4))
- {
- mBusy++;
- mItemIter++;
- if(mItemIter >= mItems.end()) break;
- setStatus((*mItemIter)->getUUID(), "Downloading");
- LLInventoryBackup::download(*mItemIter, this, LLFloaterInventoryBackup::imageCallback, LLFloaterInventoryBackup::assetCallback);
- }
-}
-
-void LLFloaterInventoryBackup::setStatus(LLUUID itemid, std::string status)
-{
- LLScrollListCtrl* list = getChild("item_list");
- std::vector items = list->getAllData();
- std::vector::iterator iter = items.begin();
- std::vector::iterator end = items.end();
- for( ; iter != end; ++iter)
- {
- if((*iter)->getUUID() == itemid)
- {
- (*iter)->getColumn(LIST_STATUS)->setValue(status);
- break;
- }
- }
-}
-
-void LLFloaterInventoryBackup::finishItem(LLUUID itemid, std::string status)
-{
- // Update big happy progress bar
- mItemsCompleted++;
- LLView* progress_background = getChildView("progress_background", TRUE, TRUE);
- LLRect rect = progress_background->getRect();
- float item_count = (float)mItemsTotal;
- float item_pos = (float)mItemsCompleted;
- float rect_width = (float)rect.getWidth();
- float incr = rect_width / item_count;
- incr *= item_pos;
- rect.mRight = rect.mLeft + (S32)incr;
- LLView* progress_foreground = getChildView("progress_foreground", TRUE, TRUE);
- progress_foreground->setRect(rect);
-
- if(mItemsCompleted >= mItemsTotal)
- {
- childSetText("progress_background", llformat("Completed %d items.", mItemsTotal));
- childSetVisible("progress_foreground", false);
- }
-
- // Update item status
- setStatus(itemid, status);
-
- // And advance
- mBusy--;
- advance();
-}
-
-// static
-void LLFloaterInventoryBackup::imageCallback(BOOL success,
- LLViewerFetchedTexture *src_vi,
- LLImageRaw* src,
- LLImageRaw* aux_src,
- S32 discard_level,
- BOOL final,
- void* userdata)
-{
- if(final)
- {
- LLInventoryBackup::callbackdata* data = static_cast(userdata);
- LLFloaterInventoryBackup* floater = (LLFloaterInventoryBackup*)(data->floater);
- LLInventoryItem* item = data->item;
-
- if(std::find(LLFloaterInventoryBackup::sInstances.begin(), LLFloaterInventoryBackup::sInstances.end(), floater) == LLFloaterInventoryBackup::sInstances.end())
- {
- return;
- }
-
- if(!success)
- {
- floater->finishItem(item->getUUID(), "Failed download");
- return;
- }
-
- std::string filename = floater->mPath + OS_SEP + LLInventoryBackup::getPath(gInventory.getCategory(item->getParentUUID()), floater->mCats) + OS_SEP + LLDir::getScrubbedFileName(item->getName());
- filename = LLInventoryBackup::getUniqueFilename(filename, LLInventoryBackup::getExtension(item));
-
- LLPointer image_tga = new LLImageTGA;
- if( !image_tga->encode( src ) )
- {
- floater->finishItem(item->getUUID(), "Failed tga encode");
- }
- else if( !image_tga->save( filename ) )
- {
- floater->finishItem(item->getUUID(), "Failed save");
- }
- else
- {
- floater->finishItem(item->getUUID(), "Done");
- }
- }
- else
- {
- src_vi->setBoostLevel(LLGLTexture::BOOST_UI);
- }
-}
-
-// static
-void LLFloaterInventoryBackup::assetCallback(LLVFS *vfs,
- const LLUUID& asset_uuid,
- LLAssetType::EType type,
- void* user_data, S32 status, LLExtStat ext_status)
-{
- LLInventoryBackup::callbackdata* data = static_cast(user_data);
- LLFloaterInventoryBackup* floater = (LLFloaterInventoryBackup*)(data->floater);
- LLInventoryItem* item = data->item;
-
- if(std::find(LLFloaterInventoryBackup::sInstances.begin(), LLFloaterInventoryBackup::sInstances.end(), floater) == LLFloaterInventoryBackup::sInstances.end())
- {
- return;
- }
-
- if(status != 0)
- {
- floater->finishItem(item->getUUID(), "Failed download");
- return;
- }
-
- // Todo: this doesn't work for static vfs shit
- LLVFile file(vfs, asset_uuid, type, LLVFile::READ);
- S32 size = file.getSize();
-
- char* buffer = new char[size];
- if (buffer == NULL)
- {
- //llerrs << "Memory Allocation Failed" << llendl;
- floater->finishItem(item->getUUID(), "Failed memory allocation");
- return;
- }
-
- file.read((U8*)buffer, size);
-
- // Write it back out...
- std::string filename = floater->mPath + OS_SEP + LLInventoryBackup::getPath(gInventory.getCategory(item->getParentUUID()), floater->mCats) + OS_SEP + LLDir::getScrubbedFileName(item->getName());
- filename = LLInventoryBackup::getUniqueFilename(filename, LLInventoryBackup::getExtension(item));
-
- std::ofstream export_file(filename.c_str(), std::ofstream::binary);
- export_file.write(buffer, size);
- export_file.close();
-
- floater->finishItem(item->getUUID(), "Done");
-}
-//
diff --git a/indra/newview/llinventorybackup.h b/indra/newview/llinventorybackup.h
deleted file mode 100644
index 2ee0c197c..000000000
--- a/indra/newview/llinventorybackup.h
+++ /dev/null
@@ -1,141 +0,0 @@
-//
-#ifndef LL_LLINVENTORYBACKUP_H
-#define LL_LLINVENTORYBACKUP_H
-
-#if LL_WINDOWS
-#define OS_SEP "\\"
-#else
-#define OS_SEP "/"
-#endif
-
-
-#include "llviewerinventory.h"
-#include "llfolderview.h"
-#include "statemachine/aifilepicker.h"
-#include "llviewertexture.h"
-#include "llfloater.h"
-
-class AIDirPicker;
-
-class LLInventoryBackupOrder
-{
-public:
- LLInventoryBackupOrder();
-
- std::string mPath;
- std::vector mCats;
- std::vector mItems;
-
- bool mDownloadTextures;
- bool mDownloadSounds;
- bool mDownloadCallingCards;
- bool mDownloadLandmarks;
- bool mDownloadScripts;
- bool mDownloadWearables;
- bool mDownloadObjects;
- bool mDownloadNotecards;
- bool mDownloadAnimations;
- bool mDownloadGestures;
- //bool mDownloadOthers;
-};
-
-class LLFloaterInventoryBackupSettings
-: public LLFloater
-{
-public:
- LLFloaterInventoryBackupSettings(LLInventoryBackupOrder* order);
- BOOL postBuild(void);
- static void onClickNext(void* userdata);
- static void onClickNext_continued(void* userdata, AIDirPicker* dirpicker);
-
- LLInventoryBackupOrder* mOrder;
- virtual ~LLFloaterInventoryBackupSettings();
-};
-
-class LLFloaterInventoryBackup
-: public LLFloater
-{
-public:
- LLFloaterInventoryBackup(std::string path, std::vector cats, std::vector items);
- BOOL postBuild(void);
-
- std::string mPath;
- std::vector mCats;
- std::vector mItems;
- std::vector::iterator mItemIter;
- int mBusy;
-
- static std::list sInstances;
-
-private:
- virtual ~LLFloaterInventoryBackup();
- void setStatus(LLUUID itemid, std::string status);
- void finishItem(LLUUID itemid, std::string status);
- void advance();
- static void imageCallback(BOOL success,
- LLViewerFetchedTexture *src_vi,
- LLImageRaw* src,
- LLImageRaw* aux_src,
- S32 discard_level,
- BOOL final,
- void* userdata);
- static void assetCallback(LLVFS *vfs,
- const LLUUID& asset_uuid,
- LLAssetType::EType type,
- void* user_data, S32 status, LLExtStat ext_status);
-
- int mItemsTotal;
- int mItemsCompleted;
-
- enum LIST_COLUMN_ORDER
- {
- LIST_TYPE,
- LIST_NAME,
- LIST_STATUS
- };
-
-};
-
-class AIFilePicker;
-
-class LLInventoryBackup
-{
-public:
- static ESaveFilter getSaveFilter(LLInventoryItem* item);
- static std::string getExtension(LLInventoryItem* item);
- static std::string getUniqueFilename(std::string filename, std::string extension);
- static std::string getUniqueDirname(std::string dirname);
- static bool itemIsFolder(LLInventoryItem* item);
- static void save(LLFolderView* folder);
- static void download(LLInventoryItem* item, LLFloater* floater, loaded_callback_func onImage, LLGetAssetCallback onAsset);
- static std::string getPath(LLInventoryCategory* cat, std::vector cats);
-
- struct callbackdata
- {
- LLFloater* floater;
- LLInventoryItem* item;
- };
-
-private:
- static void imageCallback(BOOL success,
- LLViewerFetchedTexture *src_vi,
- LLImageRaw* src,
- LLImageRaw* aux_src,
- S32 discard_level,
- BOOL final,
- void* userdata);
- static void imageCallback_continued(LLImageRaw* src, AIFilePicker* filepicker);
- static void assetCallback(LLVFS *vfs,
- const LLUUID& asset_uuid,
- LLAssetType::EType type,
- void* user_data, S32 status, LLExtStat ext_status);
- static void assetCallback_continued(char* buffer, S32 size, AIFilePicker* filepicker);
- static void climb(LLInventoryCategory* cat,
- std::vector& cats,
- std::vector& items);
-};
-
-
-
-#endif
-//
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index d792118e4..6316714b1 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -108,8 +108,6 @@
#include "llappviewer.h" // System Folders
#include "llfloateranimpreview.h" // for reuploads
#include "llfloaterimagepreview.h" // for reuploads
-//#include "llcheats.h"
-#include "hgfloatertexteditor.h"
#include "statemachine/aifilepicker.h"
//
diff --git a/indra/newview/lllocalinventory.cpp b/indra/newview/lllocalinventory.cpp
index 1bb9cf102..edab999ff 100644
--- a/indra/newview/lllocalinventory.cpp
+++ b/indra/newview/lllocalinventory.cpp
@@ -11,7 +11,6 @@
#include "llpreviewtexture.h"
#include "llpreviewgesture.h"
#include "llpreviewlandmark.h"
-#include "hgfloatertexteditor.h"
#include "llappviewer.h"
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 3a1cbeda7..6b665a73f 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -250,7 +250,6 @@
#include "lltexlayer.h"
//
-#include "hgfloatertexteditor.h"
#include "llfloatervfs.h"
#include "llfloatervfsexplorer.h"
#include "llfloatermessagelog.h"
diff --git a/indra/newview/skins/default/xui/en-us/floater_asset_text_editor.xml b/indra/newview/skins/default/xui/en-us/floater_asset_text_editor.xml
deleted file mode 100644
index 653bb675c..000000000
--- a/indra/newview/skins/default/xui/en-us/floater_asset_text_editor.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
- Loading...
-
-
-
-
diff --git a/indra/newview/skins/default/xui/en-us/floater_inventory_backup.xml b/indra/newview/skins/default/xui/en-us/floater_inventory_backup.xml
deleted file mode 100644
index 323851084..000000000
--- a/indra/newview/skins/default/xui/en-us/floater_inventory_backup.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/default/xui/en-us/floater_inventory_backup_settings.xml b/indra/newview/skins/default/xui/en-us/floater_inventory_backup_settings.xml
deleted file mode 100644
index 68616bce0..000000000
--- a/indra/newview/skins/default/xui/en-us/floater_inventory_backup_settings.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file