Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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 + ")");
                }
            }
        }