示例#1
0
        public void init( Alert alert, string defaultColor )
        {
            if (!Registration.isValid())
            {
                label7.Visible = false;
                soundField.Visible = false;
                browseButton.Visible = false;
                messageBox.ShowStamp = false;
            }

            backgroundChanged = false;

            currentAlert = alert;
            soundField.Text = alert.getSound();
            try
            {
                string background = alert.getBackground();
                if (background.ToUpper().Equals("DEFAULT"))
                {
                    background = defaultColor;
                }
                else
                {
                    backgroundChanged = true;
                }
                messageBox.RichTextBox.BackColor = Color.FromArgb(System.Convert.ToInt32(background));
            }
            catch
            {
                messageBox.RichTextBox.BackColor = Color.FromName("Window");
            }

            titleField.Text = alert.getTitle();
            messageBox.RichTextBox.Rtf = alert.getMessage();

            advancedField1.Text = alert.getSchedule();
            oneTimeField3.SelectedIndex = 0;
            timeDelayField2.SelectedIndex = 0;
            dayOfMonthField1.SelectedIndex = 0;
            dayOfMonthField3.SelectedIndex = 0;
            dayOfMonthField4.SelectedIndex = 0;
            dayOfWeekField1.SelectedIndex = 0;
            dayOfWeekField3.SelectedIndex = 0;
            positionalDayOfWeekField1.SelectedIndex = 0;
            positionalDayOfWeekField2.SelectedIndex = 0;
            positionalDayOfWeekField4.SelectedIndex = 0;
            positionalDayOfWeekField6.SelectedIndex = 0;
            this.setRadioButton();

            if (alert.getSnoozed())
            {
                MsgBox.Show("If you save, this alert will no longer be on snooze.",
                    "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
示例#2
0
        public AdvancedSchedule( string advancedField )
        {
            InitializeComponent();

            alert = new Alert();
            alert.setSchedule(advancedField);
            alert.setWakeUpTime(new DateTime());

            setByDatesTimes();
            setByTimeDelay();
        }
示例#3
0
        public AlertDialog(Alert alert, String color, String soundFile)
        {
            InitializeComponent();
            this.Text = "Alert!! - " + alert.getTitle();
            this.alert = alert;
            messageBox.RichTextBox.Rtf = alert.getMessage();

            try
            {
                messageBox.RichTextBox.BackColor = Color.FromArgb(System.Convert.ToInt32(color));
            }
            catch
            {
                messageBox.RichTextBox.BackColor = Color.FromName("Window");
            }

            alertLabel.Text = ""+alert.getWakeUpTime();

            this.soundFile = soundFile;
        }
示例#4
0
        private bool save()
        {
            bool returnValue = false;
            Alert alert = new Alert();
            int alertId = currentAlert.getAlertId();
            alert.setAlertId(alertId);
            alert.setTitle(titleField.Text);
            alert.setMessage(messageBox.RichTextBox.Rtf);
            alert.setValid(currentAlert.getValid());
            alert.setCommand(currentAlert.getCommand());
            if (!soundField.Text.Equals(alert.getSound()))
            {
                alert.setSound(soundField.Text);
            }
            if (backgroundChanged)
            {
                alert.setBackground(""+messageBox.RichTextBox.BackColor.ToArgb());
            }

            //Determine the schedule
            if (oneTimeRadio.Checked)
            {
                DateTime dt = oneTimeField1.Value;
                string[] time = extractTime(oneTimeField2.Text, oneTimeField3.Text);
                dt = new DateTime(dt.Year, dt.Month, dt.Day, System.Convert.ToInt32(time[0]),
                    System.Convert.ToInt32(time[1]), 0);
                returnValue = alert.setSchedule(dt);
            }
            else if (timeDelayRadio.Checked)
            {
                DateTime dt = DateTime.Now;
                double howMuch = 0;
                try
                {
                    howMuch = double.Parse(timeDelayField1.Text);
                }
                catch (Exception)
                {
                    throw new Exception("Time Delay Field must be a number!");
                }
                string howMany = timeDelayField2.Text;

                if (howMany.Equals("Minute(s)"))
                {
                    dt = dt.AddMinutes(howMuch);
                }
                else if (howMany.Equals("Hour(s)"))
                {
                    dt = dt.AddHours(howMuch);
                }
                else if (howMany.Equals("Day(s)"))
                {
                    dt = dt.AddDays(howMuch);
                    //Zero out the hours and minutes
                    dt = new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0);
                }
                else if (howMany.Equals("Week(s)"))
                {
                    dt = dt.AddDays(howMuch*7);
                    //Zero out the hours and minutes
                    dt = new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0);
                }
                returnValue = alert.setSchedule(dt);
            }
            else if (dayOfMonthRadio.Checked)
            {
                string dayOfMonth = "" + (dayOfMonthField1.SelectedIndex + 1);
                string[] time = extractTime(dayOfMonthField2.Text, dayOfMonthField3.Text);
                string month = "" + (dayOfMonthField4.SelectedIndex);
                if (month.Equals("0")) month = "*";
                if (System.Convert.ToInt32(dayOfMonth) > 28)
                    MsgBox.Show("Warning!  No alert will be shown for months without the specified day!",
                        "Warning", MessageBoxButtons.OK, MessageBoxIcon.Information);
                returnValue = alert.setSchedule("*", month, dayOfMonth, "*", time[0], time[1]);
            }
            else if (dayOfWeekRadio.Checked)
            {
                string dayOfWeek = "" + dayOfWeekField1.SelectedIndex;
                if (dayOfWeek.Equals("0"))
                    dayOfWeek = "*";
                else if (dayOfWeek.Equals("7"))
                    dayOfWeek = "0";
                string[] time = extractTime(dayOfWeekField2.Text, dayOfWeekField3.Text);
                returnValue = alert.setSchedule("*", "*", "*", dayOfWeek, time[0], time[1]);
            }
            else if (advancedRadio.Checked)
            {
                returnValue = alert.setSchedule(advancedField1.Text);
            }
            else if (positionalDayOfWeekRadio.Checked)
            {
                int position = positionalDayOfWeekField1.SelectedIndex + 1;
                int dayOfWeek = ((positionalDayOfWeekField2.SelectedIndex+1) % 7);
                string month = "" + (positionalDayOfWeekField6.SelectedIndex);
                if (month.Equals("0")) month = "*";
                string positionalDayOfWeek = ""+((position * 10) + dayOfWeek);
                string[] time = extractTime(positionalDayOfWeekField3.Text, positionalDayOfWeekField4.Text);
                returnValue = alert.setSchedule("*", month, "*", positionalDayOfWeek, time[0], time[1]);
            }
            else
            {
                throw new Exception("Nothing Selected");
            }

            if (!returnValue)
                return false;

            alert.setValid(true);

            currentAlert = alert;

            return true;
        }
示例#5
0
 public Setup( Alert alert, string defaultColor )
 {
     InitializeComponent();
     init(alert,defaultColor);
 }
示例#6
0
        public void alertDialog(Alert alert)
        {
            while (true)
            {
                //Make sure it's time to show the dialog
                DateTime wakeup = alert.getWakeUpTime();
                DateTime now = DateTime.Now;
                if( !alert.getValid() && !alert.getSnoozed() )
                {
                    if (alertsListView.IsHandleCreated == true)
                    {
                        alertsListView.Invoke(new UpdateListBoxCallback(UpdateManagerAlert), new object[] { alert });
                    }
                    return;
                }
                else if (wakeup > now)
                {
                    double msDifference = wakeup.Subtract(now).TotalMilliseconds;
                    while (msDifference >= int.MaxValue)
                    {
                        Thread.Sleep(int.MaxValue);
                        msDifference = wakeup.Subtract(now).TotalMilliseconds;
                    }
                    Thread.Sleep((int)msDifference);
                }

                //Take care of color, positioning, command execution, and sound
                AlertDialog alertDialog = new AlertDialog(alert, getBackground(alert), getSound(alert));
                string positionType = controller.getSetting("WindowsPositioning");
                if (positionType.Equals("center"))
                {
                    alertDialog.center();
                }
                else if (positionType.Equals("custom"))
                {
                    Dictionary<string, int> settings = controller.getAlertSettings();
                    alertDialog.Location = new Point(settings["xpos"], settings["ypos"]);
                    alertDialog.Size = new Size(settings["width"], settings["height"]);
                }

                //Show Dialog
                if (alertDialog.ShowDialog() == DialogResult.OK)
                {
                    positionType = controller.getSetting("WindowsPositioning");
                    if (positionType.Equals("custom"))
                    {
                        controller.updateAlertSettings(alertDialog.Location.X, alertDialog.Location.Y,
                            alertDialog.Size.Width, alertDialog.Size.Height);
                    }
                    alert = alertDialog.getCurrentAlert();
                    if (alertsListView.IsHandleCreated == true)
                    {
                        alertsListView.Invoke(new UpdateListBoxCallback(UpdateManagerAlert), new object[] { alert });
                    }
                    if (alert.getRemoved())
                    {
                        controller.deleteAlert(alert);
                        return;
                    }
                    else if (!alert.getValid() && !alert.getSnoozed())
                    {
                        controller.updateAlert(alert);
                        return;
                    }
                    else
                    {
                        controller.updateAlert(alert);
                        continue;
                    }
                }
            }
        }
示例#7
0
 //Aborts and deletes the old thread
 private void removeAlertThread(Alert alert)
 {
     htAlertDialogs[alert.getAlertId()].Abort();
     htAlertDialogs.Remove(alert.getAlertId());
 }
示例#8
0
 //Aborts and deletes the old thread, then recreates it with the updated data
 private void recreateAlertThread(Alert alert)
 {
     removeAlertThread(alert);
     createAlertThread(alert);
 }
示例#9
0
        /** ArrayList contains Alert objects */
        public Alert getUpdatedAlert( Alert alert )
        {
            SQLiteCommand cmd = conn.CreateCommand();
            cmd.CommandText = "SELECT AlertId, Title, Message, Year, DayOfMonth, Month, " +
                "DayOfWeek, Hour, Minute, Snoozed, Valid, WakeUpTime Background, " +
                "Sound, Command FROM Alerts WHERE AlertID = ?";
            cmd.Parameters.Add(cmd.CreateParameter());
            cmd.Parameters[0].Value = alert.getAlertId();
            SQLiteDataReader results = cmd.ExecuteReader();
            if (results.Read())
            {
                int alertId = results.GetInt32(0);
                string title = results.GetString(1);
                string message = results.GetString(2);
                string year = results.GetString(3);
                string dayOfMonth = results.GetString(4);
                string month = results.GetString(5);
                string dayOfWeek = results.GetString(6);
                string hour = results.GetString(7);
                string minute = results.GetString(8);
                bool snoozed = results.GetBoolean(9);
                bool valid = results.GetBoolean(10);
                DateTime wakeUpTime = results.GetDateTime(11);
                string background = results.GetString(12);
                string sound = results.GetString(13);
                string command = results.GetString(14);

                //Do not change the order of the following block,
                //otherwise snoozed and valid values may be set
                //incorrectly.
                alert.setAlertId(alertId);
                alert.setTitle(title);
                alert.setMessage(message);
                alert.setSchedule(year, month, dayOfMonth, dayOfWeek, hour, minute, false);
                alert.setWakeUpTime(wakeUpTime);
                alert.setSnoozed(snoozed);
                alert.setValid(valid);
                alert.setBackground(background);
                alert.setSound(sound);
                alert.setCommand(command);
            }
            cmd.Dispose();

            return alert;
        }
示例#10
0
 private String getBackground( Alert alert )
 {
     string background = alert.getBackground();
     if (background.ToUpper().Equals("DEFAULT"))
     {
         return controller.getSetting("AlertBackground");
     }
     return background;
 }
示例#11
0
 //Creates the alert thread and enters it into htAlertDialogs
 private void createAlertThread(Alert alert)
 {
     //Using an asynchronous delegate
     ThreadStart ts = delegate() { alertDialog(alert); };
     Thread alertThread = new Thread(ts);
     alertThread.Start();
     htAlertDialogs.Add(alert.getAlertId(), alertThread);
 }
示例#12
0
 //Adds the alert list view item
 private void addAlertListViewItem(Alert alert)
 {
     ListViewItem lvi = new ListViewItem(new string[4] { "", "" + alert.getAlertId(),
         alert.getTitle(), "" + alert.getWakeUpTime() });
     if (alert.getValid()) lvi.Checked = true;
     alertsListView.Items.Add(lvi);
 }
示例#13
0
        //Called from the worker threads, don't need to worry about thread's updating
        //because the thread has taken care of itself by the time this is called.
        //This is the thread telling the main app to update itself.
        public void UpdateManagerAlert(Alert alert)
        {
            string alertId = ""+alert.getAlertId();

            //Reset Alert in hashtable
            try
            {
                htAlerts.Remove(alertId);
                if (!alert.getRemoved())
                {
                    htAlerts.Add(alertId, alert);
                }
            }
            catch (Exception)
            {
                //ignore
            }

            //Updated List View Record
            foreach( ListViewItem lvi in alertsListView.Items )
            {
                if( lvi.SubItems[1].Text.Equals( alertId ) )
                {
                    if (!alert.getRemoved())
                    {
                        if (alert.getValid()) lvi.Checked = true;
                        else lvi.Checked = false;
                        lvi.SubItems[1].Text = "" + alert.getAlertId();
                        lvi.SubItems[2].Text = alert.getTitle();
                        lvi.SubItems[3].Text = "" + alert.getWakeUpTime();
                        sortAlertListView();
                    }
                    else
                    {
                        alertsListView.Items[lvi.Index].Remove();
                    }
                    return;
                }
            }
        }
示例#14
0
        public Alert createNewAlert( Alert alert )
        {
            SQLiteCommand cmd;

            //Create a new Entry
            cmd = conn.CreateCommand();
            cmd.CommandText = "INSERT INTO Alerts (Title, Message, Year, DayOfMonth, Month, DayOfWeek, Hour, " +
                "Minute, Snoozed, Valid, WakeUpTime, Background, Sound, Command) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter());
            cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter());
            cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter());
            cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter());
            cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter());
            cmd.Parameters[0].Value = alert.getTitle();
            cmd.Parameters[1].Value = alert.getMessage();
            cmd.Parameters[2].Value = alert.getYear();
            cmd.Parameters[3].Value = alert.getDayOfMonth();
            cmd.Parameters[4].Value = alert.getMonth();
            cmd.Parameters[5].Value = alert.getDayOfWeek();
            cmd.Parameters[6].Value = alert.getHour();
            cmd.Parameters[7].Value = alert.getMinute();
            cmd.Parameters[8].Value = alert.getSnoozed();
            cmd.Parameters[9].Value = alert.getValid();
            cmd.Parameters[10].Value = alert.getWakeUpTime();
            cmd.Parameters[11].Value = alert.getBackground();
            cmd.Parameters[12].Value = alert.getSound();
            cmd.Parameters[13].Value = alert.getCommand();
            cmd.ExecuteNonQuery();
            cmd.Dispose();

            //Get the newly created AlertId.  Rely on sqlite, hope for no multiple access of the table.
            cmd = conn.CreateCommand();
            cmd.CommandText = "SELECT last_insert_rowid()";
            int newAlertId = Convert.ToInt32(cmd.ExecuteScalar());
            cmd.Dispose();
            alert.setAlertId(newAlertId);

            return alert;
        }
示例#15
0
        /** ArrayList contains Alert objects */
        private ArrayList getAlerts( String query )
        {
            ArrayList alerts = new ArrayList();

            SQLiteCommand cmd = conn.CreateCommand();
            cmd.CommandText = query;
            SQLiteDataReader results = cmd.ExecuteReader();
            while (results.Read())
            {
                int alertId = results.GetInt32(0);
                string title = results.GetString(1);
                string message = results.GetString(2);
                string year = results.GetString(3);
                string dayOfMonth = results.GetString(4);
                string month = results.GetString(5);
                string dayOfWeek = results.GetString(6);
                string hour = results.GetString(7);
                string minute = results.GetString(8);
                bool snoozed = results.GetBoolean(9);
                bool valid = results.GetBoolean(10);
                DateTime wakeUpTime = results.GetDateTime(11);
                string background = results.GetString(12);
                string sound = results.GetString(13);
                string command = results.GetString(14);

                //Do not change the order of the following block,
                //otherwise snoozed and valid values may be set
                //incorrectly.
                Alert alert = new Alert();
                alert.setAlertId(alertId);
                alert.setTitle(title);
                alert.setMessage(message);
                alert.setSchedule(year, month, dayOfMonth, dayOfWeek, hour, minute, false);
                alert.setWakeUpTime(wakeUpTime);
                alert.setSnoozed(snoozed);
                alert.setValid(valid);
                alert.setBackground(background);
                alert.setSound(sound);
                alert.setCommand(command);

                alerts.Add(alert);
            }
            cmd.Dispose();

            return alerts;
        }
示例#16
0
        public void updateAlert( Alert alert )
        {
            if (alert.getAlertId() < 0)
            {
                throw new Exception("Invalid Alert Id");
            }

            SQLiteCommand cmd = conn.CreateCommand();
            cmd.CommandText = "UPDATE Alerts SET Title = ?, Message = ?, Year = ?, DayOfMonth = ?, Month = ?, " +
                "DayOfWeek = ?, Hour = ?, Minute = ?, Snoozed = ?, Valid = ?, WakeUpTime = ?, Background = ?, " +
                "Sound = ?, Command = ? WHERE AlertId = ?";
            cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter());
            cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter());
            cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter());
            cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter());
            cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter()); cmd.Parameters.Add(cmd.CreateParameter());
            cmd.Parameters[0].Value = alert.getTitle();
            cmd.Parameters[1].Value = alert.getMessage();
            cmd.Parameters[2].Value = alert.getYear();
            cmd.Parameters[3].Value = alert.getDayOfMonth();
            cmd.Parameters[4].Value = alert.getMonth();
            cmd.Parameters[5].Value = alert.getDayOfWeek();
            cmd.Parameters[6].Value = alert.getHour();
            cmd.Parameters[7].Value = alert.getMinute();
            cmd.Parameters[8].Value = alert.getSnoozed();
            cmd.Parameters[9].Value = alert.getValid();
            cmd.Parameters[10].Value = alert.getWakeUpTime();
            cmd.Parameters[11].Value = alert.getBackground();
            cmd.Parameters[12].Value = alert.getSound();
            cmd.Parameters[13].Value = alert.getCommand();
            cmd.Parameters[14].Value = alert.getAlertId();
            cmd.ExecuteNonQuery();
            cmd.Dispose();
        }
示例#17
0
 private String getSound(Alert alert)
 {
     string soundFile = alert.getSound();
     if (soundFile.ToUpper().Equals("USE DEFAULT"))
     {
         soundFile = controller.getSetting("AlertSound");
     }
     return soundFile;
 }
示例#18
0
        public void deleteAlert( Alert alert )
        {
            if (alert.getAlertId() < 0)
                throw new Exception("Invalid Alert Id");

            SQLiteCommand cmd;

            cmd = conn.CreateCommand();
            cmd.CommandText = "DELETE FROM Alerts WHERE AlertID = " + alert.getAlertId();
            cmd.ExecuteNonQuery();
        }