private PictureBox GetPictureBox(Model.Message message)
        {
            PictureBox pb = new PictureBox()
            {
                BackgroundImageLayout = ImageLayout.Zoom,
                BackgroundImage       = ServiceClient.FromBytesToImage(message.Attach),
                Size        = ServiceClient.FromBytesToImage(message.Attach).Size,
                MaximumSize = new Size(200, 200),
                Cursor      = Cursors.Hand
            };

            pb.Click += (sender, args) =>
            {
                string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures),
                                           "Hummingbird Pictures");

                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                path = Path.Combine(path, message.ID + "." + message.AttachName.Split('.').Last());
                if (!File.Exists(path))
                {
                    File.WriteAllBytes(path, message.Attach);
                }

                Process.Start(path);
            };

            return(pb);
        }
 private Label GetUsername(Model.Message message)
 {
     return(new Label()
     {
         Anchor = AnchorStyles.Left | AnchorStyles.Right,
         ForeColor = Properties.Settings.Default.PrimaryColor,
         Font = new Font("Segoe UI Light", 10F, FontStyle.Regular, GraphicsUnit.Point, 204),
         Name = message.UserFromID.ToString(),
         MinimumSize = new Size(0, LabelSizeY / 2),
         Margin = new Padding(3, 5, 0, 0),
         Text = message.User.Nickname,
         TextAlign = ContentAlignment.MiddleLeft,
     });
 }
 private Label GetLabel(Model.Message message)
 {
     return(new Label()
     {
         Anchor = AnchorStyles.Left | AnchorStyles.Right,
         //BorderStyle = BorderStyle.FixedSingle,
         Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204),
         Name = message.ID.ToString(),
         MinimumSize = new Size(0, LabelSizeY),
         Text = message.Text,
         TextAlign = ContentAlignment.MiddleLeft,
         Width = MessagesPanel.GetColumnWidths()[0] - 20
     });
 }
        private void AddMessage(Model.Message message)
        {
            if (_lastMessageUserID == new Guid() || _lastMessageUserID != message.UserFromID)
            {
                _lastMessageUserID = message.UserFromID;

                MessagesPanel.RowCount++;
                MessagesPanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
                MessagesPanel.Controls.Add(GetUsername(message), 1, MessagesPanel.RowCount - 1);
            }

            MessagesPanel.RowCount++;
            MessagesPanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
            MessagesPanel.Controls.Add(GetLabel(message), 1, MessagesPanel.RowCount - 1);

            //if (_chat.TimeToLive > 0)
            //{
            //	MessagesPanel.Controls.Add(new PictureBox
            //	{
            //		BackgroundImage = Properties.Resources.timer,
            //		BackgroundImageLayout = ImageLayout.Zoom,
            //		Width = Height = 16,
            //		//Anchor = AnchorStyles.Left | AnchorStyles.Right
            //	},
            //	0, MessagesPanel.RowCount - 1);
            //}

            if (message.AttachType == Message.AttachTypes.File)
            {
                MessagesPanel.RowCount++;
                MessagesPanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
                MessagesPanel.Controls.Add(new AttachedFileControl(message.AttachName, message.Attach), 1, MessagesPanel.RowCount - 1);
            }
            else if (message.AttachType == Message.AttachTypes.Image)
            {
                MessagesPanel.RowCount++;
                MessagesPanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
                MessagesPanel.Controls.Add(GetPictureBox(message), 1, MessagesPanel.RowCount - 1);
            }

            MessagesPanel.RowCount++;
        }