/// <summary> /// Initialise les PictureBox qui contiennent les images de l'avatar et du fond de l'utilisateur /// </summary> /// <param name="avatar">Le PictureBox qui contiendra l'avatar</param> /// <param name="imgAvatar">L'image de l'avatar</param> /// <param name="background">Le PictureBox qui contiendra le fond</param> /// <param name="imgBackground">L'image de fond</param> private void InitPictureBox(PictureBox avatar, Image imgAvatar, PictureBox background, Image imgBackground) { // On arrondit le PictureBox l'avatar Design.RoundControl(avatar, 0, 0, avatar.Width - 3, avatar.Height - 3); // On affiche les images de profil et de fond avatar.Image = imgAvatar; background.Image = imgBackground; // On stocke les images _imgAvatar = imgAvatar; _imgBackground = imgBackground; }
/// <summary> /// Active l'édition du mot de passe /// </summary> private void BtnPwd_Click(object sender, EventArgs e) { _pwdHasChange = true; // à faire au tout début pour éviter tout problème avec le TextChange // Récupère le bouton et le rend invisible Button btn = (Button)sender; btn.Visible = false; tbxPwd.ReadOnly = false; // Active l'édition du champs tbxPwd.Text = String.Empty; // Efface la TextBox pour ne pas garder le mdp encrypter qui s'y trouvait // Affiche le Label et la TextBox de confirmation tbxPwdConfirm.Visible = true; lblPwdConfirm.Visible = true; // Ajoute un bouton qui permet d'annuler la modification du mot de passe Design.AddEditButtonForControl(tbxPwdConfirm, gbxInformation, "BtnPwdConfirm", "Wingdings 2", "Ò", BtnPwdConfirm_Click, EDIT_TAG); }
/// <summary> /// Initialise les différents composants de l'interface /// </summary> private void FrmHome_Load(object sender, EventArgs e) { // Initialise la date et l'heure DateTime dt = new DateTime(); dt = DateTime.Now; tsDate.Text = dt.ToString("dddd d MMMM yyyy - HH:mm"); // On arrondit les boutons de l'interface Design.RoundControl(btnStatutAvatar, 2, 2, btnStatutAvatar.Width - 5, btnStatutAvatar.Height - 5); foreach (Control control in pnlStatus.Controls) { // Si le contrôle qu'on est en train de parcourir dans notre panel est un boutton, alors on l'arrondit // On ne veut pas arrondir les labels présent dans le panel if (control.GetType() == typeof(Button)) { Design.RoundControl(control, 2, 2, btnStatutAvatar.Width - 5, btnStatutAvatar.Height - 5); } } // Initialisation des images des différents onglets string[] arrayImg = _requestsSQL.GetUserImagesIdByUsername(_frmLogin.Username); string idAvatar = arrayImg[0]; string idBackground = arrayImg[1]; Image imgAvatar = null; Image imgBackground = null; // On affiche les images de profil et de fond if (idAvatar != null) { imgAvatar = _requestsSQL.CreateImageById(idAvatar); // Récupère l'avatar de l'utilisateur } if (idBackground != null) { imgBackground = _requestsSQL.CreateImageById(idBackground); // Récupère le background de l'utilisateur } InitPictureBox(pbxAvatar, imgAvatar, pbxBackground, imgBackground); // Initialisation du profil de l'utilisateur Dictionary <string, string> profil = _requestsSQL.GetProfilByUsername(_frmLogin.Username); // Récupère les informations du profil de l'utilisateur InitProfil(pbxAvatar2, imgAvatar, pbxBackground2, imgBackground, lblUsername, _frmLogin.Username, rtbDescription, profil["description"], tbxEmail, profil["email"], tbxPhone, profil["phone"], dgvHobbies, profil["hobbies"]); lblHome.Text = "Bienvenue " + _frmLogin.Username + " !"; // Gestion de la transparence des composants lblHome.Parent = pbxBackground; lnkEditProfil.Parent = pbxBackground; lnkEditProfil2.Parent = pbxBackground2; lblUsername.Parent = pbxBackground2; // Gestions d'événements & Placeholder tbxNewHobbie.LostFocus += TbxNewHobbie_LostFocus; Placeholder phNewHobby = new Placeholder(tbxNewHobbie, PLACEHOLDER_HOBBIES); Placeholder phSearchFriends = new Placeholder(tbxSearchFriend, PLACEHOLDER_SEARCH_FRIENDS); Placeholder phSearchFriends2 = new Placeholder(tbxSearchFriend2, PLACEHOLDER_SEARCH_FRIENDS); Placeholder phSearchRooms = new Placeholder(tbxSearchRoom, PLACEHOLDER_SEARCH_ROOMS); // Gestion de la liste d'ami _friendsList = _requestsSQL.GetFriendsList(_requestsSQL.GetUserIdByUsername(_frmLogin.Username)); // REMARK : Création de la liste d'ami non satisfaisante (faut-il revoir l'interface ?) foreach (string[] friend in _friendsList) { Image friendAvatar = _requestsSQL.GetFriendAvatarByFriendId(friend[0]); // On récupère l'avatar de notre ami // Création d'une ligne et remplissage des données DataGridViewRow row = new DataGridViewRow(); row.CreateCells(dgvFriendsList); // Ne pas oublié de créé les cellules row.Cells[0].Value = friendAvatar; // Ajout de l'image row.Cells[1].Value = _requestsSQL.GetUsernameById(friend[0]); // Ajout du nom de l'ami row.Cells[2].Value = friend[1]; // Ajout du message dgvFriendsList.Rows.Add(row); // On ajoute la ligne } // TODO : connexion avec le serveur IPAddress address = IPAddress.Parse("127.0.0.1"); ClientTchat client = new ClientTchat(address, 3001); }
/// <summary> /// Active ou désactive le mode d'édition du profil /// </summary> /// <param name="inEdit">Si true alors on active l'édition, sinon on la désactive</param> private void EditMode(bool inEdit) { // Gestion de la visibilité des champs non-dynamique #region ControlsVisibility lblPwd.Visible = !lblPwd.Visible; tbxPwd.Visible = !tbxPwd.Visible; lblRooms.Visible = !lblRooms.Visible; lblFriends.Visible = !lblFriends.Visible; btnSave.Visible = !btnSave.Visible; btnCancel.Visible = !btnCancel.Visible; tbxNewHobbie.Visible = !tbxNewHobbie.Visible; tbxEmail.ReadOnly = !tbxEmail.ReadOnly; tbxPhone.ReadOnly = !tbxPhone.ReadOnly; rtbDescription.ReadOnly = !rtbDescription.ReadOnly; #endregion ControlsVisibility if (inEdit) // Mode edition on { // On gère la visibilité des liens avec des valeures fixe pour éviter un bug // il y avait une chance que les liens restaient visible à cause de l'ajout/du retrait d'onglet lnkEditProfil.Visible = false; lnkEditProfil2.Visible = false; // On retire les pages d'onglet qui ne correspondent pas à celle du profil tcWindows.TabPages.Remove(tpHome); tcWindows.TabPages.Remove(tpFriends); tcWindows.TabPages.Remove(tpRooms); tcWindows.TabPages.Remove(tpSettings); // On récupère le mot de passe de l'utilisateur et on l'affiche dans le textbox tbxPwd.Text = _requestsSQL.GetUserPasswordByUsername(_frmLogin.Username); // On ajoute des boutons qui permettront d'éditer les différentes informations de l'utilisateur Design.AddEditButtonForControl(tbxPwd, gbxInformation, "BtnPwd", "Wingdings", "!", BtnPwd_Click, EDIT_TAG); _btnNewHobbies = Design.AddEditButtonForControl(tbxNewHobbie, gbxInformation, "BtnNewHobbie", "Wingdings 2", "Ì", BtnNewHobbie_Click, EDIT_TAG); _btnNewHobbies.Enabled = false; // On ajoute la colonne des boutons if (!dgvHobbies.Columns.Contains("ColumnButton")) { dgvHobbies.Columns.Add(ColumnButton); } // TODO : Bordure en traitillé pour l'avatar //_rePaint = true; //pbxAvatar2.Refresh(); // Ajout d'une bordure et changement du curseur sur les picturebox // pour indiqué que l'on peut changer l'image en cliquant dessus _rePaint = true; pbxBackground2.Refresh(); pbxAvatar2.Cursor = Cursors.Hand; pbxBackground2.Cursor = Cursors.Hand; } else // Mode edition off { // On gère la visibilité des liens avec des valeures fixe pour éviter un bug // il y avait une chance que les liens restaient visible à cause de l'ajout/du retrait d'onglet lnkEditProfil.Visible = true; lnkEditProfil2.Visible = true; // Gestion des onglets #region TabPages // Ajoute les pages d'onglet de l'application tcWindows.TabPages.Add(tpHome); // on doit retirer l'onglet du profil puis le rajouter pour avoir les onglets dans le bonne ordre // mais on ne doit pas le retirer si il s'agit du dernier onglet présent, il faut d'abord en ajouter un autre tcWindows.TabPages.Remove(tpProfil); tcWindows.TabPages.Add(tpProfil); tcWindows.TabPages.Add(tpFriends); tcWindows.TabPages.Add(tpRooms); tcWindows.TabPages.Add(tpSettings); #endregion TabPages DisposeEditsControls(); // Supprime les composants dynamiques de l'édition string hobbies = _requestsSQL.GetUserHobbiesByUsername(_frmLogin.Username); UpdateHobbies(dgvHobbies, hobbies); // Met à jour le DataGridView des hobbies // On (ré)affiche la bonne image pour si jamais l'utilisateur avait annulé sa modification du profil // TODO : les images sont mal enregistrer (en local) pbxAvatar2.Image = _imgAvatar; pbxBackground2.Image = _imgBackground; pbxAvatar2.Cursor = Cursors.Arrow; pbxBackground2.Cursor = Cursors.Arrow; } _inEdit = inEdit; }