Esempio n. 1
0
        public void SetupUsers(IList <User> usr)
        {
            var helper          = new TranslationHelper();
            var tileSz          = new Size(TileSize, TileSize);
            var numberOfColumns = usr.Count > 0 ? Math.Min(MaxTilesPerRow, usr.Count) : MaxTilesPerRow;
            var numberOfRows    = usr.Count / numberOfColumns + (usr.Count % numberOfColumns > 0 ? 1 : 0);

            this.InvokeIfRequired(() =>
            {
                Width  = ControlPadding + Math.Min(MaxTilesPerRow, numberOfColumns) * (ControlPadding + tileSz.Width);
                Height = ControlPadding + numberOfRows * (ControlPadding + tileSz.Height);
            });

            var currentExtra = $" ({helper.GetTranslation("current_user")})";

            foreach (var user in usr)
            {
                var rb = new TilePanelReborn
                {
                    Tag  = user,
                    Size = tileSz,
                    Text = user.UserName + (GlobalStorage.CurrentUser != null
                               ? (GlobalStorage.CurrentUser.UserId == user.UserId ? currentExtra : "")
                               : ""),
                    Image = Resources.ic_person_white_48dp_2x,

                    CanBeHovered = true,
                    BackColor    = ColorScheme.PrimaryColor,
                    ForeColor    = ColorScheme.ForegroundColor,
                    Flat         = true
                };

                this.InvokeIfRequired(() => Controls.Add(rb));
                rb.Click += (s, e) =>
                {
                    rb.InvokeIfRequired(() =>
                    {
                        //Invoke click
                        if (GlobalStorage.CurrentUser != null)
                        {
                            if (user.UserId == GlobalStorage.CurrentUser.UserId && !CanSelectCurrentUser)
                            {
                                return;
                            }
                        }
                        OnUserClick(user);
                    });
                };
            }

            helper.Dispose();
            OnUserTilesCreated(EventArgs.Empty);
        }
        private void AddControls(SecureUserLoginForm form)
        {
            var translationHelper = new TranslationHelper();
            var usr = User;

            void EscapeKeyHandler(object s, KeyEventArgs ee)
            {
                if (ee.KeyCode == Keys.Escape && !ee.Control && !ee.Alt && !ee.Shift)
                {
                    this.InvokeIfRequired(form.Close);
                    ee.Handled = ee.SuppressKeyPress = true;
                }
            }

            var mainLabel = new Label
            {
                AutoSize  = true,
                BackColor = Color.Transparent,
                Text      = translationHelper.GetTranslation("user_login_simple_title"),
                Font      = new Font(Font.FontFamily, 16),
                Location  = new Point(0, ControlPadding)
            };

            form.Controls.Add(mainLabel);
            Recenter(mainLabel, vertical: false);

            var userNameLabel = new Label
            {
                AutoSize  = true,
                BackColor = Color.Transparent,
                Text      = usr.UserName,
                Font      = new Font(Font.FontFamily, 12),
                Location  = new Point(0, 48)
            };

            form.Controls.Add(userNameLabel);
            Recenter(userNameLabel, vertical: false);

            var btn = new ModernButton
            {
                Text = translationHelper.GetTranslation("user_login_okbutton"),
                Size = new Size(86, 38)
            };

            btn.Location = new Point(0 /* Will be centered later */, 192 - ControlPadding - btn.Height);

            var point = new Point(0, 134);

            point.Offset(0, -8);

            var textBox = new TextBoxEx
            {
                Font = userNameLabel.Font,
                UseSystemPasswordChar = true,
                Size = new Size(241, 0 /* The textbox sizes automatically */)
            };

            point.Offset(0, -textBox.Height);
            textBox.Location = point;

            form.Controls.Add(textBox);
            Recenter(textBox, vertical: false);

            //Now we can add the button click
            btn.Click += (s, ee) =>
            {
                if (!string.IsNullOrWhiteSpace(textBox.Text))
                {
                    if (usr.CheckPassword(textBox.Text))
                    {
                        //Close our smal login-form
                        form.FormClosed += (sss, eee) => { OnLoginSucceded(usr); };
                        form.Close();
                    }
                    else
                    {
                        //Password doesn't work
                        //Clear the textbox
                        textBox.Clear();
                    }
                }
            };
            form.Controls.Add(btn);
            Recenter(btn, vertical: false);
            form.AcceptButton = btn;
            textBox.KeyUp    += EscapeKeyHandler;
            form.KeyUp       += EscapeKeyHandler;
            form.Load        += (ss, ee) => Transition.run(form, "Opacity", 1d, new TransitionType_EaseInEaseOut(400));
            translationHelper.Dispose();
            form.TopMost = true;
        }