summaryrefslogtreecommitdiff
path: root/indra/llui/lltoolbarview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llui/lltoolbarview.cpp')
-rw-r--r--indra/llui/lltoolbarview.cpp91
1 files changed, 59 insertions, 32 deletions
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index bb4ea815c9..0996577114 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -41,7 +41,8 @@ LLToolBarView* gToolBarView = NULL;
static LLDefaultChildRegistry::Register<LLToolBarView> r("toolbar_view");
LLToolBarView::Toolbar::Toolbar()
-: commands("command")
+: button_display_mode("button_display_mode"),
+ commands("command")
{}
LLToolBarView::ToolbarSet::ToolbarSet()
@@ -112,13 +113,21 @@ bool LLToolBarView::addCommand(const LLCommandId& command, LLToolBar* toolbar)
return true;
}
-bool LLToolBarView::loadToolbars()
+bool LLToolBarView::loadToolbars(bool force_default)
{
LLToolBarView::ToolbarSet toolbar_set;
- // Load the default toolbars.xml file
- // *TODO : pick up the user's toolbar setting if existing
- std::string toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+ // Load the toolbars.xml file
+ std::string toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "toolbars.xml");
+ if (force_default)
+ {
+ toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+ }
+ else if (!gDirUtilp->fileExists(toolbar_file))
+ {
+ llwarns << "User toolbars def not found -> use default" << llendl;
+ toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+ }
LLXMLNodePtr root;
if(!LLXMLNode::parseFile(toolbar_file, root, NULL))
@@ -141,9 +150,28 @@ bool LLToolBarView::loadToolbars()
return false;
}
+ // Clear the toolbars now before adding the loaded commands and settings
+ if (mToolbarLeft)
+ {
+ mToolbarLeft->clearCommandsList();
+ }
+ if (mToolbarRight)
+ {
+ mToolbarRight->clearCommandsList();
+ }
+ if (mToolbarBottom)
+ {
+ mToolbarBottom->clearCommandsList();
+ }
+
// Add commands to each toolbar
if (toolbar_set.left_toolbar.isProvided() && mToolbarLeft)
{
+ if (toolbar_set.left_toolbar.button_display_mode.isProvided())
+ {
+ U32 button_type = toolbar_set.left_toolbar.button_display_mode;
+ mToolbarLeft->setButtonType((LLToolBarEnums::ButtonType)(button_type));
+ }
BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.left_toolbar.commands)
{
addCommand(LLCommandId(command),mToolbarLeft);
@@ -151,6 +179,11 @@ bool LLToolBarView::loadToolbars()
}
if (toolbar_set.right_toolbar.isProvided() && mToolbarRight)
{
+ if (toolbar_set.right_toolbar.button_display_mode.isProvided())
+ {
+ U32 button_type = toolbar_set.right_toolbar.button_display_mode;
+ mToolbarRight->setButtonType((LLToolBarEnums::ButtonType)(button_type));
+ }
BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.right_toolbar.commands)
{
addCommand(LLCommandId(command),mToolbarRight);
@@ -158,6 +191,11 @@ bool LLToolBarView::loadToolbars()
}
if (toolbar_set.bottom_toolbar.isProvided() && mToolbarBottom)
{
+ if (toolbar_set.bottom_toolbar.button_display_mode.isProvided())
+ {
+ U32 button_type = toolbar_set.bottom_toolbar.button_display_mode;
+ mToolbarBottom->setButtonType((LLToolBarEnums::ButtonType)(button_type));
+ }
BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.bottom_toolbar.commands)
{
addCommand(LLCommandId(command),mToolbarBottom);
@@ -166,6 +204,19 @@ bool LLToolBarView::loadToolbars()
return true;
}
+//static
+bool LLToolBarView::loadDefaultToolbars()
+{
+ bool retval = false;
+
+ if (gToolBarView)
+ {
+ retval = gToolBarView->loadToolbars(true);
+ }
+
+ return retval;
+}
+
void LLToolBarView::saveToolbars() const
{
// Build the parameter tree from the toolbar data
@@ -174,39 +225,15 @@ void LLToolBarView::saveToolbars() const
// *TODO : factorize that code a bit...
if (mToolbarLeft)
{
- command_id_list_t& command_list = mToolbarLeft->getCommandsList();
- for (command_id_list_t::const_iterator it = command_list.begin();
- it != command_list.end();
- ++it)
- {
- LLCommandId::Params command;
- command.name = it->name();
- toolbar_set.left_toolbar.commands.add(command);
- }
+ addToToolset(mToolbarLeft->getCommandsList(),toolbar_set.left_toolbar);
}
if (mToolbarRight)
{
- command_id_list_t& command_list = mToolbarRight->getCommandsList();
- for (command_id_list_t::const_iterator it = command_list.begin();
- it != command_list.end();
- ++it)
- {
- LLCommandId::Params command;
- command.name = it->name();
- toolbar_set.right_toolbar.commands.add(command);
- }
+ addToToolset(mToolbarRight->getCommandsList(),toolbar_set.right_toolbar);
}
if (mToolbarBottom)
{
- command_id_list_t& command_list = mToolbarBottom->getCommandsList();
- for (command_id_list_t::const_iterator it = command_list.begin();
- it != command_list.end();
- ++it)
- {
- LLCommandId::Params command;
- command.name = it->name();
- toolbar_set.bottom_toolbar.commands.add(command);
- }
+ addToToolset(mToolbarBottom->getCommandsList(),toolbar_set.bottom_toolbar);
}
// Serialize the parameter tree