//
// Radegast Metaverse Client
-// Copyright (c) 2009, Radegast Development Team
+// Copyright (c) 2009-2011, Radegast Development Team
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
namespace Radegast
{
+ public enum AutoResponseType : int
+ {
+ WhenBusy = 0,
+ WhenFromNonFriend = 1,
+ Always = 2
+ }
+
public partial class frmSettings : RadegastForm
{
private Settings s;
+ private static bool settingInitialized = false;
+
+ public static void InitSettigs(Settings s)
+ {
+ if (s["im_timestamps"].Type == OSDType.Unknown)
+ {
+ s["im_timestamps"] = OSD.FromBoolean(true);
+ }
+
+ if (s["rlv_enabled"].Type == OSDType.Unknown)
+ {
+ s["rlv_enabled"] = new OSDBoolean(false);
+ }
+
+ if (s["mu_emotes"].Type == OSDType.Unknown)
+ {
+ s["mu_emotes"] = new OSDBoolean(false);
+ }
+
+ if (s["friends_notification_highlight"].Type == OSDType.Unknown)
+ {
+ s["friends_notification_highlight"] = new OSDBoolean(true);
+ }
+
+ if (!s.ContainsKey("no_typing_anim")) s["no_typing_anim"] = OSD.FromBoolean(false);
+
+ if (!s.ContainsKey("auto_response_type"))
+ {
+ s["auto_response_type"] = (int)AutoResponseType.WhenBusy;
+ s["auto_response_text"] = "The Resident you messaged is in 'busy mode' which means they have requested not to be disturbed. Your message will still be shown in their IM panel for later viewing.";
+ }
+
+ if (!s.ContainsKey("script_syntax_highlight")) s["script_syntax_highlight"] = OSD.FromBoolean(true);
+
+ if (!s.ContainsKey("display_name_mode")) s["display_name_mode"] = (int)NameMode.Smart;
+
+ // Convert legacy settings from first last name to username
+ if (!s.ContainsKey("username") && (s.ContainsKey("first_name") && s.ContainsKey("last_name")))
+ {
+ s["username"] = s["first_name"] + " " + s["last_name"];
+ s.Remove("first_name");
+ s.Remove("last_name");
+ }
+
+ if (!s.ContainsKey("reconnect_time")) s["reconnect_time"] = 120;
+
+ if (!s.ContainsKey("transaction_notification_chat")) s["transaction_notification_chat"] = true;
+
+ if (!s.ContainsKey("transaction_notification_dialog")) s["transaction_notification_dialog"] = true;
+
+ if (!s.ContainsKey("minimize_to_tray")) s["minimize_to_tray"] = false;
+
+ }
public frmSettings(RadegastInstance instance)
{
+ if (settingInitialized)
+ {
+ frmSettings.InitSettigs(instance.GlobalSettings);
+ }
+
InitializeComponent();
+
s = instance.GlobalSettings;
cbChatTimestamps.Checked = s["chat_timestamps"].AsBoolean();
- if (s["im_timestamps"].Type == OSDType.Unknown)
- s["im_timestamps"] = OSD.FromBoolean(true);
-
cbIMTimeStamps.Checked = s["im_timestamps"].AsBoolean();
cbChatTimestamps.CheckedChanged += new EventHandler(cbChatTimestamps_CheckedChanged);
cbHideLoginGraphics.Checked = s["hide_login_graphics"].AsBoolean();
cbHideLoginGraphics.CheckedChanged += new EventHandler(cbHideLoginGraphics_CheckedChanged);
- if (s["rlv_enabled"].Type == OSDType.Unknown)
- {
- s["rlv_enabled"] = new OSDBoolean(false);
- }
-
cbRLV.Checked = s["rlv_enabled"].AsBoolean();
cbRLV.CheckedChanged += (object sender, EventArgs e) =>
{
s["rlv_enabled"] = new OSDBoolean(cbRLV.Checked);
};
- if (s["mu_emotes"].Type == OSDType.Unknown)
- {
- s["mu_emotes"] = new OSDBoolean(false);
- }
-
cbMUEmotes.Checked = s["mu_emotes"].AsBoolean();
cbMUEmotes.CheckedChanged += (object sender, EventArgs e) =>
{
s["mu_emotes"] = new OSDBoolean(cbMUEmotes.Checked);
};
-
- if (s["friends_notification_highlight"].Type == OSDType.Unknown)
- {
- s["friends_notification_highlight"] = new OSDBoolean(true);
- }
-
cbFriendsHighlight.Checked = s["friends_notification_highlight"].AsBoolean();
cbFriendsHighlight.CheckedChanged += (object sender, EventArgs e) =>
{
cbFontSize.Text = s["chat_font_size"].AsReal().ToString(System.Globalization.CultureInfo.InvariantCulture);
- if (!s.ContainsKey("minimize_to_trey")) s["minimize_to_trey"] = OSD.FromBoolean(false);
- cbMinToTrey.Checked = s["minimize_to_trey"].AsBoolean();
+ if (!s.ContainsKey("minimize_to_tray")) s["minimize_to_tray"] = OSD.FromBoolean(false);
+ cbMinToTrey.Checked = s["minimize_to_tray"].AsBoolean();
cbMinToTrey.CheckedChanged += (object sender, EventArgs e) =>
{
- s["minimize_to_trey"] = OSD.FromBoolean(cbMinToTrey.Checked);
+ s["minimize_to_tray"] = OSD.FromBoolean(cbMinToTrey.Checked);
};
+
+ cbNoTyping.Checked = s["no_typing_anim"].AsBoolean();
+ cbNoTyping.CheckedChanged += (object sender, EventArgs e) =>
+ {
+ s["no_typing_anim"] = OSD.FromBoolean(cbNoTyping.Checked);
+ };
+
+ txtAutoResponse.Text = s["auto_response_text"];
+ txtAutoResponse.TextChanged += (object sender, EventArgs e) =>
+ {
+ s["auto_response_text"] = txtAutoResponse.Text;
+ };
+ AutoResponseType art = (AutoResponseType)s["auto_response_type"].AsInteger();
+ switch (art)
+ {
+ case AutoResponseType.WhenBusy: rbAutobusy.Checked = true; break;
+ case AutoResponseType.WhenFromNonFriend: rbAutoNonFriend.Checked = true; break;
+ case AutoResponseType.Always: rbAutoAlways.Checked = true; break;
+ }
+
+ cbSyntaxHighlight.Checked = s["script_syntax_highlight"].AsBoolean();
+ cbSyntaxHighlight.CheckedChanged += (object sender, EventArgs e) =>
+ {
+ s["script_syntax_highlight"] = OSD.FromBoolean(cbSyntaxHighlight.Checked);
+ };
+
+ switch ((NameMode)s["display_name_mode"].AsInteger())
+ {
+ case NameMode.Standard: rbDNOff.Checked = true; break;
+ case NameMode.Smart: rbDNSmart.Checked = true; break;
+ case NameMode.DisplayNameAndUserName: rbDNDandUsernme.Checked = true; break;
+ case NameMode.OnlyDisplayName: rbDNOnlyDN.Checked = true; break;
+ }
+
+ txtReconnectTime.Text = s["reconnect_time"].AsInteger().ToString();
}
void cbHideLoginGraphics_CheckedChanged(object sender, EventArgs e)
{
double f = 8.25;
double existing = s["chat_font_size"].AsReal();
-
+
if (!double.TryParse(cbFontSize.Text, out f))
{
cbFontSize.Text = s["chat_font_size"].AsReal().ToString(System.Globalization.CultureInfo.InvariantCulture);
{
UpdateFontSize();
}
+
+ private void rbAutobusy_CheckedChanged(object sender, EventArgs e)
+ {
+ s["auto_response_type"] = (int)AutoResponseType.WhenBusy;
+ }
+
+ private void rbAutoNonFriend_CheckedChanged(object sender, EventArgs e)
+ {
+ s["auto_response_type"] = (int)AutoResponseType.WhenFromNonFriend;
+ }
+
+ private void rbAutoAlways_CheckedChanged(object sender, EventArgs e)
+ {
+ s["auto_response_type"] = (int)AutoResponseType.Always;
+ }
+
+ private void rbDNOff_CheckedChanged(object sender, EventArgs e)
+ {
+ if (rbDNOff.Checked)
+ s["display_name_mode"] = (int)NameMode.Standard;
+ }
+
+ private void rbDNSmart_CheckedChanged(object sender, EventArgs e)
+ {
+ if (rbDNSmart.Checked)
+ s["display_name_mode"] = (int)NameMode.Smart;
+ }
+
+ private void rbDNDandUsernme_CheckedChanged(object sender, EventArgs e)
+ {
+ if (rbDNDandUsernme.Checked)
+ s["display_name_mode"] = (int)NameMode.DisplayNameAndUserName;
+ }
+
+ private void rbDNOnlyDN_CheckedChanged(object sender, EventArgs e)
+ {
+ if (rbDNOnlyDN.Checked)
+ s["display_name_mode"] = (int)NameMode.OnlyDisplayName;
+ }
+
+ private void txtReconnectTime_TextChanged(object sender, EventArgs e)
+ {
+ string input = System.Text.RegularExpressions.Regex.Replace(txtReconnectTime.Text, @"[^\d]", "");
+ int t = 120;
+ int.TryParse(input, out t);
+
+ if (txtReconnectTime.Text != t.ToString())
+ {
+ txtReconnectTime.Text = t.ToString();
+ txtReconnectTime.Select(txtReconnectTime.Text.Length, 0);
+ }
+
+ s["reconnect_time"] = t;
+ }
}
}