diff options
-rw-r--r-- | indra/llui/llnotifications.cpp | 19 | ||||
-rw-r--r-- | indra/llui/llnotifications.h | 5 | ||||
-rw-r--r-- | indra/newview/app_settings/cmd_line.xml | 8 | ||||
-rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
-rw-r--r-- | indra/newview/llappviewer.cpp | 10 | ||||
-rw-r--r-- | indra/newview/llviewerwindow.cpp | 2 |
6 files changed, 53 insertions, 2 deletions
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index 452f18b40b..50fee41029 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -160,6 +160,12 @@ private: bool filterIgnoredNotifications(LLNotificationPtr notification) { + // filter everything if we are to ignore ALL + if(LLNotifications::instance().getIgnoreAllNotifications()) + { + return false; + } + LLNotificationFormPtr form = notification->getForm(); // Check to see if the user wants to ignore this alert if (form->getIgnoreType() != LLNotificationForm::IGNORE_NO) @@ -231,7 +237,7 @@ LLNotificationForm::LLNotificationForm(const std::string& name, const LLXMLNodeP LLSD item_entry; std::string element_name = child->getName()->mString; - if (element_name == "ignore") + if (element_name == "ignore" ) { bool save_option = false; child->getAttribute_bool("save_option", save_option); @@ -925,7 +931,8 @@ std::string LLNotificationChannel::summarize() // LLNotifications implementation // --- LLNotifications::LLNotifications() : LLNotificationChannelBase(LLNotificationFilters::includeEverything, - LLNotificationComparators::orderByUUID()) + LLNotificationComparators::orderByUUID()), + mIgnoreAllNotifications(false) { LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Notification.Show", boost::bind(&LLNotifications::addFromCallback, this, _2)); } @@ -1473,6 +1480,14 @@ std::string LLNotifications::getGlobalString(const std::string& key) const } } +void LLNotifications::setIgnoreAllNotifications(bool setting) +{ + mIgnoreAllNotifications = setting; +} +bool LLNotifications::getIgnoreAllNotifications() +{ + return mIgnoreAllNotifications; +} // --- // END OF LLNotifications implementation diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index b749724b4e..512886790c 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -870,6 +870,9 @@ public: std::string getGlobalString(const std::string& key) const; + void setIgnoreAllNotifications(bool ignore); + bool getIgnoreAllNotifications(); + private: // we're a singleton, so we don't have a public constructor LLNotifications(); @@ -898,6 +901,8 @@ private: typedef std::map<std::string, std::string> GlobalStringMap; GlobalStringMap mGlobalStrings; + + bool mIgnoreAllNotifications; }; diff --git a/indra/newview/app_settings/cmd_line.xml b/indra/newview/app_settings/cmd_line.xml index 783a886fdd..5f143431de 100644 --- a/indra/newview/app_settings/cmd_line.xml +++ b/indra/newview/app_settings/cmd_line.xml @@ -146,6 +146,14 @@ <string>ReplaySession</string> </map> + <key>nonotifications</key> + <map> + <key>desc</key> + <string>User will not get any notifications. NOTE: All notifications that occur will get added to ignore file for future runs.</string> + <key>map-to</key> + <string>IgnoreAllNotifications</string> + </map> + <key>rotate</key> <map> <key>map-to</key> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 5ad49774a9..afa7f707f1 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -3560,6 +3560,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>IgnoreAllNotifications</key> + <map> + <key>Comment</key> + <string>Ignore all notifications so we never need user input on them.</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>IgnorePixelDepth</key> <map> <key>Comment</key> diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index d0d6a118b3..2c570de697 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -641,6 +641,11 @@ bool LLAppViewer::init() // Get the single value from the crash settings file, if it exists std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE); gCrashSettings.loadFromFile(crash_settings_filename); + if(gSavedSettings.getBOOL("IgnoreAllNotifications")) + { + gCrashSettings.setS32(CRASH_BEHAVIOR_SETTING, CRASH_BEHAVIOR_ALWAYS_SEND); + gCrashSettings.saveToFile(crash_settings_filename, FALSE); + } ///////////////////////////////////////////////// // OS-specific login dialogs @@ -1971,6 +1976,11 @@ bool LLAppViewer::initConfiguration() { LLAgentPilot::sReplaySession = TRUE; } + + if (clp.hasOption("nonotifications")) + { + gSavedSettings.setBOOL("IgnoreAllNotifications", TRUE); + } if (clp.hasOption("debugsession")) { diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index fb501b023f..5c9f8af216 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1269,6 +1269,8 @@ LLViewerWindow::LLViewerWindow( LLNotifications::instance().getChannel("VW_alerts")->connectChanged(&LLViewerWindow::onAlert); LLNotifications::instance().getChannel("VW_alertmodal")->connectChanged(&LLViewerWindow::onAlert); + LLNotifications::instance().setIgnoreAllNotifications(gSavedSettings.getBOOL("IgnoreAllNotifications")); + llinfos << "NOTE: ALL NOTIFICATIONS THAT OCCUR WILL GET ADDED TO IGNORE LIST FOR LATER RUNS." << llendl; // Default to application directory. LLViewerWindow::sSnapshotBaseName = "Snapshot"; |