Imports System.Drawing Imports System.IO Imports System.Reflection Imports System.Security.Policy Imports System.Threading Imports System.Web.UI.WebControls.WebParts Imports System.Windows.Forms Imports VERAG_PROG_ALLGEMEIN.cMessenger Public Class frmMessenger Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim CHAT As VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_Chat = Nothing Dim MSG_LISTENDER As New cMessangerListender Dim topMessages As String = "20" Dim topMessagesDateHistory As Object = Nothing Dim loaded = False Public EMOJI_PATH_MAIN = DATENVERVER_OPTIONS.getRootDir & "\DOKUMENTE\CHAT_EMOJIS\" Public EMOJI_PATH = "" Public AvisoId As Integer = -1 Public SendungID As Integer = -1 Dim alloweasteregg = False Dim hiddemEmojis = False Dim toggle_CHAT_ART = "CHAT" Public Sub New() ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. Me.DoubleBuffered = True SetStyle(ControlStyles.OptimizedDoubleBuffer Or ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.ResizeRedraw, True) UpdateStyles() VERAG_PROG_ALLGEMEIN.cProgramFunctions.SetDoubleBuffered(MyFlowLayoutPanel1) End Sub Sub initEMOJI_PATH() EMOJI_PATH = EMOJI_PATH_MAIN Try Dim IPADDR As System.Net.IPAddress IPADDR = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList(0) If IPADDR.ToString.Contains("172.16.1.") Then 'WAIDHAUS EMOJI_PATH = "\\172.16.1.100\f\PROGRAMME\CHAT_EMOJIS\" End If If IPADDR.ToString.Contains("192.168.133.") Then 'SALZBURG EMOJI_PATH = "\\192.168.133.98\f\Programme\CHAT_EMOJIS\" End If If IPADDR.ToString.Contains("192.168.32.") Then 'NICKELSDORF EMOJI_PATH = "\\192.168.32.253\Files\Programme\CHAT_EMOJIS\" End If If IPADDR.ToString.Contains("192.168.100") Then 'NEUHAUS EMOJI_PATH = "\\192.168.100.20\Share\Programme\CHAT_EMOJIS\" End If If Not IO.Directory.Exists(EMOJI_PATH) Then EMOJI_PATH = EMOJI_PATH_MAIN End If Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub 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 btnNeu.Click Dim f As New frmMessenger_NeuerChat f.ShowDialog(Me) If f.chat_id > 0 Then 'Dim dgv_ChatID = If(dgvChats.SelectedRows.Count > 0, dgvChats.SelectedRows(0).Cells("chat_id").Value, -1) intiDGVChats(f.chat_id) End If End Sub Private Sub frmMessenger_Load(sender As Object, e As EventArgs) Handles Me.Load initEMOJI_PATH() VERAG_PROG_ALLGEMEIN.cProgramFunctions.SetDoubleBuffered(MyFlowLayoutPanel1) rtbChatMessage.AllowDrop = True MSG_LISTENDER.START() ' TimerNEW_MESSAGE.Enabled = True SplitContainer3.SplitterDistance = 220 SplitContainer3.Panel1Collapsed = True 'UsrCntlChat_Art_Btn_MACHAT.init() 'UsrCntlChat_Art_Btn_LKWCHAT.init() UsrCntlChat_Art_Btn_MACHAT.setAktiv() If AvisoId > 0 Then Me.Width = 650 CHAT = New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_Chat(AvisoId, SendungID, If(SendungID > 0, "SND_CHAT", "LKW_CHAT"), topMessages, topMessagesDateHistory) SplitContainer1.Enabled = True SplitContainer.Panel1Collapsed = True SplitContainer.Panel1.Enabled = False ' Panel3.Enabled = True SplitContainer1.Enabled = True RELOAD_CHAT() Else intiDGVChats() End If If My.Application.Info.AssemblyName = "SDL" Then lbl.Text = "CHAT" End If MyFlowLayoutPanel1.Controls.Clear() 'loaded = True alloweasteregg = cAllgemein.MITARBEITER.mit_ChatEasteregg hiddemEmojis = cAllgemein.MITARBEITER.mit_ChatEasteregg2 initEmojis() VERAG_PROG_ALLGEMEIN.cAllgemein._TRANSLATE(Me) End Sub Sub initEmojis() FlowLayoutPanel.Controls.Clear() If alloweasteregg Then pic.Visible = False ' If IO.Directory.Exists(My.Application.roo "") Then Dim spezialEmoji = False If VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN" Then spezialEmoji = True If IO.Directory.Exists(EMOJI_PATH) Then For Each aa In IO.Directory.GetFiles(EMOJI_PATH) '.OrderBy(Function(f) f) If (alloweasteregg Or Not aa.Contains("easteregg")) Then If IO.File.Exists(aa) And aa.Contains(".png") And (aa.Contains("emoji_") Or spezialEmoji) Then If hiddemEmojis Or Not aa.Contains("_hidden") Then Dim p As New PictureBox p.Size = New Size(40, 40) p.BackgroundImage = Image.FromFile(aa) 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(aa) End If End Sub FlowLayoutPanel.Controls.Add(p) End If End If End If 'MsgBox(a) 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, Optional selFirst = False) Dim newMsg = VERAG_PROG_ALLGEMEIN.cMessenger.GET_NewMSG_COUNT_ART(VERAG_PROG_ALLGEMEIN.cAllgemein.USRID, "CHAT") UsrCntlChat_Art_Btn_MACHAT.setCnt(newMsg) Dim newMsgLKW = VERAG_PROG_ALLGEMEIN.cMessenger.GET_NewMSG_COUNT_ART(VERAG_PROG_ALLGEMEIN.cAllgemein.USRID, "LKW_CHAT") UsrCntlChat_Art_Btn_LKWCHAT.setCnt(newMsgLKW) Dim newMsgSND = VERAG_PROG_ALLGEMEIN.cMessenger.GET_NewMSG_COUNT_ART(VERAG_PROG_ALLGEMEIN.cAllgemein.USRID, "SND_CHAT") UsrCntlChat_Art_Btn_SNDCHAT.setCnt(newMsgSND) 'Anzeige, wenn inaktive Chats: Dim newMsgLKW_Inaktiv = VERAG_PROG_ALLGEMEIN.cMessenger.GET_NewMSG_COUNT_ART_INAKTIV(VERAG_PROG_ALLGEMEIN.cAllgemein.USRID, toggle_CHAT_ART) lblLKWChat_MsgCntInaktiv.Text = newMsgLKW_Inaktiv lblLKWChat_MsgCntInaktiv.Visible = (newMsgLKW_Inaktiv > 0) Select Case VERAG_PROG_ALLGEMEIN.cAllgemein._LAN Case "DE" Case Else UsrCntlChat_Art_Btn_MACHAT.btn.Text = "General" UsrCntlChat_Art_Btn_LKWCHAT.btn.Text = "Truck" UsrCntlChat_Art_Btn_SNDCHAT.btn.Text = "Shipment" End Select With dgvChats Dim loadedTmp = loaded If Not reloadChat Then loaded = False End If Dim whereName = "" If MyTextBox1.Text.Trim <> String.Empty Then whereName = " WHERE chat_name LIKE '%" & MyTextBox1.Text.Trim & "%' " End If Dim where = "" Select Case toggle_CHAT_ART Case "CHAT" where = " AND chat_art IN ('CHAT') " 'Case "LKW_CHAT" ' where = " AND chat_art IN ('LKW_CHAT') " Case Else where = " AND chat_art IN ('" & toggle_CHAT_ART & "') " End Select Dim sqlQery As String = "SELECT TOP 200 * FROM( 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 ,chat_lastMsg 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) & "' " & where & " ) as T " & whereName & " ORDER BY chat_lastMsg DESC" .DataSource = SQL.loadDgvBySql(sqlQery, "ADMIN") If .Columns.Count = 0 Then Exit Sub .Columns("chat_id").Visible = False .Columns("chat_lastMsg").Visible = False .Columns("chat_name").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill .Columns("ungelesen").Width = 30 .Columns("ungelesen").HeaderText = "neu" .Columns("ungelesen").DefaultCellStyle.ForeColor = Color.White .Columns("ungelesen").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns("ungelesen").DefaultCellStyle.Font = New Font(.Font.FontFamily, 7, FontStyle.Bold) dgvChats.GetOrder() If selFirst Then dgvChats.ClearSelection() SplitContainer1.Enabled = False If .Rows.Count > 0 Then loaded = True SplitContainer1.Enabled = True .Rows(0).Selected = True End If loaded = loadedTmp Else If Not reloadChat Then dgvChats.ClearSelection() If dgv_ChatID > 0 Then For Each r As DataGridViewRow In .Rows If r.Cells("chat_id").Value = dgv_ChatID Then dgvChats.ClearSelection() r.Selected = True : Exit For End If Next End If loaded = loadedTmp Else dgvChats.ClearSelection() SplitContainer1.Enabled = False If dgv_ChatID > 0 Then For Each r As DataGridViewRow In .Rows If r.Cells("chat_id").Value = dgv_ChatID Then dgvChats.ClearSelection() SplitContainer1.Enabled = True r.Selected = True : Exit For End If Next End If End If End If dgvChats.SetOrder() If dgvChats.SelectedRows.Count > 0 Then dgvChats.FirstDisplayedCell = dgvChats.SelectedRows(0).Cells("chat_name") 'dgvChats.ClearSelection() 'SplitContainer1.Enabled = False 'If dgv_ChatID > 0 Then ' For Each r As DataGridViewRow In .Rows ' If r.Cells("chat_id").Value = dgv_ChatID Then ' dgvChats.ClearSelection() ' SplitContainer1.Enabled = True ' r.Selected = True : Exit For ' End If ' Next 'End If End With If Not selFirst Then rtbChatMessage.Focus() End Sub Sub intiDGVSonstige(Optional dgv_ChatID = -1, Optional reloadChat = True, Optional selFirst = False) With dgvChats Dim loadedTmp = loaded If Not reloadChat Then loaded = False End If Dim whereName = "" If MyTextBox1.Text.Trim <> String.Empty Then whereName = " WHERE chat_name LIKE '%" & MyTextBox1.Text.Trim & "%' " End If Dim sqlquery As String = "SELECT * FROM( 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 ,chat_lastMsg 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) & "' AND chat_art NOT IN ('CHAT') ) as T " & whereName & " ORDER BY chat_lastMsg DESC" .DataSource = SQL.loadDgvBySql(sqlquery, "ADMIN") If .Columns.Count = 0 Then Exit Sub .Columns("chat_id").Visible = False .Columns("chat_lastMsg").Visible = False .Columns("chat_name").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill .Columns("ungelesen").Width = 30 .Columns("ungelesen").HeaderText = "neu" .Columns("ungelesen").DefaultCellStyle.ForeColor = Color.White .Columns("ungelesen").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns("ungelesen").DefaultCellStyle.Font = New Font(.Font.FontFamily, 7, FontStyle.Bold) dgvChats.GetOrder() If selFirst Then dgvChats.ClearSelection() SplitContainer1.Enabled = False If .Rows.Count > 0 Then loaded = True SplitContainer1.Enabled = True .Rows(0).Selected = True End If loaded = loadedTmp Else If Not reloadChat Then dgvChats.ClearSelection() If dgv_ChatID > 0 Then For Each r As DataGridViewRow In .Rows If r.Cells("chat_id").Value = dgv_ChatID Then dgvChats.ClearSelection() r.Selected = True : Exit For End If Next End If loaded = loadedTmp Else dgvChats.ClearSelection() SplitContainer1.Enabled = False If dgv_ChatID > 0 Then For Each r As DataGridViewRow In .Rows If r.Cells("chat_id").Value = dgv_ChatID Then dgvChats.ClearSelection() SplitContainer1.Enabled = True r.Selected = True : Exit For End If Next End If End If End If dgvChats.SetOrder() If dgvChats.SelectedRows.Count > 0 Then dgvChats.FirstDisplayedCell = dgvChats.SelectedRows(0).Cells("chat_name") 'dgvChats.ClearSelection() 'SplitContainer1.Enabled = False 'If dgv_ChatID > 0 Then ' For Each r As DataGridViewRow In .Rows ' If r.Cells("chat_id").Value = dgv_ChatID Then ' dgvChats.ClearSelection() ' SplitContainer1.Enabled = True ' r.Selected = True : Exit For ' End If ' Next 'End If End With If Not selFirst Then rtbChatMessage.Focus() End Sub Private Sub dgvChats_SelectionChanged(sender As Object, e As EventArgs) Handles dgvChats.SelectionChanged If Not loaded Then Exit Sub topMessagesDateHistory = Nothing ' zurücksetzen des HistoryDate MyFlowLayoutPanel1.Controls.Clear() If dgvChats.SelectedRows.Count > 0 Then CHAT = New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_Chat(dgvChats.SelectedRows(0).Cells("chat_id").Value, topMessages, topMessagesDateHistory) SplitContainer1.Enabled = True RELOAD_CHAT() End If End Sub Sub RELOAD_CHAT() Try lblChatName.Text = "-" ' Dim scrollMax = (MyFlowLayoutPanel1.VerticalScroll.Value = MyFlowLayoutPanel1.VerticalScroll.Maximum) MyFlowLayoutPanel1.SuspendLayout() MyFlowLayoutPanel1.Visible = False 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)) MyFlowLayoutPanel1.ResumeLayout() ' If scrollMax Then MyFlowLayoutPanel1.Visible = True MyFlowLayoutPanel1.VerticalScroll.Value = MyFlowLayoutPanel1.VerticalScroll.Maximum MyFlowLayoutPanel1.Refresh() If CHAT.chat_name <> "" Then 'GRUPPENCHAT lblChatName.Text = CHAT.chat_name btnTeilnehmer.BackgroundImage = My.Resources.people SplitContainer3.Panel1Collapsed = False initDGVMembers() Else lblChatName.Text = SQL.getValueTxtBySql("SELECT isnull(mit_vname,'') + ' ' + isnull(mit_nname,'') + ' '+ isnull('('+ mit_Sprachkentnisse +')','')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") btnTeilnehmer.BackgroundImage = My.Resources.person SplitContainer3.Panel1Collapsed = True End If End If checkOnlineOffline() Select Case CHAT.chat_art Case "UMFRAGE", "MITTEILUNG", "ARBEITSANWEISUNG" pnl.Enabled = False Case "LKW_CHAT" Case Else pnl.Enabled = True End Select Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) 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") Dim sess_IdOnline = SQL.getValueTxtBySql("SELECT sess_Id 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 & "' ORDER BY sess_lastActivity DESC,sess_lastRm DESC", "ADMIN",,, -1) If sess_IdOnline > 0 Then Dim SESSION As New cSession(sess_IdOnline) If DateDiff(DateInterval.Minute, If(SESSION.sess_lastActivity, Now), Now) > 10 Then lblOnlineOffline.Text = "AFK" lblOnlineOffline.BackColor = Color.Orange Else lblOnlineOffline.Text = "ONLINE" lblOnlineOffline.BackColor = Color.MediumSeaGreen End If Else lblOnlineOffline.Text = "OFFLINE" lblOnlineOffline.BackColor = Color.Red End If End If Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Function getControlFromMSG(MSG As VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages) Select Case MSG.chatMg_type Case "TEXT" Dim CHAT_ITEM As New usrCntlMessenger_ChatElement(MSG) checkUsrId(MSG, CHAT_ITEM) 'CHAT_ITEM.txtChatmessage.Text = MSG.chatMg_text 'CHAT_ITEM.lblName.Text = MSG.chatMg_maId Return (CHAT_ITEM) 'CHAT.READ_ALL_MESSAGES() Case "ATTACHMENT" Dim CHAT_ITEM As New usrCntlMessenger_ChatAnhang(MSG) checkUsrId(MSG, CHAT_ITEM) ' CHAT_ITEM.path = MSG.chatMg_text ' CHAT_ITEM.txtChatmessage.Text = MSG.chatMg_text 'CHAT_ITEM.lblName.Text = MSG.chatMg_maId Return (CHAT_ITEM) Case "EMOJI" Dim CHAT_ITEM As New usrCntlMessenger_ChatEmoji(Me, MSG) checkUsrId(MSG, CHAT_ITEM) ' CHAT_ITEM.path = MSG.chatMg_text ' CHAT_ITEM.txtChatmessage.Text = MSG.chatMg_text 'CHAT_ITEM.lblName.Text = MSG.chatMg_maId Return (CHAT_ITEM) Case "DEL_TEXT", "DEL_ATTACHMENT", "DEL_EMOJI" Dim CHAT_ITEM As New usrCntlMessenger_ChatElementDEL(MSG) checkUsrId(MSG, CHAT_ITEM) Return (CHAT_ITEM) Case "UMFRAGE" Dim CHAT_ITEM As New usrCntlMessenger_ChatElementUmfrage(MSG) checkUsrId(MSG, CHAT_ITEM) Return (CHAT_ITEM) Case "MITTEILUNG" Dim CHAT_ITEM As New usrCntlMessenger_ChatElementMitteilung(MSG) checkUsrId(MSG, CHAT_ITEM) Return (CHAT_ITEM) End Select Return Nothing End Function Sub REFRESH_CHAT() Try If CHAT IsNot Nothing Then 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 Select Case I.GetType.ToString Case GetType(usrCntlMessenger_ChatElement).ToString If DirectCast(I, usrCntlMessenger_ChatElement).CHAT_MSG.chatMg_id = MSG.chatMg_id Then found = True End If Case GetType(usrCntlMessenger_ChatAnhang).ToString If DirectCast(I, usrCntlMessenger_ChatAnhang).CHAT_MSG.chatMg_id = MSG.chatMg_id Then found = True End If Case GetType(usrCntlMessenger_ChatEmoji).ToString If DirectCast(I, usrCntlMessenger_ChatEmoji).CHAT_MSG.chatMg_id = MSG.chatMg_id Then found = True End If Case GetType(usrCntlMessenger_ChatElementDEL).ToString If DirectCast(I, usrCntlMessenger_ChatElementDEL).CHAT_MSG.chatMg_id = MSG.chatMg_id Then found = True End If End Select Next If Not found Then newMsg = True MyFlowLayoutPanel1.Controls.Add(getControlFromMSG(MSG)) 'Dim CHAT_ITEM As New usrCntlMessenger_ChatElement(MSG) 'checkUsrId(MSG, CHAT_ITEM) ''CHAT_ITEM.txtChatmessage.Text = MSG.chatMg_text ''CHAT_ITEM.lblName.Text = MSG.chatMg_maId 'MyFlowLayoutPanel1.Controls.Add(CHAT_ITEM) 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 --> nur, wenn neue MSG End If checkOnlineOffline() Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub 'Sub ORDER_CHAT_MSG() ' If Not CHECK_CHATMSG_ORDER() Then ' For Each I As usrCntlMessenger_ChatElement In MyFlowLayoutPanel1.Controls ' Next ' End If 'End Sub 'Function CHECK_CHATMSG_ORDER() As Boolean ' Dim oldItem = Nothing ' For Each I As usrCntlMessenger_ChatElement In MyFlowLayoutPanel1.Controls ' If oldItem IsNot Nothing And I.CHAT_MSG.chatMg_datetime < oldItem.CHAT_MSG.chatMg_datetime Then ' Return False ' End If ' oldItem = I ' Next ' Return True 'End Function Sub checkUsrId(MSG As VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages, CHAT_ITEM As usrCntlMessenger_ChatElement) If MSG.chatMg_maId = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID Then CHAT_ITEM.Margin = New Padding(MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30, 0, 0, 0) 'CHAT_ITEM.Left = (MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30) 'CHAT_ITEM.Anchor = AnchorStyles.None 'CHAT_ITEM.Dock = DockStyle.Right ' CHAT_ITEM.Dock = DockStyle.Right CHAT_ITEM.setBgCOLOR(Color.FromArgb(192, 255, 192)) End If End Sub Sub checkUsrId(MSG As VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages, CHAT_ITEM As usrCntlMessenger_ChatElementMitteilung) If MSG.chatMg_maId = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID Then CHAT_ITEM.Margin = New Padding(MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30, 0, 0, 0) 'CHAT_ITEM.Left = (MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30) 'CHAT_ITEM.Anchor = AnchorStyles.None 'CHAT_ITEM.Dock = DockStyle.Right ' CHAT_ITEM.Dock = DockStyle.Right CHAT_ITEM.setBgCOLOR(Color.FromArgb(192, 255, 192)) End If End Sub Sub checkUsrId(MSG As VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages, CHAT_ITEM As usrCntlMessenger_ChatElementDEL) If MSG.chatMg_maId = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID Then CHAT_ITEM.Margin = New Padding(MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30, 0, 0, 0) 'CHAT_ITEM.Left = (MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30) 'CHAT_ITEM.Anchor = AnchorStyles.None 'CHAT_ITEM.Dock = DockStyle.Right ' CHAT_ITEM.Dock = DockStyle.Right ' CHAT_ITEM.setBgCOLOR(Color.FromArgb(192, 255, 192)) End If End Sub Sub checkUsrId(MSG As VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages, CHAT_ITEM As usrCntlMessenger_ChatEmoji) If MSG.chatMg_maId = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID Then CHAT_ITEM.Margin = New Padding(MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30, 0, 0, 0) 'CHAT_ITEM.Left = (MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30) 'CHAT_ITEM.Anchor = AnchorStyles.None 'CHAT_ITEM.Dock = DockStyle.Right ' CHAT_ITEM.Dock = DockStyle.Right CHAT_ITEM.setBgCOLOR(Color.FromArgb(192, 255, 192)) End If End Sub Sub checkUsrId(MSG As VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages, CHAT_ITEM As usrCntlMessenger_ChatAnhang) If MSG.chatMg_maId = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID Then CHAT_ITEM.Margin = New Padding(MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30, 0, 0, 0) 'CHAT_ITEM.Left = (MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30) 'CHAT_ITEM.Anchor = AnchorStyles.None 'CHAT_ITEM.Dock = DockStyle.Right ' CHAT_ITEM.Dock = DockStyle.Right CHAT_ITEM.setBgCOLOR(Color.FromArgb(192, 255, 192)) End If End Sub Sub checkUsrId(MSG As VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages, CHAT_ITEM As usrCntlMessenger_ChatElementUmfrage) If MSG.chatMg_maId = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID Then CHAT_ITEM.Margin = New Padding(MyFlowLayoutPanel1.Width - CHAT_ITEM.Width - 30, 0, 0, 0) End If End Sub Private Sub btn_Click(sender As Object, e As EventArgs) Handles btnSenden.Click If Not CHAT.chat_aktiv Then MsgBox("Chat inaktiv!") : Exit Sub If rtbChatMessage.Text.Trim <> "" Then If CHAT IsNot Nothing Then Dim MSG As New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages(CHAT.chat_id, VERAG_PROG_ALLGEMEIN.cAllgemein.USRID) MSG.chatMg_text = rtbChatMessage.Text.Trim MSG.chatMg_maName = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.Fullname MSG.chatMg_maFirma = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA If MSG.SAVE(True, CHAT.CHAT_MEMBERS) Then SEND_TOKEN_NEW_MESSAGE() ' CHAT.CHAT_MESSAGES.Add(MSG) SET_ALL_READ() REFRESH_CHAT() rtbChatMessage.Text = "" rtbChatMessage.Focus() End If End If End If End Sub Sub SET_ALL_READ() For Each u In MyFlowLayoutPanel1.Controls Select Case u.GetType.ToString Case GetType(usrCntlMessenger_ChatElement).ToString DirectCast(u, usrCntlMessenger_ChatElement).lblNewMsg.Visible = False Case GetType(usrCntlMessenger_ChatAnhang).ToString DirectCast(u, usrCntlMessenger_ChatAnhang).lblNewMsg.Visible = False Case GetType(usrCntlMessenger_ChatEmoji).ToString DirectCast(u, usrCntlMessenger_ChatEmoji).lblNewMsg.Visible = False End Select Next End Sub Sub SEND_TOKEN_NEW_MESSAGE() For Each MB In CHAT.CHAT_MEMBERS If MB.chatMb_maId <> VERAG_PROG_ALLGEMEIN.cAllgemein.USRID Then Dim IP = cSession.GET_IP_FROM_MAID(MB.chatMb_maId) If IP <> "" Then Dim SC As New cServerClient ' SC.begin("192.168.0.50", "NEW_MESSAGE") '192.168.0.95 = atlas suben SC.begin(IP, "NEW_MESSAGE") ' MsgBox(IP) End If End If Next 'SC.waitTillFinished() 'Thread.Sleep(1000) 'If SC.status = "TaskSuccess" Then 'Else 'End If End Sub Private Sub rtbChatMessage_KeyDown(sender As Object, e As KeyEventArgs) Handles rtbChatMessage.KeyDown If e.Modifiers = Keys.Control And e.KeyCode = Keys.Return Then btnSenden.PerformClick() e.Handled = True End If End Sub Private Sub TimerNEW_MESSAGE_Tick(sender As Object, e As EventArgs) Handles TimerNEW_MESSAGE.Tick If CHAT IsNot Nothing And VERAG_PROG_ALLGEMEIN.cMessenger.NEW_MESSGE = True Then VERAG_PROG_ALLGEMEIN.cMessenger.NEW_MESSGE = False ' MsgBox("asd") REFRESH_CHAT() End If End Sub Private Sub Timer_REFRESH_Tick(sender As Object, e As EventArgs) Handles Timer_REFRESH.Tick loaded = False REFRESH_CHAT() Dim dgv_ChatID = If(dgvChats.SelectedRows.Count > 0, dgvChats.SelectedRows(0).Cells("chat_id").Value, -1) 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 If Not VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_ChatBenutzer Then Return False 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=" & IIf(Not cbxInaktiveChats.Checked, 1, 0) & " ORDER BY chat_lastMsg DESC", "ADMIN") Dim Dt_Current As DataTable = dgvChats.DataSource If Dt_New Is Nothing Then Return True If Dt_Current Is Nothing Then Return True 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 VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) 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) End Sub Private Sub frmMessenger_Shown(sender As Object, e As EventArgs) Handles Me.Shown dgvChats.ClearSelection() If AvisoId <= 0 Then SplitContainer1.Enabled = False Else RELOAD_CHAT() If Me.Height > Screen.FromRectangle(Me.Bounds).WorkingArea.Size.Height Then Me.Height = Screen.FromRectangle(Me.Bounds).WorkingArea.Size.Height Top = 0 End If loaded = True End Sub Private Sub cbxInaktiveChats_CheckedChanged(sender As Object, e As EventArgs) Handles cbxInaktiveChats.CheckedChanged intiDGVChats() If sender.checked Then ChatDeaktivierenToolStripMenuItem.Text = "Chat aktivieren" Else ChatDeaktivierenToolStripMenuItem.Text = "Chat deaktivieren" End If End Sub Private Sub ChatDeaktivierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ChatDeaktivierenToolStripMenuItem.Click If dgvChats.SelectedRows.Count > 0 Then If vbYes = MsgBox("Möchten Sie diesen Chat wirklich deaktivieren?", vbYesNoCancel) Then CHAT = New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_Chat(dgvChats.SelectedRows(0).Cells("chat_id").Value, "100") SplitContainer1.Enabled = True CHAT.chat_aktiv = Not CHAT.chat_aktiv CHAT.SAVE(False) intiDGVChats() End If 'RELOAD_CHAT() End If End Sub 'Private Sub dgvChats_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles dgvChats.CellValueChanged ' Try ' If dgvChats.Columns.Count > 0 Then ' If e.ColumnIndex = dgvChats.Columns("ungelesen").Index Then ' If dgvChats.Rows(e.RowIndex).Cells("ungelesen").Value <> "" Then ' dgvChats.Rows(e.RowIndex).Cells("ungelesen").Style.BackColor = Color.Red ' End If ' 'For Each r As DataGridViewRow In .Rows ' ' If r.Cells("chat_id").Value = dgv_ChatID Then ' ' dgvChats.ClearSelection() ' ' r.Selected = True : Exit For ' ' End If ' ' If r.Cells("ungelesen").Value <> "" Then ' ' r.Cells("ungelesen").Style.BackColor = Color.Red ' ' End If ' 'Next ' End If ' End If ' Catch ex As Exception ' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) ' End Try 'End Sub Private Sub dgvChats_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles dgvChats.CellPainting Try If dgvChats.Columns.Count > 0 Then If e.ColumnIndex = dgvChats.Columns("ungelesen").Index Then If dgvChats.Rows(e.RowIndex).Cells("ungelesen").Value <> "" Then dgvChats.Rows(e.RowIndex).Cells("ungelesen").Style.BackColor = Color.Red End If 'For Each r As DataGridViewRow In .Rows ' If r.Cells("chat_id").Value = dgv_ChatID Then ' dgvChats.ClearSelection() ' r.Selected = True : Exit For ' End If ' If r.Cells("ungelesen").Value <> "" Then ' r.Cells("ungelesen").Style.BackColor = Color.Red ' End If 'Next End If End If Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btnSendAtt.Click If Not CHAT.chat_aktiv Then MsgBox("Chat inaktiv!") : Exit Sub If CHAT IsNot Nothing Then Dim fd As New OpenFileDialog ' fd.Filter = "Excel Dateien|*.xls;*.xlsx" fd.RestoreDirectory = True fd.Title = "Datei auswählen" ' fd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) 'fd.Filter = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG" 'fd.FilterIndex = 2 If fd.ShowDialog() = System.Windows.Forms.DialogResult.OK And fd.FileName <> "" Then saveFileAtt(fd.FileName) 'Dim fileName = New IO.FileInfo(fd.FileName).Name 'Dim docId = -1 'If saveToDS(fileName, fd.FileName, docId) Then ' Dim MSG As New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages(CHAT.chat_id, VERAG_PROG_ALLGEMEIN.cAllgemein.USRID) ' MSG.chatMg_type = "ATTACHMENT" ' MSG.chatMg_text = fileName ' MSG.chatMg_anhang_docId = docId ' MSG.chatMg_maName = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.Fullname ' MSG.chatMg_maFirma = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA ' If MSG.SAVE(True, CHAT.CHAT_MEMBERS) Then ' SEND_TOKEN_NEW_MESSAGE() ' ' CHAT.CHAT_MESSAGES.Add(MSG) ' SET_ALL_READ() ' REFRESH_CHAT() ' rtbChatMessage.Text = "" ' rtbChatMessage.Focus() ' End If ' End If End If End If End Sub Sub saveFileAtt(filePath, Optional reloadChat = True) Dim fileName = New IO.FileInfo(filePath).Name Dim docId = -1 If saveToDS(fileName, filePath, docId) Then Dim MSG As New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages(CHAT.chat_id, VERAG_PROG_ALLGEMEIN.cAllgemein.USRID) MSG.chatMg_type = "ATTACHMENT" MSG.chatMg_text = fileName MSG.chatMg_anhang_docId = docId MSG.chatMg_maName = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.Fullname MSG.chatMg_maFirma = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA If MSG.SAVE(True, CHAT.CHAT_MEMBERS) Then If reloadChat Then SEND_TOKEN_NEW_MESSAGE() ' CHAT.CHAT_MESSAGES.Add(MSG) SET_ALL_READ() REFRESH_CHAT() rtbChatMessage.Text = "" rtbChatMessage.Focus() End If End If End If End Sub Sub saveEmoji(filePath) ' Dim fileName = New IO.FileInfo(filePath).Name 'Dim docId = -1 'If saveToDS(fileName, filePath, docId) Then Dim MSG As New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_ChatMessages(CHAT.chat_id, VERAG_PROG_ALLGEMEIN.cAllgemein.USRID) MSG.chatMg_type = "EMOJI" MSG.chatMg_text = filePath 'MSG.chatMg_anhang_docId = docId MSG.chatMg_maName = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.Fullname MSG.chatMg_maFirma = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA If MSG.SAVE(True, CHAT.CHAT_MEMBERS) Then SEND_TOKEN_NEW_MESSAGE() ' CHAT.CHAT_MESSAGES.Add(MSG) SET_ALL_READ() REFRESH_CHAT() 'rtbChatMessage.Text = filePath 'rtbChatMessage.Focus() End If ' End If End Sub Public Shared Function saveToDS(fileName, sourcePath, Optional ByRef da_id = -1) As Boolean Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "CHAT_ANHAENGE", Now.ToString("ddMMyy_HHmmss.ffff"), "", "", fileName, -1, False) If Not DS.uploadDataToDATENSERVER(sourcePath) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False If DS.da_id <= 0 Then MsgBox("Keine DocId!") : Return False da_id = DS.da_id ' destPath = DS.GET_TOP1_PATH Return True End Function Private Sub dgvChats_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvChats.CellMouseClick If e.Button = MouseButtons.Right Then If e.RowIndex >= 0 Then If dgvChats.Rows.Count > 0 Then 'Dim chatId = dgvChats.Rows(e.RowIndex).Cells("chat_id").Value 'VERAG_PROG_ALLGEMEIN.cMessenger.GEN_NEW_CHAT() dgvChats.ClearSelection() SplitContainer1.Enabled = False CHAT = Nothing End If dgvChats.Rows(e.RowIndex).Selected = True cntxt.Show(Cursor.Position) End If End If End Sub Private Sub Form1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles rtbChatMessage.DragEnter ', txt.DragEnter, Me.DragEnter, picPDF.DragEnter e.Effect = DragDropEffects.All End Sub Private Sub txt_Click(sender As Object, e As DragEventArgs) Handles rtbChatMessage.DragDrop ', txt.DragDrop, Me.DragDrop, picPDF.DragDrop Try If e.Data.GetDataPresent("FileDrop", True) = True Then Dim FileList As String() = CType(e.Data.GetData("FileDrop"), Object) 'Hier wird der Variable "Wert" das übergeben, was wir auf die Form gezogen haben. Bei einer Datei wäre es dann der Pfad der Datei. If FileList.Count > 0 Then 'If Not _MULTI_FILES And FileList.Count > 1 Then ' MsgBox("Es können nicht mehrere Dateien hochgeladen werden!") ' Exit Sub 'End If For Each W In FileList If Not W.ToUpper.EndsWith(".EXE") Then saveFileAtt(W) End If Next End If End If Catch ex As Exception MsgBox(" FEHLER: DragDrop!" & ex.Message & ex.StackTrace) End Try End Sub Private Sub pic_Click(sender As Object, e As EventArgs) Handles pic.Click Dim codewort = InputBox("Whoami?", "¿").ToLower If codewort = "easteregg" Or codewort = "osterhase" Then cMitarbeiter.UPDATE_EASTEREGG(True) cAllgemein.MITARBEITER.LOAD(cAllgemein.USRID) alloweasteregg = True initEmojis() MsgBox("Hurra! Neue Emojis freigeschaltet!") End If End Sub Private Sub pic_MouseHover(sender As Object, e As EventArgs) Handles pic.MouseEnter pic.BackgroundImage = My.Resources.easteregg End Sub Private Sub pic_MouseLeave(sender As Object, e As EventArgs) Handles pic.MouseLeave pic.BackgroundImage = Nothing End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles btnTeilnehmer.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 MyTextBox1_TextChanged(sender As Object, e As EventArgs) Handles MyTextBox1.Leave intiDGVChats(, False, True) End Sub Private Sub MyTextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyTextBox1.KeyUp If e.KeyCode = Keys.Return Or MyTextBox1.Text = "" Then intiDGVChats(, False, True) End If End Sub Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click MyTextBox1.Text = "" intiDGVChats(, False, True) End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click If CHAT IsNot Nothing Then Dim dateTmp = InputBox("Bitte geben Sie das Datum ein, ab dem der Chat dargestellt werden soll:",, Now.AddMonths(-1).ToShortDateString) If IsDate(dateTmp) Then topMessagesDateHistory = CDate(dateTmp) CHAT = New VERAG_PROG_ALLGEMEIN.cMessenger.cMessenger_Chat(CHAT.chat_id, "200", topMessagesDateHistory) SplitContainer1.Enabled = True RELOAD_CHAT() Else MsgBox("Datum ungültig!") End If End If End Sub 'Private Sub rtbChatMessage_TextChanged(sender As Object, e As EventArgs) Handles rtbChatMessage.TextChanged ' FlowLayoutPanel.Enabled = (rtbChatMessage.Text = "") 'End Sub Private Sub MyTextBox2_TextChanged(sender As Object, e As EventArgs) Handles MyTextBox2.Leave intiDGVSonstige(, False, True) End Sub Private Sub MyTextBox2_KeyDown(sender As Object, e As KeyEventArgs) Handles MyTextBox2.KeyUp If e.KeyCode = Keys.Return Or MyTextBox2.Text = "" Then intiDGVSonstige(, False, True) End If End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click Dim f As New frmMessenger_SonstigeNEW() f.ShowDialog(Me) End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click If Not CHAT.chat_aktiv Then MsgBox("Chat inaktiv!") : Exit Sub If CHAT IsNot Nothing Then Dim data As IDataObject = Clipboard.GetDataObject If True Then 'data.GetDataPresent(DataFormats.FileDrop) Then Dim added = False If My.Computer.Clipboard.ContainsImage() Then Dim grabpicture As System.Drawing.Image grabpicture = My.Computer.Clipboard.GetImage() Dim imagePath = IO.Path.GetTempPath & "\Screenshot_" & Now.ToString("ddMMyyyy_HHmmss") & ".jpg" While IO.File.Exists(imagePath) imagePath = IO.Path.GetTempPath & "\Screenshot_" & Now.ToString("ddMMyyyy_HHmmss") & ".jpg" End While grabpicture.Save(imagePath) saveFileAtt(imagePath, False) added = True Else For Each s As String In My.Computer.Clipboard.GetFileDropList() 'GetData(DataFormats.) 'data.GetData(DataFormats.FileDrop) 'DataFormats.FileDrop) ' Dim F_listItem As String = Path.Combine("c:\mynewpath", Path.GetFileName(s)) ' File.Copy(s, newFile) ' MsgBox(s) If IO.File.Exists(s) Then saveFileAtt(s, False) added = True End If Next End If If added Then 'CHAT neu laden! SEND_TOKEN_NEW_MESSAGE() SET_ALL_READ() REFRESH_CHAT() rtbChatMessage.Text = "" rtbChatMessage.Focus() End If End If End If End Sub Public Shared Function getFileTypeValid(extension, ByRef Typ) As Boolean Select Case extension.ToString.Replace(".", "").ToUpper Case "PDF" : Typ = "PDF" Case "XLS", "XLM", "XLSM", "XLSX", "CSV" : Typ = "EXCEL" Case "DOC", "DOCX" : Typ = "WORD" Case "TXT" : Typ = "TEXT" Case "JPEG", "JPG", "GIF", "TFF" : Typ = "BILD" Case "EXE" : MsgBox("Aviso-Anhänge: Ungültiges Datei-Format!") : Return False Case Else : Typ = "SONSTIGES" End Select Return True End Function Private Sub Panel7_Paint(sender As Object, e As PaintEventArgs) Handles pnlTeilnehmer.Paint End Sub Private Sub Label4_Click(sender As Object, e As EventArgs) Handles Label4.Click Dim f As New frmMessenger_Members(CHAT) f.ShowDialog(Me) initDGVMembers() End Sub Sub initDGVMembers() With dgvChatMembers .Rows.Clear() For Each MB In CHAT.CHAT_MEMBERS Dim MA As New cMitarbeiter(MB.chatMb_maId) .Rows.Add({MB.chatMb_maId, MA.Fullname, If(MA.mit_firma = "ALL", MA.mit_FirmaHaupt, MA.mit_firma), VERAG_PROG_ALLGEMEIN.cSession.IS_ONLINE_Status((MA.mit_id))}) Next For Each row As DataGridViewRow In .Rows Select Case row.Cells("clmnStatus").Value Case "AFK" : row.Cells("clmnStatus").Style.BackColor = Color.Orange : row.Cells("clmnStatus").Style.ForeColor = Color.Orange Case "ONLINE" : row.Cells("clmnStatus").Style.BackColor = Color.Green : row.Cells("clmnStatus").Style.ForeColor = Color.Green Case "OFFLINE" : row.Cells("clmnStatus").Style.BackColor = Color.Red : row.Cells("clmnStatus").Style.ForeColor = Color.Red Case Else : row.Cells("clmnStatus").Style.BackColor = Color.White End Select Next .ClearSelection() End With End Sub 'Function checkOnlineOfflineMA(mit_id) ' Try ' Dim sess_IdOnline = SQL.getValueTxtBySql("SELECT sess_Id 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 & "' ORDER BY sess_lastActivity DESC,sess_lastRm DESC", "ADMIN",,, -1) ' If sess_IdOnline > 0 Then ' Dim SESSION As New cSession(sess_IdOnline) ' If DateDiff(DateInterval.Minute, If(SESSION.sess_lastActivity, Now), Now) > 10 Then ' Return "AFK" ' Else ' Return "ONLINE" ' End If ' Else ' Return "OFFLINE" ' End If ' Catch ex As Exception ' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) ' End Try ' Return "" 'End Function Private Sub Button7_Click(sender As Object, e As EventArgs) Handles btnMemberAdd.Click Dim f As New frmMessenger_NeuerChat(CHAT) f.ShowDialog() initDGVMembers() End Sub Private Sub Button5_Click_1(sender As Object, e As EventArgs) Handles btnMemberDel.Click If dgvChatMembers.SelectedRows.Count >= 1 Then If vbYes = MsgBox("Teilnehmer wirklich entfernen?", vbYesNoCancel) Then Dim ol As New List(Of Object) For Each r As DataGridViewRow In dgvChatMembers.SelectedRows If r.Cells("clmnMaId").Value <> VERAG_PROG_ALLGEMEIN.cAllgemein.USRID Then For Each MB In CHAT.CHAT_MEMBERS If r.Cells("clmnMaId").Value = MB.chatMb_maId Then ol.Add(MB) End If Next End If Next For Each o In ol CHAT.CHAT_MEMBERS.Remove(o) If CHAT.SAVE_MEMBERS() Then initDGVMembers() End If Next End If End If End Sub Sub initChat_ART(CHAT_ART) loaded = False For Each c In FlowLayoutPanel1.Controls DirectCast(c, usrCntlChat_Art_Btn).setInAktiv() Next MyFlowLayoutPanel1.Controls.Clear() CHAT = Nothing topMessagesDateHistory = Nothing ' zurücksetzen des HistoryDate Me.toggle_CHAT_ART = CHAT_ART intiDGVChats() loaded = True End Sub Private Sub UsrCntlChat_Art_Btn1_Load(sender As Object) Handles UsrCntlChat_Art_Btn_MACHAT.CLICKED initChat_ART("CHAT") sender.setAktiv() End Sub Private Sub UsrCntlChat_Art_Btn2_Load(sender As Object) Handles UsrCntlChat_Art_Btn_LKWCHAT.CLICKED initChat_ART("LKW_CHAT") sender.setAktiv() End Sub Private Sub UsrCntlChat_Art_snd_Load(sender As Object) Handles UsrCntlChat_Art_Btn_SNDCHAT.CLICKED initChat_ART("SND_CHAT") sender.setAktiv() End Sub Private Sub toolChatReminder_Click(sender As Object, e As EventArgs) Handles toolChatReminder.Click 'If dgvChats.SelectedRows.Count > 0 Then ' 'Prüfen, ob bereits ein Reminder aktiv ist.... ' Dim RemidnerMsgId As Integer = SQL.getValueTxtBySql("SELECT TOP (1) [chatMg_id] FROM tblMessenger_Chat INNER JOIN tblMessenger_ChatMessages ON chat_id=chatMg_chatId INNER JOIN [tblMessenger_ChatMessageStatus] on chatmg_id=[chatMgSt_chatMsgId] where [chatMgSt_art]='REMINDER' AND [chatMgSt_MaId]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & "' AND [chatMgSt_flag]=0 and chat_id='" & dgvChats.SelectedRows(0).Cells("chat_id").Value & "'", "ADMIN",,, -1) ' If RemidnerMsgId > 0 Then '...wenn JA, Reminder zurücksetzen ' ' SQL.doSQL("UPDATE [tblMessenger_ChatMessageStatus] set [chatMgSt_flag]=1, [chatMgSt_gelesen]=1 WHERE [chatMgSt_chatMsgId] = '" & RemidnerMsgId & "' AND [chatMgSt_art]='REMINDER' AND [chatMgSt_MaId]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & "'", "ADMIN") ' SQL.doSQL("DELETE [tblMessenger_ChatMessageStatus] WHERE [chatMgSt_chatMsgId] = '" & RemidnerMsgId & "' AND [chatMgSt_art]='REMINDER' AND [chatMgSt_MaId]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRID & "'", "ADMIN") ' intiDGVChats() ' Else '...wenn NEIN, Reminder setzen ' Dim MsgId As Integer = SQL.getValueTxtBySql("SELECT TOP (1) [chatMg_id] FROM [tblMessenger_ChatMessages] where chatMg_chatid='" & dgvChats.SelectedRows(0).Cells("chat_id").Value & "' order by [chatMg_datetime] desc", "ADMIN",,, -1) ' If MsgId > 0 Then ' Dim STAT As New cMessenger_ChatMessageStatus(MsgId, VERAG_PROG_ALLGEMEIN.cAllgemein.USRID, False, "REMINDER", False) ' STAT.SAVE() ' intiDGVChats() ' End If ' End If 'End If End Sub End Class