Mehrere Module (`ChatAddUser`, `ChatControl`, `ChatNewConv`) und deren zugehörige Dateien wurden vollständig aus dem Projekt entfernt. Dies umfasst Designer-, Ressourcen- und Projektdateien sowie Backup-Dateien. Zusätzlich wurden nicht mehr benötigte Bilder, Lizenzdateien (`licenses.licx`), Konfigurationsdateien (`app.config`, `packages.config`) und generierte Dateien entfernt. Die Abhängigkeiten in `App.config` wurden aktualisiert, und neue Bibliotheken wie `System.Threading.Tasks.Extensions` wurden hinzugefügt. Eine Methode in `Annotations.vb` wurde angepasst, um Änderungen in der zugrunde liegenden API zu berücksichtigen. Diese Änderungen sind Teil einer umfassenden Bereinigung und Modernisierung des Projekts.
138 lines
4.3 KiB
VB.net
138 lines
4.3 KiB
VB.net
Imports DigitalData.Modules.Base
|
|
Imports DigitalData.Modules.Logging
|
|
Imports GdPicture14
|
|
|
|
Public Class Search
|
|
Inherits BaseClass
|
|
|
|
Public Property SearchQuery As String = ""
|
|
Public Property CaseSensitive As Boolean = False
|
|
Public Property WholeWords As Boolean = False
|
|
|
|
Private _Viewer As GdViewer = Nothing
|
|
Private _AnnotationManager As New AnnotationManager()
|
|
|
|
Private _CurrentPage As Integer = 0
|
|
Private _CurrentQuery As String = ""
|
|
Private _CurrentOccurrenceCount = 0
|
|
Private _CurrentSelectedOccurrence = 0
|
|
|
|
Public Sub New(pLogConfig As LogConfig, pGDViewer As GdViewer)
|
|
MyBase.New(pLogConfig)
|
|
_Viewer = pGDViewer
|
|
_AnnotationManager.InitFromGdViewer(pGDViewer)
|
|
|
|
AddHandler _Viewer.PageDisplayed, AddressOf Viewer_PageDisplayed
|
|
End Sub
|
|
|
|
Public Sub SearchAll(pQuery As String)
|
|
' Exit, if query has not changed
|
|
If _CurrentQuery = pQuery Then
|
|
Exit Sub
|
|
End If
|
|
|
|
' Save query
|
|
_CurrentQuery = pQuery
|
|
|
|
' Reset previous highlights, then search for the new query
|
|
_Viewer.RemoveAllRegions()
|
|
DoSearchText()
|
|
|
|
' Select the next occurrence
|
|
NextHighlight()
|
|
End Sub
|
|
|
|
Public Sub NextHighlight()
|
|
' This also applies when the page has *NO* occurrences, so 0 = 0
|
|
If _CurrentOccurrenceCount = _CurrentSelectedOccurrence Then
|
|
Dim oCount = 0
|
|
' If there are no occurrences on the current page, got to the *next page*
|
|
While _CurrentOccurrenceCount = _CurrentSelectedOccurrence And _CurrentPage <= _Viewer.PageCount
|
|
oCount += 1
|
|
If _CurrentPage = _Viewer.PageCount Then
|
|
_Viewer.DisplayFirstPage()
|
|
Else
|
|
_Viewer.DisplayNextPage()
|
|
End If
|
|
If oCount > 333 Then
|
|
Exit While
|
|
End If
|
|
End While
|
|
|
|
' Safeguard against selecting a non-existing occurrence on the last page
|
|
If _CurrentOccurrenceCount > 0 Then
|
|
SelectHighlight(1)
|
|
Else
|
|
' Disable next button
|
|
End If
|
|
Else
|
|
' Otherwise just select the next occurrence
|
|
SelectHighlight(_CurrentSelectedOccurrence + 1)
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub PrevHighlight()
|
|
If _CurrentOccurrenceCount = 0 Or _CurrentSelectedOccurrence = 1 Then
|
|
Dim oCount = 0
|
|
While (_CurrentOccurrenceCount = 0 Or _CurrentSelectedOccurrence = 1) And _CurrentPage >= 1
|
|
oCount += 1
|
|
If _CurrentPage = 1 Then
|
|
_Viewer.DisplayLastPage()
|
|
Else
|
|
_Viewer.DisplayPreviousPage()
|
|
End If
|
|
If oCount > 333 Then
|
|
Exit While
|
|
End If
|
|
End While
|
|
|
|
If _CurrentOccurrenceCount > 0 Then
|
|
SelectHighlight(_CurrentOccurrenceCount)
|
|
End If
|
|
|
|
Else
|
|
' Otherwise just select the previous occurrence
|
|
SelectHighlight(_CurrentSelectedOccurrence - 1)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SelectHighlight(pOccurrence As Integer)
|
|
Dim oFound = _Viewer.SearchText(_CurrentQuery, pOccurrence, CaseSensitive, WholeWords)
|
|
If _Viewer.GetStat() = GdPictureStatus.OK And _Viewer.IsRect() Then
|
|
_Viewer.RectIsEditable = False
|
|
_Viewer.CenterOnRect()
|
|
|
|
_CurrentSelectedOccurrence = pOccurrence
|
|
Else
|
|
_CurrentSelectedOccurrence = 0
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub Viewer_PageDisplayed()
|
|
If _CurrentPage <> _Viewer.CurrentPage Then
|
|
_CurrentPage = _Viewer.CurrentPage
|
|
|
|
If _CurrentQuery.Length > 0 Then
|
|
DoSearchText()
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub DoSearchText()
|
|
|
|
|
|
_Viewer.SearchText(_CurrentQuery, 0, CaseSensitive, WholeWords)
|
|
|
|
Dim oRegionCount = _Viewer.RegionCount()
|
|
For index = 1 To oRegionCount
|
|
Dim oId = _Viewer.GetRegionID(index)
|
|
_Viewer.SetRegionEditable(oId, False)
|
|
Next
|
|
|
|
|
|
_CurrentOccurrenceCount = _Viewer.GetTextOccurrenceCount(_CurrentPage, _CurrentQuery, CaseSensitive, WholeWords)
|
|
_CurrentSelectedOccurrence = 0
|
|
End Sub
|
|
|
|
End Class
|