/// <summary> /// Permet d'associer une activité à un label ou un groupe de labels /// </summary> public void lierActiviteEtEdt() { Journee j = journeesMission[journeeSelectionnee]; for (int i = 0; i < 25; ++i) { List <Activite> acts = j.trouverActivites(i); foreach (Activite a in acts) { heures[i].Text += a.getNom() + ", "; if (a.isActiviteExterieure()) { Bitmap img = (a.isExploration()) ? ((ExplorationExterieure)a).deplacement() : ((ExperienceExterieure)a).deplacement(); iconesActivite[i].Image = img; iconesActivite[i].Visible = true; } else { iconesActivite[i].Visible = false; } heures[i].BackColor = Color.FromArgb(a.couleurActivite()[0], a.couleurActivite()[1], a.couleurActivite()[2]); } } }
/// <summary> /// Permet de mettre à jour les activités en fonction de si elles sont passées ou non /// </summary> public void mettreAJourActiviteEnCours() { TimeMartien heureActuelle = TimeMartien.calculerJours(debutMission); for (int k = 1; k <= journeeActuelle.getNumero(); ++k) { Journee j = journeesMission[k]; for (int i = 0; i < heures.Count; ++i) { if (heures[i].Tag.ToString().Equals(heureActuelle.getHeures().ToString()) && journeeActuelle.getNumero() == k) { j.trouverActivite(heureActuelle, ((heureActuelle.getHeures() == 0 && heureActuelle.getMinutes() == 0) ? true : false)).activiteEnCours(); } else if (int.Parse(heures[i].Tag.ToString()) < heureActuelle.getHeures() || journeeActuelle.getNumero() != k) { foreach (Activite a in j.getActivites()) { TimeMartien tm = new TimeMartien(0, int.Parse(heures[i].Tag.ToString()), 0, 0); if ((a.getHeureFin() < heureActuelle || journeeActuelle.getNumero() != k)) { a.activitePassee(); } if ((j.getNumero() > journeeActuelle.getNumero()) || (j.getNumero() == journeeActuelle.getNumero() && a.getHeureFin().getHeures() == 0 && a.getHeureFin().getMinutes() == 0)) { a.activiteAVenir(); } } } } } }
/// <summary> /// Permet de mettre à jour l'emploi du temps /// </summary> /// <param name="journee">La journée à mettre à jour</param> public void miseAJourEdt(Journee journee) { for (int i = 0; i < 25; ++i) { heures[i].Text = ""; } numJourneeLabel.Text = "Journée " + journeeSelectionnee; lierActiviteEtEdt(); int jourPeriode = journee.getNumero(); while (jourPeriode > 50) { jourPeriode -= 50; } if (journee.isJourneeExterieure()) { icones[jourPeriode].Visible = true; } else { icones[jourPeriode].Visible = false; } avancementMission.Value = (int)((journeeActuelle.getNumero() * 100) / Constantes.NB_JOUR_MISSION); mettreAJourActiviteEnCours(); this.Refresh(); }
public void accesseursTest() { Journee j = new Journee(54); Assert.IsNotNull(j.getActivites(), "getActivites ne revoie pas la bonne valeur"); Assert.AreEqual(j.getDescription(), "", "getDescription ne renvoie pas la bonne valeur"); Assert.AreEqual(j.getNumero(), 54, "getNumero ne renvoie pas la bonne valeur"); Assert.AreEqual(j.isJourneeExterieure(), false, "isJourneeExterieure ne renvoie pas la bonne valeur"); j.setRapport("LOL"); List<Activite> lA = new List<Activite> { new Activite(new TypeActivite("Lel")) }; j.setListeActivites(lA); j.setJourneeExterieure(true); Assert.AreEqual(j.getActivites(), lA, "setActivites ne fonctionne pas"); Assert.AreEqual(j.getDescription(), "LOL", "setDescription ne renvoie pas la bonne valeur"); Assert.AreEqual(j.isJourneeExterieure(), true, "setJourneeExterieure ne renvoie pas la bonne valeur"); String str = ""; for (int i = 0; i < 1000; ++i) str += i.ToString(); bool texteOK = j.setRapport(str); Assert.IsFalse(texteOK, "La description dépasse les 1000 caractères"); }
public void ajouterActiviteTest() { Journee j = new Journee(); Activite a = new Activite(new TypeActivite("Lel"), "xD", new TimeMartien(0, 0, 0, 0), new TimeMartien(1, 2, 3, 4), new Lieu(0, 0)); j.ajouterActivite(a); Assert.IsNotNull(j.getActivites(), "L'ajout d'activité a échoué"); }
/// <summary> /// Permet d'ouvrir le dernier Form DetailHeure (afin de le mettre à jour) /// </summary> public void ouvrirDernierDetailHeure() { Journee j = journeesMission[journeeSelectionnee]; DetailHeure dh = new DetailHeure(heureSelectionnee, j.trouverActivites(heureSelectionnee), j, this); dh.Show(); }
/// <summary> /// Permet d'afficher les détails d'une heure lorsqu'elle est sélectionnée /// </summary> /// <param name="sender">Objet source</param> /// <param name="e">Evènement</param> private void horaire_Click(object sender, EventArgs e) { heureSelectionnee = int.Parse(((Label)sender).Tag.ToString()); Journee j = journeesMission[journeeSelectionnee]; DetailHeure dh = new DetailHeure(heureSelectionnee, j.trouverActivites(heureSelectionnee), j, this); dh.Show(); }
/// <summary> /// Permet de créer un emploi du temps pour l'astronaute /// </summary> public void creerEdT(int numJour) { for (int i = 1; i < 501; ++i) journeesMission[i] = new Journee(i); // Mise à jour des jours : passés | en cours | à venir for (int i = 1; i < numJour; ++i) journeesMission[i].journeePassee(); journeesMission[numJour].journeeEnCours(); }
/// <summary> /// Constructeur paramétré /// </summary> /// <param name="dt">Début de la mission</param> /// <param name="chargement">Chargement des données par XML ?</param> public CalendrierMission(DateTime dt, bool chargement) { InitializeComponent(); debutMission = dt; periode = 1; journeeSelectionnee = 1; panels = new Dictionary <int, Panel>(); icones = new Dictionary <int, PictureBox>(); iconesActivite = new Dictionary <int, PictureBox>(); numeros = new Dictionary <int, Label>(); heures = new Dictionary <int, Label>(); domaines = new List <Domaine>(); astronautes = new List <Astronaute>(); initialiserDomaines(); if (!chargement) { Astronaute a = new Astronaute("Baudry", "Patrick", 69); astronauteSelectionne = a; astronautes.Add(a); journeesMission = astronauteSelectionne.getJourneesMission(); initialisationInterface(); TimeMartien nb = TimeMartien.calculerJours(debutMission); int numJour = nb.getJours() + 1; if (numJour > 500) { numJour = 500; } foreach (Astronaute astro in astronautes) { astro.creerEdT(numJour); astroList.Items.Add(astro); } journeeActuelle = journeesMission[numJour]; changerPeriode(periode); verificationChangementPeriode(); mettreAJourHeures(); miseAJourEdt(journeesMission[journeeSelectionnee]); descriptionTexte.Text = journeesMission[journeeSelectionnee].getDescription(); astroList.SelectedItem = astronauteSelectionne; mettreAJourActiviteEnCours(); } }
/// <summary> /// Permet de créer un emploi du temps pour l'astronaute /// </summary> public void creerEdT(int numJour) { for (int i = 1; i < 501; ++i) { journeesMission[i] = new Journee(i); } // Mise à jour des jours : passés | en cours | à venir for (int i = 1; i < numJour; ++i) { journeesMission[i].journeePassee(); } journeesMission[numJour].journeeEnCours(); }
/// <summary> /// Permet de mettre à jour les jours en fonction de s'ils sont passés ou non /// </summary> /// <param name="sender">Objet source</param> /// <param name="e">Evènement</param> private void timerJour_Tick(object sender, EventArgs e) { TimeMartien nb = TimeMartien.calculerJours(debutMission); int numJour = nb.getJours() + 1; if (numJour > 500) { numJour = 500; } for (int i = 1; i < numJour; ++i) { journeesMission[i].journeePassee(); } journeeActuelle = journeesMission[numJour]; journeesMission[numJour].journeeEnCours(); changerPeriode(periode); verificationChangementPeriode(); mettreAJourHeures(); miseAJourEdt(journeesMission[journeeSelectionnee]); }
public void trouverActiviteTest() { Journee j = new Journee(); j.setListeActivites(new List<Activite>()); Activite a1 = new Activite(new TypeActivite("Lel1"), "xD1", new TimeMartien(0), new TimeMartien(10), new Lieu(0, 0)); Activite a2 = new Activite(new TypeActivite("Lel2"), "xD2", new TimeMartien(10), new TimeMartien(20), new Lieu(20, 30)); Activite a3 = new Activite(new TypeActivite("Lel3"), "xD3", new TimeMartien(20), new TimeMartien(0, 24, 40, 0), new Lieu(12, 45)); Activite a4 = new Activite(new TypeActivite("Lel4"), "xD4", new TimeMartien(10), new TimeMartien(15), new Lieu(20, 30)); j.ajouterActivite(a1); j.ajouterActivite(a2); j.ajouterActivite(a3); j.ajouterActivite(a4); Assert.IsNull(j.trouverActivite(null, true), "On ne peut pas rechercher quelque chose de null"); Activite trouve = j.trouverActivite(new TimeMartien(8), true); Assert.IsNotNull(trouve, "La fonction trouverActivite ne fonctionne pas"); Assert.IsTrue(trouve.getNom().Equals(a1.getNom()), "La méthode a trouvé une activité qui ne correspond pas à ce qui est recherché"); trouve = j.trouverActivite(new TimeMartien(0), false); Assert.IsNotNull(trouve, "La fonction trouverActivite ne fonctionne pas"); Assert.IsTrue(trouve.getNom().Equals(a3.getNom()), "La méthode a trouvé une activité qui ne correspond pas à ce qui est recherché"); }
/// <summary> /// Permet de charger les données depuis un fichier XML /// </summary> /// <param name="marsOMatic">Le fichier XML Mars-o-Matic</param> /// <param name="activitesRefs">Le fichier XML ActivitesRefs associé au fichier précédent</param> private void chargerXml(String marsOMatic, String activitesRefs) { XmlDocument mars = new XmlDocument(); mars.Load(marsOMatic); XmlDocument acts = new XmlDocument(); acts.Load(activitesRefs); Dictionary <int, Activite> activitesBase = new Dictionary <int, Activite>(); int nbElements = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("NbElements").InnerText); Progression p = new Progression(nbElements); p.Show(); /* Chargement données des activités de base */ XmlNodeList activites = acts.GetElementsByTagName("Activite"); foreach (XmlNode n in activites) { Activite a; int num = int.Parse(n.SelectSingleNode("Numero").InnerText); bool exterieure = bool.Parse(n.SelectSingleNode("Exterieure").InnerText); bool exploration = bool.Parse(n.SelectSingleNode("Exploration").InnerText); TypeActivite ta = new TypeActivite(n.SelectSingleNode("TypeActivite").SelectSingleNode("Nom").InnerText); if (exterieure) { if (exploration) { a = new ExplorationExterieure(ta, "", null, null, null, null); } else { a = new ExperienceExterieure(ta, "", null, null, null, null); } } else { a = new Activite(ta); } activitesBase.Add(num, a); p.incrementer(); } /* Chargement données */ int jour = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Jour").InnerText); int mois = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Mois").InnerText); int annee = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Annee").InnerText); int heures = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Heures").InnerText); int minutes = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Minutes").InnerText); int secondes = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Secondes").InnerText); this.debutMission = new DateTime(annee, mois, jour, heures, minutes, secondes); TimeMartien nb = TimeMartien.calculerJours(debutMission); int numJour = nb.getJours() + 1; if (numJour > 500) { numJour = 500; } XmlNodeList astronautesNodes = mars.GetElementsByTagName("Astronaute"); foreach (XmlNode n in astronautesNodes) { String nom = n.SelectSingleNode("Nom").InnerText; String prenom = n.SelectSingleNode("Prenom").InnerText; int age = int.Parse(n.SelectSingleNode("Age").InnerText); Astronaute a = new Astronaute(nom, prenom, age); Dictionary <int, Journee> joursMission = new Dictionary <int, Journee>(); a.setJourneesMission(joursMission); astronautes.Add(a); a.getJourneesMission().Clear(); astroList.Items.Add(a); // Ajout dans la liste => interface XmlNodeList missionNode = n.SelectSingleNode("JourneesMission").SelectNodes("Journee"); foreach (XmlNode nn in missionNode) { int num = int.Parse(nn.SelectSingleNode("Numero").InnerText); String etat = nn.SelectSingleNode("Etat").InnerText; IEtat etatJournee = new Passe(); if (etat.Equals("EnCours")) { etatJournee = new EnCours(); } else if (etat.Equals("Futur")) { etatJournee = new Futur(); } String rapport = nn.SelectSingleNode("Rapport").InnerText; Journee j = new Journee(num, rapport, etatJournee, false); j.getActivites().Clear(); joursMission.Add(num, j); XmlNodeList activitesNode = nn.SelectSingleNode("Activites").SelectNodes("Activite"); foreach (XmlNode nnn in activitesNode) { int numA = int.Parse(nnn.SelectSingleNode("Numero").InnerText); String transport = nnn.SelectSingleNode("Transport").InnerText; ITransport transportAct = null; if (transport.Equals("Scaphandre")) { transportAct = new Scaphandre(); } else if (transport.Equals("Vehicule")) { transportAct = new Vehicule(); } String description = nnn.SelectSingleNode("Description").InnerText; etat = nnn.SelectSingleNode("Etat").InnerText; IEtat etatAct = new Passe(); if (etat.Equals("EnCours")) { etatAct = new EnCours(); } else if (etat.Equals("Futur")) { etatAct = new Futur(); } int mD = int.Parse(nnn.SelectSingleNode("HeureDebut").InnerText); int mF = int.Parse(nnn.SelectSingleNode("HeureFin").InnerText); String xy = nnn.SelectSingleNode("XY").InnerText; int x = int.Parse(xy.Split(',')[0]); int y = int.Parse(xy.Split(',')[1]); Lieu l = new Lieu(x, y); Activite aBase = activitesBase[numA]; Activite act; if (aBase.isActiviteExterieure()) { if (aBase.isExperience()) { act = new ExperienceExterieure(aBase.getTypeActivite(), description, new TimeMartien(0, 0, mD, 0), new TimeMartien(0, 0, mF, 0), l, transportAct); } else { act = new ExplorationExterieure(aBase.getTypeActivite(), description, new TimeMartien(0, 0, mD, 0), new TimeMartien(0, 0, mF, 0), l, transportAct); } } else { act = new Activite(aBase.getTypeActivite(), description, new TimeMartien(0, 0, mD, 0), new TimeMartien(0, 0, mF, 0), l); } act.setDescription(description); act.setEtat(etatAct); j.ajouterActivite(act); p.incrementer(); } p.incrementer(); } p.incrementer(); } initialisationInterface(); astronauteSelectionne = astronautes[0]; journeesMission = astronauteSelectionne.getJourneesMission(); journeeActuelle = journeesMission[numJour]; modificationJourneeActuelle(numJour); changerPeriode(periode); verificationChangementPeriode(); mettreAJourHeures(); miseAJourEdt(journeesMission[journeeSelectionnee]); descriptionTexte.Text = journeesMission[journeeSelectionnee].getDescription(); astroList.SelectedItem = astronauteSelectionne; p.fermerFenetre(); }
public void supprimerActiviteTest() { Journee j = new Journee(); Activite a = new Activite(new TypeActivite("Lel"), "xD", new TimeMartien(0, 0, 0, 0), new TimeMartien(1, 2, 3, 4), new Lieu(0, 0)); j.ajouterActivite(a); j.supprimerActivite(a); Activite actSuppr = j.getActivites().Find(e => (e.getNom().Equals(a.getNom()) && e.getDescription().Equals(a.getDescription()))); Assert.IsNull(actSuppr, "La suppression d'activité a échoué"); }
public void trouverActivitesTest() { Journee j = new Journee(); j.setListeActivites(new List<Activite>()); Activite a1 = new Activite(new TypeActivite("Lel1"), "xD1", new TimeMartien(0), new TimeMartien(10), new Lieu(0, 0)); Activite a2 = new Activite(new TypeActivite("Lel2"), "xD2", new TimeMartien(10), new TimeMartien(20), new Lieu(20, 30)); Activite a3 = new Activite(new TypeActivite("Lel3"), "xD3", new TimeMartien(20), new TimeMartien(0, 24, 40, 0), new Lieu(12, 45)); Activite a4 = new Activite(new TypeActivite("Lel4"), "xD4", new TimeMartien(10), new TimeMartien(15), new Lieu(20, 30)); j.ajouterActivite(a1); j.ajouterActivite(a2); j.ajouterActivite(a3); j.ajouterActivite(a4); List<Activite> trouvees = j.trouverActivites(11); Assert.IsNotNull(trouvees, "La fonction trouverActivites ne fonctionne pas"); Assert.IsTrue(a2.Equals(trouvees.Find(e => e.getNom().Equals(a2.getNom()))), "La méthode a trouvé une activité qui ne correspond pas à ce qui est recherché"); Assert.IsTrue(trouvees.Count == 2, "La méthode n'a pas trouvé le bon nombre d'éléments"); trouvees = j.trouverActivites(36); Assert.IsNotNull(trouvees, "La fonction trouverActivites ne fonctionne pas"); Assert.IsTrue(a2.Equals(trouvees.Find(e => e.getNom().Equals(a2.getNom()))), "La méthode a trouvé une activité qui ne correspond pas à ce qui est recherché"); Assert.IsTrue(trouvees.Count == 2, "La méthode n'a pas trouvé le bon nombre d'éléments"); }
public void journeePasseeTest() { Journee j = new Journee(); j.journeePassee(); Assert.AreEqual(j.getEtat(), Constantes.ETAT_PASSE, "L'état de la journée n'est pas le bon"); }
public void mettreAJourJourneeExterieureTest() { Journee target = new Journee(); bool expected = false; bool actual; actual = target.mettreAJourJourneeExterieure(); Assert.AreEqual(expected, actual); target = new Journee(); target.ajouterActivite(new ExplorationExterieure(new TypeActivite("Toto"), "", new TimeMartien(0), new TimeMartien(2), new Lieu(0, 0), null)); expected = true; actual = target.mettreAJourJourneeExterieure(); Assert.AreEqual(expected, actual); }
public void journeeAVenirTest() { Journee j = new Journee(); j.journeeAVenir(); Assert.AreEqual(j.getEtat(), Constantes.ETAT_FUTUR, "L'état de la journée n'est pas le bon"); }
public void journeeEnCoursTest() { Journee j = new Journee(); j.journeeEnCours(); Assert.AreEqual(j.getEtat(), Constantes.ETAT_ENCOURS, "L'état de la journée n'est pas le bon"); }
/// <summary> /// COnstructeur paramétré /// </summary> /// <param name="heureSelectionnee">Une heure</param> /// <param name="activites">La liste des activités de la journée</param> /// <param name="journee">La journée</param> /// <param name="cm">Le CalendrierMission source</param> public DetailHeure(int heureSelectionnee, List <Activite> activites, Journee journee, CalendrierMission cm) { InitializeComponent(); this.heureSelectionnee = heureSelectionnee; this.activites = activites; horaires = new Dictionary <int, Label>(); heures = new Dictionary <int, Label>(); iconesActivite = new Dictionary <int, PictureBox>(); this.journee = journee; this.cm = cm; for (int i = 0; i <= 60; i += 10) { Control[] ctrl; if (i <= 50) { ctrl = this.Controls.Find("actM" + i, true); horaires[i] = (Label)ctrl[0]; ctrl = this.Controls.Find("h" + i + "img", true); iconesActivite[i] = (PictureBox)ctrl[0]; } ctrl = this.Controls.Find("label" + i, true); heures[i] = (Label)ctrl[0]; } foreach (Activite a in activites) { int debut = a.getHeureDebut().getMinutes(); int fin = a.getHeureFin().getMinutes(); int hDebut = a.getHeureDebut().getHeures(); int hFin = a.getHeureFin().getHeures(); String nom = a.getNom(); if (hDebut < heureSelectionnee) { debut = 0; } if (hFin > heureSelectionnee) { fin = 60; } if (fin == 0 && heureSelectionnee != 24) { fin = 60; } else if (fin == 0 && heureSelectionnee == 24) { fin = 40; } heures[60].Text = (heureSelectionnee + 1) + "h00"; for (int i = debut; i < fin; i += 10) { if ((heureSelectionnee + "h" + i + ((i < 10) ? "0" : "")).Equals("24h40")) { heures[i].Text = "0h00"; } horaires[i].Text = a.getNom(); heures[i].Text = heureSelectionnee + "h" + i + ((i < 10) ? "0" : ""); int h = int.Parse(heures[i].Text.Split('h')[0]); int m = int.Parse(heures[i].Text.Split('h')[1]); if (h == 24 && m > 40) { heures[i].Visible = false; horaires[i - 10].Visible = false; this.Size = new Size(379, 158); } foreach (Domaine d in CalendrierMission.domaines) { if (d.getNomActivites().Contains(a.getNom()) || d.getNom().Equals(a.getNom())) { horaires[i].BackColor = Color.FromArgb(d.getCouleur()[0], d.getCouleur()[1], d.getCouleur()[2]); } } if (a.isActiviteExterieure()) { Bitmap img = (a.isExploration()) ? ((ExplorationExterieure)a).deplacement() : ((ExperienceExterieure)a).deplacement(); iconesActivite[i].Image = img; iconesActivite[i].Visible = true; } else { iconesActivite[i].Visible = false; } } if (heureSelectionnee == 24) { for (int i = 40; i < 60; i += 10) { heures[i + 10].Visible = false; iconesActivite[i].Visible = false; horaires[i].Visible = false; } if (fin < 60) { label40.Text = "0h00"; label60.Visible = false; this.Size = new Size(379, 158); } } } }
/// <summary> /// Constructeur paramétré /// </summary> /// <param name="j">Une journée</param> /// <param name="a">Une activité la journée</param> /// <param name="cm">L'interface graphique CalendrierMission</param> /// <param name="dh">L'interface graphique DetailHeure</param> public ModificationActivite(Journee j, Activite a, CalendrierMission cm, DetailHeure dh) { if (a.getHeureFin().getHeures() == 24 && a.getHeureFin().getMinutes() == 39) a.setHeureFin(new TimeMartien(0)); InitializeComponent(); this.dh = dh; if (finHeure.Value == 0 && finMinute.Value == 0) { finHeure.Value = 24; finMinute.Value = 40; } debutHeure.Maximum = finHeure.Value; lieu = new Lieu(0, 0); activiteAModifier = a; journeeAModifier = j; this.cm = cm; debutHeure.Value = activiteAModifier.getHeureDebut().getHeures(); finHeure.Value = activiteAModifier.getHeureFin().getHeures(); debutMinute.Value = activiteAModifier.getHeureDebut().getMinutes(); finMinute.Value = activiteAModifier.getHeureFin().getMinutes(); debutHeure.Minimum = debutHeure.Value; finHeure.Maximum = (finHeure.Value == 0) ? 24 : finHeure.Value; finHeure.Minimum = (finHeure.Value == 0) ? 0 : debutHeure.Value; remplirTreeView(); descriptionTB.Text = a.getDescription(); if (a.isActiviteExterieure()) { exterieurRadio.Checked = true; if (a.isExploration()) { explorationRadio.Checked = true; scaphandreRadio.Checked = (((ExplorationExterieure)a).nomTransport().Equals("Scaphandre")) ? true : false; vehiculeRadio.Checked = !scaphandreRadio.Checked; } else { experienceRadio.Checked = true; scaphandreRadio.Checked = (((ExperienceExterieure)a).nomTransport().Equals("Scaphandre")) ? true : false; vehiculeRadio.Checked = !scaphandreRadio.Checked; } } else interieurRadio.Checked = true; foreach (TreeNode tn in treeView.Nodes) foreach (TreeNode tnn in tn.Nodes) if (tnn.Text.Equals(a.getNom())) treeView.SelectedNode = tnn; lieuTB.Text = activiteAModifier.getLieu().ToString(); debutHeure.Maximum = finHeure.Maximum; heureDebutStatic = new TimeMartien(0, (int) debutHeure.Value, (int) debutMinute.Value, 0); heureFinStatic = new TimeMartien(0, (int) finHeure.Value, (int) finMinute.Value, 0); }
/// <summary> /// Permet de mettre à jour l'emploi du temps /// </summary> /// <param name="journee">La journée à mettre à jour</param> public void miseAJourEdt(Journee journee) { for (int i = 0; i < 25; ++i) heures[i].Text = ""; numJourneeLabel.Text = "Journée " + journeeSelectionnee; lierActiviteEtEdt(); int jourPeriode = journee.getNumero(); while (jourPeriode > 50) jourPeriode -= 50; if (journee.isJourneeExterieure()) icones[jourPeriode].Visible = true; else icones[jourPeriode].Visible = false; avancementMission.Value = (int) ((journeeActuelle.getNumero() * 100) / Constantes.NB_JOUR_MISSION); mettreAJourActiviteEnCours(); this.Refresh(); }
/// <summary> /// Permet de charger les données depuis un fichier XML /// </summary> /// <param name="marsOMatic">Le fichier XML Mars-o-Matic</param> /// <param name="activitesRefs">Le fichier XML ActivitesRefs associé au fichier précédent</param> private void chargerXml(String marsOMatic, String activitesRefs) { XmlDocument mars = new XmlDocument(); mars.Load(marsOMatic); XmlDocument acts = new XmlDocument(); acts.Load(activitesRefs); Dictionary<int, Activite> activitesBase = new Dictionary<int, Activite>(); int nbElements = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("NbElements").InnerText); Progression p = new Progression(nbElements); p.Show(); /* Chargement données des activités de base */ XmlNodeList activites = acts.GetElementsByTagName("Activite"); foreach (XmlNode n in activites) { Activite a; int num = int.Parse(n.SelectSingleNode("Numero").InnerText); bool exterieure = bool.Parse(n.SelectSingleNode("Exterieure").InnerText); bool exploration = bool.Parse(n.SelectSingleNode("Exploration").InnerText); TypeActivite ta = new TypeActivite(n.SelectSingleNode("TypeActivite").SelectSingleNode("Nom").InnerText); if (exterieure) if (exploration) a = new ExplorationExterieure(ta, "", null, null, null, null); else a = new ExperienceExterieure(ta, "", null, null, null, null); else a = new Activite(ta); activitesBase.Add(num, a); p.incrementer(); } /* Chargement données */ int jour = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Jour").InnerText); int mois = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Mois").InnerText); int annee = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Annee").InnerText); int heures = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Heures").InnerText); int minutes = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Minutes").InnerText); int secondes = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Secondes").InnerText); this.debutMission = new DateTime(annee, mois, jour, heures, minutes, secondes); TimeMartien nb = TimeMartien.calculerJours(debutMission); int numJour = nb.getJours() + 1; if (numJour > 500) numJour = 500; XmlNodeList astronautesNodes = mars.GetElementsByTagName("Astronaute"); foreach (XmlNode n in astronautesNodes) { String nom = n.SelectSingleNode("Nom").InnerText; String prenom = n.SelectSingleNode("Prenom").InnerText; int age = int.Parse(n.SelectSingleNode("Age").InnerText); Astronaute a = new Astronaute(nom, prenom, age); Dictionary<int, Journee> joursMission = new Dictionary<int, Journee>(); a.setJourneesMission(joursMission); astronautes.Add(a); a.getJourneesMission().Clear(); astroList.Items.Add(a); // Ajout dans la liste => interface XmlNodeList missionNode = n.SelectSingleNode("JourneesMission").SelectNodes("Journee"); foreach (XmlNode nn in missionNode) { int num = int.Parse(nn.SelectSingleNode("Numero").InnerText); String etat = nn.SelectSingleNode("Etat").InnerText; IEtat etatJournee = new Passe(); if (etat.Equals("EnCours")) etatJournee = new EnCours(); else if (etat.Equals("Futur")) etatJournee = new Futur(); String rapport = nn.SelectSingleNode("Rapport").InnerText; Journee j = new Journee(num, rapport, etatJournee, false); j.getActivites().Clear(); joursMission.Add(num, j); XmlNodeList activitesNode = nn.SelectSingleNode("Activites").SelectNodes("Activite"); foreach (XmlNode nnn in activitesNode) { int numA = int.Parse(nnn.SelectSingleNode("Numero").InnerText); String transport = nnn.SelectSingleNode("Transport").InnerText; ITransport transportAct = null; if (transport.Equals("Scaphandre")) transportAct = new Scaphandre(); else if (transport.Equals("Vehicule")) transportAct = new Vehicule(); String description = nnn.SelectSingleNode("Description").InnerText; etat = nnn.SelectSingleNode("Etat").InnerText; IEtat etatAct = new Passe(); if (etat.Equals("EnCours")) etatAct = new EnCours(); else if (etat.Equals("Futur")) etatAct = new Futur(); int mD = int.Parse(nnn.SelectSingleNode("HeureDebut").InnerText); int mF = int.Parse(nnn.SelectSingleNode("HeureFin").InnerText); String xy = nnn.SelectSingleNode("XY").InnerText; int x = int.Parse(xy.Split(',')[0]); int y = int.Parse(xy.Split(',')[1]); Lieu l = new Lieu(x, y); Activite aBase = activitesBase[numA]; Activite act; if (aBase.isActiviteExterieure()) if (aBase.isExperience()) act = new ExperienceExterieure(aBase.getTypeActivite(), description, new TimeMartien(0, 0, mD, 0), new TimeMartien(0, 0, mF, 0), l, transportAct); else act = new ExplorationExterieure(aBase.getTypeActivite(), description, new TimeMartien(0, 0, mD, 0), new TimeMartien(0, 0, mF, 0), l, transportAct); else act = new Activite(aBase.getTypeActivite(), description, new TimeMartien(0, 0, mD, 0), new TimeMartien(0, 0, mF, 0), l); act.setDescription(description); act.setEtat(etatAct); j.ajouterActivite(act); p.incrementer(); } p.incrementer(); } p.incrementer(); } initialisationInterface(); astronauteSelectionne = astronautes[0]; journeesMission = astronauteSelectionne.getJourneesMission(); journeeActuelle = journeesMission[numJour]; modificationJourneeActuelle(numJour); changerPeriode(periode); verificationChangementPeriode(); mettreAJourHeures(); miseAJourEdt(journeesMission[journeeSelectionnee]); descriptionTexte.Text = journeesMission[journeeSelectionnee].getDescription(); astroList.SelectedItem = astronauteSelectionne; p.fermerFenetre(); }
/// <summary> /// Constructeur paramétré /// </summary> /// <param name="dt">Début de la mission</param> /// <param name="chargement">Chargement des données par XML ?</param> public CalendrierMission(DateTime dt, bool chargement) { InitializeComponent(); debutMission = dt; periode = 1; journeeSelectionnee = 1; panels = new Dictionary<int, Panel>(); icones = new Dictionary<int, PictureBox>(); iconesActivite = new Dictionary<int, PictureBox>(); numeros = new Dictionary<int, Label>(); heures = new Dictionary<int, Label>(); domaines = new List<Domaine>(); astronautes = new List<Astronaute>(); initialiserDomaines(); if (!chargement) { Astronaute a = new Astronaute("Baudry", "Patrick", 69); astronauteSelectionne = a; astronautes.Add(a); journeesMission = astronauteSelectionne.getJourneesMission(); initialisationInterface(); TimeMartien nb = TimeMartien.calculerJours(debutMission); int numJour = nb.getJours() + 1; if (numJour > 500) numJour = 500; foreach (Astronaute astro in astronautes) { astro.creerEdT(numJour); astroList.Items.Add(astro); } journeeActuelle = journeesMission[numJour]; changerPeriode(periode); verificationChangementPeriode(); mettreAJourHeures(); miseAJourEdt(journeesMission[journeeSelectionnee]); descriptionTexte.Text = journeesMission[journeeSelectionnee].getDescription(); astroList.SelectedItem = astronauteSelectionne; mettreAJourActiviteEnCours(); } }
/// <summary> /// Permet de mettre à jour les jours en fonction de s'ils sont passés ou non /// </summary> /// <param name="sender">Objet source</param> /// <param name="e">Evènement</param> private void timerJour_Tick(object sender, EventArgs e) { TimeMartien nb = TimeMartien.calculerJours(debutMission); int numJour = nb.getJours() + 1; if (numJour > 500) numJour = 500; for (int i = 1; i < numJour; ++i) journeesMission[i].journeePassee(); journeeActuelle = journeesMission[numJour]; journeesMission[numJour].journeeEnCours(); changerPeriode(periode); verificationChangementPeriode(); mettreAJourHeures(); miseAJourEdt(journeesMission[journeeSelectionnee]); }
/// <summary> /// Constructeur paramétré /// </summary> /// <param name="j">Une journée</param> /// <param name="a">Une activité la journée</param> /// <param name="cm">L'interface graphique CalendrierMission</param> /// <param name="dh">L'interface graphique DetailHeure</param> public ModificationActivite(Journee j, Activite a, CalendrierMission cm, DetailHeure dh) { if (a.getHeureFin().getHeures() == 24 && a.getHeureFin().getMinutes() == 39) { a.setHeureFin(new TimeMartien(0)); } InitializeComponent(); this.dh = dh; if (finHeure.Value == 0 && finMinute.Value == 0) { finHeure.Value = 24; finMinute.Value = 40; } debutHeure.Maximum = finHeure.Value; lieu = new Lieu(0, 0); activiteAModifier = a; journeeAModifier = j; this.cm = cm; debutHeure.Value = activiteAModifier.getHeureDebut().getHeures(); finHeure.Value = activiteAModifier.getHeureFin().getHeures(); debutMinute.Value = activiteAModifier.getHeureDebut().getMinutes(); finMinute.Value = activiteAModifier.getHeureFin().getMinutes(); debutHeure.Minimum = debutHeure.Value; finHeure.Maximum = (finHeure.Value == 0) ? 24 : finHeure.Value; finHeure.Minimum = (finHeure.Value == 0) ? 0 : debutHeure.Value; remplirTreeView(); descriptionTB.Text = a.getDescription(); if (a.isActiviteExterieure()) { exterieurRadio.Checked = true; if (a.isExploration()) { explorationRadio.Checked = true; scaphandreRadio.Checked = (((ExplorationExterieure)a).nomTransport().Equals("Scaphandre")) ? true : false; vehiculeRadio.Checked = !scaphandreRadio.Checked; } else { experienceRadio.Checked = true; scaphandreRadio.Checked = (((ExperienceExterieure)a).nomTransport().Equals("Scaphandre")) ? true : false; vehiculeRadio.Checked = !scaphandreRadio.Checked; } } else { interieurRadio.Checked = true; } foreach (TreeNode tn in treeView.Nodes) { foreach (TreeNode tnn in tn.Nodes) { if (tnn.Text.Equals(a.getNom())) { treeView.SelectedNode = tnn; } } } lieuTB.Text = activiteAModifier.getLieu().ToString(); debutHeure.Maximum = finHeure.Maximum; heureDebutStatic = new TimeMartien(0, (int)debutHeure.Value, (int)debutMinute.Value, 0); heureFinStatic = new TimeMartien(0, (int)finHeure.Value, (int)finMinute.Value, 0); }
public void couleurActiviteTest() { Journee j = new Journee(); int[] colP = Constantes.COULEUR_PASSE; int[] colEC = Constantes.COULEUR_ENCOURS; int[] colF = Constantes.COULEUR_FUTUR; j.journeePassee(); Assert.AreEqual(j.couleurJournee(), colP, "La couleur de la journée n'est pas la bonne"); j.journeeEnCours(); Assert.AreEqual(j.couleurJournee(), colEC, "La couleur de la journée n'est pas la bonne"); j.journeeAVenir(); Assert.AreEqual(j.couleurJournee(), colF, "La couleur de la journée n'est pas la bonne"); }
/// <summary> /// COnstructeur paramétré /// </summary> /// <param name="heureSelectionnee">Une heure</param> /// <param name="activites">La liste des activités de la journée</param> /// <param name="journee">La journée</param> /// <param name="cm">Le CalendrierMission source</param> public DetailHeure(int heureSelectionnee, List<Activite> activites, Journee journee, CalendrierMission cm) { InitializeComponent(); this.heureSelectionnee = heureSelectionnee; this.activites = activites; horaires = new Dictionary<int, Label>(); heures = new Dictionary<int, Label>(); iconesActivite = new Dictionary<int, PictureBox>(); this.journee = journee; this.cm = cm; for (int i = 0; i <= 60; i += 10) { Control[] ctrl; if (i <= 50) { ctrl = this.Controls.Find("actM" + i, true); horaires[i] = (Label)ctrl[0]; ctrl = this.Controls.Find("h" + i + "img", true); iconesActivite[i] = (PictureBox)ctrl[0]; } ctrl = this.Controls.Find("label" + i, true); heures[i] = (Label)ctrl[0]; } foreach (Activite a in activites) { int debut = a.getHeureDebut().getMinutes(); int fin = a.getHeureFin().getMinutes(); int hDebut = a.getHeureDebut().getHeures(); int hFin = a.getHeureFin().getHeures(); String nom = a.getNom(); if (hDebut < heureSelectionnee) debut = 0; if (hFin > heureSelectionnee) fin = 60; if (fin == 0 && heureSelectionnee != 24) fin = 60; else if (fin == 0 && heureSelectionnee == 24) fin = 40; heures[60].Text = (heureSelectionnee + 1) + "h00"; for (int i = debut; i < fin; i += 10) { if ((heureSelectionnee + "h" + i + ((i < 10) ? "0" : "")).Equals("24h40")) heures[i].Text = "0h00"; horaires[i].Text = a.getNom(); heures[i].Text = heureSelectionnee + "h" + i + ((i < 10) ? "0" : ""); int h = int.Parse(heures[i].Text.Split('h')[0]); int m = int.Parse(heures[i].Text.Split('h')[1]); if (h == 24 && m > 40) { heures[i].Visible = false; horaires[i - 10].Visible = false; this.Size = new Size(379, 158); } foreach (Domaine d in CalendrierMission.domaines) if (d.getNomActivites().Contains(a.getNom()) || d.getNom().Equals(a.getNom())) horaires[i].BackColor = Color.FromArgb(d.getCouleur()[0], d.getCouleur()[1], d.getCouleur()[2]); if (a.isActiviteExterieure()) { Bitmap img = (a.isExploration()) ? ((ExplorationExterieure)a).deplacement() : ((ExperienceExterieure)a).deplacement(); iconesActivite[i].Image = img; iconesActivite[i].Visible = true; } else iconesActivite[i].Visible = false; } if (heureSelectionnee == 24) { for (int i = 40; i < 60; i += 10) { heures[i + 10].Visible = false; iconesActivite[i].Visible = false; horaires[i].Visible = false; } if (fin < 60) { label40.Text = "0h00"; label60.Visible = false; this.Size = new Size(379, 158); } } } }