Exemplo n.º 1
0
        /// <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;
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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;
        }