private static void AddEventThread(CalEvent cEvent)
        {
            lock (EventsDirLock)
            {
                lock (ContactsDirLock)
                {
                    CreateEventsXml();
                    cEvent.InitNullValues();
                    string concatenated = string.Join(",",
                                                      cEvent.GetRecurringType().Select(x => x.ToString()).ToArray());

                    XDocument doc;
                    doc = XDocument.Load(EventsDir);
                    string person;
                    if (cEvent.IsAppointment())
                    {
                        person = cEvent.GetContact().ToString();
                    }
                    else
                    {
                        person = "NIL";
                    }

                    //int cId = GetContactId(cEvent.GetContact());
                    //MessageBox.Show(cEvent.ToString() + "xmlAddEvent");
                    doc.Element("Events").Add(new XElement("event",
                                                           new XElement("dateStart", new XText(cEvent.GetStartDate().ToString())),
                                                           new XElement("dateEnd", new XText(cEvent.GetEndDate().ToString())),
                                                           new XElement("title", new XText(cEvent.GetTitle())),
                                                           new XElement("appointment", new XText(cEvent.IsAppointment().ToString())),
                                                           new XElement("recurring", new XText(cEvent.IsRecurring().ToString())),
                                                           new XElement("recurringType", new XText(concatenated)),
                                                           new XElement("person",
                                                                        new XElement("id", new XText(cEvent.GetContact().GetId().ToString())),
                                                                        new XElement("name", new XText(cEvent.GetContact().FName)),
                                                                        new XElement("surname", new XText(cEvent.GetContact().SName)),
                                                                        new XElement("address1", new XText(cEvent.GetContact().Address1)),
                                                                        new XElement("address2", new XText(cEvent.GetContact().Address2)),
                                                                        new XElement("postcode", new XText(cEvent.GetContact().Postcode))),
                                                           new XElement("postcode", new XText(cEvent.GetLocation().ToString()))
                                                           ));
                    doc.Save(EventsDir);
                }
            }
        }
Beispiel #2
0
        private void buttonSubmit_Click(object sender, EventArgs e)
        {
            if (tbTitle.Text == String.Empty)
            {
                Alert("Events must have title!");
            }
            else if (btnSubmit.Text != "Save")
            {
                CalEvent ev;
                // because class has static event, and i want to use not static
                // but static is needed for RecurringForm, therefore copy recurring parameter into
                // new CalEvent object
                if (cbRecurring.Checked)
                {
                    ev = new CalEvent();
                    ev.SetRecurringType(cEvent.GetRecurringType());
                    ev.SetRecurring(true);
                }
                else
                {
                    ev = new CalEvent();
                }
                try
                {
                    //Set all the values for CalEvent
                    ev.SetAppointment(cbAppointment.Checked);
                    ev.SetTitle(tbTitle.Text);

                    StartDateTime = startDate.Value.Date +
                                    startTime.Value.TimeOfDay;

                    if (cbRecurring.Checked)
                    {
                        EndDateTime = endDate.Value.Date +
                                      endTime.Value.TimeOfDay;
                    }
                    else
                    {
                        EndDateTime = startDate.Value.Date +
                                      endTime.Value.TimeOfDay;
                    }


                    ev.SetDate(StartDateTime, EndDateTime);

                    //retrieve contact
                    if (cbAppointment.Checked)
                    {
                        ArrayList contacts = (ArrayList)lbPerson.DataSource;
                        int       index    = contacts.IndexOf(lbPerson.SelectedItem);
                        ev.SetContact(GetContactById(index));
                    }

                    ev.SetLocation(tbLocation.Text);
                    ev.InitNullValues();

                    XmlControl.AddEvent(ev);

                    //initListBox();
                }
                catch (ArgumentNullException ex)
                {
                    MessageBox.Show(ex.ToString() + "\n Button Click -> AddEvent.cs");
                }
                catch (Exception ex) { MessageBox.Show(ex.ToString() + "\n Button Click -> AddEvent.cs"); }

                //lbEvent.DataSource = XmlControl.GetEventsList();
                ArrayList Events     = XmlControl.GetEventsList();
                ArrayList EventsData = new ArrayList();
                for (int i = 0; i < Events.Count; i++)
                {
                    EventsData.Add(((CalEvent)Events[i]).GetDates(StartDateTime, EndDateTime));
                }
                Thread.Sleep(300);
                SetEventsData();
                tbLocation.Text = "";
                tbTitle.Text    = "";

                calendarForm.Repaint();
            }
            else
            {
                ArrayList eList = new ArrayList();
                Thread.Sleep(300);
                eList = SetEventsData();

                //eList[eventEditedId] = new CalEvent();
                CalEvent ev = new CalEvent();
                ev.SetTitle(tbTitle.Text);
                ev.SetDate(StartDateTime, EndDateTime);
                if (cbRecurring.Checked)
                {
                    //try (!recurDatesSet && Object.Equals(recurringDates, default(ArrayList)))
                    if (Object.Equals(cEvent, default(CalEvent)))
                    {
                        ev.SetRecurringType(((CalEvent)eList[EventEditedId]).GetRecurringType());
                    }
                    else
                    {
                        ev.SetRecurringType(cEvent.GetRecurringType());
                    }
                    //catch(Exception ex)
                    //{
                    //    (CalEvent)eList[eventEditedId]).SetRecurringType(cEvent.GetRecurringType());
                    //}

                    ev.SetRecurring(true);
                }
                else
                {
                    ev.SetRecurring(false);
                }
                if (cbAppointment.Checked)
                {
                    ArrayList contacts = (ArrayList)lbPerson.DataSource;
                    int       index    = contacts.IndexOf(lbPerson.SelectedItem);
                    ev.SetContact(GetContactById(index));
                    ev.SetAppointment(true);
                    ev.SetLocation(tbLocation.Text);
                }

                ev.InitNullValues();

                //eList[eventEditedId] = ev;

                ArrayList FullEvents = XmlControl.GetEventsList();
                foreach (CalEvent Event in FullEvents)
                {
                    if (Event.ToString() == ((CalEvent)eList[EventEditedId]).ToString())
                    {
                        FullEvents.Remove(Event);
                        break;
                    }
                }
                //FullEvents.Remove((CalEvent)eList[eventEditedId]);
                FullEvents.Add(ev);
                //((CalEvent)eList[eventEditedId]).SetId();

                //Contact c = new Contact();
                //ContactsListToXml(contactList);
                EventsListToXml(FullEvents);

                //lbEvent.DataSource = eList;
                Thread.Sleep(300);
                SetEventsData();

                lbEvent.Update();

                btnSubmit.Text = "Add New Event!";


                tbLocation.Text = "";
                tbTitle.Text    = "";

                StartDateTime   = DateTime.Now;
                EndDateTime     = DateTime.Now;
                startDate.Value = StartDateTime;
                startTime.Value = StartDateTime;
                endDate.MinDate = new DateTime(1753, 1, 1, 1, 1, 1);
                endDate.Value   = EndDateTime;
                endTime.Value   = EndDateTime;

                StopCBRecurringListener = true;
                cbRecurring.Checked     = false;
                StopCBRecurringListener = false;

                cbAppointment.Checked = false;

                calendarForm.Repaint();
            }
        }