/// <summary> /// Alternative Form_load method since form_load doesnt get called until you first double-click the RemindMe icon due to override SetVisibleCore /// </summary> private void formLoad() { try { BLIO.Log("RemindMe_Load"); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); RemindMeIcon.Text = "RemindMe " + IOVariables.RemindMeVersion; //set unique user string BLIO.WriteUniqueString(); MaterialMessageFormManager.MakeTodaysRemindersPopup(); BLIO.Log("Today's reminders popup created"); //Create an shortcut in the windows startup folder if it doesn't already exist if (!System.IO.File.Exists(IOVariables.startupFolderPath + "\\RemindMe" + ".lnk")) { FSManager.Shortcuts.CreateShortcut(IOVariables.startupFolderPath, "RemindMe", System.Windows.Forms.Application.StartupPath + "\\" + "RemindMe.exe", "Shortcut of RemindMe"); } else { WshShell shell = new WshShell(); //Create a new WshShell Interface IWshShortcut link = (IWshShortcut)shell.CreateShortcut(IOVariables.startupFolderPath + "\\RemindMe.lnk"); //Link the interface to our shortcut //shortcut does exist, let's see if the target of that shortcut isn't the old RemindMe in the programs files if (link.TargetPath.ToString().Contains("StefanGansevlesPrograms") || link.TargetPath.ToString().Contains("Program Files")) { BLIO.Log("Deleting old .lnk shortcut of RemindMe"); System.IO.File.Delete(IOVariables.startupFolderPath + "\\RemindMe.lnk"); FSManager.Shortcuts.CreateShortcut(IOVariables.startupFolderPath, "RemindMe", IOVariables.applicationFilesFolder + "RemindMe.exe", "Shortcut of RemindMe"); } } //if (Debugger.IsAttached) //Debugging ? show extra option //btnDebugMode.Visible = true; BLLocalDatabase.Song.InsertWindowsSystemSounds(); if (BLLocalDatabase.Setting.Settings.AutoUpdate == 1) //I guess some users don't want it? :( { tmrUpdateRemindMe.Start(); } //If the setup still exists, delete it System.IO.File.Delete(IOVariables.rootFolder + "SetupRemindMe.msi"); Settings set = BLLocalDatabase.Setting.Settings; //Call the timer once Thread tr = new Thread(() => { //wait a bit, then call the update timer once. It then runs every 5 minutes Thread.Sleep(5000); tmrUpdateRemindMe_Tick(null, null); BLOnlineDatabase.InsertOrUpdateUser(set.UniqueString); if (set.LastVersion == null) { set.LastVersion = IOVariables.RemindMeVersion; } BLLocalDatabase.Setting.UpdateSettings(set); }); tr.Start(); this.ShowInTaskbar = true; this.Show(); tmrInitialHide.Start(); //Random r = new Random(); //tmrCheckRemindMeMessages.Interval = (r.Next(60, 300)) * 1000; //Random interval between 1 and 5 minutes //tmrCheckRemindMeMessages.Start(); //BLIO.Log("tmrCheckRemindMeMessages.Interval = " + tmrCheckRemindMeMessages.Interval / 1000 + " seconds."); stopwatch.Stop(); BLIO.Log("formLoad() took " + stopwatch.ElapsedMilliseconds + " ms"); BLIO.Log("RemindMe loaded"); } catch (Exception ex) { BLIO.Log("Exception in formLoadAsync() -> " + ex.GetType().ToString()); BLOnlineDatabase.AddException(ex, DateTime.Now, IOVariables.systemLog); } }
private void tmrCheckReminder_Tick(object sender, EventArgs e) { try { bool isHourBeforeNotificationEnabled = BLLocalDatabase.Setting.IsHourBeforeNotificationEnabled(); if (BLReminder.GetReminders().Where(r => r.Enabled == 1).ToList().Count <= 0) { tmrCheckReminder.Stop(); //No existing reminders? no enabled reminders? stop timer. BLIO.Log("Stopping the reminder checking timer, because there are no more (enabled) reminders"); return; } //If a day has passed since the start of RemindMe, we may want to refresh the listview. //There might be reminders happening on this day, if so, we show the time of the reminder, instead of the day if (dayOfStartRemindMe < DateTime.Now.Day) { BLIO.Log("Dawn of a new day -24 hours remaining- "); UpdateCurrentPage(); dayOfStartRemindMe = DateTime.Now.Day; MaterialMessageFormManager.MakeTodaysRemindersPopup(); //Update lastOnline. If you keep RemindMe running and put your pc to sleep instead of turning it off, it would never get updated without this BLOnlineDatabase.InsertOrUpdateUser(BLLocalDatabase.Setting.Settings.UniqueString); } //We will check for reminders here every 5 seconds. foreach (Reminder rem in BLReminder.GetReminders().Where(r => r.Enabled == 1).ToList()) { //Create the popup. Do the other stuff afterwards. if ((rem.PostponeDate != null && Convert.ToDateTime(rem.PostponeDate) <= DateTime.Now) || (Convert.ToDateTime(rem.Date.Split(',')[0]) <= DateTime.Now && rem.PostponeDate == null && rem.Enabled == 1)) { //temporarily disable it. When the user postpones the reminder, it will be re-enabled. rem.Enabled = 0; BLReminder.EditReminder(rem); MakeReminderPopup(rem); UpdateCurrentPage(); } else { // -- In this part we will create popups at the users right bottom corner of the screen saying x reminder is happening in 1 hour or x minutes -- \\ if (isHourBeforeNotificationEnabled) { DateTime theDateToCheckOn; //Like this we dont need an if ánd an else with the same code if (rem.PostponeDate != null) { theDateToCheckOn = Convert.ToDateTime(rem.PostponeDate); } else { theDateToCheckOn = Convert.ToDateTime(rem.Date.Split(',')[0]); } //The timespan between the date and now. TimeSpan timeSpan = Convert.ToDateTime(theDateToCheckOn) - DateTime.Now; if (timeSpan.TotalMinutes >= 59.50 && timeSpan.TotalMinutes <= 60) { remindersToHappenInAnHour.Add(rem); } } } } string message = "You have " + remindersToHappenInAnHour.Count + " reminders set in 60 minutes:\r\n"; int count = 1; foreach (Reminder rem in remindersToHappenInAnHour) { //Don't show "reminderName in 60 minutes!" if the reminder doesn't "Show" when popped up, silent reminders. if (BLLocalDatabase.AVRProperty.GetAVRProperties(rem.Id) != null && BLLocalDatabase.AVRProperty.GetAVRProperties(rem.Id).ShowReminder != 1) { continue; } if (remindersToHappenInAnHour.Count > 1) { message += count + ") " + rem.Name + Environment.NewLine; } else { message = rem.Name + " in 60 minutes!"; } count++; } if (remindersToHappenInAnHour.Count > 1 && count > 1) //cut off the last \n { message = message.Remove(message.Length - 2, 2); if (!popupMessages.Contains(message)) //Don't create this popup if we have already created it once before { MaterialMessageFormManager.MakeMessagePopup(message, 6); } popupMessages.Add(message); } else if (remindersToHappenInAnHour.Count > 0 && count > 1) { if (!popupMessages.Contains(message)) //Don't create this popup if we have already created it once before { MaterialMessageFormManager.MakeMessagePopup(message, 6, remindersToHappenInAnHour[0]); } popupMessages.Add(message); } remindersToHappenInAnHour.Clear(); } catch (Exception ex) { BLIO.Log("CheckReminder FAILED!!! " + ex.GetType().ToString()); BLIO.WriteError(ex, "!!! Error in tmrCheckReminder_Tick"); } }