public Form3(Form2 p, Calendrier calendrier, Journee jourSelec, Activite actiActuelle, string nomSpatio)
        {
            this.StartPosition = FormStartPosition.CenterScreen;

            InitializeComponent();

            this.treeView1.ExpandAll();

            this.jour_actuel.Text = jourSelec.NumJour.ToString();
            this.jourSelec = jourSelec;
            this.actiActuelle = actiActuelle;

            this.calendrierActuel = calendrier;

            this._nomSpatio = nomSpatio;

            if (actiActuelle != null) // mets les caractéristiques d'une activité dans le cas d'un chargement d'activité
            {
                this.H_debut.SelectedItem = actiActuelle.HeureDebut.Heure.ToString();
                this.M_debut.SelectedItem = actiActuelle.HeureDebut.Minute.ToString();
                this.H_fin.SelectedItem = actiActuelle.HeureFin.Heure.ToString();
                this.M_fin.SelectedItem = actiActuelle.HeureFin.Minute.ToString();
                this.description.SelectedText = actiActuelle.Descritpion.ToString();
                this.labelActi.Text = actiActuelle.Nom;
                this.textBoxX.Text = string.Format("{0}", actiActuelle.Lieu.Position.X);
                this.textBoxY.Text = string.Format("{0}", actiActuelle.Lieu.Position.Y);
                this._listSpatio = this.calendrierActuel.ListSpationaute;
            }
            else
            {
                this.labelActi.Text = "Aucun type d'activité sélectionné";
                btn_suppr.Enabled = false; // laisse les champs vide pour une création d'activité

                for (int i = 0; i < this.calendrierActuel.ListSpationaute.Count; i++)
                {
                    if (this.calendrierActuel.ListSpationaute.ElementAt(i).Nom.ToString() == this._nomSpatio)
                    {
                        this._listSpatio.Add(this.calendrierActuel.ListSpationaute.ElementAt(i));
                    }
                }
            }

            parent = p;

            graphics = pictureBox1.CreateGraphics();

            changerCouleurJours();
            desactiverJourPasses();
        }
 //on verifie si une activite empiète sur d'autres.
 public List<Activite> checkActivite(Activite newActivite)
 {
     List<Activite> lst_ActiviteConflit = new List<Activite>();
     foreach (Activite activite in ListActiviteJournee)
     {
         if (activite.HeureFin.Heure>=newActivite.HeureDebut.Heure && activite.HeureFin.Minute>=newActivite.HeureDebut.Minute)
         {
             foreach (Spationaute spatioOccupe in activite.ListSpationaute)
             {
                 foreach (Spationaute spatioNewActivite in newActivite.ListSpationaute)
                 {
                     if (spatioNewActivite==spatioOccupe)
                     {
                         lst_ActiviteConflit.Add(activite);
                     }
                 }
             }
         }
     }
     return lst_ActiviteConflit;
 }
        private void btn_confirmer_Click(object sender, EventArgs e)
        {
            bool PossibleDeChanger = true;

            Dates datesDebut = null;
            Dates datesFin = null;

            // vérifie qu'on renseigne bien des horaires
            if (H_debut.Text == "" || M_debut.Text == "" || H_fin.Text == "" || M_fin.Text == "")
            {
                PossibleDeChanger = false;
            }
            else
            {
                datesDebut = new Dates(jourSelec.NumJour, int.Parse(H_debut.Text), int.Parse(M_debut.Text));
                datesFin = new Dates(jourSelec.NumJour, int.Parse(H_fin.Text), int.Parse(M_fin.Text));
            }

            // vérifie qu'on renseigne bien des coordonnées
            double cooX, cooY;
            if (!testCoord(textBoxX.Text, out cooX, -1000, 1000))
                PossibleDeChanger = false;
            if (!testCoord(textBoxY.Text, out cooY, -1000, 1000))
                PossibleDeChanger = false;

            Coordonnees coo = new Coordonnees(nom_position.Text, new Point((int)cooX, (int)cooY));
            string nomActiTmp = "";
            if (treeView1.SelectedNode == null && actiActuelle == null) // vérifie qu'on sélectionne bien un type d'activité
            {
                PossibleDeChanger = false;
            }
            else if (treeView1.SelectedNode == null) // par défaut, mais le type de l'activité sélectionné si c'est un chargement d'activité
            {
                nomActiTmp = actiActuelle.Nom;
            }
            else
            {
                nomActiTmp = treeView1.SelectedNode.Text; // autrement, met ls noeud sélectionné par l'utilisateur
            }

            Activite tmpActi = new Activite(nomActiTmp, datesDebut, datesFin, coo, description.Text, this._listSpatio); //attention a l'assignation des Spationautes
            // Vérification des données
            if (!verifieDonnees(jourSelec.ListActiviteJournee, tmpActi))
                PossibleDeChanger = false;

            // Vérification du treeView
            if (!testTreeView())
                PossibleDeChanger = false;

            if (PossibleDeChanger) // ajoute ou modifie l'activité
            {
                jourSelec.ListActiviteJournee.Remove(actiActuelle);
                jourSelec.ListActiviteJournee.Add(tmpActi);
                actiActuelle = tmpActi;
                this.Close();
            }
            else // si un des critères n'est pas vérifié, un pop-up annonce la modification ou création impossible et renvoie au form de modification
            {
                PopUp_ModifImpossible popup = new PopUp_ModifImpossible();
                DialogResult dialogresult = popup.ShowDialog();
                popup.Dispose();
            }
        }
 // vérifie que l'emplacement horaire est libre pour la création de l'activité
 private bool verifieDonnees(List<Activite> listActi, Activite tmpActi)
 {
     if (tmpActi.HeureDebut == null || tmpActi.HeureFin == null)
     {
         return false;
     }
     else if ((tmpActi.HeureDebut.Heure * 60 + tmpActi.HeureDebut.Minute) > (tmpActi.HeureFin.Heure * 60 + tmpActi.HeureFin.Minute))
     {
         return false;
     }
     bool res = true;
     foreach (var item in listActi)
     {
         if (item != actiActuelle)
         {
             // heure de début de la nouvelle activité > heure de début d'une ancienne
             if ((tmpActi.HeureDebut.Heure * 60 + tmpActi.HeureDebut.Minute) > (item.HeureDebut.Heure * 60 + item.HeureDebut.Minute))
             {
                 // heure de début de la nouvelle activité > heure de fin d'une ancienne
                 if (!((tmpActi.HeureDebut.Heure * 60 + tmpActi.HeureDebut.Minute) <= (item.HeureFin.Heure * 60 + item.HeureFin.Minute)))
                 {
                     res = false;
                 }
             }
             // heure de début de la nouvelle activité < heure de début d'une ancienne
             else
             {
                 // heure de fin de la nouvelle activité < heure de début d'une ancienne
                 if (!((tmpActi.HeureFin.Heure * 60 + tmpActi.HeureFin.Minute) <= (item.HeureDebut.Heure * 60 + item.HeureDebut.Minute)))
                 {
                     res = false;
                 }
             }
         }
     }
     return res;
 }
 private int tailleActivite(Activite Activitee)
 {
     // donne la taille en pixel que devra avoir le bouton, en hauteur, en fonction de la durée de l'activité, par tranche de 10 minutes
     return ((Activitee.HeureFin.Heure - Activitee.HeureDebut.Heure) * 60 + (Activitee.HeureFin.Minute - Activitee.HeureDebut.Minute)) / 10 * _taille10minPixel;
 }