/// <summary> /// Initialise une nouvelle instance de la classe <see cref="VueModeleMain"/>. Initialise les /// vues-modèles de l'application et spécifie le premier vue-modèle à afficher /// </summary> public VueModeleMain() { _etatApplication = new EtatApplication(); _vueModeleConnexion = new VueModeleConnexion(_etatApplication); _vueModeleConnexionEnCours = new VueModeleConnexionEnCours(); _vueModeleChat = new VueModeleChat(_etatApplication); VueModeleCourant = _vueModeleConnexion; _etatApplication.PropertyChanged += EtatApplicationOnPropertyChanged; _etatApplication.UtilisateurLocal.PropertyChanged += UtilisateurLocalOnPropertyChanged; }
/// <summary> /// Permet de vérifier si le nom d'utilisateur est déjà utilisé sur le réseau et de démarrer /// l'écoute sur le port 50000 UDP pour répondre au demande des autres utilisateurs. Durant /// le processus de connexion, etatApplication.ConnexionEnCours est égal à vrai. Si le nom /// d'utilisateur est utilisé, on ferme l'écoute sur le port 50000 UDP. Sinon, /// etatApplication.Connecte est égal à vrai. /// </summary> /// <param name="etatApplication"> /// Représente l'état de l'application, contient: la liste des utilisateurs, la liste des /// conversations, le nom de l'utilisateur /// </param> public static async void Connexion(EtatApplication etatApplication) { _etatApplication = etatApplication; //jai ajouter ces 3 trucs la car cest comme ca que stephane le fait dans son exemple var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); socket.EnableBroadcast = true; socket.Bind(new IPEndPoint(IPAddress.Any, 50000)); await Task.Delay(1); _etatApplication.UtilisateurLocal.ErreursValidationDictionary[nameof(_etatApplication.UtilisateurLocal.Nom)] = new List <string> { "Connexion non implémentée." }; _etatApplication.UtilisateurLocal.NotifierErreursChangees(nameof(_etatApplication.UtilisateurLocal.Nom)); }
/// <summary> /// Initialise une nouvelle instance de la classe <see cref="VueModeleChat"/> /// </summary> /// <param name="etatApplication"> /// État de l'application à faire suivre à travers les vues-modèles de l'application /// </param> public VueModeleChat(EtatApplication etatApplication) { _etatApplication = etatApplication; _etatApplication.PropertyChanged += EtatApplicationOnPropertyChanged; }
/// <summary> /// Initialise une nouvelle instance de la classe <see cref="VueModeleConnexion"/> /// </summary> /// <param name="etatApplication"> /// État de l'application à faire suivre à travers les vues-modèles de l'application /// </param> public VueModeleConnexion(EtatApplication etatApplication) { _etatApplication = etatApplication; _etatApplication.UtilisateurLocal.ErrorsChanged += UtilisateurLocalOnErrorsChanged; }