jj 18.10 add ClassInactivity & ClassInactivityFilter
This commit is contained in:
45
app/DD-Record-Organizer/ClassInactivity.vb
Normal file
45
app/DD-Record-Organizer/ClassInactivity.vb
Normal file
@@ -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
|
||||
29
app/DD-Record-Organizer/ClassInactivityFilter.vb
Normal file
29
app/DD-Record-Organizer/ClassInactivityFilter.vb
Normal file
@@ -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
|
||||
@@ -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
|
||||
|
||||
17
app/DD-Record-Organizer/ClassUser.vb
Normal file
17
app/DD-Record-Organizer/ClassUser.vb
Normal file
@@ -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
|
||||
@@ -253,6 +253,7 @@
|
||||
<Compile Include="ClassFileResult.vb" />
|
||||
<Compile Include="ClassFolderWatcher.vb" />
|
||||
<Compile Include="ClassGridFormatter.vb" />
|
||||
<Compile Include="ClassInactivity.vb" />
|
||||
<Compile Include="ClassJumpRecord.vb" />
|
||||
<Compile Include="ClassLicence.vb" />
|
||||
<Compile Include="ClassAsyncSQL.vb" />
|
||||
@@ -267,6 +268,7 @@
|
||||
<Compile Include="ClassSAP.vb" />
|
||||
<Compile Include="ClassDOC_SEARCH.vb" />
|
||||
<Compile Include="ClassUpdate.vb" />
|
||||
<Compile Include="ClassUser.vb" />
|
||||
<Compile Include="ClassWDRights.vb" />
|
||||
<Compile Include="ClassWindreamDocGrid.vb" />
|
||||
<Compile Include="ClassWorkflow.vb" />
|
||||
@@ -441,6 +443,7 @@
|
||||
<Compile Include="ClassSnapPanel.vb">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ClassInactivityFilter.vb" />
|
||||
<Compile Include="Strings\ControlProperties.en.Designer.vb">
|
||||
<DependentUpon>ControlProperties.en.resx</DependentUpon>
|
||||
<AutoGen>True</AutoGen>
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user