private void ok_Click()

in Sample Applications/StickyNotesDemo/Dialog.cs [436:571]


        private void ok_Click(object sender, RoutedEventArgs e)
        {
            var server = LogicalTreeHelper.FindLogicalNode(this, "server") as TextBox;
            var account = LogicalTreeHelper.FindLogicalNode(this, "account") as TextBox;
            var date = LogicalTreeHelper.FindLogicalNode(this, "date") as TextBox;
            var time = LogicalTreeHelper.FindLogicalNode(this, "time") as TextBox;
            var repeatNumber = LogicalTreeHelper.FindLogicalNode(this, "repeat") as TextBox;
            var daysCheck = LogicalTreeHelper.FindLogicalNode(this, "daysCheck") as CheckBox;
            var weeksCheck = LogicalTreeHelper.FindLogicalNode(this, "weeksCheck") as CheckBox;

            var str = (daysCheck.IsChecked == true) ? "D" : "";
            str += (weeksCheck.IsChecked == true) ? "W" : "";
            if (str != string.Empty)
            {
                str += repeatNumber.Text;
            }
            else
            {
                str = "null";
            }

            if ((date.Text != string.Empty) && (date.Text != "/2006") &&
                (!(date.Text.Contains(Alarm.Date.ToShortDateString()))
                 || !(AlarmRepetition.Contains(str)) ||
                 !(Alarm.TimeOfDay.ToString().Contains(time.Text))))
            {
                var dateString = date.Text;
                var arr = new int[3];
                var timeString = time.Text;
                var arr1 = new int[3];

                var tail = 0;
                var head = dateString.IndexOf('/');
                head = (head >= 0) ? head : 0;

                try
                {
                    for (var i = 0; i < 3; i++)
                    {
                        head = (i == (arr.Length - 1)) ? (dateString.Length) : head;
                        arr[i] = int.Parse(dateString.Substring(tail, head - tail));
                        if (head == dateString.Length)
                        {
                            break;
                        }
                        tail = head + 1;
                        head = dateString.IndexOf('/', tail);
                    }
                    tail = 0;
                    head = timeString.IndexOf(':');
                    head = (head >= 0) ? head : 0;
                    for (var i = 0; i < 3; i++)
                    {
                        head = (i == (arr1.Length - 1)) ? (timeString.Length) : head;
                        arr1[i] = int.Parse(timeString.Substring(tail, head - tail));
                        if (head == timeString.Length)
                        {
                            break;
                        }
                        tail = head + 1;
                        head = timeString.IndexOf(':', tail);
                    }

                    var dt = new DateTime(arr[2], arr[0], arr[1], arr1[0], arr1[1], arr1[2]);
                    if (dt.CompareTo(DateTime.Now) >= 0)
                    {
                        Alarm = dt;
                        PropertyArray[(int) PropNames.Alarm] = dt;
                        if (repeatNumber.Text != string.Empty)
                        {
                            AlarmRepetition = (daysCheck.IsChecked == true) ? "D" : "";
                            AlarmRepetition += (weeksCheck.IsChecked == true) ? "W" : "";
                            if (AlarmRepetition != string.Empty)
                            {
                                AlarmRepetition += repeatNumber.Text;
                            }
                            else
                            {
                                AlarmRepetition = "null";
                            }
                        }
                        Tag = "OK";
                        Close();
                    }
                    else
                    {
                        Title = "AlarmSettings Error";
                        var l = LogicalTreeHelper.FindLogicalNode(this, "statusThirdTab") as Label;
                        l.Content = "Alarm can be set if the event is after Current time";
                        l.Foreground = Brushes.Red;
                    }
                }
                catch (Exception e1)
                {
                    var l = LogicalTreeHelper.FindLogicalNode(this, "statusThirdTab") as Label;
                    l.Content = e1.Message;
                    l.Foreground = Brushes.Red;
                    Title = "AlarmSettings Error";
                }
            }
            else
            {
                if (((server.Text == string.Empty) && (account.Text == string.Empty)) ||
                    ((server.Text != string.Empty) && (account.Text != string.Empty)))
                {
                    if (((server.Text != string.Empty) && (account.Text != string.Empty)))
                    {
                        var port = LogicalTreeHelper.FindLogicalNode(this, "port") as TextBox;
                        var cb = LogicalTreeHelper.FindLogicalNode(this, "sslCheck") as CheckBox;


                        var fs = new FileStream("MailServerInfo", FileMode.OpenOrCreate);
                        var writer = new StreamWriter(fs);
                        writer.WriteLine(server.Text);
                        writer.WriteLine(account.Text);
                        port.Text = (port.Text != string.Empty) ? port.Text : "25";
                        writer.WriteLine(port.Text);
                        var check = (cb.IsChecked == true) ? "true" : "false";
                        writer.WriteLine(check);

                        writer.Close();
                        fs.Close();
                    }
                    Tag = "OK";
                    Close();
                }
                else
                {
                    Title = "Mail settings are incomplete";
                    server.Background = account.Background = Window2.ChangeBackgroundColor(Colors.Red);
                    var status = LogicalTreeHelper.FindLogicalNode(this, "status") as Label;
                    status.Content = "Fill in highlighted fields";
                    status.Foreground = Brushes.Red;
                }
            }
        }