diff --git a/app/DD-Record-Organizer/ClassInactivity.vb b/app/DD-Record-Organizer/ClassInactivity.vb
new file mode 100644
index 0000000..e56d803
--- /dev/null
+++ b/app/DD-Record-Organizer/ClassInactivity.vb
@@ -0,0 +1,45 @@
+Public Class ClassInactivity
+ Private _timer As Timers.Timer
+ Private _interval As Integer
+
+ Public Sub New(intervalMinutes As Integer)
+ _interval = intervalMinutes * 1000 * 60
+ _timer = New Timers.Timer(_interval)
+ _timer.AutoReset = False
+ _timer.Enabled = True
+ AddHandler _timer.Elapsed, AddressOf OnTick
+ End Sub
+
+ Public Sub Start()
+ If _interval > 0 Then
+ _timer.Enabled = True
+ End If
+ End Sub
+
+ Public Sub Reset()
+ _timer.Enabled = False
+ _timer.Enabled = True
+ End Sub
+
+ Public Sub SetInterval(newInterval As Integer)
+ _timer.Interval = newInterval
+ _interval = newInterval
+ End Sub
+
+ Private Sub OnTick()
+ ' Der User wird ausgeloggt
+ ClassUser.LogoutUser()
+
+ Dim result As DialogResult = MessageBox.Show("Sie wurden aufgrund von Inaktivität ausgeloggt. Möchten Sie sich wieder anmelden?", "Inaktivität", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
+ If result = DialogResult.Yes Then
+ ClassInit.InitUserLogin()
+ MsgBox("Sie wurden wieder eingeloggt")
+ Else
+ MsgBox("Die Anwendung wird beendet")
+ Application.Exit()
+ End If
+
+ End Sub
+
+
+End Class
diff --git a/app/DD-Record-Organizer/ClassInactivityFilter.vb b/app/DD-Record-Organizer/ClassInactivityFilter.vb
new file mode 100644
index 0000000..719d4d4
--- /dev/null
+++ b/app/DD-Record-Organizer/ClassInactivityFilter.vb
@@ -0,0 +1,29 @@
+Public Class ClassInactivityFilter
+ Implements IMessageFilter
+
+ Private _form As frmMain
+ Private _last_check As New DateTime()
+
+ Public Sub New(form As frmMain)
+ _form = form
+ End Sub
+
+ Public Function PreFilterMessage(ByRef m As Message) As Boolean Implements IMessageFilter.PreFilterMessage
+ ' PrefilterMessage empfängt ALLE Events ab, die zur Laufzeit passieren
+ ' Überprüft ob die abgefangenen Events zu Aktionen mit Maus oder Keyboard gehören
+ Dim mouse As Boolean = (m.Msg >= &H200 And m.Msg <= &H20D) Or (m.Msg >= &HA0 And m.Msg <= &HAD)
+ Dim kbd As Boolean = (m.Msg >= &H100 And m.Msg <= &H109)
+
+ ' Errechnet die Zeit-Differenz zwischen Jetzt und dem letzten Zurücksetzen des Timers
+ Dim diffMs = (DateTime.Now.Ticks - _last_check.Ticks) / 10000
+
+ ' Timer wird nur zurückgesetzt, wenn Maus/Keyboard Events passieren
+ ' und wenn das letzte Zurücksetzen mind. 500ms in der Vergangenheit liegt
+ If (mouse Or kbd) And diffMs > 500 Then
+ _last_check = DateTime.Now
+ _form.TIMER_INACTIVITY.Reset()
+ End If
+
+ Return False
+ End Function
+End Class
diff --git a/app/DD-Record-Organizer/ClassLicence.vb b/app/DD-Record-Organizer/ClassLicence.vb
index 48ab40b..2ceb499 100644
--- a/app/DD-Record-Organizer/ClassLicence.vb
+++ b/app/DD-Record-Organizer/ClassLicence.vb
@@ -50,7 +50,7 @@ Public Class ClassLicence
If LICENSE_FILE_DATE < CDate(todayDate) Then
- MsgBox("Your license evaluated!" & vbNewLine & "Last valid date: " & split(1) & vbNewLine & "Please contact Digital Data.", MsgBoxStyle.Exclamation)
+ MsgBox("Your license expired!" & vbNewLine & "Last valid date: " & split(1) & vbNewLine & "Please contact Digital Data.", MsgBoxStyle.Exclamation)
LICENSE_EXPIRED = True
LICENSE_COUNT = 0
End If
diff --git a/app/DD-Record-Organizer/ClassUser.vb b/app/DD-Record-Organizer/ClassUser.vb
new file mode 100644
index 0000000..11f0413
--- /dev/null
+++ b/app/DD-Record-Organizer/ClassUser.vb
@@ -0,0 +1,17 @@
+Public Class ClassUser
+
+ Public Shared Sub LogoutUser()
+ Try
+ Dim SQL
+
+ SQL = $"UPDATE TBDD_USER SET LOGGED_IN = {0}, LOGGED_WHERE = '' WHERE LOWER(USERNAME) = LOWER('{USER_USERNAME}')"
+ ClassDatabase.Execute_non_Query(sql)
+
+ sql = $"DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = {USER_GUID} AND MODULE = 'Record-Organizer'"
+ ClassDatabase.Execute_non_Query(sql)
+ Catch ex As Exception
+ ClassLogger.Add("Error while logging out user: " & ex.Message)
+ End Try
+ End Sub
+
+End Class
diff --git a/app/DD-Record-Organizer/DD-Record-Organizer.vbproj b/app/DD-Record-Organizer/DD-Record-Organizer.vbproj
index 0fc8814..f7ccb23 100644
--- a/app/DD-Record-Organizer/DD-Record-Organizer.vbproj
+++ b/app/DD-Record-Organizer/DD-Record-Organizer.vbproj
@@ -253,6 +253,7 @@
+
@@ -267,6 +268,7 @@
+
@@ -441,6 +443,7 @@
Component
+
ControlProperties.en.resx
True
diff --git a/app/DD-Record-Organizer/frmMain.vb b/app/DD-Record-Organizer/frmMain.vb
index c84e5fc..bdbac2f 100644
--- a/app/DD-Record-Organizer/frmMain.vb
+++ b/app/DD-Record-Organizer/frmMain.vb
@@ -11,10 +11,11 @@ Imports System.Net.Sockets
Imports DD_LIB_Standards
Public Class frmMain
-
Dim strIPAddress As String
+
Public Shared TIMER_SCAN As New System.Windows.Forms.Timer
- Public Shared TIMER_INACTIVITY As New System.Windows.Forms.Timer
+ Public TIMER_INACTIVITY As ClassInactivity
+
Private Shared Sub Scan_TickHandler(sender As Object, e As EventArgs)
Try
If ClassFolderWatcher.NEW_FILES = False Then Exit Sub
@@ -89,6 +90,8 @@ Public Class frmMain
LabelLanguage.Caption = "Language: " & USER_LANGUAGE
Load_Connection_Dep_Data()
+
+
'Wenn Argumente übergeben wurden, wird Formular geladen und zu record gesprungen
ClassJumpRecord.ParseArgs()
If Task_Popup_minutes <> 0 Then
@@ -180,13 +183,7 @@ Public Class frmMain
Exit Sub
End If
Try
- Dim sql = "UPDATE TBDD_USER SET LOGGED_IN = @LogInOut, LOGGED_WHERE = '@ANGEMELDETWO' WHERE (LOWER(USERNAME) = LOWER('@user'))"
- sql = sql.Replace("@LogInOut", 0)
- sql = sql.Replace("@ANGEMELDETWO", "''")
- sql = sql.Replace("@user", USER_USERNAME)
- ClassDatabase.Execute_non_Query(sql)
- sql = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & USER_GUID & " AND MODULE = 'Record-Organizer'"
- ClassDatabase.Execute_non_Query(sql)
+ ClassUser.LogoutUser()
ClassWindowLocation.SaveFormLocationSize(Me, 1, CURRENT_SCREEN_ID, "frmMain")
ToolStripManager.SaveSettings(Me)
@@ -602,9 +599,8 @@ Public Class frmMain
End If
Try
If USER_IS_ADMIN = False Or AUTO_LOGOUT_USER > 0 Then
- TIMER_INACTIVITY.Interval = AUTO_LOGOUT_USER
- 'TIMER_INACTIVITY.Enabled = True
- 'AddHandler TIMER_INACTIVITY.Tick, AddressOf Scan_TickHandler
+ TIMER_INACTIVITY = New ClassInactivity(AUTO_LOGOUT_USER)
+ Application.AddMessageFilter(New ClassInactivityFilter(Me))
End If
Catch ex As Exception
ClassHelper.InsertEssential_Log(USER_GUID, "USER_ID", "Unexpected Error in AUOTP_LOGOUT_USER: " & ex.Message)
@@ -824,8 +820,8 @@ Public Class frmMain
cultureInfo.DateTimeFormat.ShortDatePattern = USER_DATE_FORMAT
Thread.CurrentThread.CurrentCulture = cultureInfo
Thread.CurrentThread.CurrentUICulture = cultureInfo
- cultureInfo.DefaultThreadCurrentCulture = cultureInfo
- cultureInfo.DefaultThreadCurrentUICulture = cultureInfo
+ CultureInfo.DefaultThreadCurrentCulture = cultureInfo
+ CultureInfo.DefaultThreadCurrentUICulture = cultureInfo
End If
' Dieser Aufruf ist für den Designer erforderlich.