From 243c962c8b5a6d2dac8caf3073a03880abcf66e9 Mon Sep 17 00:00:00 2001 From: Palmer Date: Thu, 6 May 2010 15:52:26 -0700 Subject: EXT-7263 - 3200 now class 0 card and got rid of some generic strings in gpu_table. No code changed. --- indra/newview/gpu_table.txt | 83 ++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt index aa0e21ea8f..3754f30a66 100644 --- a/indra/newview/gpu_table.txt +++ b/indra/newview/gpu_table.txt @@ -70,43 +70,42 @@ ATI M56 .*ATI.*M56.* 1 1 ATI M71 .*ATI.*M71.* 1 1 ATI M72 .*ATI.*M72.* 1 1 ATI M76 .*ATI.*M76.* 3 1 -ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1 -ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1 -ATI Mobility Radeon 9800 .*ATI.*Mobility.*98.* 0 1 -ATI Mobility Radeon 9700 .*ATI.*Mobility.*97.* 0 1 -ATI Mobility Radeon 9600 .*ATI.*Mobility.*96.* 0 1 -ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD.*23.* 1 1 -ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD.*24.* 1 1 -ATI Mobility Radeon HD 2600 .*ATI.*Mobility.*HD.*26.* 3 1 -ATI Mobility Radeon HD 3400 .*ATI.*Mobility.*HD.*34.* 1 1 -ATI Mobility Radeon HD 3600 .*ATI.*Mobility.*HD.*36.* 3 1 -ATI Mobility Radeon HD 3800 .*ATI.*Mobility.*HD.*38.* 3 1 -ATI Mobility Radeon X1xxx .*ATI.*Mobility.*X1.* 0 1 -ATI Mobility Radeon X2xxx .*ATI.*Mobility.*X2.* 0 1 -ATI Mobility Radeon X3xx .*ATI.*Mobility.*X3.* 1 1 -ATI Mobility Radeon X6xx .*ATI.*Mobility.*X6.* 1 1 -ATI Mobility Radeon X7xx .*ATI.*Mobility.*X7.* 1 1 -ATI Mobility Radeon Xxxx .*ATI.*Mobility.*X.* 0 1 -ATI Mobility Radeon .*ATI.*Mobility.* 0 1 -ATI Radeon HD 2300 .*ATI.*Radeon HD 23.* 0 1 -ATI Radeon HD 2400 .*ATI.*Radeon HD.*24.* 1 1 -ATI Radeon HD 2600 .*ATI.*Radeon HD 26.* 2 1 -ATI Radeon HD 2900 .*ATI.*Radeon HD 29.* 3 1 -ATI Radeon HD 3200 .*ATI.*Radeon.*HD.*32.* 1 1 -ATI Radeon HD 3300 .*ATI.*Radeon HD.*33.* 1 1 -ATI Radeon HD 3400 .*ATI.*Radeon HD.*34.* 1 1 -ATI Radeon HD 3600 .*ATI.*Radeon HD.*36.* 3 1 -ATI Radeon HD 3800 .*ATI.*Radeon HD.*38.* 3 1 -ATI Radeon HD 4200 .*ATI.*Radeon HD 42.* 1 1 -ATI Radeon HD 4300 .*ATI.*Radeon HD 43.* 1 1 -ATI Radeon HD 4500 .*ATI.*Radeon HD 45.* 3 1 -ATI Radeon HD 4600 .*ATI.*Radeon HD.*46.* 3 1 -ATI Radeon HD 4700 .*ATI.*Radeon HD 47.* 3 1 -ATI Radeon HD 4800 .*ATI.*Radeon.*HD.*48.* 3 1 -ATI Radeon HD 5600 .*ATI.*Radeon.*HD.*56.* 3 1 -ATI Radeon HD 5700 .*ATI.*Radeon.*HD.*57.* 3 1 -ATI Radeon HD 5800 .*ATI.*Radeon.*HD.*58.* 3 1 -ATI Radeon HD 5900 .*ATI.*Radeon.*HD.*59.* 3 1 +ATI Mobility Radeon 7xxx .*ATI.*Mobility *Radeon 7.* 0 1 +ATI Mobility Radeon 8xxx .*ATI.*Mobility *Radeon 8.* 0 1 +ATI Mobility Radeon 9800 .*ATI.*Mobility *98.* 0 1 +ATI Mobility Radeon 9700 .*ATI.*Mobility *97.* 0 1 +ATI Mobility Radeon 9600 .*ATI.*Mobility *96.* 0 1 +ATI Mobility Radeon HD 2300 .*ATI.*Mobility *HD *23.* 1 1 +ATI Mobility Radeon HD 2400 .*ATI.*Mobility *HD *24.* 1 1 +ATI Mobility Radeon HD 2600 .*ATI.*Mobility *HD *26.* 3 1 +ATI Mobility Radeon HD 3400 .*ATI.*Mobility *HD *34.* 1 1 +ATI Mobility Radeon HD 3600 .*ATI.*Mobility *HD *36.* 3 1 +ATI Mobility Radeon HD 3800 .*ATI.*Mobility *HD *38.* 3 1 +ATI Mobility Radeon X1xxx .*ATI.*Mobility *X1.* 0 1 +ATI Mobility Radeon X2xxx .*ATI.*Mobility *X2.* 0 1 +ATI Mobility Radeon X3xx .*ATI.*Mobility *X3.* 1 1 +ATI Mobility Radeon X6xx .*ATI.*Mobility *X6.* 1 1 +ATI Mobility Radeon X7xx .*ATI.*Mobility *X7.* 1 1 +ATI Mobility Radeon Xxxx .*ATI.*Mobility *X.* 0 1 +ATI Radeon HD 2300 .*ATI.*Radeon HD *23.* 0 1 +ATI Radeon HD 2400 .*ATI.*Radeon HD *24.* 1 1 +ATI Radeon HD 2600 .*ATI.*Radeon HD *26.* 2 1 +ATI Radeon HD 2900 .*ATI.*Radeon HD *29.* 3 1 +ATI Radeon HD 3200 .*ATI.*Radeon *HD *32.* 0 1 +ATI Radeon HD 3300 .*ATI.*Radeon HD *33.* 1 1 +ATI Radeon HD 3400 .*ATI.*Radeon HD *34.* 1 1 +ATI Radeon HD 3600 .*ATI.*Radeon HD *36.* 3 1 +ATI Radeon HD 3800 .*ATI.*Radeon HD *38.* 3 1 +ATI Radeon HD 4200 .*ATI.*Radeon HD *42.* 1 1 +ATI Radeon HD 4300 .*ATI.*Radeon HD *43.* 1 1 +ATI Radeon HD 4500 .*ATI.*Radeon HD *45.* 3 1 +ATI Radeon HD 4600 .*ATI.*Radeon HD *46.* 3 1 +ATI Radeon HD 4700 .*ATI.*Radeon HD *47.* 3 1 +ATI Radeon HD 4800 .*ATI.*Radeon.*HD *48.* 3 1 +ATI Radeon HD 5600 .*ATI.*Radeon.*HD *56.* 3 1 +ATI Radeon HD 5700 .*ATI.*Radeon.*HD *57.* 3 1 +ATI Radeon HD 5800 .*ATI.*Radeon.*HD *58.* 3 1 +ATI Radeon HD 5900 .*ATI.*Radeon.*HD *59.* 3 1 ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0 ATI Radeon 2100 .*ATI.*Radeon 21.* 0 1 ATI Radeon 3100 .*ATI.*Radeon 31.* 1 1 @@ -128,12 +127,12 @@ ATI Radeon VE .*ATI.*Radeon.*VE.* 0 0 ATI Radeon X1000 .*ATI.*Radeon *X10.* 0 1 ATI Radeon X1200 .*ATI.*Radeon *X12.* 0 1 ATI Radeon X1300 .*ATI.*Radeon *X13.* 1 1 -ATI Radeon X1400 .*ATI.*Radeon X14.* 1 1 -ATI Radeon X1500 .*ATI.*Radeon X15.* 1 1 +ATI Radeon X1400 .*ATI.*Radeon *X14.* 1 1 +ATI Radeon X1500 .*ATI.*Radeon *X15.* 1 1 ATI Radeon X1600 .*ATI.*Radeon *X16.* 1 1 -ATI Radeon X1700 .*ATI.*Radeon X17.* 1 1 -ATI Radeon X1800 .*ATI.*Radeon X18.* 3 1 -ATI Radeon X1900 .*ATI.*Radeon X19.* 3 1 +ATI Radeon X1700 .*ATI.*Radeon *X17.* 1 1 +ATI Radeon X1800 .*ATI.*Radeon *X18.* 3 1 +ATI Radeon X1900 .*ATI.*Radeon *X19.* 3 1 ATI Radeon X300 .*ATI.*Radeon *X3.* 0 1 ATI Radeon X400 .*ATI.*Radeon X4.* 0 1 ATI Radeon X500 .*ATI.*Radeon X5.* 0 1 -- cgit v1.2.3 From 78b3419fc895371aaeb4df9b886b3ee08c5ffd81 Mon Sep 17 00:00:00 2001 From: Yuri Chebotarev Date: Fri, 7 May 2010 08:51:23 +0300 Subject: EXT-7143 FIXED remove redundat code reviewed V.Savchuk at https://codereview.productengine.com/secondlife/r/358/ --HG-- branch : product-engine --- indra/newview/llpanelgroup.cpp | 68 +----------------------------------------- indra/newview/llpanelgroup.h | 6 ---- 2 files changed, 1 insertion(+), 73 deletions(-) diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp index c00b6a4147..39833a7201 100644 --- a/indra/newview/llpanelgroup.cpp +++ b/indra/newview/llpanelgroup.cpp @@ -92,8 +92,7 @@ LLPanelGroup::LLPanelGroup() : LLPanel(), LLGroupMgrObserver( LLUUID() ), mSkipRefresh(FALSE), - mButtonJoin(NULL), - mShowingNotifyDialog(false) + mButtonJoin(NULL) { // Set up the factory callbacks. // Roles sub tabs @@ -629,69 +628,4 @@ void LLPanelGroup::showNotice(const std::string& subject, } -bool LLPanelGroup::canClose() -{ - if(getVisible() == false) - return true; - - bool need_save = false; - std::string mesg; - for(std::vector::iterator it = mTabs.begin();it!=mTabs.end();++it) - if(need_save|=(*it)->needsApply(mesg)) - break; - if(!need_save) - return false; - // If no message was provided, give a generic one. - if (mesg.empty()) - { - mesg = mDefaultNeedsApplyMesg; - } - // Create a notify box, telling the user about the unapplied tab. - LLSD args; - args["NEEDS_APPLY_MESSAGE"] = mesg; - args["WANT_APPLY_MESSAGE"] = mWantApplyMesg; - - LLNotificationsUtil::add("SaveChanges", args, LLSD(), boost::bind(&LLPanelGroup::handleNotifyCallback,this, _1, _2)); - - mShowingNotifyDialog = true; - - return false; -} - -bool LLPanelGroup::notifyChildren(const LLSD& info) -{ - if(info.has("request") && mID.isNull() ) - { - std::string str_action = info["request"]; - - if (str_action == "quit" ) - { - canClose(); - return true; - } - if(str_action == "wait_quit") - return mShowingNotifyDialog; - } - return false; -} -bool LLPanelGroup::handleNotifyCallback(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - mShowingNotifyDialog = false; - switch (option) - { - case 0: // "Apply Changes" - apply(); - break; - case 1: // "Ignore Changes" - break; - case 2: // "Cancel" - default: - // Do nothing. The user is canceling the action. - // If we were quitting, we didn't really mean it. - LLAppViewer::instance()->abortQuit(); - break; - } - return false; -} diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h index 359f252383..13a03b0713 100644 --- a/indra/newview/llpanelgroup.h +++ b/indra/newview/llpanelgroup.h @@ -95,9 +95,6 @@ public: LLOfferInfo* inventory_offer); - bool notifyChildren (const LLSD& info); - bool handleNotifyCallback(const LLSD&, const LLSD&); - protected: virtual void update(LLGroupChange gc); @@ -117,9 +114,6 @@ protected: protected: bool apply(LLPanelGroupTab* tab); - bool canClose(); - - bool mShowingNotifyDialog; LLTimer mRefreshTimer; -- cgit v1.2.3 From f00aad012376160f039a46edb38a7faf3ea12e5f Mon Sep 17 00:00:00 2001 From: Igor Borovkov Date: Fri, 7 May 2010 13:17:11 +0300 Subject: EXT-7165 FIXED panel outfit edit now observes all changes in COF (incl. wearables order changes) - added observing changes in the COF (based on version changes of the COF category, COF's version is also updated when order of COF items is changed) - got rid of outfit fetcher, cause the only used outfit is COF which is always in a fetched state - minor cleanup Reviewed by Mike Antipov and Neal Orman at https://codereview.productengine.com/secondlife/r/356/ --HG-- branch : product-engine --- indra/newview/llpaneloutfitedit.cpp | 112 ++++++++++++------------------------ indra/newview/llpaneloutfitedit.h | 17 +----- 2 files changed, 39 insertions(+), 90 deletions(-) diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index daa41e1467..43c2f01da5 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -77,11 +77,16 @@ const U64 ALL_ITEMS_MASK = WEARABLE_MASK | ATTACHMENT_MASK; static const std::string SAVE_BTN("save_btn"); static const std::string REVERT_BTN("revert_btn"); -class LLInventoryLookObserver : public LLInventoryObserver +class LLCOFObserver : public LLInventoryObserver { public: - LLInventoryLookObserver(LLPanelOutfitEdit *panel) : mPanel(panel) {} - virtual ~LLInventoryLookObserver() + LLCOFObserver(LLPanelOutfitEdit *panel) : mPanel(panel), + mCOFLastVersion(LLViewerInventoryCategory::VERSION_UNKNOWN) + { + gInventory.addObserver(this); + } + + virtual ~LLCOFObserver() { if (gInventory.containsObserver(this)) { @@ -91,51 +96,43 @@ public: virtual void changed(U32 mask) { - if (mask & (LLInventoryObserver::ADD | LLInventoryObserver::REMOVE)) - { - mPanel->updateLookInfo(); - } + if (!gInventory.isInventoryUsable()) return; + + LLUUID cof = LLAppearanceMgr::getInstance()->getCOF(); + if (cof.isNull()) return; + + LLViewerInventoryCategory* cat = gInventory.getCategory(cof); + if (!cat) return; + + S32 cof_version = cat->getVersion(); + + if (cof_version == mCOFLastVersion) return; + + mCOFLastVersion = cof_version; + + mPanel->update(); } + protected: LLPanelOutfitEdit *mPanel; -}; -class LLLookFetchObserver : public LLInventoryFetchDescendentsObserver -{ -public: - LLLookFetchObserver(LLPanelOutfitEdit *panel) : - mPanel(panel) - {} - LLLookFetchObserver() {} - virtual void done() - { - mPanel->lookFetched(); - if(gInventory.containsObserver(this)) - { - gInventory.removeObserver(this); - } - } -private: - LLPanelOutfitEdit *mPanel; + //last version number of a COF category + S32 mCOFLastVersion; }; LLPanelOutfitEdit::LLPanelOutfitEdit() : LLPanel(), - mCurrentOutfitID(), - mFetchLook(NULL), mSearchFilter(NULL), mCOFWearables(NULL), mInventoryItemsPanel(NULL), - mLookObserver(NULL) + mCOFObserver(NULL) { mSavedFolderState = new LLSaveFolderState(); mSavedFolderState->setApply(FALSE); - mFetchLook = new LLLookFetchObserver(this); - mLookObserver = new LLInventoryLookObserver(this); - gInventory.addObserver(mLookObserver); + mCOFObserver = new LLCOFObserver(this); mLookItemTypes.reserve(NUM_LOOK_ITEM_TYPES); for (U32 i = 0; i < NUM_LOOK_ITEM_TYPES; i++) @@ -149,17 +146,8 @@ LLPanelOutfitEdit::LLPanelOutfitEdit() LLPanelOutfitEdit::~LLPanelOutfitEdit() { delete mSavedFolderState; - if (gInventory.containsObserver(mFetchLook)) - { - gInventory.removeObserver(mFetchLook); - } - delete mFetchLook; - - if (gInventory.containsObserver(mLookObserver)) - { - gInventory.removeObserver(mLookObserver); - } - delete mLookObserver; + + delete mCOFObserver; } BOOL LLPanelOutfitEdit::postBuild() @@ -242,9 +230,6 @@ void LLPanelOutfitEdit::moveWearable(bool closer_to_body) LLViewerInventoryItem* wearable_to_move = gInventory.getItem(item_id); LLAppearanceMgr::getInstance()->moveWearable(wearable_to_move, closer_to_body); - - //*TODO why not to listen to inventory? - updateLookInfo(); } void LLPanelOutfitEdit::toggleAddWearablesPanel() @@ -360,10 +345,7 @@ void LLPanelOutfitEdit::onAddToOutfitClicked(void) LLFolderViewEventListener* listenerp = curr_item->getListener(); if (!listenerp) return; - if (LLAppearanceMgr::getInstance()->wearItemOnAvatar(listenerp->getUUID())) - { - updateLookInfo(); - } + LLAppearanceMgr::getInstance()->wearItemOnAvatar(listenerp->getUUID()); } @@ -372,8 +354,6 @@ void LLPanelOutfitEdit::onRemoveFromOutfitClicked(void) LLUUID id_to_remove = mCOFWearables->getSelectedUUID(); LLAppearanceMgr::getInstance()->removeItemFromAvatar(id_to_remove); - - updateLookInfo(); } @@ -465,34 +445,13 @@ void LLPanelOutfitEdit::onOutfitItemSelectionChange(void) } } -void LLPanelOutfitEdit::changed(U32 mask) -{ -} - -void LLPanelOutfitEdit::lookFetched(void) +void LLPanelOutfitEdit::update() { mCOFWearables->refresh(); updateVerbs(); } -void LLPanelOutfitEdit::updateLookInfo() -{ - if (getVisible()) - { - mFetchLook->setFetchID(mCurrentOutfitID); - mFetchLook->startFetch(); - if (mFetchLook->isFinished()) - { - mFetchLook->done(); - } - else - { - gInventory.addObserver(mFetchLook); - } - } -} - void LLPanelOutfitEdit::displayCurrentOutfit() { if (!getVisible()) @@ -500,8 +459,6 @@ void LLPanelOutfitEdit::displayCurrentOutfit() setVisible(TRUE); } - mCurrentOutfitID = LLAppearanceMgr::getInstance()->getCOF(); - std::string current_outfit_name; if (LLAppearanceMgr::getInstance()->getBaseOutfitName(current_outfit_name)) { @@ -512,12 +469,15 @@ void LLPanelOutfitEdit::displayCurrentOutfit() mCurrentOutfitName->setText(getString("No Outfit")); } - updateLookInfo(); + update(); } //private void LLPanelOutfitEdit::updateVerbs() { + //*TODO implement better handling of COF dirtiness + LLAppearanceMgr::getInstance()->updateIsDirty(); + bool outfit_is_dirty = LLAppearanceMgr::getInstance()->isOutfitDirty(); childSetEnabled(SAVE_BTN, outfit_is_dirty); diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h index 0074cd517b..3cdfed14b9 100644 --- a/indra/newview/llpaneloutfitedit.h +++ b/indra/newview/llpaneloutfitedit.h @@ -48,13 +48,12 @@ class LLButton; class LLCOFWearables; class LLTextBox; class LLInventoryCategory; -class LLInventoryLookObserver; +class LLCOFObserver; class LLInventoryPanel; class LLSaveFolderState; class LLFolderViewItem; class LLScrollListCtrl; class LLToggleableMenu; -class LLLookFetchObserver; class LLFilterEditor; class LLFilteredWearableListManager; @@ -82,11 +81,6 @@ public: /*virtual*/ ~LLPanelOutfitEdit(); /*virtual*/ BOOL postBuild(); - /*virtual*/ void changed(U32 mask); - - /*virtual*/ void setParcelID(const LLUUID& parcel_id); - // Sends a request for data about the given parcel, which will - // only update the location if there is none already available. void moveWearable(bool closer_to_body); @@ -106,16 +100,12 @@ public: void displayCurrentOutfit(); - void lookFetched(void); - - void updateLookInfo(void); + void update(); private: void updateVerbs(); - //*TODO got rid of mCurrentOutfitID - LLUUID mCurrentOutfitID; LLTextBox* mCurrentOutfitName; LLInventoryPanel* mInventoryItemsPanel; @@ -127,8 +117,7 @@ private: LLFilteredWearableListManager* mWearableListManager; - LLLookFetchObserver* mFetchLook; - LLInventoryLookObserver* mLookObserver; + LLCOFObserver* mCOFObserver; std::vector mLookItemTypes; LLCOFWearables* mCOFWearables; -- cgit v1.2.3 From 16da0b8cb3582904b4647538321a90a443d9b8b1 Mon Sep 17 00:00:00 2001 From: Igor Borovkov Date: Fri, 7 May 2010 14:52:51 +0300 Subject: EXT-7205 FIXED reversed displaying order of clothing items of the same type in panel outfit edit - reversed iterating order - switched up/down buttons' callbacks Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/359/ --HG-- branch : product-engine --- indra/newview/llcofwearables.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index 1925b818f2..29c32b6fa2 100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -199,8 +199,8 @@ LLPanelClothingListItem* LLCOFWearables::buildClothingListItem(LLViewerInventory //setting callbacks //*TODO move that item panel's inner structure disclosing stuff into the panels item_panel->childSetAction("btn_delete", mCOFCallbacks.mDeleteWearable); - item_panel->childSetAction("btn_move_up", mCOFCallbacks.mMoveWearableCloser); - item_panel->childSetAction("btn_move_down", mCOFCallbacks.mMoveWearableFurther); + item_panel->childSetAction("btn_move_up", mCOFCallbacks.mMoveWearableFurther); + item_panel->childSetAction("btn_move_down", mCOFCallbacks.mMoveWearableCloser); item_panel->childSetAction("btn_edit", mCOFCallbacks.mEditWearable); //turning on gray separator line for the last item in the items group of the same wearable type @@ -243,11 +243,12 @@ void LLCOFWearables::populateClothingList(LLAppearanceMgr::wearables_by_type_t& LLAppearanceMgr::sortItemsByActualDescription(clothing_by_type[type]); - for (U32 i = 0; i < size; i++) + //clothing items are displayed in reverse order, from furthest ones to closest ones (relatively to the body) + for (U32 i = size; i != 0; --i) { - LLViewerInventoryItem* item = clothing_by_type[type][i]; + LLViewerInventoryItem* item = clothing_by_type[type][i-1]; - LLPanelClothingListItem* item_panel = buildClothingListItem(item, i == 0, i == size - 1); + LLPanelClothingListItem* item_panel = buildClothingListItem(item, i == size, i == 1); if (!item_panel) continue; mClothing->addItem(item_panel, item->getUUID(), ADD_BOTTOM, false); -- cgit v1.2.3 From 321b4a313b0b26b861252d9cdf966866e2db2fb9 Mon Sep 17 00:00:00 2001 From: Yuri Chebotarev Date: Fri, 7 May 2010 19:03:58 +0300 Subject: EXT-7106 FIX remove multiply binding for switch tab callback Reviwed by V.Savchuk at https://codereview.productengine.com/secondlife/r/361/ --HG-- branch : product-engine --- indra/newview/llpanelgrouproles.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 0c24e6ad22..a77ba0c69c 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -145,8 +145,6 @@ BOOL LLPanelGroupRoles::postBuild() llwarns << "Invalid subtab panel: " << panel->getName() << llendl; return FALSE; } - // Add click callbacks to all the tabs. - mSubTabContainer->setCommitCallback(boost::bind(&LLPanelGroupRoles::handleClickSubTab, this)); // Hand the subtab a pointer to this LLPanelGroupRoles, so that it can // look around for the widgets it is interested in. @@ -155,6 +153,8 @@ BOOL LLPanelGroupRoles::postBuild() //subtabp->addObserver(this); } + // Add click callbacks to all the tabs. + mSubTabContainer->setCommitCallback(boost::bind(&LLPanelGroupRoles::handleClickSubTab, this)); // Set the current tab to whatever is currently being shown. mCurrentTab = (LLPanelGroupTab*) mSubTabContainer->getCurrentPanel(); -- cgit v1.2.3 From 183122bc1dae8832c3dd728bfe76144165a0d2d7 Mon Sep 17 00:00:00 2001 From: Loren Shih Date: Fri, 7 May 2010 13:44:03 -0400 Subject: EXT-7269 : FIXED : Issue warning dialog when item is deleted that has links pointing to it Warning now comes up if you try to delete an item that has any item links pointing to it (in memory). This assumes that the viewer actually knows about those links, which is true at least in 2.0 since links only appear in Outfits folders and this code causes those to be fetched into memory on startup. --- indra/newview/llinventorybridge.cpp | 51 +++++++++++++++++++--- indra/newview/llinventorybridge.h | 2 + indra/newview/llpaneloutfitsinventory.cpp | 9 ++++ .../newview/skins/default/xui/en/notifications.xml | 13 ++++++ 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 228ab7ebd6..a979454938 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -1405,13 +1405,56 @@ BOOL LLItemBridge::removeItem() { return FALSE; } + + // move it to the trash LLPreview::hide(mUUID, TRUE); LLInventoryModel* model = getInventoryModel(); if(!model) return FALSE; - const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); + const LLUUID& trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); + LLViewerInventoryItem* item = getItem(); + if (!item) return FALSE; + + // Already in trash + if (model->isObjectDescendentOf(mUUID, trash_id)) return FALSE; + + LLNotification::Params params("ConfirmItemDeleteHasLinks"); + params.functor.function(boost::bind(&LLItemBridge::confirmRemoveItem, this, _1, _2)); + + if (!item->getIsLinkType()) + { + LLInventoryModel::cat_array_t cat_array; + LLInventoryModel::item_array_t item_array; + LLLinkedItemIDMatches is_linked_item_match(mUUID); + gInventory.collectDescendentsIf(gInventory.getRootFolderID(), + cat_array, + item_array, + LLInventoryModel::INCLUDE_TRASH, + is_linked_item_match); + U32 num_links = cat_array.size() + item_array.size(); + if (num_links > 0) + { + LLNotifications::instance().add(params); + return FALSE; + } + } + + LLNotifications::instance().forceResponse(params, 0); + return TRUE; +} + +BOOL LLItemBridge::confirmRemoveItem(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option != 0) return FALSE; + + LLInventoryModel* model = getInventoryModel(); + if (!model) return FALSE; + LLViewerInventoryItem* item = getItem(); + if (!item) return FALSE; + const LLUUID& trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); // if item is not already in trash if(item && !model->isObjectDescendentOf(mUUID, trash_id)) { @@ -1420,11 +1463,7 @@ BOOL LLItemBridge::removeItem() // delete was successful return TRUE; } - else - { - // tried to delete already item in trash (should purge?) - return FALSE; - } + return FALSE; } BOOL LLItemBridge::isItemCopyable() const diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index c45e376cab..aa3b36e7e2 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -267,6 +267,8 @@ protected: virtual BOOL isItemPermissive() const; static void buildDisplayName(LLInventoryItem* item, std::string& name); mutable std::string mDisplayName; + + BOOL confirmRemoveItem(const LLSD& notification, const LLSD& response); }; class LLFolderBridge : public LLInvFVBridge diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index e36e63521e..111894b31c 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -91,6 +91,15 @@ BOOL LLPanelOutfitsInventory::postBuild() initTabPanels(); initListCommandsHandlers(); + // Fetch your outfits folder so that the links are in memory. + // ( This is only necessary if we want to show a warning if a user deletes an item that has a + // a link in an outfit, see "ConfirmItemDeleteHasLinks". ) + const LLUUID &outfits_cat = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTFIT, false); + if (outfits_cat.notNull()) + { + LLInventoryModelBackgroundFetch::instance().start(outfits_cat); + } + return TRUE; } diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 10914285dd..149a254f49 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -2122,6 +2122,19 @@ Price to pay for listing must be at least L$[MIN_PRICE]. Please enter a higher price. + +At least one of the items you has link items that point to it. If you delete this item, its links will permanently stop working. It is strongly advised to delete the links first. + +Are you sure you want to delete these items? + + + Date: Fri, 7 May 2010 22:07:01 +0300 Subject: EXT-2493 FIXED Added strafe buttons. - Added slide left and Move right buttons to movement actions panel, when inserting them in xml organized buttons in panel into 3 columns to make their position more easily configurable. - Removed hiding of fly up and down buttons. When not flying(in walk/run mode) they act as jump ans crouch. - Added movement mode(walk/run/fly) dependent tooltips for fly/jump/crouch and slide buttons. - Added comment regarding implementation of move floater buttons toggling when user moves via keyboard (because it's not quite obvious and time consuming when you first encounter it) to LLFloaterMove::postBuild(). Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/360 --HG-- branch : product-engine --- indra/newview/llagent.cpp | 2 + indra/newview/llmoveview.cpp | 29 ++-- indra/newview/llmoveview.h | 3 +- .../textures/bottomtray/Movement_Left_Off.png | Bin 0 -> 47887 bytes .../textures/bottomtray/Movement_Left_On.png | Bin 0 -> 47995 bytes .../textures/bottomtray/Movement_Right_Off.png | Bin 0 -> 48333 bytes .../textures/bottomtray/Movement_Right_On.png | Bin 0 -> 47187 bytes indra/newview/skins/default/textures/textures.xml | 4 + .../skins/default/xui/en/floater_moveview.xml | 146 +++++++++++++++------ .../default/xui/en/panel_stand_stop_flying.xml | 6 +- 10 files changed, 140 insertions(+), 50 deletions(-) create mode 100644 indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png create mode 100644 indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png create mode 100644 indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png create mode 100644 indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index ddcaeb113d..88ba5dce11 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -1495,6 +1495,8 @@ void LLAgent::propagate(const F32 dt) floater_move->mBackwardButton ->setToggleState( gAgentCamera.getAtKey() < 0 || gAgentCamera.getWalkKey() < 0 ); floater_move->mTurnLeftButton ->setToggleState( gAgentCamera.getYawKey() > 0.f ); floater_move->mTurnRightButton ->setToggleState( gAgentCamera.getYawKey() < 0.f ); + floater_move->mSlideLeftButton ->setToggleState( gAgentCamera.getLeftKey() > 0.f ); + floater_move->mSlideRightButton ->setToggleState( gAgentCamera.getLeftKey() < 0.f ); floater_move->mMoveUpButton ->setToggleState( gAgentCamera.getUpKey() > 0 ); floater_move->mMoveDownButton ->setToggleState( gAgentCamera.getUpKey() < 0 ); } diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index 2f22512aba..afca9daa67 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -91,12 +91,20 @@ BOOL LLFloaterMove::postBuild() LLDockableFloater::postBuild(); + // Code that implements floater buttons toggling when user moves via keyboard is located in LLAgent::propagate() + mForwardButton = getChild("forward btn"); mForwardButton->setHeldDownDelay(MOVE_BUTTON_DELAY); mBackwardButton = getChild("backward btn"); mBackwardButton->setHeldDownDelay(MOVE_BUTTON_DELAY); + mSlideLeftButton = getChild("move left btn"); + mSlideLeftButton->setHeldDownDelay(MOVE_BUTTON_DELAY); + + mSlideRightButton = getChild("move right btn"); + mSlideRightButton->setHeldDownDelay(MOVE_BUTTON_DELAY); + mTurnLeftButton = getChild("turn left btn"); mTurnLeftButton->setHeldDownDelay(MOVE_BUTTON_DELAY); mTurnLeftButton->setHeldDownCallback(boost::bind(&LLFloaterMove::turnLeft, this)); @@ -125,8 +133,6 @@ BOOL LLFloaterMove::postBuild() btn = getChild("mode_fly_btn"); btn->setCommitCallback(boost::bind(&LLFloaterMove::onFlyButtonClick, this)); - showFlyControls(false); - initModeTooltips(); initModeButtonMap(); @@ -345,33 +351,38 @@ void LLFloaterMove::setMovementMode(const EMovementMode mode) void LLFloaterMove::updateButtonsWithMovementMode(const EMovementMode newMode) { - showFlyControls(MM_FLY == newMode); setModeTooltip(newMode); setModeButtonToggleState(newMode); setModeTitle(newMode); } -void LLFloaterMove::showFlyControls(bool bShow) -{ - mMoveUpButton->setVisible(bShow); - mMoveDownButton->setVisible(bShow); -} - void LLFloaterMove::initModeTooltips() { control_tooltip_map_t walkTipMap; walkTipMap.insert(std::make_pair(mForwardButton, getString("walk_forward_tooltip"))); walkTipMap.insert(std::make_pair(mBackwardButton, getString("walk_back_tooltip"))); + walkTipMap.insert(std::make_pair(mSlideLeftButton, getString("walk_left_tooltip"))); + walkTipMap.insert(std::make_pair(mSlideRightButton, getString("walk_right_tooltip"))); + walkTipMap.insert(std::make_pair(mMoveUpButton, getString("jump_tooltip"))); + walkTipMap.insert(std::make_pair(mMoveDownButton, getString("crouch_tooltip"))); mModeControlTooltipsMap[MM_WALK] = walkTipMap; control_tooltip_map_t runTipMap; runTipMap.insert(std::make_pair(mForwardButton, getString("run_forward_tooltip"))); runTipMap.insert(std::make_pair(mBackwardButton, getString("run_back_tooltip"))); + runTipMap.insert(std::make_pair(mSlideLeftButton, getString("run_left_tooltip"))); + runTipMap.insert(std::make_pair(mSlideRightButton, getString("run_right_tooltip"))); + runTipMap.insert(std::make_pair(mMoveUpButton, getString("jump_tooltip"))); + runTipMap.insert(std::make_pair(mMoveDownButton, getString("crouch_tooltip"))); mModeControlTooltipsMap[MM_RUN] = runTipMap; control_tooltip_map_t flyTipMap; flyTipMap.insert(std::make_pair(mForwardButton, getString("fly_forward_tooltip"))); flyTipMap.insert(std::make_pair(mBackwardButton, getString("fly_back_tooltip"))); + flyTipMap.insert(std::make_pair(mSlideLeftButton, getString("fly_left_tooltip"))); + flyTipMap.insert(std::make_pair(mSlideRightButton, getString("fly_right_tooltip"))); + flyTipMap.insert(std::make_pair(mMoveUpButton, getString("fly_up_tooltip"))); + flyTipMap.insert(std::make_pair(mMoveDownButton, getString("fly_down_tooltip"))); mModeControlTooltipsMap[MM_FLY] = flyTipMap; setModeTooltip(MM_WALK); diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h index dcca8308d9..fcf643f050 100644 --- a/indra/newview/llmoveview.h +++ b/indra/newview/llmoveview.h @@ -88,7 +88,6 @@ private: void onFlyButtonClick(); void initMovementMode(); void setMovementMode(const EMovementMode mode); - void showFlyControls(bool bShow); void initModeTooltips(); void setModeTooltip(const EMovementMode mode); void setModeTitle(const EMovementMode mode); @@ -102,6 +101,8 @@ public: LLJoystickAgentTurn* mForwardButton; LLJoystickAgentTurn* mBackwardButton; + LLJoystickAgentSlide* mSlideLeftButton; + LLJoystickAgentSlide* mSlideRightButton; LLButton* mTurnLeftButton; LLButton* mTurnRightButton; LLButton* mMoveUpButton; diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png new file mode 100644 index 0000000000..ded370a46f Binary files /dev/null and b/indra/newview/skins/default/textures/bottomtray/Movement_Left_Off.png differ diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png new file mode 100644 index 0000000000..98bf415f84 Binary files /dev/null and b/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png differ diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png b/indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png new file mode 100644 index 0000000000..2d8d55fa91 Binary files /dev/null and b/indra/newview/skins/default/textures/bottomtray/Movement_Right_Off.png differ diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png new file mode 100644 index 0000000000..a91517d31f Binary files /dev/null and b/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png differ diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index bbb82d86b1..15bac6de0d 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -241,6 +241,10 @@ with the same filename but different name + + + + diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml index 8e2c57764b..a685094190 100644 --- a/indra/newview/skins/default/xui/en/floater_moveview.xml +++ b/indra/newview/skins/default/xui/en/floater_moveview.xml @@ -13,7 +13,7 @@ save_rect="true" save_visibility="true" save_dock_state="true" - width="115"> + width="113"> Walk Forward (press Up Arrow or W) @@ -22,6 +22,14 @@ name="walk_back_tooltip"> Walk Backwards (press Down Arrow or S) + + Walk left (press Shift + Left Arrow or A) + + + Walk right (press Shift + Right Arrow or D) + Run Forward (press Up Arrow or W) @@ -30,6 +38,14 @@ name="run_back_tooltip"> Run Backwards (press Down Arrow or S) + + Run left (press Shift + Left Arrow or A) + + + Run right (press Shift + Right Arrow or D) + Fly Forward (press Up Arrow or W) @@ -38,6 +54,30 @@ name="fly_back_tooltip"> Fly Backwards (press Down Arrow or S) + + Fly left (press Shift + Left Arrow or A) + + + Fly right (press Shift + Right Arrow or D) + + + Fly up (press E) + + + Fly down (press C) + + + Jump (press E) + + + Crouch (press C) + Walk @@ -59,59 +99,91 @@ mouse_opaque="false" name="panel_actions" top="0" - width="115"> + width="113"> + +