Beispiel #1
0
        /// <summary>
        /// tri la liste des Comptes à rebours par pordre alphabétique ou par ordre de temps restant
        /// </summary>
        public void TrierListeCaR()
        {
            var listeTri = new List <CaR>();

            //si le tri est par Timer on le fait par LINQ
            if (OrderByTimer)
            {
                listeTri.AddRange(ListeCaR.Where(c => !c.EnPause).OrderBy(c => c.Date).ToList());
                listeTri.AddRange(ListeCaR.Where(c => c.EnPause).OrderBy(c => c.NbSecondes).ToList());
            }
            //sinon (par titre) on le fait par le CompareTo de Chrono
            else
            {
                listeTri = (from item in ListeCaR
                            orderby item.Titre
                            select item).ToList();
                listeTri.Sort();
                listeTri.Reverse();
            }
            ListeCaR.Clear();
            foreach (var t in listeTri)
            {
                ListeCaR.Add(t);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Compte le nombre de chronomètre et de compte à rebours actif pour l'afficher sur la tuile
        /// </summary>
        private void MajBadge()
        {
            int compteur;

            compteur  = ListeCaR.Count(caR => !caR.EnPause);
            compteur += ListeChronos.Count(chrono => !chrono.EnPause);

            if (compteur != 0)
            {
                NotifUtils.AfficherChiffreBadge(compteur);
            }
            else
            {
                NotifUtils.EffacerBadge();
            }
        }
Beispiel #3
0
        /// <summary>
        /// Supprime un timer de sal liste
        /// </summary>
        /// <param name="chrono">le timer à supprimer</param>
        public void Supprimer(Timer chrono)
        {
            if (chrono is CaR)
            {
                ListeCaR.Remove((CaR)chrono);
            }

            if (chrono is Chrono)
            {
                var ch = chrono as Chrono;
                foreach (var c in ListeChronos.ToList().Where(c => c.IdChrono == ch.IdChrono))
                {
                    ListeChronos.Remove(c);
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// ajoute un timer à sa liste
        /// </summary>
        /// <param name="chrono"></param>
        public void AjouterModifier(Timer chrono)
        {
            if (chrono is CaR)
            {
                var car = chrono as CaR;

                if (ListeCaR.Contains(car))
                {
                    var index = ListeCaR.IndexOf(car);
                    ListeCaR.Remove(car);
                    ListeCaR.Insert(index, car);
                }
                else //sinon on ajoute
                {
                    //récup de l'id max et ajoute à la liste
                    var res = (ListeCaR.Count == 0) ? 0 : _listeCaR.OrderByDescending(i => i.Id).FirstOrDefault().Id;
                    car.Id = res + 1;
                    ListeCaR.Add(car);
                }
            }

            if (chrono is Chrono)
            {
                var ch = chrono as Chrono;
                //si il n'a pas d'id, c'est un nouveau chrono
                if (ch.Id == 0)
                {
                    ch.Id = ((ListeChronos.Count == 0)
                        ? 0
                        : ListeChronos.OrderByDescending(i => i.Id).FirstOrDefault().Id) + 1;
                    ch.IdChrono = ((ListeChronos.Count == 0)
                        ? 0
                        : ListeChronos.OrderByDescending(i => i.IdChrono).FirstOrDefault().IdChrono) + 1;
                    ch.Valider = false;
                    ch.AffichNbSecondesDiff = false;
                    ch.IsParent             = true;
                    ch.Stop();
                    ListeChronos.Add(ch);
                }
                //si il a un Id, ont l'ajoute à la suite des Id Chrono
                else
                {
                    ch.Id = ((ListeChronos.Count == 0)? 0: ListeChronos.OrderByDescending(i => i.Id).FirstOrDefault().Id) + 1;
                    ch.Stop();

                    //récupération ddu temps du chrono précédent (id max de l'idChrono)
                    ch.NbSecondesDiff = ch.NbSecondes - ListeChronos.Where(listeChrono => listeChrono.IdChrono == ch.IdChrono).OrderByDescending(i => i.Id).FirstOrDefault().NbSecondes;

                    //on vérifie si c'est le le chrono le plus rapide, et si c'est le cas on met à jour les données
                    var res = ListeChronos.Count(listeChrono => listeChrono.IdChrono == ch.IdChrono && !listeChrono.IsParent && listeChrono.NbSecondesDiff < ch.NbSecondesDiff);
                    if (res == 0)
                    {
                        ch.IsFastestTimer = true;

                        foreach (var item in ListeChronos.Where(item => item.IdChrono == ch.IdChrono))
                        {
                            item.IsFastestTimer = false;
                        }
                    }

                    ch.AffichNbSecondesDiff = true;
                    ch.IsParent             = false;
                    var tt       = ListeChronos.FirstOrDefault(listeChrono => listeChrono.IdChrono == ch.IdChrono && listeChrono.IsParent);
                    var indexOri = ListeChronos.IndexOf(tt);
                    ListeChronos.Insert(indexOri + 1, ch);
                }
            }
        }