public void initializeSettings() { SettingsManager.ApplyDefaultSettings(); // convert legacy settings bool legacy = false; if (SettingsManager.settingExists("NotificationGoldRatio") || SettingsManager.settingExists("NotificationValue")) { // convert old notification conditions to new SQL conditions List <string> conditions = new List <string>(); if (SettingsManager.settingExists("NotificationValue") && SettingsManager.getSettingBool("ShowNotificationsValue")) { double value = SettingsManager.getSettingDouble("NotificationValue"); conditions.Add(String.Format("item.value >= {0}", value.ToString(CultureInfo.InvariantCulture))); } if (SettingsManager.settingExists("NotificationGoldRatio") && SettingsManager.getSettingBool("ShowNotificationsGoldRatio")) { double value = SettingsManager.getSettingDouble("NotificationGoldRatio"); conditions.Add(String.Format("item.value / item.capacity >= {0}", value.ToString(CultureInfo.InvariantCulture))); } if (SettingsManager.getSettingBool("AlwaysShowLoot")) { conditions.Add("1"); } SettingsManager.removeSetting("NotificationGoldRatio"); SettingsManager.removeSetting("NotificationValue"); SettingsManager.removeSetting("ShowNotificationsGoldRatio"); SettingsManager.removeSetting("ShowNotificationsValue"); SettingsManager.removeSetting("AlwaysShowLoot"); SettingsManager.setSetting("NotificationConditions", conditions); legacy = true; } if (SettingsManager.settingExists("NotificationDuration")) { int notificationLength = SettingsManager.getSettingInt("NotificationDuration") < 0 ? 30 : SettingsManager.getSettingInt("NotificationDuration"); int anchor = Math.Min(Math.Max(SettingsManager.getSettingInt("RichNotificationAnchor"), 0), 3); int xOffset = SettingsManager.getSettingInt("RichNotificationXOffset") == -1 ? 30 : SettingsManager.getSettingInt("RichNotificationXOffset"); int yOffset = SettingsManager.getSettingInt("RichNotificationYOffset") == -1 ? 30 : SettingsManager.getSettingInt("RichNotificationYOffset"); foreach (string obj in Constants.NotificationTypes) { string settingObject = obj.Replace(" ", ""); SettingsManager.setSetting(settingObject + "Anchor", anchor); SettingsManager.setSetting(settingObject + "XOffset", xOffset); SettingsManager.setSetting(settingObject + "YOffset", yOffset); SettingsManager.setSetting(settingObject + "Duration", notificationLength); SettingsManager.setSetting(settingObject + "Group", 0); } SettingsManager.removeSetting("NotificationDuration"); SettingsManager.removeSetting("RichNotificationAnchor"); SettingsManager.removeSetting("RichNotificationXOffset"); SettingsManager.removeSetting("RichNotificationYOffset"); legacy = true; } if (legacy) { // legacy settings had "#" as comment symbol in AutoHotkey text, replace that with the new comment symbol ";" List <string> newAutoHotkeySettings = new List <string>(); foreach (string str in SettingsManager.getSetting("AutoHotkeySettings")) { newAutoHotkeySettings.Add(str.Replace('#', ';')); } SettingsManager.setSetting("AutoHotkeySettings", newAutoHotkeySettings); SettingsManager.setSetting("ScanSpeed", Math.Min(Math.Max(SettingsManager.getSettingInt("ScanSpeed") + 5, (Tabs[1] as SettingsTab).MinimumScanSpeed()), (Tabs[1] as SettingsTab).MaximumScanSpeed())); } foreach (TabInterface tab in Tabs) { tab.InitializeSettings(); } }