public static bool Obavijest_Postavljena(Vakat vakat, Data.Obavijest obavijest) { var notifier = ToastNotificationManager.CreateToastNotifier(); var scheduled = notifier.GetScheduledToastNotifications(); string key = vakat.NotificationKey(obavijest); if (vakat.isSkipped(obavijest)) { Obrisi_Obavijest(vakat.NotificationKey(obavijest)); return(true); } if (vakat.blockedNotifications(obavijest)) { Obrisi_Obavijest(key); return(true); } int predNotif = vakat.notificationsOffset(obavijest); for (int i = 0; i < scheduled.Count; i++) { if (scheduled[i].Id == key) { if (scheduled[i].DeliveryTime.DateTime == vakat.time.AddMinutes(-predNotif)) { System.Diagnostics.Debug.WriteLine("Obavijest [key]: " + key + " - već postoji..."); return(true); } else { System.Diagnostics.Debug.WriteLine("Obavijest [key]: " + key + " - na pogrešnom mjestu - BRIŠEM..."); ToastNotificationManager.CreateToastNotifier().RemoveFromSchedule(scheduled[i]); return(false); } } } return(false); }
public static void Kreiraj_Novu_Obavijest(Vakat vakat, Data.Obavijest obavijest) { if (vakat.time.AddMinutes(-vakat.notificationsOffset(obavijest)) <= DateTime.Now) { return; // Ako je prošlo vrijeme za obavijest - prekid } if (Obavijest_Postavljena(vakat, obavijest)) { return; // Ako je obavijest već postavljena - prekid // Ako je isključena - obrisati - prekid } string key = vakat.NotificationKey(obavijest); if (obavijest == Data.Obavijest.Alarm) { if (vakat.time <= DateTime.Now.AddMinutes(vakat.predAlarm)) { return; // Ako je prošlo vrijeme za alarm - prekid } try { string toastXmlString = ""; if (Fixed.IsPhone) { toastXmlString = "<toast duration=\"long\">\n" + "<visual>\n" + "<binding template=\"ToastText02\">\n" + "<text id=\"1\">" + vakat.name + " je za " + vakat.predAlarm + " minuta" + "</text>\n" + "<text id=\"2\">" + Fixed.App_Name + "</text>\n" + "</binding>\n" + "</visual>\n" + "<commands scenario=\"alarm\">\n" + "<command id=\"snooze\"/>\n" + "<command id=\"dismiss\"/>\n" + "</commands>\n" + "<audio src=\"" + Memory.Alarm_Sound + "\" loop=\"true\" />\n" + "</toast>\n"; } else { toastXmlString = "<toast duration=\"long\">\n" + "<visual>\n" + "<binding template=\"ToastText02\">\n" + "<text id=\"1\">" + vakat.name + " je za " + vakat.predAlarm + " minuta" + "</text>\n" + "<text id=\"2\">" + Fixed.App_Name + "</text>\n" + "</binding>\n" + "</visual>\n" + "<commands scenario=\"alarm\">\n" + "<command id=\"snooze\"/>\n" + "<command id=\"dismiss\"/>\n" + "</commands>\n" + "<audio src=\"ms-winsoundevent:Notification.Looping.Alarm2\" loop=\"true\" />\n" + "</toast>\n"; } XmlDocument doc = new XmlDocument(); doc.LoadXml(toastXmlString); ScheduledToastNotification scheduledToast = new ScheduledToastNotification(doc, vakat.time.AddMinutes(-vakat.predAlarm)); scheduledToast.Id = key; ToastNotificationManager.CreateToastNotifier().AddToSchedule(scheduledToast); System.Diagnostics.Debug.WriteLine("Alarm created at " + vakat.time.AddMinutes(-vakat.predToast) + " (" + vakat.name + ")"); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("Greška pri registraciji alarma za " + vakat.name + " u vrijeme " + vakat.time.AddMinutes(-vakat.predToast) + " (" + ex.Message + ")"); } } else if (obavijest == Data.Obavijest.Toast) { if (vakat.time <= DateTime.Now.AddMinutes(vakat.predToast)) { return; // Ako je prošlo vrijeme za alarm - prekid } try { ToastTemplateType toastTemplate = ToastTemplateType.ToastText02; XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate); XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text"); toastTextElements[0].AppendChild(toastXml.CreateTextNode(vakat.name + " je za " + vakat.predToast + " minuta")); toastTextElements[1].AppendChild(toastXml.CreateTextNode("Utišajte zvukove uređaja!")); IXmlNode toastNode = toastXml.SelectSingleNode("/toast"); ((XmlElement)toastNode).SetAttribute("launch", "MainPage.xaml"); XmlElement audio = toastXml.CreateElement("audio"); if (Fixed.IsPhone) { audio.SetAttribute("src", Memory.Toast_Sound); } toastNode.AppendChild(audio); ScheduledToastNotification scheduledToast = new ScheduledToastNotification(toastXml, vakat.time.AddMinutes(-vakat.predToast)); scheduledToast.Id = key; ToastNotificationManager.CreateToastNotifier().AddToSchedule(scheduledToast); System.Diagnostics.Debug.WriteLine("Notification created at " + vakat.time.AddMinutes(-vakat.predToast) + " (" + vakat.name + ")"); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("Greška pri registraciji notifikacije za " + vakat.name + " u vrijeme " + vakat.time.AddMinutes(-vakat.predToast) + " (" + ex.Message + ")"); } } }