Пример #1
0
        public static void Set(Data.Obavijest obavijest)
        {
            Obavijesti_Za_Dan(DateTime.Now, obavijest);               // POSTAVI OBAVIJESTI ZA DANAS
            Obavijesti_Za_Dan(DateTime.Now.AddDays(1), obavijest);    // POSTAVI OBAVIJESTI ZA SUTRA

            Last_Notification();
        }
Пример #2
0
        public void stayNotification(Data.Obavijest obavijest)
        {
            if (obavijest == Data.Obavijest.Alarm)
            {
                Memory.skippedAlarms = Memory.skippedAlarms.Replace("[" + MemoryKey + "]", "");
            }
            else if (obavijest == Data.Obavijest.Toast)
            {
                Memory.skippedToasts = Memory.skippedToasts.Replace("[" + MemoryKey + "]", "");
            }

            Notification.Kreiraj_Novu_Obavijest(this, obavijest);
        }
Пример #3
0
        public static async void Set(Data.Obavijest obavijest)
        {
            System.Diagnostics.Debug.WriteLine("Učitavanje podataka za " + Data.data.locationsDative[Memory.location]);
            Set_System_Tray("Učitavanje podataka za " + Data.data.locationsDative[Memory.location]);
            await System.Threading.Tasks.Task.Delay(20);

            Obavijesti_Za_Dan(DateTime.Now, obavijest);               // POSTAVI OBAVIJESTI ZA DANAS
            Obavijesti_Za_Dan(DateTime.Now.AddDays(1), obavijest);    // POSTAVI OBAVIJESTI ZA SUTRA

            Last_Notification();
            await System.Threading.Tasks.Task.Delay(20);

            Set_System_Tray();
        }
Пример #4
0
 public bool isSkipped(Data.Obavijest obavijest)
 {
     if (obavijest == Data.Obavijest.Alarm)
     {
         return(Memory.skippedAlarms.Contains("[" + MemoryKey + "]"));
     }
     else if (obavijest == Data.Obavijest.Toast)
     {
         return(Memory.skippedToasts.Contains("[" + MemoryKey + "]"));
     }
     else
     {
         return(true);
     }
 }
Пример #5
0
 public int notificationsOffset(Data.Obavijest obavijest)
 {
     if (obavijest == Data.Obavijest.Alarm)
     {
         return(predAlarm);
     }
     else if (obavijest == Data.Obavijest.Toast)
     {
         return(predToast);
     }
     else
     {
         return(0);
     }
 }
Пример #6
0
 public bool blockedNotifications(Data.Obavijest obavijest)
 {
     if (obavijest == Data.Obavijest.Alarm)
     {
         return(blockedAlarm);
     }
     else if (obavijest == Data.Obavijest.Toast)
     {
         return(blockedToast);
     }
     else
     {
         return(true);
     }
 }
Пример #7
0
 public void skipNotification(Data.Obavijest obavijest)
 {
     if (obavijest == Data.Obavijest.Alarm)
     {
         string tmp = Memory.skippedAlarms;
         tmp  = tmp.Replace("[" + MemoryKey + "]", "");
         tmp += "[" + MemoryKey + "]";
         Memory.skippedAlarms = tmp;
     }
     else if (obavijest == Data.Obavijest.Toast)
     {
         string tmp = Memory.skippedToasts;
         tmp  = tmp.Replace("[" + MemoryKey + "]", "");
         tmp += "[" + MemoryKey + "]";
         Memory.skippedToasts = tmp;
     }
     Notification.Obrisi_Obavijest(this.NotificationKey(obavijest));
 }
Пример #8
0
        public static void Obavijesti_Za_Dan(DateTime dt, Data.Obavijest obavijest)
        {
            for (int i = 0; i < Data.data.vakatNames.Count; i++)
            {
                Vakat vakat = new Vakat {
                    time = Data.VakatTime(dt, i), name = Data.data.vakatNames[i], rbr = i
                };

                if (obavijest == Data.Obavijest.All)
                {
                    Kreiraj_Novu_Obavijest(vakat, Data.Obavijest.Alarm);
                    Kreiraj_Novu_Obavijest(vakat, Data.Obavijest.Toast);
                }
                else
                {
                    Kreiraj_Novu_Obavijest(vakat, obavijest);
                }
            }
        }
Пример #9
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);
        }
Пример #10
0
 public string NotificationKey(Data.Obavijest obavijest)
 {
     return((time.ToString("yy|MM|dd") + "|" + name.Substring(0, 2).ToLower() + "|" + (int)obavijest).ToLower());
 }
Пример #11
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 + ")");
                }
            }
        }