diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index b869de05d4..059c6eaee1 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1560,6 +1560,7 @@ set(viewer_APPSETTINGS_FILES
app_settings/mid_graphics.xml
app_settings/grids.fallback.xml
app_settings/account_settings_phoenix.xml
+ app_settings/settings_firestorm.xml
app_settings/settings_hybrid.xml
app_settings/settings_phoenix.xml
app_settings/settings_v3.xml
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index dcfaeeb8e8..141751bc77 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -16199,7 +16199,7 @@ Change of this parameter will affect the layout of buttons in notification toast
Comment
Settings that are a applied per session (not saved).
Persist
- 0
+ 1
Type
String
Value
@@ -16210,7 +16210,7 @@ Change of this parameter will affect the layout of buttons in notification toast
Comment
User settings that are a applied per session (not saved).
Persist
- 0
+ 1
Type
String
Value
diff --git a/indra/newview/app_settings/settings_firestorm.xml b/indra/newview/app_settings/settings_firestorm.xml
new file mode 100644
index 0000000000..d74e1a3327
--- /dev/null
+++ b/indra/newview/app_settings/settings_firestorm.xml
@@ -0,0 +1,278 @@
+
+
+
diff --git a/indra/newview/app_settings/settings_phoenix.xml b/indra/newview/app_settings/settings_phoenix.xml
index dcda0ed9fa..dee84ac0c9 100644
--- a/indra/newview/app_settings/settings_phoenix.xml
+++ b/indra/newview/app_settings/settings_phoenix.xml
@@ -68,7 +68,7 @@
Type
String
Value
- firestorm
+ vintage
SkinCurrentTheme
@@ -80,7 +80,7 @@
Type
String
Value
- grey
+ classic
LetterKeysFocusChatBar
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 66d2e7c84a..d81c19c2d7 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -780,6 +780,7 @@ bool LLAppViewer::init()
LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "releases.xml"));
LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "client_list_v2.xml"));
+ LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "settings_firestorm.xml"));
LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "settings_phoenix.xml"));
LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "settings_hybrid.xml"));
LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "settings_v3.xml"));
@@ -2482,7 +2483,7 @@ bool LLAppViewer::initConfiguration()
//Wolfspirit: Temporary fix for NOT loading settings_minimal.xml
if (gSavedSettings.getBOOL("FirstRunThisInstall"))
{
- gSavedSettings.setString("SessionSettingsFile", "settings_phoenix.xml");
+ gSavedSettings.setString("SessionSettingsFile", "settings_firestorm.xml");
// Note that the "FirstRunThisInstall" settings is currently unused.
gSavedSettings.setBOOL("FirstRunThisInstall", FALSE);
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index 67bf98f272..de2bf23807 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -264,7 +264,8 @@ LLSD LLFloaterAbout::getInfo()
//[FIRE 3113 : SJ] Added Settingsfile to info
- if (gSavedSettings.getString("SessionSettingsFile") == "settings_phoenix.xml") info["MODE"] = "Phoenix";
+ if (gSavedSettings.getString("SessionSettingsFile") == "settings_firestorm.xml") info["MODE"] = "Firestorm";
+ else if (gSavedSettings.getString("SessionSettingsFile") == "settings_phoenix.xml") info["MODE"] = "Phoenix";
else if (gSavedSettings.getString("SessionSettingsFile") == "settings_v3.xml") info["MODE"] = "V3";
else if (gSavedSettings.getString("SessionSettingsFile") == "settings_hybrid.xml") info["MODE"] = "Hybrid";
diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp
index abcab14e10..ec516ad203 100644
--- a/indra/newview/lllogininstance.cpp
+++ b/indra/newview/lllogininstance.cpp
@@ -561,7 +561,15 @@ void LLLoginInstance::constructAuthParams(LLPointer user_credentia
//send this info to login.cgi for stats gathering
//since viewerstats isn't reliable enough
- requested_options.append("advanced-mode");
+ if (gSavedSettings.getString("SessionSettingsFile").empty())
+ {
+ requested_options.append("advanced-mode");
+ }
+ else
+ {
+ requested_options.append("basic-mode");
+ //requested_options.append("inventory-basic");
+ }
#endif
requested_options.append("max-agent-groups");
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 536bef0cf2..beeaf2297c 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -163,6 +163,10 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
LLStartUp::setStartSLURL(slurl);
}
+ LLUICtrl& mode_combo = getChildRef("mode_combo");
+ mode_combo.setValue(gSavedSettings.getString("SessionSettingsFile"));
+ mode_combo.setCommitCallback(boost::bind(&LLPanelLogin::onModeChange, this, getChild("mode_combo")->getValue(), _2));
+
LLComboBox* server_choice_combo = sInstance->getChild("server_combo");
server_choice_combo->setCommitCallback(onSelectServer, NULL);
LLComboBox* saved_login_choice_combo = sInstance->getChild("username_combo");
@@ -1330,6 +1334,32 @@ void LLPanelLogin::updateLoginPanelLinks()
sInstance->getChildView("forgot_password_text")->setVisible( system_grid || has_password);
}
//
+
+void LLPanelLogin::onModeChange(const LLSD& original_value, const LLSD& new_value)
+{
+ if (original_value.asString() != new_value.asString())
+ {
+ LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(&LLPanelLogin::onModeChangeConfirm, this, original_value, new_value, _1, _2));
+ }
+}
+
+void LLPanelLogin::onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ switch (option)
+ {
+ case 0:
+ gSavedSettings.getControl("SessionSettingsFile")->set(new_value);
+ LLAppViewer::instance()->requestQuit();
+ break;
+ case 1:
+ // revert to original value
+ getChild("mode_combo")->setValue(original_value);
+ break;
+ default:
+ break;
+ }
+}
std::string canonicalize_username(const std::string& name)
{
diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h
index b806d0c162..eee625da69 100644
--- a/indra/newview/llpanellogin.h
+++ b/indra/newview/llpanellogin.h
@@ -89,6 +89,8 @@ private:
void reshapeBrowser();
void addFavoritesToStartLocation();
void addUsersWithFavoritesToUsername();
+ void onModeChange(const LLSD& original_value, const LLSD& new_value);
+ void onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response);
static void onClickConnect(void*);
static void onClickNewAccount(void*);
static void onClickVersion(void*);
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 1ce66adad5..2c61ed84b2 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -343,13 +343,44 @@ BOOL LLStatusBar::postBuild()
mParcelMgrConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
boost::bind(&LLStatusBar::onAgentParcelChange, this));
+ LLUICtrl& mode_combo = getChildRef("mode_combo");
+ mode_combo.setValue(gSavedSettings.getString("SessionSettingsFile"));
+ mode_combo.setCommitCallback(boost::bind(&LLStatusBar::onModeChange, this, getChild("mode_combo")->getValue(), _2));
+
if (!gSavedSettings.getBOOL("ShowNetStats"))
{
updateNetstatVisibility(LLSD(FALSE));
}
+
return TRUE;
}
+void LLStatusBar::onModeChange(const LLSD& original_value, const LLSD& new_value)
+{
+ if (original_value.asString() != new_value.asString())
+ {
+ LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(&LLStatusBar::onModeChangeConfirm, this, original_value, new_value, _1, _2));
+ }
+}
+
+void LLStatusBar::onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ switch (option)
+ {
+ case 0:
+ gSavedSettings.getControl("SessionSettingsFile")->set(new_value);
+ LLAppViewer::instance()->requestQuit();
+ break;
+ case 1:
+ // revert to original value
+ getChild("mode_combo")->setValue(original_value);
+ break;
+ default:
+ break;
+ }
+}
+
// Per-frame updates of visibility
void LLStatusBar::refresh()
{
@@ -1155,4 +1186,4 @@ void LLStatusBar::updateNetstatVisibility(const LLSD& data)
rect = mBalancePanel->getRect();
rect.translate(NETSTAT_WIDTH * translateFactor, 0);
mBalancePanel->setRect(rect);
-}
\ No newline at end of file
+}
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index b76fba21f3..9c897cc7a2 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -143,6 +143,8 @@ private:
void onMouseEnterVolume();
void onMouseEnterNearbyMedia();
void onClickScreen(S32 x, S32 y);
+ void onModeChange(const LLSD& original_value, const LLSD& new_value);
+ void onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response);
static void onClickStreamToggle(void* data); // ## Zi: Media/Stream separation
static void onClickMediaToggle(void* data);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index b1b4107101..7f921c19cd 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -9216,6 +9216,55 @@ class LLToggleUIHints : public view_listener_t
}
};
+class LLCheckSessionsSettings : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ std::string expected = userdata.asString();
+ return gSavedSettings.getString("SessionSettingsFile") == expected;
+ }
+};
+
+class LLChangeMode : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ std::string mode = userdata.asString();
+ if (mode == "basic")
+ {
+ if (gSavedSettings.getString("SessionSettingsFile") != "settings_minimal.xml")
+ {
+ LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(onModeChangeConfirm, "settings_minimal.xml", _1, _2));
+ }
+ return true;
+ }
+ else if (mode == "advanced")
+ {
+ if (gSavedSettings.getString("SessionSettingsFile") != "")
+ {
+ LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(onModeChangeConfirm, "", _1, _2));
+ }
+ return true;
+ }
+ return false;
+ }
+
+ static void onModeChangeConfirm(const std::string& new_session_settings_file, const LLSD& notification, const LLSD& response)
+ {
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ switch (option)
+ {
+ case 0:
+ gSavedSettings.getControl("SessionSettingsFile")->set(new_session_settings_file);
+ LLAppViewer::instance()->requestQuit();
+ break;
+ case 1:
+ default:
+ break;
+ }
+ }
+};
+
void LLUploadCostCalculator::calculateCost()
{
S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 16694213b5..636b3c8d29 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -7925,6 +7925,19 @@ You must authenticate [APP_NAME] before you can upload images to Flickr. Please
confirm
+
+
+Changing modes requires you to quit and restart.
+ confirm
+
+
+
+
+ Default Settings:
+
+
+
+
+
+
+