From d3e8295c2be4eb2abba8b6c7d22e7c70be4a7621 Mon Sep 17 00:00:00 2001 From: Kitty Barnett Date: Tue, 16 Aug 2011 22:44:46 +0200 Subject: [PATCH] - added : "Show Top-level RLVa Menu" option to toggle between a top-level RLVa menu and an Advanced embedded one --HG-- branch : RLVa --- indra/newview/app_settings/settings.xml | 11 + indra/newview/llviewermenu.cpp | 9 +- indra/newview/rlvcommon.cpp | 38 +++ indra/newview/rlvcommon.h | 2 + indra/newview/rlvdefines.h | 1 + .../skins/default/xui/en/menu_viewer.xml | 248 ++++++++++-------- 6 files changed, 186 insertions(+), 123 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 91d13a26fb..8efbb3b4e3 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -189,6 +189,17 @@ Value 0 + RLVaTopLevelMenu + + Comment + Show the RLVa specific menu as a top level menu + Persist + 1 + Type + Boolean + Value + 1 + RLVaWearReplaceUnlocked Comment diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index a722cec535..b4c6231bf2 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -5236,14 +5236,9 @@ void show_debug_menus() gMenuBarView->setItemVisible("Advanced", debug); // gMenuBarView->setItemEnabled("Advanced", debug); // Don't disable Advanced keyboard shortcuts when hidden -// [RLVa:KB] - Checked: 2010-03-09 (RLVa-1.2.0a) | Added: RLVa-1.2.0a +// [RLVa:KB] - Checked: 2011-08-16 (RLVa-1.4.0b) | Modified: RLVa-1.4.0b // NOTE: this is supposed to execute whether RLVa is enabled or not - LLMenuGL* pAdvancedMenu = gMenuBarView->findChildMenuByName("Advanced", FALSE); - if (pAdvancedMenu) - { - pAdvancedMenu->setItemVisible("RLVa", rlv_handler_t::isEnabled()); - pAdvancedMenu->setItemEnabled("RLVa", rlv_handler_t::isEnabled()); - } + rlvMenuToggleVisible(); // [/RLVa:KB] gMenuBarView->setItemVisible("Debug", qamode); diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp index e4833bd08f..131c59e767 100644 --- a/indra/newview/rlvcommon.cpp +++ b/indra/newview/rlvcommon.cpp @@ -23,6 +23,7 @@ #include "lluictrlfactory.h" #include "llversionviewer.h" #include "llviewerparcelmgr.h" +#include "llviewermenu.h" #include "llviewerregion.h" #include "llviewerstats.h" #include "llworld.h" @@ -103,6 +104,9 @@ void RlvSettings::initClass() if (gSavedSettings.controlExists(RLV_SETTING_AVATAROFFSET_Z)) gSavedSettings.getControl(RLV_SETTING_AVATAROFFSET_Z)->getSignal()->connect(boost::bind(&onChangedAvatarOffset, _2)); + if (gSavedSettings.controlExists(RLV_SETTING_TOPLEVELMENU)) + gSavedSettings.getControl(RLV_SETTING_TOPLEVELMENU)->getSignal()->connect(boost::bind(&onChangedMenuLevel)); + fInitialized = true; } } @@ -130,6 +134,13 @@ bool RlvSettings::onChangedAvatarOffset(const LLSD& sdValue) return true; } +// Checked: 2011-08-16 (RLVa-1.4.0b) | Added: RLVa-1.4.0b +bool RlvSettings::onChangedMenuLevel() +{ + rlvMenuToggleVisible(); + return true; +} + // Checked: 2010-02-27 (RLVa-1.2.0a) | Added: RLVa-1.1.0i bool RlvSettings::onChangedSettingBOOL(const LLSD& sdValue, bool* pfSetting) { @@ -455,6 +466,33 @@ bool rlvMenuToggleEnabled() return true; } +// Checked: 2011-08-16 (RLVa-1.4.0b) | Added: RLVa-1.4.0b +void rlvMenuToggleVisible() +{ + bool fTopLevel = rlvGetSetting(RLV_SETTING_TOPLEVELMENU, true); + bool fRlvEnabled = rlv_handler_t::isEnabled(); + + LLMenuGL* pRLVaMenuMain = gMenuBarView->findChildMenuByName("RLVa Main", FALSE); + LLMenuGL* pAdvancedMenu = gMenuBarView->findChildMenuByName("Advanced", FALSE); + LLMenuGL* pRLVaMenuEmbed = pAdvancedMenu->findChildMenuByName("RLVa Embedded", FALSE); + + gMenuBarView->setItemVisible("RLVa Main", (fRlvEnabled) && (fTopLevel)); + pAdvancedMenu->setItemVisible("RLVa Embedded", (fRlvEnabled) && (!fTopLevel)); + + if ( (rlv_handler_t::isEnabled()) && (pRLVaMenuMain) && (pRLVaMenuEmbed) && + ( ((fTopLevel) && (1 == pRLVaMenuMain->getItemCount())) || ((!fTopLevel) && (1 == pRLVaMenuEmbed->getItemCount())) ) ) + { + LLMenuGL* pMenuFrom = (fTopLevel) ? pRLVaMenuEmbed : pRLVaMenuMain; + LLMenuGL* pMenuTo = (fTopLevel) ? pRLVaMenuMain : pRLVaMenuEmbed; + while (LLMenuItemGL* pItem = pMenuFrom->getItem(1)) + { + pMenuFrom->removeChild(pItem); + pMenuTo->addChild(pItem); + pItem->updateBranchParent(pMenuTo); + } + } +} + // Checked: 2010-04-23 (RLVa-1.2.0g) | Modified: RLVa-1.2.0g bool rlvMenuEnableIfNot(const LLSD& sdParam) { diff --git a/indra/newview/rlvcommon.h b/indra/newview/rlvcommon.h index a0804b856f..f13d6ec5d2 100644 --- a/indra/newview/rlvcommon.h +++ b/indra/newview/rlvcommon.h @@ -106,6 +106,7 @@ public: static void initClass(); protected: static bool onChangedAvatarOffset(const LLSD& sdValue); + static bool onChangedMenuLevel(); static bool onChangedSettingBOOL(const LLSD& sdValue, bool* pfSetting); #ifdef RLV_EXPERIMENTAL_COMPOSITEFOLDERS @@ -193,6 +194,7 @@ typedef bool (RlvCommandHandler::*rlvCommandHandler)(const RlvCommand& rlvCmd, E bool rlvMenuCheckEnabled(); bool rlvMenuToggleEnabled(); +void rlvMenuToggleVisible(); bool rlvMenuEnableIfNot(const LLSD& sdParam); // ============================================================================ diff --git a/indra/newview/rlvdefines.h b/indra/newview/rlvdefines.h index ec0c0aec12..84bc19b393 100644 --- a/indra/newview/rlvdefines.h +++ b/indra/newview/rlvdefines.h @@ -310,6 +310,7 @@ enum ERlvAttachGroupType #define RLV_SETTING_LOGINLASTLOCATION "RLVaLoginLastLocation" #define RLV_SETTING_SHAREDINVAUTORENAME "RLVaSharedInvAutoRename" #define RLV_SETTING_SHOWNAMETAGS "RLVaShowNameTags" +#define RLV_SETTING_TOPLEVELMENU "RLVaTopLevelMenu" #define RLV_SETTING_WEARREPLACEUNLOCKED "RLVaWearReplaceUnlocked" #define RLV_SETTING_FIRSTUSE_PREFIX "FirstRLV" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index e988f9a512..7df1a2c59d 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -1066,6 +1066,133 @@ parameter="sl_about" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +