diff options
Diffstat (limited to 'indra/newview/llpreviewnotecard.cpp')
-rw-r--r-- | indra/newview/llpreviewnotecard.cpp | 942 |
1 files changed, 471 insertions, 471 deletions
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp index 6681703625..aa04540536 100644 --- a/indra/newview/llpreviewnotecard.cpp +++ b/indra/newview/llpreviewnotecard.cpp @@ -1,25 +1,25 @@ -/** +/** * @file llpreviewnotecard.cpp * @brief Implementation of the notecard editor * * $LicenseInfo:firstyear=2002&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -55,8 +55,8 @@ #include "llviewerregion.h" #include "lldir.h" #include "llviewerstats.h" -#include "llviewercontrol.h" // gSavedSettings -#include "llappviewer.h" // app_abort_quit() +#include "llviewercontrol.h" // gSavedSettings +#include "llappviewer.h" // app_abort_quit() #include "lllineeditor.h" #include "lluictrlfactory.h" #include "llviewerassetupload.h" @@ -66,259 +66,259 @@ ///---------------------------------------------------------------------------- // Default constructor -LLPreviewNotecard::LLPreviewNotecard(const LLSD& key) //const LLUUID& item_id, - : LLPreview( key ), - mLiveFile(NULL) +LLPreviewNotecard::LLPreviewNotecard(const LLSD& key) //const LLUUID& item_id, + : LLPreview( key ), + mLiveFile(NULL) { - const LLInventoryItem *item = getItem(); - if (item) - { - mAssetID = item->getAssetUUID(); - } + const LLInventoryItem *item = getItem(); + if (item) + { + mAssetID = item->getAssetUUID(); + } } LLPreviewNotecard::~LLPreviewNotecard() { - delete mLiveFile; + delete mLiveFile; } BOOL LLPreviewNotecard::postBuild() { - mEditor = getChild<LLViewerTextEditor>("Notecard Editor"); - mEditor->setNotecardInfo(mItemUUID, mObjectID, getKey()); - mEditor->makePristine(); + mEditor = getChild<LLViewerTextEditor>("Notecard Editor"); + mEditor->setNotecardInfo(mItemUUID, mObjectID, getKey()); + mEditor->makePristine(); - childSetAction("Save", onClickSave, this); - getChildView("lock")->setVisible( FALSE); + childSetAction("Save", onClickSave, this); + getChildView("lock")->setVisible( FALSE); - childSetAction("Delete", onClickDelete, this); - getChildView("Delete")->setEnabled(false); + childSetAction("Delete", onClickDelete, this); + getChildView("Delete")->setEnabled(false); - childSetAction("Edit", onClickEdit, this); + childSetAction("Edit", onClickEdit, this); - const LLInventoryItem* item = getItem(); + const LLInventoryItem* item = getItem(); - childSetCommitCallback("desc", LLPreview::onText, this); - if (item) - { - getChild<LLUICtrl>("desc")->setValue(item->getDescription()); - BOOL source_library = mObjectUUID.isNull() && gInventory.isObjectDescendentOf(item->getUUID(), gInventory.getLibraryRootFolderID()); - getChildView("Delete")->setEnabled(!source_library); - } - getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe); + childSetCommitCallback("desc", LLPreview::onText, this); + if (item) + { + getChild<LLUICtrl>("desc")->setValue(item->getDescription()); + BOOL source_library = mObjectUUID.isNull() && gInventory.isObjectDescendentOf(item->getUUID(), gInventory.getLibraryRootFolderID()); + getChildView("Delete")->setEnabled(!source_library); + } + getChild<LLLineEditor>("desc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe); - return LLPreview::postBuild(); + return LLPreview::postBuild(); } bool LLPreviewNotecard::saveItem() { - LLInventoryItem* item = gInventory.getItem(mItemUUID); - return saveIfNeeded(item); + LLInventoryItem* item = gInventory.getItem(mItemUUID); + return saveIfNeeded(item); } void LLPreviewNotecard::setEnabled( BOOL enabled ) { - LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); + LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); - getChildView("Notecard Editor")->setEnabled(enabled); - getChildView("lock")->setVisible( !enabled); - getChildView("desc")->setEnabled(enabled); - getChildView("Save")->setEnabled(enabled && editor && (!editor->isPristine())); + getChildView("Notecard Editor")->setEnabled(enabled); + getChildView("lock")->setVisible( !enabled); + getChildView("desc")->setEnabled(enabled); + getChildView("Save")->setEnabled(enabled && editor && (!editor->isPristine())); } void LLPreviewNotecard::draw() { - LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); - BOOL changed = !editor->isPristine(); + LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); + BOOL changed = !editor->isPristine(); + + getChildView("Save")->setEnabled(changed && getEnabled()); - getChildView("Save")->setEnabled(changed && getEnabled()); - - LLPreview::draw(); + LLPreview::draw(); } // virtual BOOL LLPreviewNotecard::handleKeyHere(KEY key, MASK mask) { - if(('S' == key) && (MASK_CONTROL == (mask & MASK_CONTROL))) - { - saveIfNeeded(); - return TRUE; - } + if(('S' == key) && (MASK_CONTROL == (mask & MASK_CONTROL))) + { + saveIfNeeded(); + return TRUE; + } - return LLPreview::handleKeyHere(key, mask); + return LLPreview::handleKeyHere(key, mask); } // virtual BOOL LLPreviewNotecard::canClose() { - LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); + LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); - if(mForceClose || editor->isPristine()) - { - return TRUE; - } - else - { - if(!mSaveDialogShown) - { - mSaveDialogShown = TRUE; - // Bring up view-modal dialog: Save changes? Yes, No, Cancel - LLNotificationsUtil::add("SaveChanges", LLSD(), LLSD(), boost::bind(&LLPreviewNotecard::handleSaveChangesDialog,this, _1, _2)); - } - return FALSE; - } + if(mForceClose || editor->isPristine()) + { + return TRUE; + } + else + { + if(!mSaveDialogShown) + { + mSaveDialogShown = TRUE; + // Bring up view-modal dialog: Save changes? Yes, No, Cancel + LLNotificationsUtil::add("SaveChanges", LLSD(), LLSD(), boost::bind(&LLPreviewNotecard::handleSaveChangesDialog,this, _1, _2)); + } + return FALSE; + } } /* virtual */ void LLPreviewNotecard::setObjectID(const LLUUID& object_id) { - LLPreview::setObjectID(object_id); + LLPreview::setObjectID(object_id); - LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); - editor->setNotecardObjectID(mObjectUUID); - editor->makePristine(); + LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); + editor->setNotecardObjectID(mObjectUUID); + editor->makePristine(); } const LLInventoryItem* LLPreviewNotecard::getDragItem() { - LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); + LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); - if(editor) - { - return editor->getDragItem(); - } - return NULL; + if(editor) + { + return editor->getDragItem(); + } + return NULL; } bool LLPreviewNotecard::hasEmbeddedInventory() { - LLViewerTextEditor* editor = NULL; - editor = getChild<LLViewerTextEditor>("Notecard Editor"); - if (!editor) return false; - return editor->hasEmbeddedInventory(); + LLViewerTextEditor* editor = NULL; + editor = getChild<LLViewerTextEditor>("Notecard Editor"); + if (!editor) return false; + return editor->hasEmbeddedInventory(); } void LLPreviewNotecard::refreshFromInventory(const LLUUID& new_item_id) { - if (new_item_id.notNull()) - { - mItemUUID = new_item_id; - setKey(LLSD(new_item_id)); - } - LL_DEBUGS() << "LLPreviewNotecard::refreshFromInventory()" << LL_ENDL; - loadAsset(); + if (new_item_id.notNull()) + { + mItemUUID = new_item_id; + setKey(LLSD(new_item_id)); + } + LL_DEBUGS() << "LLPreviewNotecard::refreshFromInventory()" << LL_ENDL; + loadAsset(); } void LLPreviewNotecard::updateTitleButtons() { - LLPreview::updateTitleButtons(); + LLPreview::updateTitleButtons(); - LLUICtrl* lock_btn = getChild<LLUICtrl>("lock"); - if(lock_btn->getVisible() && !isMinimized()) // lock button stays visible if floater is minimized. - { - LLRect lock_rc = lock_btn->getRect(); - LLRect buttons_rect = getDragHandle()->getButtonsRect(); - buttons_rect.mLeft = lock_rc.mLeft; - getDragHandle()->setButtonsRect(buttons_rect); - } + LLUICtrl* lock_btn = getChild<LLUICtrl>("lock"); + if(lock_btn->getVisible() && !isMinimized()) // lock button stays visible if floater is minimized. + { + LLRect lock_rc = lock_btn->getRect(); + LLRect buttons_rect = getDragHandle()->getButtonsRect(); + buttons_rect.mLeft = lock_rc.mLeft; + getDragHandle()->setButtonsRect(buttons_rect); + } } void LLPreviewNotecard::loadAsset() { - // request the asset. - const LLInventoryItem* item = getItem(); - LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); - - if (!editor) - return; - - bool fail = false; - - if(item) - { - LLPermissions perm(item->getPermissions()); - BOOL is_owner = gAgent.allowOperation(PERM_OWNER, perm, GP_OBJECT_MANIPULATE); - BOOL allow_copy = gAgent.allowOperation(PERM_COPY, perm, GP_OBJECT_MANIPULATE); - BOOL allow_modify = canModify(mObjectUUID, item); - BOOL source_library = mObjectUUID.isNull() && gInventory.isObjectDescendentOf(mItemUUID, gInventory.getLibraryRootFolderID()); - - if (allow_copy || gAgent.isGodlike()) - { - mAssetID = item->getAssetUUID(); - if(mAssetID.isNull()) - { - editor->setText(LLStringUtil::null); - editor->makePristine(); - editor->setEnabled(TRUE); - mAssetStatus = PREVIEW_ASSET_LOADED; - } - else - { - LLHost source_sim = LLHost(); - LLSD* user_data = nullptr; - if (mObjectUUID.notNull()) - { - LLViewerObject *objectp = gObjectList.findObject(mObjectUUID); - if (objectp && objectp->getRegion()) - { - source_sim = objectp->getRegion()->getHost(); - } - else - { - // The object that we're trying to look at disappeared, bail. - LL_WARNS() << "Can't find object " << mObjectUUID << " associated with notecard." << LL_ENDL; - mAssetID.setNull(); - editor->setText(getString("no_object")); - editor->makePristine(); - editor->setEnabled(FALSE); - mAssetStatus = PREVIEW_ASSET_LOADED; - return; - } - user_data = new LLSD(); - user_data->with("taskid", mObjectUUID).with("itemid", mItemUUID); - } - else - { - user_data = new LLSD(mItemUUID); - } - - gAssetStorage->getInvItemAsset(source_sim, - gAgent.getID(), - gAgent.getSessionID(), - item->getPermissions().getOwner(), - mObjectUUID, - item->getUUID(), - item->getAssetUUID(), - item->getType(), - &onLoadComplete, - (void*)user_data, - TRUE); - mAssetStatus = PREVIEW_ASSET_LOADING; - } - } - else - { - mAssetID.setNull(); - editor->setText(getString("not_allowed")); - editor->makePristine(); - editor->setEnabled(FALSE); - mAssetStatus = PREVIEW_ASSET_LOADED; - } - - if(!allow_modify) - { - editor->setEnabled(FALSE); - getChildView("lock")->setVisible( TRUE); - getChildView("Edit")->setEnabled(FALSE); - } - - if((allow_modify || is_owner) && !source_library) - { - getChildView("Delete")->setEnabled(TRUE); - } - } + // request the asset. + const LLInventoryItem* item = getItem(); + LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); + + if (!editor) + return; + + bool fail = false; + + if(item) + { + LLPermissions perm(item->getPermissions()); + BOOL is_owner = gAgent.allowOperation(PERM_OWNER, perm, GP_OBJECT_MANIPULATE); + BOOL allow_copy = gAgent.allowOperation(PERM_COPY, perm, GP_OBJECT_MANIPULATE); + BOOL allow_modify = canModify(mObjectUUID, item); + BOOL source_library = mObjectUUID.isNull() && gInventory.isObjectDescendentOf(mItemUUID, gInventory.getLibraryRootFolderID()); + + if (allow_copy || gAgent.isGodlike()) + { + mAssetID = item->getAssetUUID(); + if(mAssetID.isNull()) + { + editor->setText(LLStringUtil::null); + editor->makePristine(); + editor->setEnabled(TRUE); + mAssetStatus = PREVIEW_ASSET_LOADED; + } + else + { + LLHost source_sim = LLHost(); + LLSD* user_data = nullptr; + if (mObjectUUID.notNull()) + { + LLViewerObject *objectp = gObjectList.findObject(mObjectUUID); + if (objectp && objectp->getRegion()) + { + source_sim = objectp->getRegion()->getHost(); + } + else + { + // The object that we're trying to look at disappeared, bail. + LL_WARNS() << "Can't find object " << mObjectUUID << " associated with notecard." << LL_ENDL; + mAssetID.setNull(); + editor->setText(getString("no_object")); + editor->makePristine(); + editor->setEnabled(FALSE); + mAssetStatus = PREVIEW_ASSET_LOADED; + return; + } + user_data = new LLSD(); + user_data->with("taskid", mObjectUUID).with("itemid", mItemUUID); + } + else + { + user_data = new LLSD(mItemUUID); + } + + gAssetStorage->getInvItemAsset(source_sim, + gAgent.getID(), + gAgent.getSessionID(), + item->getPermissions().getOwner(), + mObjectUUID, + item->getUUID(), + item->getAssetUUID(), + item->getType(), + &onLoadComplete, + (void*)user_data, + TRUE); + mAssetStatus = PREVIEW_ASSET_LOADING; + } + } + else + { + mAssetID.setNull(); + editor->setText(getString("not_allowed")); + editor->makePristine(); + editor->setEnabled(FALSE); + mAssetStatus = PREVIEW_ASSET_LOADED; + } + + if(!allow_modify) + { + editor->setEnabled(FALSE); + getChildView("lock")->setVisible( TRUE); + getChildView("Edit")->setEnabled(FALSE); + } + + if((allow_modify || is_owner) && !source_library) + { + getChildView("Delete")->setEnabled(TRUE); + } + } else if (mObjectUUID.notNull() && mItemUUID.notNull()) { LLViewerObject* objectp = gObjectList.findObject(mObjectUUID); @@ -343,128 +343,128 @@ void LLPreviewNotecard::loadAsset() fail = true; } - if (fail) - { - editor->setText(LLStringUtil::null); - editor->makePristine(); - editor->setEnabled(TRUE); - // Don't set asset status here; we may not have set the item id yet - // (e.g. when this gets called initially) - //mAssetStatus = PREVIEW_ASSET_LOADED; - } + if (fail) + { + editor->setText(LLStringUtil::null); + editor->makePristine(); + editor->setEnabled(TRUE); + // Don't set asset status here; we may not have set the item id yet + // (e.g. when this gets called initially) + //mAssetStatus = PREVIEW_ASSET_LOADED; + } } // static void LLPreviewNotecard::onLoadComplete(const LLUUID& asset_uuid, - LLAssetType::EType type, - void* user_data, S32 status, LLExtStat ext_status) -{ - LL_INFOS() << "LLPreviewNotecard::onLoadComplete()" << LL_ENDL; - LLSD* floater_key = (LLSD*)user_data; - LLPreviewNotecard* preview = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", *floater_key); - if( preview ) - { - if(0 == status) - { - LLFileSystem file(asset_uuid, type, LLFileSystem::READ); - - S32 file_length = file.getSize(); - - std::vector<char> buffer(file_length+1); - file.read((U8*)&buffer[0], file_length); - - // put a EOS at the end - buffer[file_length] = 0; - - - LLViewerTextEditor* previewEditor = preview->getChild<LLViewerTextEditor>("Notecard Editor"); - - if( (file_length > 19) && !strncmp( &buffer[0], "Linden text version", 19 ) ) - { - if( !previewEditor->importBuffer( &buffer[0], file_length+1 ) ) - { - LL_WARNS() << "Problem importing notecard" << LL_ENDL; - } - } - else - { - // Version 0 (just text, doesn't include version number) - previewEditor->setText(LLStringExplicit(&buffer[0])); - } - - previewEditor->makePristine(); - BOOL modifiable = preview->canModify(preview->mObjectID, preview->getItem()); - preview->setEnabled(modifiable); - preview->syncExternal(); - preview->mAssetStatus = PREVIEW_ASSET_LOADED; - } - else - { - if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status || - LL_ERR_FILE_EMPTY == status) - { - LLNotificationsUtil::add("NotecardMissing"); - } - else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status) - { - LLNotificationsUtil::add("NotecardNoPermissions"); - } - else - { - LLNotificationsUtil::add("UnableToLoadNotecard"); - } - - LL_WARNS() << "Problem loading notecard: " << status << LL_ENDL; - preview->mAssetStatus = PREVIEW_ASSET_ERROR; - } - } - delete floater_key; + LLAssetType::EType type, + void* user_data, S32 status, LLExtStat ext_status) +{ + LL_INFOS() << "LLPreviewNotecard::onLoadComplete()" << LL_ENDL; + LLSD* floater_key = (LLSD*)user_data; + LLPreviewNotecard* preview = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", *floater_key); + if( preview ) + { + if(0 == status) + { + LLFileSystem file(asset_uuid, type, LLFileSystem::READ); + + S32 file_length = file.getSize(); + + std::vector<char> buffer(file_length+1); + file.read((U8*)&buffer[0], file_length); + + // put a EOS at the end + buffer[file_length] = 0; + + + LLViewerTextEditor* previewEditor = preview->getChild<LLViewerTextEditor>("Notecard Editor"); + + if( (file_length > 19) && !strncmp( &buffer[0], "Linden text version", 19 ) ) + { + if( !previewEditor->importBuffer( &buffer[0], file_length+1 ) ) + { + LL_WARNS() << "Problem importing notecard" << LL_ENDL; + } + } + else + { + // Version 0 (just text, doesn't include version number) + previewEditor->setText(LLStringExplicit(&buffer[0])); + } + + previewEditor->makePristine(); + BOOL modifiable = preview->canModify(preview->mObjectID, preview->getItem()); + preview->setEnabled(modifiable); + preview->syncExternal(); + preview->mAssetStatus = PREVIEW_ASSET_LOADED; + } + else + { + if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status || + LL_ERR_FILE_EMPTY == status) + { + LLNotificationsUtil::add("NotecardMissing"); + } + else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status) + { + LLNotificationsUtil::add("NotecardNoPermissions"); + } + else + { + LLNotificationsUtil::add("UnableToLoadNotecard"); + } + + LL_WARNS() << "Problem loading notecard: " << status << LL_ENDL; + preview->mAssetStatus = PREVIEW_ASSET_ERROR; + } + } + delete floater_key; } // static void LLPreviewNotecard::onClickSave(void* user_data) { - //LL_INFOS() << "LLPreviewNotecard::onBtnSave()" << LL_ENDL; - LLPreviewNotecard* preview = (LLPreviewNotecard*)user_data; - if(preview) - { - preview->saveIfNeeded(); - } + //LL_INFOS() << "LLPreviewNotecard::onBtnSave()" << LL_ENDL; + LLPreviewNotecard* preview = (LLPreviewNotecard*)user_data; + if(preview) + { + preview->saveIfNeeded(); + } } // static void LLPreviewNotecard::onClickDelete(void* user_data) { - LLPreviewNotecard* preview = (LLPreviewNotecard*)user_data; - if(preview) - { - preview->deleteNotecard(); - } + LLPreviewNotecard* preview = (LLPreviewNotecard*)user_data; + if(preview) + { + preview->deleteNotecard(); + } } // static void LLPreviewNotecard::onClickEdit(void* user_data) { - LLPreviewNotecard* preview = (LLPreviewNotecard*)user_data; - if (preview) - { - preview->openInExternalEditor(); - } + LLPreviewNotecard* preview = (LLPreviewNotecard*)user_data; + if (preview) + { + preview->openInExternalEditor(); + } } struct LLSaveNotecardInfo { - LLPreviewNotecard* mSelf; - LLUUID mItemUUID; - LLUUID mObjectUUID; - LLTransactionID mTransactionID; - LLPointer<LLInventoryItem> mCopyItem; - LLSaveNotecardInfo(LLPreviewNotecard* self, const LLUUID& item_id, const LLUUID& object_id, - const LLTransactionID& transaction_id, LLInventoryItem* copyitem) : - mSelf(self), mItemUUID(item_id), mObjectUUID(object_id), mTransactionID(transaction_id), mCopyItem(copyitem) - { - } + LLPreviewNotecard* mSelf; + LLUUID mItemUUID; + LLUUID mObjectUUID; + LLTransactionID mTransactionID; + LLPointer<LLInventoryItem> mCopyItem; + LLSaveNotecardInfo(LLPreviewNotecard* self, const LLUUID& item_id, const LLUUID& object_id, + const LLTransactionID& transaction_id, LLInventoryItem* copyitem) : + mSelf(self), mItemUUID(item_id), mObjectUUID(object_id), mTransactionID(transaction_id), mCopyItem(copyitem) + { + } }; void LLPreviewNotecard::finishInventoryUpload(LLUUID itemId, LLUUID newAssetId, LLUUID newItemId) @@ -515,25 +515,25 @@ void LLPreviewNotecard::finishTaskUpload(LLUUID itemId, LLUUID newAssetId, LLUUI bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem, bool sync) { - LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); - - if(!editor) - { - LL_WARNS() << "Cannot get handle to the notecard editor." << LL_ENDL; - return false; - } - - if(!editor->isPristine()) - { - std::string buffer; - if (!editor->exportBuffer(buffer)) - { - return false; - } - - editor->makePristine(); - const LLInventoryItem* item = getItem(); - // save it out to database + LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor"); + + if(!editor) + { + LL_WARNS() << "Cannot get handle to the notecard editor." << LL_ENDL; + return false; + } + + if(!editor->isPristine()) + { + std::string buffer; + if (!editor->exportBuffer(buffer)) + { + return false; + } + + editor->makePristine(); + const LLInventoryItem* item = getItem(); + // save it out to database if (item) { const LLViewerRegion* region = gAgent.getRegion(); @@ -552,7 +552,7 @@ bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem, bool sync) if (mObjectUUID.isNull() && !agent_url.empty()) { - uploadInfo = std::make_shared<LLBufferedAssetUploadInfo>(mItemUUID, LLAssetType::AT_NOTECARD, buffer, + uploadInfo = std::make_shared<LLBufferedAssetUploadInfo>(mItemUUID, LLAssetType::AT_NOTECARD, buffer, [](LLUUID itemId, LLUUID newAssetId, LLUUID newItemId, LLSD) { LLPreviewNotecard::finishInventoryUpload(itemId, newAssetId, newItemId); }, @@ -562,7 +562,7 @@ bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem, bool sync) else if (!mObjectUUID.isNull() && !task_url.empty()) { LLUUID object_uuid(mObjectUUID); - uploadInfo = std::make_shared<LLBufferedAssetUploadInfo>(mObjectUUID, mItemUUID, LLAssetType::AT_NOTECARD, buffer, + uploadInfo = std::make_shared<LLBufferedAssetUploadInfo>(mObjectUUID, mItemUUID, LLAssetType::AT_NOTECARD, buffer, [object_uuid](LLUUID itemId, LLUUID, LLUUID newAssetId, LLSD) { LLPreviewNotecard::finishTaskUpload(itemId, newAssetId, object_uuid); }, @@ -579,8 +579,8 @@ bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem, bool sync) } } - else if (gAssetStorage) - { + else if (gAssetStorage) + { // We need to update the asset information LLTransactionID tid; LLAssetID asset_id; @@ -590,42 +590,42 @@ bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem, bool sync) LLFileSystem file(asset_id, LLAssetType::AT_NOTECARD, LLFileSystem::APPEND); - LLSaveNotecardInfo* info = new LLSaveNotecardInfo(this, mItemUUID, mObjectUUID, - tid, copyitem); + LLSaveNotecardInfo* info = new LLSaveNotecardInfo(this, mItemUUID, mObjectUUID, + tid, copyitem); S32 size = buffer.length() + 1; file.write((U8*)buffer.c_str(), size); - gAssetStorage->storeAssetData(tid, LLAssetType::AT_NOTECARD, - &onSaveComplete, - (void*)info, - FALSE); - return true; - } - else // !gAssetStorage - { - LL_WARNS() << "Not connected to an asset storage system." << LL_ENDL; - return false; - } - if(mCloseAfterSave) - { - closeFloater(); - } - } - } - return true; + gAssetStorage->storeAssetData(tid, LLAssetType::AT_NOTECARD, + &onSaveComplete, + (void*)info, + FALSE); + return true; + } + else // !gAssetStorage + { + LL_WARNS() << "Not connected to an asset storage system." << LL_ENDL; + return false; + } + if(mCloseAfterSave) + { + closeFloater(); + } + } + } + return true; } void LLPreviewNotecard::syncExternal() { - // Sync with external editor. - std::string tmp_file = getTmpFileName(); - llstat s; - if (LLFile::stat(tmp_file, &s) == 0) // file exists - { - if (mLiveFile) mLiveFile->ignoreNextUpdate(); - writeToFile(tmp_file); - } + // Sync with external editor. + std::string tmp_file = getTmpFileName(); + llstat s; + if (LLFile::stat(tmp_file, &s) == 0) // file exists + { + if (mLiveFile) mLiveFile->ignoreNextUpdate(); + writeToFile(tmp_file); + } } /*virtual*/ @@ -641,150 +641,150 @@ void LLPreviewNotecard::inventoryChanged(LLViewerObject* object, void LLPreviewNotecard::deleteNotecard() { - LLNotificationsUtil::add("DeleteNotecard", LLSD(), LLSD(), boost::bind(&LLPreviewNotecard::handleConfirmDeleteDialog,this, _1, _2)); + LLNotificationsUtil::add("DeleteNotecard", LLSD(), LLSD(), boost::bind(&LLPreviewNotecard::handleConfirmDeleteDialog,this, _1, _2)); } // static void LLPreviewNotecard::onSaveComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed) { - LLSaveNotecardInfo* info = (LLSaveNotecardInfo*)user_data; - if(info && (0 == status)) - { - if(info->mObjectUUID.isNull()) - { - LLViewerInventoryItem* item; - item = (LLViewerInventoryItem*)gInventory.getItem(info->mItemUUID); - if(item) - { - LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item); - new_item->setAssetUUID(asset_uuid); - new_item->setTransactionID(info->mTransactionID); - new_item->updateServer(FALSE); - gInventory.updateItem(new_item); - gInventory.notifyObservers(); - } - else - { - LL_WARNS() << "Inventory item for script " << info->mItemUUID - << " is no longer in agent inventory." << LL_ENDL; - } - } - else - { - LLViewerObject* object = gObjectList.findObject(info->mObjectUUID); - LLViewerInventoryItem* item = NULL; - if(object) - { - item = (LLViewerInventoryItem*)object->getInventoryObject(info->mItemUUID); - } - if(object && item) - { - item->setAssetUUID(asset_uuid); - item->setTransactionID(info->mTransactionID); - object->updateInventory(item, TASK_INVENTORY_ITEM_KEY, false); - dialog_refresh_all(); - } - else - { - LLNotificationsUtil::add("SaveNotecardFailObjectNotFound"); - } - } - // Perform item copy to inventory - if (info->mCopyItem.notNull()) - { - LLViewerTextEditor* editor = info->mSelf->getChild<LLViewerTextEditor>("Notecard Editor"); - if (editor) - { - editor->copyInventory(info->mCopyItem); - } - } - - // Find our window and close it if requested. - - LLPreviewNotecard* previewp = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", info->mItemUUID); - if (previewp && previewp->mCloseAfterSave) - { - previewp->closeFloater(); - } - } - else - { - LL_WARNS() << "Problem saving notecard: " << status << LL_ENDL; - LLSD args; - args["REASON"] = std::string(LLAssetStorage::getErrorString(status)); - LLNotificationsUtil::add("SaveNotecardFailReason", args); - } - - std::string uuid_string; - asset_uuid.toString(uuid_string); - std::string filename; - filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,uuid_string) + ".tmp"; - LLFile::remove(filename); - delete info; + LLSaveNotecardInfo* info = (LLSaveNotecardInfo*)user_data; + if(info && (0 == status)) + { + if(info->mObjectUUID.isNull()) + { + LLViewerInventoryItem* item; + item = (LLViewerInventoryItem*)gInventory.getItem(info->mItemUUID); + if(item) + { + LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item); + new_item->setAssetUUID(asset_uuid); + new_item->setTransactionID(info->mTransactionID); + new_item->updateServer(FALSE); + gInventory.updateItem(new_item); + gInventory.notifyObservers(); + } + else + { + LL_WARNS() << "Inventory item for script " << info->mItemUUID + << " is no longer in agent inventory." << LL_ENDL; + } + } + else + { + LLViewerObject* object = gObjectList.findObject(info->mObjectUUID); + LLViewerInventoryItem* item = NULL; + if(object) + { + item = (LLViewerInventoryItem*)object->getInventoryObject(info->mItemUUID); + } + if(object && item) + { + item->setAssetUUID(asset_uuid); + item->setTransactionID(info->mTransactionID); + object->updateInventory(item, TASK_INVENTORY_ITEM_KEY, false); + dialog_refresh_all(); + } + else + { + LLNotificationsUtil::add("SaveNotecardFailObjectNotFound"); + } + } + // Perform item copy to inventory + if (info->mCopyItem.notNull()) + { + LLViewerTextEditor* editor = info->mSelf->getChild<LLViewerTextEditor>("Notecard Editor"); + if (editor) + { + editor->copyInventory(info->mCopyItem); + } + } + + // Find our window and close it if requested. + + LLPreviewNotecard* previewp = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", info->mItemUUID); + if (previewp && previewp->mCloseAfterSave) + { + previewp->closeFloater(); + } + } + else + { + LL_WARNS() << "Problem saving notecard: " << status << LL_ENDL; + LLSD args; + args["REASON"] = std::string(LLAssetStorage::getErrorString(status)); + LLNotificationsUtil::add("SaveNotecardFailReason", args); + } + + std::string uuid_string; + asset_uuid.toString(uuid_string); + std::string filename; + filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,uuid_string) + ".tmp"; + LLFile::remove(filename); + delete info; } bool LLPreviewNotecard::handleSaveChangesDialog(const LLSD& notification, const LLSD& response) { - mSaveDialogShown = FALSE; - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - switch(option) - { - case 0: // "Yes" - mCloseAfterSave = TRUE; - LLPreviewNotecard::onClickSave((void*)this); - break; - - case 1: // "No" - mForceClose = TRUE; - closeFloater(); - break; - - case 2: // "Cancel" - default: - // If we were quitting, we didn't really mean it. - LLAppViewer::instance()->abortQuit(); - break; - } - return false; + mSaveDialogShown = FALSE; + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + switch(option) + { + case 0: // "Yes" + mCloseAfterSave = TRUE; + LLPreviewNotecard::onClickSave((void*)this); + break; + + case 1: // "No" + mForceClose = TRUE; + closeFloater(); + break; + + case 2: // "Cancel" + default: + // If we were quitting, we didn't really mean it. + LLAppViewer::instance()->abortQuit(); + break; + } + return false; } bool LLPreviewNotecard::handleConfirmDeleteDialog(const LLSD& notification, const LLSD& response) { - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option != 0) - { - // canceled - return false; - } - - if (mObjectUUID.isNull()) - { - // move item from agent's inventory into trash - LLViewerInventoryItem* item = gInventory.getItem(mItemUUID); - if (item != NULL) - { - const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); - gInventory.changeItemParent(item, trash_id, FALSE); - } - } - else - { - // delete item from inventory of in-world object - LLViewerObject* object = gObjectList.findObject(mObjectUUID); - if(object) - { - LLViewerInventoryItem* item = dynamic_cast<LLViewerInventoryItem*>(object->getInventoryObject(mItemUUID)); - if (item != NULL) - { - object->removeInventory(mItemUUID); - } - } - } - - // close floater, ignore unsaved changes - mForceClose = TRUE; - closeFloater(); - return false; + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option != 0) + { + // canceled + return false; + } + + if (mObjectUUID.isNull()) + { + // move item from agent's inventory into trash + LLViewerInventoryItem* item = gInventory.getItem(mItemUUID); + if (item != NULL) + { + const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); + gInventory.changeItemParent(item, trash_id, FALSE); + } + } + else + { + // delete item from inventory of in-world object + LLViewerObject* object = gObjectList.findObject(mObjectUUID); + if(object) + { + LLViewerInventoryItem* item = dynamic_cast<LLViewerInventoryItem*>(object->getInventoryObject(mItemUUID)); + if (item != NULL) + { + object->removeInventory(mItemUUID); + } + } + } + + // close floater, ignore unsaved changes + mForceClose = TRUE; + closeFloater(); + return false; } void LLPreviewNotecard::openInExternalEditor() @@ -851,7 +851,7 @@ bool LLPreviewNotecard::loadNotecardText(const std::string& filename) return false; } - LLFILE* file = LLFile::fopen(filename, "rb"); /*Flawfinder: ignore*/ + LLFILE* file = LLFile::fopen(filename, "rb"); /*Flawfinder: ignore*/ if (!file) { LL_WARNS() << "Error opening " << filename << LL_ENDL; @@ -907,7 +907,7 @@ std::string LLPreviewNotecard::getTmpFileName() std::string notecard_id = mObjectID.asString() + "_" + mItemUUID.asString(); // Use MD5 sum to make the file name shorter and not exceed maximum path length. - char notecard_id_hash_str[33]; /* Flawfinder: ignore */ + char notecard_id_hash_str[33]; /* Flawfinder: ignore */ LLMD5 notecard_id_hash((const U8 *)notecard_id.c_str()); notecard_id_hash.hex_digest(notecard_id_hash_str); |