From be2f505bdea882c0baa794474c02db7f1946a642 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Mon, 29 Jun 2020 13:58:55 +0200 Subject: [PATCH] fix Chat --- Controls.ChatControl/ChatControl.Designer.vb | 316 ++++++++++++------- Controls.ChatControl/ChatControl.vb | 116 ++++--- 2 files changed, 272 insertions(+), 160 deletions(-) diff --git a/Controls.ChatControl/ChatControl.Designer.vb b/Controls.ChatControl/ChatControl.Designer.vb index f76dc28e..30d8af11 100644 --- a/Controls.ChatControl/ChatControl.Designer.vb +++ b/Controls.ChatControl/ChatControl.Designer.vb @@ -29,32 +29,33 @@ Partial Class ChatControl Dim TileViewItemElement1 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() Dim TileViewItemElement2 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() Dim TileViewItemElement3 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() - Dim TileViewItemElement4 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() Dim TableRowDefinition1 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() Dim TableRowDefinition2 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() - Dim TableRowDefinition3 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() + Dim TableSpan1 As DevExpress.XtraEditors.TableLayout.TableSpan = New DevExpress.XtraEditors.TableLayout.TableSpan() Dim ItemTemplate2 As DevExpress.XtraGrid.Views.Tile.ItemTemplate = New DevExpress.XtraGrid.Views.Tile.ItemTemplate() Dim TableColumnDefinition3 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition() Dim TableColumnDefinition4 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition() + Dim TileViewItemElement4 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() Dim TileViewItemElement5 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() Dim TileViewItemElement6 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() - Dim TileViewItemElement7 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() + Dim TableRowDefinition3 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() Dim TableRowDefinition4 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() - Dim TableRowDefinition5 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() Dim ItemTemplate3 As DevExpress.XtraGrid.Views.Tile.ItemTemplate = New DevExpress.XtraGrid.Views.Tile.ItemTemplate() Dim TableColumnDefinition5 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition() Dim TableColumnDefinition6 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition() + Dim TileViewItemElement7 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() Dim TileViewItemElement8 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() Dim TileViewItemElement9 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() Dim TileViewItemElement10 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() - Dim TileViewItemElement11 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement() + Dim TableRowDefinition5 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() Dim TableRowDefinition6 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() Dim TableRowDefinition7 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() - Dim TableRowDefinition8 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() + Dim TableSpan2 As DevExpress.XtraEditors.TableLayout.TableSpan = New DevExpress.XtraEditors.TableLayout.TableSpan() + Dim TableSpan3 As DevExpress.XtraEditors.TableLayout.TableSpan = New DevExpress.XtraEditors.TableLayout.TableSpan() Dim TableColumnDefinition7 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition() Dim TableColumnDefinition8 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition() + Dim TableRowDefinition8 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() Dim TableRowDefinition9 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() - Dim TableRowDefinition10 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ChatControl)) Me.columnUsername = New DevExpress.XtraGrid.Columns.TileViewColumn() Me.columnMessage = New DevExpress.XtraGrid.Columns.TileViewColumn() @@ -62,8 +63,8 @@ Partial Class ChatControl Me.columnTO_USER = New DevExpress.XtraGrid.Columns.TileViewColumn() Me.RepositoryItemHypertextLabel1 = New DevExpress.XtraEditors.Repository.RepositoryItemHypertextLabel() Me.RepositoryItemHyperLinkEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit() - Me.GridChat = New DevExpress.XtraGrid.GridControl() - Me.ChatView = New DevExpress.XtraGrid.Views.Tile.TileView() + Me.GridChatOld = New DevExpress.XtraGrid.GridControl() + Me.ChatViewOld = New DevExpress.XtraGrid.Views.Tile.TileView() Me.btnSendMessage = New DevExpress.XtraEditors.SimpleButton() Me.ChatSource = New System.Windows.Forms.BindingSource(Me.components) Me.pnlMessage = New System.Windows.Forms.Panel() @@ -75,13 +76,20 @@ Partial Class ChatControl Me.ToolStripMenuItemConv_end = New System.Windows.Forms.ToolStripMenuItem() Me.BenutzerHinzufügenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.TeilnehmerToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.GridChat = New DevExpress.XtraGrid.GridControl() + Me.ChatView = New DevExpress.XtraGrid.Views.Grid.GridView() + Me.columnFromUser = New DevExpress.XtraGrid.Columns.GridColumn() + Me.columnToUser = New DevExpress.XtraGrid.Columns.GridColumn() + Me.columnAddedWhen = New DevExpress.XtraGrid.Columns.GridColumn() CType(Me.RepositoryItemHypertextLabel1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RepositoryItemHyperLinkEdit1, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.GridChat, System.ComponentModel.ISupportInitialize).BeginInit() - CType(Me.ChatView, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.GridChatOld, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.ChatViewOld, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.ChatSource, System.ComponentModel.ISupportInitialize).BeginInit() Me.pnlMessage.SuspendLayout() Me.MenuStrip1.SuspendLayout() + CType(Me.GridChat, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.ChatView, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'columnUsername @@ -131,43 +139,41 @@ Partial Class ChatControl Me.RepositoryItemHyperLinkEdit1.AutoHeight = False Me.RepositoryItemHyperLinkEdit1.Name = "RepositoryItemHyperLinkEdit1" ' - 'GridChat - ' - Me.GridChat.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ - Or System.Windows.Forms.AnchorStyles.Left) _ - Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.GridChat.BackgroundImage = Global.DigitalData.Controls.ChatControl.My.Resources.Resources.crop_php - Me.GridChat.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center - Me.GridChat.EmbeddedNavigator.Margin = New System.Windows.Forms.Padding(3, 4, 3, 4) - Me.GridChat.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.GridChat.Location = New System.Drawing.Point(0, 30) - Me.GridChat.MainView = Me.ChatView - Me.GridChat.Margin = New System.Windows.Forms.Padding(3, 4, 3, 4) - Me.GridChat.Name = "GridChat" - Me.GridChat.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemHyperLinkEdit1, Me.RepositoryItemHypertextLabel1}) - Me.GridChat.Size = New System.Drawing.Size(420, 454) - Me.GridChat.TabIndex = 0 - Me.GridChat.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.ChatView}) - ' - 'ChatView - ' - Me.ChatView.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.columnMessage, Me.columnUsername, Me.columnDate, Me.columnTO_USER}) - Me.ChatView.ContextButtonOptions.HoverStateOpacity = 0.75! - Me.ChatView.ContextButtonOptions.TopPanelColor = System.Drawing.Color.White - Me.ChatView.DetailHeight = 431 - Me.ChatView.GridControl = Me.GridChat - Me.ChatView.Name = "ChatView" - Me.ChatView.OptionsTiles.ColumnCount = 1 - Me.ChatView.OptionsTiles.GroupTextPadding = New System.Windows.Forms.Padding(0, 8, 12, 8) - Me.ChatView.OptionsTiles.IndentBetweenGroups = 0 - Me.ChatView.OptionsTiles.IndentBetweenItems = 10 - Me.ChatView.OptionsTiles.ItemPadding = New System.Windows.Forms.Padding(0) - Me.ChatView.OptionsTiles.ItemSize = New System.Drawing.Size(374, 90) - Me.ChatView.OptionsTiles.LayoutMode = DevExpress.XtraGrid.Views.Tile.TileViewLayoutMode.Kanban - Me.ChatView.OptionsTiles.Orientation = System.Windows.Forms.Orientation.Vertical - Me.ChatView.OptionsTiles.Padding = New System.Windows.Forms.Padding(5) - Me.ChatView.OptionsTiles.RowCount = 0 - Me.ChatView.OptionsTiles.ScrollMode = DevExpress.XtraEditors.TileControlScrollMode.ScrollBar + 'GridChatOld + ' + Me.GridChatOld.BackgroundImage = Global.DigitalData.Controls.ChatControl.My.Resources.Resources.crop_php + Me.GridChatOld.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center + Me.GridChatOld.Dock = System.Windows.Forms.DockStyle.Top + Me.GridChatOld.EmbeddedNavigator.Margin = New System.Windows.Forms.Padding(3, 4, 3, 4) + Me.GridChatOld.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.GridChatOld.Location = New System.Drawing.Point(0, 25) + Me.GridChatOld.MainView = Me.ChatViewOld + Me.GridChatOld.Margin = New System.Windows.Forms.Padding(3, 4, 3, 4) + Me.GridChatOld.Name = "GridChatOld" + Me.GridChatOld.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemHyperLinkEdit1, Me.RepositoryItemHypertextLabel1}) + Me.GridChatOld.Size = New System.Drawing.Size(422, 213) + Me.GridChatOld.TabIndex = 0 + Me.GridChatOld.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.ChatViewOld}) + ' + 'ChatViewOld + ' + Me.ChatViewOld.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.columnMessage, Me.columnUsername, Me.columnDate, Me.columnTO_USER}) + Me.ChatViewOld.ContextButtonOptions.HoverStateOpacity = 0.75! + Me.ChatViewOld.ContextButtonOptions.TopPanelColor = System.Drawing.Color.White + Me.ChatViewOld.DetailHeight = 431 + Me.ChatViewOld.GridControl = Me.GridChatOld + Me.ChatViewOld.Name = "ChatViewOld" + Me.ChatViewOld.OptionsTiles.ColumnCount = 1 + Me.ChatViewOld.OptionsTiles.GroupTextPadding = New System.Windows.Forms.Padding(0, 8, 12, 8) + Me.ChatViewOld.OptionsTiles.IndentBetweenGroups = 0 + Me.ChatViewOld.OptionsTiles.IndentBetweenItems = 10 + Me.ChatViewOld.OptionsTiles.ItemPadding = New System.Windows.Forms.Padding(0) + Me.ChatViewOld.OptionsTiles.ItemSize = New System.Drawing.Size(374, 90) + Me.ChatViewOld.OptionsTiles.LayoutMode = DevExpress.XtraGrid.Views.Tile.TileViewLayoutMode.Kanban + Me.ChatViewOld.OptionsTiles.Orientation = System.Windows.Forms.Orientation.Vertical + Me.ChatViewOld.OptionsTiles.Padding = New System.Windows.Forms.Padding(5) + Me.ChatViewOld.OptionsTiles.RowCount = 0 + Me.ChatViewOld.OptionsTiles.ScrollMode = DevExpress.XtraEditors.TileControlScrollMode.ScrollBar TableColumnDefinition1.Length.Value = 250.0R TableColumnDefinition2.Length.Value = 100.0R ItemTemplate1.Columns.Add(TableColumnDefinition1) @@ -175,124 +181,131 @@ Partial Class ChatControl TileViewItemElement1.Column = Me.columnUsername TileViewItemElement1.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter TileViewItemElement1.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside - TileViewItemElement1.RowIndex = 1 TileViewItemElement1.Text = "columnUsername" TileViewItemElement1.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft TileViewItemElement1.TextLocation = New System.Drawing.Point(10, 0) TileViewItemElement2.Column = Me.columnMessage TileViewItemElement2.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter TileViewItemElement2.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside - TileViewItemElement2.RowIndex = 2 + TileViewItemElement2.RowIndex = 1 + TileViewItemElement2.StretchHorizontal = True + TileViewItemElement2.StretchVertical = True TileViewItemElement2.Text = "columnMessage" - TileViewItemElement2.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft + TileViewItemElement2.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.TopLeft TileViewItemElement2.TextLocation = New System.Drawing.Point(10, 0) TileViewItemElement3.Column = Me.columnDate TileViewItemElement3.ColumnIndex = 1 TileViewItemElement3.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter TileViewItemElement3.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside - TileViewItemElement3.RowIndex = 1 TileViewItemElement3.Text = "columnDate" TileViewItemElement3.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleRight TileViewItemElement3.TextLocation = New System.Drawing.Point(-10, 0) - TileViewItemElement4.Column = Me.columnTO_USER - TileViewItemElement4.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter - TileViewItemElement4.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside - TileViewItemElement4.Text = "columnTO_USER" - TileViewItemElement4.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter ItemTemplate1.Elements.Add(TileViewItemElement1) ItemTemplate1.Elements.Add(TileViewItemElement2) ItemTemplate1.Elements.Add(TileViewItemElement3) - ItemTemplate1.Elements.Add(TileViewItemElement4) ItemTemplate1.Name = "ChatLeft" - TableRowDefinition1.Length.Value = 40.0R - TableRowDefinition2.Length.Value = 19.0R - TableRowDefinition3.Length.Value = 45.0R + TableRowDefinition1.Length.Value = 19.0R + TableRowDefinition2.Length.Value = 45.0R ItemTemplate1.Rows.Add(TableRowDefinition1) ItemTemplate1.Rows.Add(TableRowDefinition2) - ItemTemplate1.Rows.Add(TableRowDefinition3) + TableSpan1.ColumnSpan = 2 + TableSpan1.RowIndex = 1 + ItemTemplate1.Spans.Add(TableSpan1) TableColumnDefinition3.Length.Value = 100.0R TableColumnDefinition4.Length.Value = 250.0R ItemTemplate2.Columns.Add(TableColumnDefinition3) ItemTemplate2.Columns.Add(TableColumnDefinition4) - TileViewItemElement5.Column = Me.columnUsername + TileViewItemElement4.Column = Me.columnUsername + TileViewItemElement4.ColumnIndex = 1 + TileViewItemElement4.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter + TileViewItemElement4.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside + TileViewItemElement4.Text = "columnUsername" + TileViewItemElement4.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleRight + TileViewItemElement4.TextLocation = New System.Drawing.Point(-10, 0) + TileViewItemElement5.Column = Me.columnMessage TileViewItemElement5.ColumnIndex = 1 TileViewItemElement5.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter TileViewItemElement5.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside - TileViewItemElement5.Text = "columnUsername" + TileViewItemElement5.MaxWidth = 350 + TileViewItemElement5.RowIndex = 1 + TileViewItemElement5.Text = "columnMessage" TileViewItemElement5.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleRight TileViewItemElement5.TextLocation = New System.Drawing.Point(-10, 0) - TileViewItemElement6.Column = Me.columnMessage - TileViewItemElement6.ColumnIndex = 1 + TileViewItemElement6.Column = Me.columnDate TileViewItemElement6.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter TileViewItemElement6.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside - TileViewItemElement6.RowIndex = 1 - TileViewItemElement6.Text = "columnMessage" - TileViewItemElement6.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleRight - TileViewItemElement6.TextLocation = New System.Drawing.Point(-10, 0) - TileViewItemElement7.Column = Me.columnDate - TileViewItemElement7.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter - TileViewItemElement7.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside - TileViewItemElement7.Text = "columnDate" - TileViewItemElement7.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft - TileViewItemElement7.TextLocation = New System.Drawing.Point(10, 0) + TileViewItemElement6.Text = "columnDate" + TileViewItemElement6.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft + TileViewItemElement6.TextLocation = New System.Drawing.Point(10, 0) + ItemTemplate2.Elements.Add(TileViewItemElement4) ItemTemplate2.Elements.Add(TileViewItemElement5) ItemTemplate2.Elements.Add(TileViewItemElement6) - ItemTemplate2.Elements.Add(TileViewItemElement7) ItemTemplate2.Name = "ChatRight" - TableRowDefinition4.Length.Value = 19.0R - TableRowDefinition5.Length.Value = 45.0R + TableRowDefinition3.Length.Value = 19.0R + TableRowDefinition4.Length.Value = 45.0R + ItemTemplate2.Rows.Add(TableRowDefinition3) ItemTemplate2.Rows.Add(TableRowDefinition4) - ItemTemplate2.Rows.Add(TableRowDefinition5) TableColumnDefinition5.Length.Value = 250.0R TableColumnDefinition6.Length.Value = 100.0R ItemTemplate3.Columns.Add(TableColumnDefinition5) ItemTemplate3.Columns.Add(TableColumnDefinition6) - TileViewItemElement8.Column = Me.columnUsername + TileViewItemElement7.Column = Me.columnUsername + TileViewItemElement7.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter + TileViewItemElement7.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside + TileViewItemElement7.RowIndex = 1 + TileViewItemElement7.Text = "columnUsername" + TileViewItemElement7.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft + TileViewItemElement7.TextLocation = New System.Drawing.Point(10, 0) + TileViewItemElement8.Column = Me.columnMessage TileViewItemElement8.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter TileViewItemElement8.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside - TileViewItemElement8.RowIndex = 1 - TileViewItemElement8.Text = "columnUsername" - TileViewItemElement8.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft + TileViewItemElement8.RowIndex = 2 + TileViewItemElement8.StretchHorizontal = True + TileViewItemElement8.StretchVertical = True + TileViewItemElement8.Text = "columnMessage" + TileViewItemElement8.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.TopLeft TileViewItemElement8.TextLocation = New System.Drawing.Point(10, 0) - TileViewItemElement9.Column = Me.columnMessage + TileViewItemElement9.Column = Me.columnDate + TileViewItemElement9.ColumnIndex = 1 TileViewItemElement9.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter TileViewItemElement9.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside - TileViewItemElement9.RowIndex = 2 - TileViewItemElement9.Text = "columnMessage" - TileViewItemElement9.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft - TileViewItemElement9.TextLocation = New System.Drawing.Point(10, 0) - TileViewItemElement10.Column = Me.columnDate - TileViewItemElement10.ColumnIndex = 1 + TileViewItemElement9.RowIndex = 1 + TileViewItemElement9.Text = "columnDate" + TileViewItemElement9.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleRight + TileViewItemElement9.TextLocation = New System.Drawing.Point(-10, 0) + TileViewItemElement10.Appearance.Normal.BackColor = System.Drawing.Color.PaleGreen + TileViewItemElement10.Appearance.Normal.Options.UseBackColor = True + TileViewItemElement10.Column = Me.columnTO_USER + TileViewItemElement10.Height = 19 TileViewItemElement10.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter TileViewItemElement10.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside - TileViewItemElement10.RowIndex = 1 - TileViewItemElement10.Text = "columnDate" - TileViewItemElement10.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleRight - TileViewItemElement10.TextLocation = New System.Drawing.Point(-10, 0) - TileViewItemElement11.Column = Me.columnTO_USER - TileViewItemElement11.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter - TileViewItemElement11.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside - TileViewItemElement11.Text = "columnTO_USER" - TileViewItemElement11.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft - TileViewItemElement11.TextLocation = New System.Drawing.Point(10, 0) + TileViewItemElement10.StretchHorizontal = True + TileViewItemElement10.Text = "columnTO_USER" + TileViewItemElement10.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft + TileViewItemElement10.TextLocation = New System.Drawing.Point(10, 0) + ItemTemplate3.Elements.Add(TileViewItemElement7) ItemTemplate3.Elements.Add(TileViewItemElement8) ItemTemplate3.Elements.Add(TileViewItemElement9) ItemTemplate3.Elements.Add(TileViewItemElement10) - ItemTemplate3.Elements.Add(TileViewItemElement11) ItemTemplate3.Name = "ChatTo" - TableRowDefinition6.Length.Value = 17.0R - TableRowDefinition7.Length.Value = 19.0R - TableRowDefinition8.Length.Value = 54.0R + TableRowDefinition5.Length.Value = 17.0R + TableRowDefinition6.Length.Value = 19.0R + TableRowDefinition7.Length.Value = 54.0R + ItemTemplate3.Rows.Add(TableRowDefinition5) ItemTemplate3.Rows.Add(TableRowDefinition6) ItemTemplate3.Rows.Add(TableRowDefinition7) - ItemTemplate3.Rows.Add(TableRowDefinition8) - Me.ChatView.Templates.Add(ItemTemplate1) - Me.ChatView.Templates.Add(ItemTemplate2) - Me.ChatView.Templates.Add(ItemTemplate3) - Me.ChatView.TileColumns.Add(TableColumnDefinition7) - Me.ChatView.TileColumns.Add(TableColumnDefinition8) - Me.ChatView.TileRows.Add(TableRowDefinition9) - Me.ChatView.TileRows.Add(TableRowDefinition10) + TableSpan2.ColumnSpan = 2 + TableSpan3.ColumnSpan = 2 + TableSpan3.RowIndex = 2 + ItemTemplate3.Spans.Add(TableSpan2) + ItemTemplate3.Spans.Add(TableSpan3) + Me.ChatViewOld.Templates.Add(ItemTemplate1) + Me.ChatViewOld.Templates.Add(ItemTemplate2) + Me.ChatViewOld.Templates.Add(ItemTemplate3) + Me.ChatViewOld.TileColumns.Add(TableColumnDefinition7) + Me.ChatViewOld.TileColumns.Add(TableColumnDefinition8) + Me.ChatViewOld.TileRows.Add(TableRowDefinition8) + Me.ChatViewOld.TileRows.Add(TableRowDefinition9) ' 'btnSendMessage ' @@ -386,14 +399,74 @@ Partial Class ChatControl Me.TeilnehmerToolStripMenuItem.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right Me.TeilnehmerToolStripMenuItem.ForeColor = System.Drawing.Color.DarkCyan Me.TeilnehmerToolStripMenuItem.Name = "TeilnehmerToolStripMenuItem" - Me.TeilnehmerToolStripMenuItem.Size = New System.Drawing.Size(78, 21) + Me.TeilnehmerToolStripMenuItem.Size = New System.Drawing.Size(77, 21) Me.TeilnehmerToolStripMenuItem.Text = "Teilnehmer" ' + 'GridChat + ' + Me.GridChat.Dock = System.Windows.Forms.DockStyle.Fill + Me.GridChat.Location = New System.Drawing.Point(0, 238) + Me.GridChat.MainView = Me.ChatView + Me.GridChat.Name = "GridChat" + Me.GridChat.Size = New System.Drawing.Size(422, 247) + Me.GridChat.TabIndex = 5 + Me.GridChat.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.ChatView}) + ' + 'ChatView + ' + Me.ChatView.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.columnFromUser, Me.columnToUser, Me.columnAddedWhen}) + Me.ChatView.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFullFocus + Me.ChatView.GridControl = Me.GridChat + Me.ChatView.GroupPanelText = "Nachrichten können mit der Lupe durchsucht werden" + Me.ChatView.Name = "ChatView" + Me.ChatView.OptionsFind.SearchInPreview = True + Me.ChatView.OptionsView.AutoCalcPreviewLineCount = True + Me.ChatView.OptionsView.ShowColumnHeaders = False + Me.ChatView.OptionsView.ShowHorizontalLines = DevExpress.Utils.DefaultBoolean.[False] + Me.ChatView.OptionsView.ShowIndicator = False + Me.ChatView.OptionsView.ShowPreview = True + Me.ChatView.OptionsView.ShowPreviewRowLines = DevExpress.Utils.DefaultBoolean.[False] + Me.ChatView.OptionsView.ShowVerticalLines = DevExpress.Utils.DefaultBoolean.[False] + Me.ChatView.PreviewFieldName = "MESSAGE_TEXT" + Me.ChatView.RowHeight = 25 + Me.ChatView.RowSeparatorHeight = 25 + ' + 'columnFromUser + ' + Me.columnFromUser.AppearanceCell.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.columnFromUser.AppearanceCell.Options.UseFont = True + Me.columnFromUser.FieldName = "USER_FROM" + Me.columnFromUser.Name = "columnFromUser" + Me.columnFromUser.OptionsColumn.AllowEdit = False + Me.columnFromUser.Visible = True + Me.columnFromUser.VisibleIndex = 0 + ' + 'columnToUser + ' + Me.columnToUser.AppearanceCell.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Bold) + Me.columnToUser.AppearanceCell.Options.UseFont = True + Me.columnToUser.FieldName = "TO_USER" + Me.columnToUser.Name = "columnToUser" + Me.columnToUser.OptionsColumn.AllowEdit = False + Me.columnToUser.Visible = True + Me.columnToUser.VisibleIndex = 1 + ' + 'columnAddedWhen + ' + Me.columnAddedWhen.AppearanceCell.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Bold) + Me.columnAddedWhen.AppearanceCell.Options.UseFont = True + Me.columnAddedWhen.FieldName = "ADDED_WHEN" + Me.columnAddedWhen.Name = "columnAddedWhen" + Me.columnAddedWhen.OptionsColumn.AllowEdit = False + Me.columnAddedWhen.Visible = True + Me.columnAddedWhen.VisibleIndex = 2 + ' 'ChatControl ' Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 16.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.Controls.Add(Me.GridChat) + Me.Controls.Add(Me.GridChatOld) Me.Controls.Add(Me.pnlMessage) Me.Controls.Add(Me.MenuStrip1) Me.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) @@ -402,18 +475,20 @@ Partial Class ChatControl Me.Size = New System.Drawing.Size(422, 587) CType(Me.RepositoryItemHypertextLabel1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.RepositoryItemHyperLinkEdit1, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.GridChat, System.ComponentModel.ISupportInitialize).EndInit() - CType(Me.ChatView, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.GridChatOld, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.ChatViewOld, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.ChatSource, System.ComponentModel.ISupportInitialize).EndInit() Me.pnlMessage.ResumeLayout(False) Me.MenuStrip1.ResumeLayout(False) Me.MenuStrip1.PerformLayout() + CType(Me.GridChat, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.ChatView, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) Me.PerformLayout() End Sub - Friend WithEvents GridChat As DevExpress.XtraGrid.GridControl - Friend WithEvents ChatView As DevExpress.XtraGrid.Views.Tile.TileView + Friend WithEvents GridChatOld As DevExpress.XtraGrid.GridControl + Friend WithEvents ChatViewOld As DevExpress.XtraGrid.Views.Tile.TileView Friend WithEvents columnMessage As DevExpress.XtraGrid.Columns.TileViewColumn Friend WithEvents columnUsername As DevExpress.XtraGrid.Columns.TileViewColumn Friend WithEvents columnDate As DevExpress.XtraGrid.Columns.TileViewColumn @@ -431,4 +506,9 @@ Partial Class ChatControl Friend WithEvents RichTextBox1 As RichTextBox Friend WithEvents columnTO_USER As DevExpress.XtraGrid.Columns.TileViewColumn Friend WithEvents ListBoxUserMention As ListBox + Friend WithEvents GridChat As DevExpress.XtraGrid.GridControl + Friend WithEvents ChatView As DevExpress.XtraGrid.Views.Grid.GridView + Friend WithEvents columnFromUser As DevExpress.XtraGrid.Columns.GridColumn + Friend WithEvents columnAddedWhen As DevExpress.XtraGrid.Columns.GridColumn + Friend WithEvents columnToUser As DevExpress.XtraGrid.Columns.GridColumn End Class diff --git a/Controls.ChatControl/ChatControl.vb b/Controls.ChatControl/ChatControl.vb index 2e64356b..50ce0657 100644 --- a/Controls.ChatControl/ChatControl.vb +++ b/Controls.ChatControl/ChatControl.vb @@ -7,6 +7,8 @@ Public Class ChatControl Private ReadOnly IdentificationColumn As String = "USER_FROM" Private ReadOnly MessageColumn As String = "MESSAGE_TEXT" Private ReadOnly DateColumn As String = "ADDED_WHEN" + Private ReadOnly ToUserColumn As String = "TO_USER" + Public Delegate Sub ConversationEnded() Public Event Conversation_Ended As ConversationEnded Public Delegate Sub ConversationUsersAdded_Success() @@ -158,7 +160,10 @@ Public Class ChatControl ' BuildUsernameColorDict(oDatatable) oSQL = $"SELECT * FROM VWIDB_CONVERSATION WHERE CONVERSATION_ID = {ConversationId}" Dim oDatatable2 As DataTable = Db.GetDatatable(oSQL) + + GridChatOld.DataSource = ChatSource GridChat.DataSource = ChatSource + ChatSource.DataSource = oDatatable tsmitmTitle.Text = oDatatable2.Rows(0).Item("TITLE") CurrentConversationID = ConversationId @@ -215,6 +220,7 @@ Public Class ChatControl Dim oResult = Db.GetScalarValue(oSQL) LoadConversation(CurrentConversationID) RichTextBox1.Text = String.Empty + ChatViewOld.MoveLast() ChatView.MoveLast() Catch ex As Exception Logger.Error(ex) @@ -235,44 +241,38 @@ Public Class ChatControl ' End Sub) 'End Sub - Private Sub ChatView_CustomItemTemplate(sender As Object, e As TileViewCustomItemTemplateEventArgs) Handles ChatView.CustomItemTemplate - Dim oRow As DataRow = ChatView.GetDataRow(e.RowHandle) + Private Sub ChatView_CustomItemTemplate(sender As Object, e As TileViewCustomItemTemplateEventArgs) Handles ChatViewOld.CustomItemTemplate + Dim oRow As DataRow = ChatViewOld.GetDataRow(e.RowHandle) Dim oIdentification As String = oRow.Item(IdentificationColumn) - Dim oToUser = oRow.Item("TO_USER") + Dim oToUser = oRow.Item(ToUserColumn) + If Not IsDBNull(oToUser) Then e.Template = e.Templates.Item("ChatTo") Else - If oIdentification = ConversationIdentification Or oIdentification = Username Then - e.Template = e.Templates.Item("ChatRight") - Else - e.Template = e.Templates.Item("ChatLeft") - End If + 'If oIdentification = ConversationIdentification Or oIdentification = Username Then + ' e.Template = e.Templates.Item("ChatRight") + 'Else + ' e.Template = e.Templates.Item("ChatLeft") + 'End If + e.Template = e.Templates.Item("ChatLeft") End If - End Sub - Private Sub ChatView_ItemCustomize(sender As Object, e As TileViewItemCustomizeEventArgs) Handles ChatView.ItemCustomize - Dim oRow As DataRow = ChatView.GetDataRow(e.RowHandle) - + Private Sub ChatView_ItemCustomize(sender As Object, e As TileViewItemCustomizeEventArgs) Handles ChatViewOld.ItemCustomize + Dim oRow As DataRow = ChatViewOld.GetDataRow(e.RowHandle) Dim oUsername As String = oRow.Item(IdentificationColumn) Dim oMessage As String = oRow.Item(MessageColumn) + Dim oToUser = oRow.Item(ToUserColumn) ' Dim oColor As Color = UsernameColorsDict.Item(oUsername) If oUsername = ConversationIdentification Or oUsername = Username Then e.Item.AppearanceItem.Normal.BackColor = Color.PaleTurquoise e.Item.Item(IdentificationColumn).Appearance.Normal.ForeColor = Color.Purple Else - ' e.Item.AppearanceItem.Normal.BackColor = Color.whi e.Item.Item(IdentificationColumn).Appearance.Normal.ForeColor = Color.Red End If - 'e.Item.AppearanceItem.Focused.BackColor = Color.Turquoise - - End Sub - - - - Private Sub txtMessage_KeyUp(sender As Object, e As KeyEventArgs) + e.Item.ItemSize = DevExpress.XtraEditors.TileItemSize.Wide End Sub Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles btnSendMessage.Click @@ -281,18 +281,6 @@ Public Class ChatControl End If End Sub - Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) - - End Sub - - Private Sub ChatControl_Click(sender As Object, e As EventArgs) Handles MyBase.Click - - End Sub - - Private Sub ChatControl_Leave(sender As Object, e As EventArgs) Handles Me.Leave - - End Sub - Private Sub ToolStripMenuItemConv_end_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItemConv_end.Click If CurrentConversationID <> 0 Then Dim result As MsgBoxResult @@ -342,14 +330,9 @@ Public Class ChatControl If e.Control And e.KeyCode = Keys.Enter And RichTextBox1.Text.Count > 0 Then NewMessage(RichTextBox1.Text) ElseIf (Keys.Alt AndAlso Keys.Control) And e.KeyCode = keys.Q Then - - With RichTextBox1 - ListBoxUserMention.Left = .GetPositionFromCharIndex( - .SelectionStart).X + .Left + 10 - ListBoxUserMention.Top = .GetPositionFromCharIndex( - .SelectionStart).Y + .Top + 20 - + ListBoxUserMention.Left = .GetPositionFromCharIndex(.SelectionStart).X + .Left + 10 + ListBoxUserMention.Top = .GetPositionFromCharIndex(.SelectionStart).Y + .Top + 20 ' Jetzt ListBox einblendenden, Focus auf diese setzen ' und den ersten Eintrag selektieren ListBoxUserMention.Visible = True @@ -357,7 +340,6 @@ Public Class ChatControl ListBoxUserMention.SelectedIndex = 0 End With - 'Dim opoint As Point = GetPoint(sender) 'AssistListBox.PointToClient(opoint) 'pnlMessage.Controls.Add(AssistListBox) @@ -365,9 +347,7 @@ Public Class ChatControl 'AssistListBox.BringToFront() ' '@ was pressed - End If - End Sub Sub AssistListBox_Changed() Try @@ -444,4 +424,56 @@ Public Class ChatControl End With End If End Sub + + Private Sub ChatView_CustomDrawRowPreview(sender As Object, e As DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs) Handles ChatView.CustomDrawRowPreview + Dim oRow As DataRow = ChatViewOld.GetDataRow(e.RowHandle) + Dim oUsername As String = oRow.Item(IdentificationColumn) + Dim oToUser = oRow.Item(ToUserColumn) + Dim oIsOwnMessage As Boolean = oUsername = ConversationIdentification Or oUsername = Username + + ' Eigene Nachrichten + If oIsOwnMessage Then + e.Appearance.BackColor = Color.PaleTurquoise + End If + + ' Andere Nachrichten + If Not oIsOwnMessage Then + e.Appearance.BackColor = Color.White + End If + End Sub + + Private Sub ChatView_CustomDrawCell(sender As Object, e As DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs) Handles ChatView.CustomDrawCell + Dim oRow As DataRow = ChatViewOld.GetDataRow(e.RowHandle) + Dim oUsername As String = oRow.Item(IdentificationColumn) + Dim oToUser = oRow.Item(ToUserColumn) + + Dim oIsOwnMessage As Boolean = oUsername = ConversationIdentification Or oUsername = Username + + ' Eigene Nachrichten + If oIsOwnMessage Then + ' Benutzername + If e.Column.FieldName = IdentificationColumn Then + e.Appearance.ForeColor = Color.Purple + End If + + e.Appearance.BackColor = Color.PaleTurquoise + End If + + ' Andere Nachrichten + If Not oIsOwnMessage Then + If e.Column.FieldName = IdentificationColumn Then + e.Appearance.ForeColor = Color.Red + End If + + If Not (IsNothing(oToUser) Or IsDBNull(oToUser)) Then + If oToUser = Username Or oToUser = ConversationIdentification Then + e.Appearance.BackColor = Color.LightSalmon + Else + e.Appearance.BackColor = Color.White + End If + Else + e.Appearance.BackColor = Color.White + End If + End If + End Sub End Class