This commit is contained in:
2020-05-31 22:25:35 +02:00
parent 4a358d43fd
commit 083e666fbc
214 changed files with 14292 additions and 4117 deletions

View File

@@ -20,8 +20,11 @@ Public Class frmMessenger
End Sub
Private Sub MyDatagridview1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvChats.CellContentClick
Private Sub MyDatagridview1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvChats.CellContentClick, dgvChats.CellClick
If dgvChats.Rows(e.RowIndex).Cells("ungelesen").Value <> "" Then
Dim dgv_ChatID = If(dgvChats.SelectedRows.Count > 0, dgvChats.SelectedRows(0).Cells("chat_id").Value, -1)
intiDGVChats(dgv_ChatID, False) ' Splate ungelesen sol sich ändern
End If
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
@@ -77,13 +80,50 @@ Public Class frmMessenger
Next
End If
End Sub
Sub initEmojisTEST()
FlowLayoutPanel.Controls.Clear()
If alloweasteregg Then pic.Visible = False
If IO.Directory.Exists(DATENVERVER_OPTIONS.getRootDir & "\DOKUMENTE\CHAT_EMOJIS\") Then
Dim EmojiPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "CHAT_EMOJIS\"
If Not IO.Directory.Exists(EmojiPath) Then IO.Directory.CreateDirectory(EmojiPath)
If VERAG_PROG_ALLGEMEIN.cProgrammeUpdate.copyProgramLIST(DATENVERVER_OPTIONS.getRootDir & "\DOKUMENTE\CHAT_EMOJIS\", EmojiPath, {}) Then
For Each a In IO.Directory.GetFiles(EmojiPath) '.OrderBy(Function(f) f)
If alloweasteregg Or Not a.Contains("easteregg") Then
If IO.File.Exists(a) And a.Contains(".png") And a.Contains("emoji_") Then
Dim p As New PictureBox
p.Size = New Size(40, 40)
p.BackgroundImage = Image.FromFile(a)
p.BackgroundImageLayout = ImageLayout.Zoom
p.Cursor = Cursors.Hand
AddHandler p.Click, Sub()
If Not CHAT.chat_aktiv Then MsgBox("Chat inaktiv!") : Exit Sub
If CHAT IsNot Nothing Then
saveEmoji(a)
End If
End Sub
FlowLayoutPanel.Controls.Add(p)
End If
End If
Next
End If
End If
End Sub
Sub intiDGVChats(Optional dgv_ChatID = -1, Optional reloadChat = True)
With dgvChats
Dim loadedTmp = loaded
If Not reloadChat Then
loaded = False
End If
.DataSource = SQL.loadDgvBySql("SELECT [chat_id],CASE WHEN chat_name<>'' THEN chat_name ELSE (SELECT TOP 1 mit_vname + ' ' + mit_nname FROM tblMessenger_ChatMembers INNER JOIN tblMitarbeiter ON mit_id=chatMb_maId where chatMb_chatId=chat_id AND chatMb_maId <>" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & ") END as chat_name
,(SELECT REPLACE(COUNT(*),'0','') FROM tblMessenger_ChatMessages INNER JOIN tblMessenger_ChatMessageStatus ON chatMgSt_chatMsgId=chatMg_id WHERE [chat_id]=chatMg_chatId AND chatMgSt_MaId=" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & " AND chatMgSt_gelesen=0) as ungelesen
FROM [tblMessenger_Chat] WHERE (SELECT COUNT(*) FROM tblMessenger_ChatMembers WHERE chatMB_chatId=chat_id AND chatMB_maId=" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & ")>0
AND chat_aktiv='" & (Not cbxInaktiveChats.Checked) & "' ORDER BY chat_id DESC", "ADMIN")
AND chat_aktiv='" & (Not cbxInaktiveChats.Checked) & "' ORDER BY chat_lastMsg DESC", "ADMIN")
If .Columns.Count = 0 Then Exit Sub
@@ -96,9 +136,8 @@ Public Class frmMessenger
.Columns("ungelesen").DefaultCellStyle.Font = New Font(.Font.FontFamily, 7, FontStyle.Bold)
dgvChats.GetOrder()
Dim loadedTmp = loaded
If Not reloadChat Then
loaded = False
dgvChats.ClearSelection()
If dgv_ChatID > 0 Then
For Each r As DataGridViewRow In .Rows
@@ -158,21 +197,53 @@ Public Class frmMessenger
Sub RELOAD_CHAT()
Try
lblChatName.Text = "-"
' Dim scrollMax = (MyFlowLayoutPanel1.VerticalScroll.Value = MyFlowLayoutPanel1.VerticalScroll.Maximum)
MyFlowLayoutPanel1.Controls.Clear()
If CHAT IsNot Nothing Then
CHAT.READ_ALL_MESSAGES()
' CHAT = New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_Chat(dgvChats.SelectedRows(0).Cells("chat_id").Value)
For Each MSG In CHAT.CHAT_MESSAGES
MyFlowLayoutPanel1.Controls.Add(getControlFromMSG(MSG))
Next
' MyFlowLayoutPanel1.VerticalScroll.()
'MyFlowLayoutPanel1.AutoScrollPosition = New Point(MyFlowLayoutPanel1.Width, MyFlowLayoutPanel1.Height)
' If MyFlowLayoutPanel1.Controls.Count > 0 Then MyFlowLayoutPanel1.ScrollControlIntoView(MyFlowLayoutPanel1.Controls(MyFlowLayoutPanel1.Controls.Count - 1))
' If scrollMax Then
MyFlowLayoutPanel1.VerticalScroll.Value = MyFlowLayoutPanel1.VerticalScroll.Maximum
If CHAT.chat_name <> "" Then
lblChatName.Text = CHAT.chat_name
Button5.BackgroundImage = My.Resources.people
Else
lblChatName.Text = SQL.getValueTxtBySql("SELECT isnull(mit_vname,'') + ' ' + isnull(mit_nname,'') FROM [tblMessenger_ChatMembers] inner join tblMitarbeiter on mit_id=chatMb_maId where chatMb_chatId ='" & CHAT.chat_id & "' and chatMb_maId<>'" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & "'", "ADMIN")
Button5.BackgroundImage = My.Resources.person
End If
End If
checkOnlineOffline()
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
End Sub
Sub checkOnlineOffline()
Try
If CHAT Is Nothing OrElse CHAT.chat_name <> "" Then
lblOnlineOffline.Visible = False
Else
lblOnlineOffline.Visible = True
Dim cntOnline = SQL.getValueTxtBySql("SELECT count(*) FROM [tblMessenger_ChatMembers] inner join tblSessions ON sess_maId=[chatMb_maId] and sess_lastRm > dateadd(MINUTE,-2, getdate()) where chatMb_chatId ='" & CHAT.chat_id & "' and chatMb_maId<>'" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & "'", "ADMIN")
If cntOnline > 0 Then
lblOnlineOffline.Text = "ONLINE"
lblOnlineOffline.BackColor = Color.MediumSeaGreen
Else
lblOnlineOffline.Text = "OFFLINE"
lblOnlineOffline.BackColor = Color.Red
End If
End If
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
@@ -224,6 +295,7 @@ Public Class frmMessenger
CHAT.LOAD_MESSAGES(topMessages)
' CHAT = New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_Chat(dgvChats.SelectedRows(0).Cells("chat_id").Value)
Dim newMsg As Boolean = False
For Each MSG In CHAT.CHAT_MESSAGES
Dim found As Boolean = False
For Each I In MyFlowLayoutPanel1.Controls
@@ -244,6 +316,7 @@ Public Class frmMessenger
Next
If Not found Then
newMsg = True
MyFlowLayoutPanel1.Controls.Add(getControlFromMSG(MSG))
'Dim CHAT_ITEM As New usrCntlMessenger_ChatElement(MSG)
@@ -255,12 +328,15 @@ Public Class frmMessenger
CHAT.READ_ALL_MESSAGES()
End If
Next
If newMsg Then
MyFlowLayoutPanel1.VerticalScroll.Value = MyFlowLayoutPanel1.VerticalScroll.Maximum
End If
' MyFlowLayoutPanel1.VerticalScroll.()
'MyFlowLayoutPanel1.AutoScrollPosition = New Point(MyFlowLayoutPanel1.Width, MyFlowLayoutPanel1.Height)
' If MyFlowLayoutPanel1.Controls.Count > 0 Then MyFlowLayoutPanel1.ScrollControlIntoView(MyFlowLayoutPanel1.Controls(MyFlowLayoutPanel1.Controls.Count - 1))
MyFlowLayoutPanel1.VerticalScroll.Value = MyFlowLayoutPanel1.VerticalScroll.Maximum
' MyFlowLayoutPanel1.VerticalScroll.Value = MyFlowLayoutPanel1.VerticalScroll.Maximum --> nur, wenn neue MSG
End If
checkOnlineOffline()
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
@@ -400,13 +476,37 @@ Public Class frmMessenger
loaded = False
REFRESH_CHAT()
Dim dgv_ChatID = If(dgvChats.SelectedRows.Count > 0, dgvChats.SelectedRows(0).Cells("chat_id").Value, -1)
intiDGVChats(dgv_ChatID,False)
If checkNewestShit() Then ' prüft, ob neue Nachrichten gekommen sind, sont kein Refresh (stört das scrollen)
intiDGVChats(dgv_ChatID, False)
End If
loaded = True
End Sub
Function checkNewestShit() As Boolean
Try
Dim Dt_New As DataTable = SQL.loadDgvBySql("SELECT [chat_id],CASE WHEN chat_name<>'' THEN chat_name ELSE (SELECT TOP 1 mit_vname + ' ' + mit_nname FROM tblMessenger_ChatMembers INNER JOIN tblMitarbeiter ON mit_id=chatMb_maId where chatMb_chatId=chat_id AND chatMb_maId <>" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & ") END as chat_name
,(SELECT REPLACE(COUNT(*),'0','') FROM tblMessenger_ChatMessages INNER JOIN tblMessenger_ChatMessageStatus ON chatMgSt_chatMsgId=chatMg_id WHERE [chat_id]=chatMg_chatId AND chatMgSt_MaId=" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & " AND chatMgSt_gelesen=0) as ungelesen
FROM [tblMessenger_Chat] WHERE (SELECT COUNT(*) FROM tblMessenger_ChatMembers WHERE chatMB_chatId=chat_id AND chatMB_maId=" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & ")>0
AND chat_aktiv='" & (Not cbxInaktiveChats.Checked) & "' ORDER BY chat_lastMsg DESC", "ADMIN")
Dim Dt_Current As DataTable = dgvChats.DataSource
If Dt_Current.Rows.Count <> Dt_New.Rows.Count Then Return True
For Each r As DataRow In Dt_New.Rows
If r("ungelesen") IsNot DBNull.Value AndAlso r("ungelesen") <> "" AndAlso CInt(r("ungelesen")) > 0 Then
Return True
End If
Next
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
Return False
End Function
Sub initMsg()
Dim dgv_ChatID = If(dgvChats.SelectedRows.Count > 0, dgvChats.SelectedRows(0).Cells("chat_id").Value, -1)
'intiDGVChats(dgv_ChatID)
@@ -608,14 +708,6 @@ Public Class frmMessenger
End If
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
If CHAT IsNot Nothing Then
Dim f As New frmMessenger_Members(CHAT)
f.ShowDialog(Me)
End If
End Sub
@@ -639,7 +731,7 @@ Public Class frmMessenger
End If
End If
Catch ex As Exception
MsgBox(" FEHLER: DaagDrop!" & ex.Message & ex.StackTrace)
MsgBox(" FEHLER: DragDrop!" & ex.Message & ex.StackTrace)
End Try
End Sub
@@ -664,6 +756,20 @@ Public Class frmMessenger
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
If CHAT Is Nothing Then Exit Sub
If CHAT.chat_name <> "" Then
Dim f As New frmMessenger_Members(CHAT)
f.ShowDialog(Me)
Else
Dim mit_id = SQL.getValueTxtBySql("SELECT mit_id FROM [tblMessenger_ChatMembers] inner join tblMitarbeiter on mit_id=chatMb_maId where chatMb_chatId ='" & CHAT.chat_id & "' and chatMb_maId<>'" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & "'", "ADMIN")
Dim f As New frmMitarbeitersuche(mit_id)
f.ShowDialog(Me)
End If
End Sub
'Private Sub rtbChatMessage_TextChanged(sender As Object, e As EventArgs) Handles rtbChatMessage.TextChanged
' FlowLayoutPanel.Enabled = (rtbChatMessage.Text = "")
'End Sub