summaryrefslogtreecommitdiff
path: root/indra/newview/llpanelteleporthistory.cpp
diff options
context:
space:
mode:
authorIgor Borovkov <iborovkov@productengine.com>2010-01-04 13:49:31 +0200
committerIgor Borovkov <iborovkov@productengine.com>2010-01-04 13:49:31 +0200
commit516e2674f54d400c30bf548ea1e9b0a268bd929f (patch)
treee84abb6ea06cde6db9e878fc8d78a6e0b54eed1e /indra/newview/llpanelteleporthistory.cpp
parented1eb29c7e329fa4de31fdad4272348059462d73 (diff)
parent32657e37ab14e3ea4b5ff719e147fd720e895d77 (diff)
merge
--HG-- branch : product-engine
Diffstat (limited to 'indra/newview/llpanelteleporthistory.cpp')
-rw-r--r--indra/newview/llpanelteleporthistory.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 77c2fb7c8c..245f694ac6 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -452,6 +452,7 @@ BOOL LLTeleportHistoryPanel::postBuild()
registrar.add("TeleportHistory.ExpandAllFolders", boost::bind(&LLTeleportHistoryPanel::onExpandAllFolders, this));
registrar.add("TeleportHistory.CollapseAllFolders", boost::bind(&LLTeleportHistoryPanel::onCollapseAllFolders, this));
registrar.add("TeleportHistory.ClearTeleportHistory", boost::bind(&LLTeleportHistoryPanel::onClearTeleportHistory, this));
+ mEnableCallbackRegistrar.add("TeleportHistory.GearMenu.Enable", boost::bind(&LLTeleportHistoryPanel::isActionEnabled, this, _2));
LLMenuGL* gear_menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_teleport_history_gear.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
if(gear_menu)
@@ -979,6 +980,49 @@ void LLTeleportHistoryPanel::onGearButtonClicked()
LLMenuGL::showPopup(this, menu, menu_x, menu_y);
}
+bool LLTeleportHistoryPanel::isActionEnabled(const LLSD& userdata) const
+{
+ S32 tabs_cnt = mItemContainers.size();
+
+ bool has_expanded_tabs = false;
+ bool has_collapsed_tabs = false;
+
+ for (S32 n = 0; n < tabs_cnt; n++)
+ {
+ LLAccordionCtrlTab* tab = mItemContainers.get(n);
+ if (!tab->getVisible())
+ continue;
+
+ if (tab->getDisplayChildren())
+ {
+ has_expanded_tabs = true;
+ }
+ else
+ {
+ has_collapsed_tabs = true;
+ }
+
+ if (has_expanded_tabs && has_collapsed_tabs)
+ {
+ break;
+ }
+ }
+
+ std::string command_name = userdata.asString();
+
+ if (has_expanded_tabs && command_name == "collapse_all")
+ {
+ return true;
+ }
+
+ if (has_collapsed_tabs && command_name == "expand_all")
+ {
+ return true;
+ }
+
+ return false;
+}
+
void LLTeleportHistoryPanel::setAccordionCollapsedByUser(LLUICtrl* acc_tab, bool collapsed)
{
LLSD param = acc_tab->getValue();