Set m_Event = New clsEvent
Application.AddEventsConsumer m_Event

Class clsEvent
    Sub Callback_AfterFlowFactStart()
        Call DoCleanup()
    End Sub
End Class

Sub DoCleanup()
    Dim fso, folder, folders, file, files, content, lines, i, newContent, inList, removed, log
    Dim line, sectionName, subfolder, guiFile, processed, totalRemoved
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    folder = Application.Folder & "\profiles"
    
    If fso.FileExists(folder & "\F_Popup_Clean.log") Then 
        fso.DeleteFile folder & "\F_Popup_Clean.log"
    End If
    Set log = fso.CreateTextFile(folder & "\F_Popup_Clean.log", True)
    
    log.WriteLine Now & " - F_Popup_Clean gestartet"
    
    processed = 0
    totalRemoved = 0
    
    Set folders = fso.GetFolder(folder).SubFolders
    For Each subfolder In folders
        If Left(subfolder.Name, 1) <> "_" Then
            guiFile = subfolder.Path & "\GUI.ini"
            If fso.FileExists(guiFile) Then
                log.WriteLine Now & " - " & subfolder.Name & "\GUI.ini"
                
                Set file = fso.OpenTextFile(guiFile, 1)
                content = file.ReadAll
                file.Close
                
                ' Normalisiere alle Zeilenumbrüche zu vbCrLf
                content = Replace(content, vbCrLf, vbLf)  ' Erst alle CrLf zu Lf
                content = Replace(content, vbCr, vbLf)    ' Dann alle Cr zu Lf
                content = Replace(content, vbLf, vbCrLf)  ' Dann alle Lf zu CrLf
                
                lines = Split(content, vbCrLf)
                newContent = ""
                inList = False
                removed = 0
                
                For i = 0 To UBound(lines)
                    line = Trim(lines(i))
                    
                    ' Section-Überschrift erkannt
                    If Len(line) > 2 And Left(line, 1) = "[" And Right(line, 1) = "]" Then
                        ' Extrahiere Section-Namen ohne Klammern und trimme
                        sectionName = Trim(Mid(line, 2, Len(line) - 2))
                        
                        If UCase(sectionName) = "LIST" Then
                            inList = True
                            log.WriteLine Now & " - [LIST] Abschnitt gefunden"
                        Else
                            If inList Then
                                log.WriteLine Now & " - [LIST] Abschnitt beendet bei [" & sectionName & "]"
                            End If
                            inList = False
                        End If
                    End If
                    
                    ' Prüfe ob F_POPUP Zeile im List-Abschnitt
                    If inList And Len(line) >= 7 And Left(UCase(line), 7) = "F_POPUP" Then
                        log.WriteLine Now & " - Entfernt: " & line
                        removed = removed + 1
                    Else
                        If newContent <> "" Then 
                            newContent = newContent & vbCrLf
                        End If
                        newContent = newContent & lines(i)
                    End If
                Next
                
                If removed > 0 Then
                    Set file = fso.CreateTextFile(guiFile, True)
                    file.Write newContent
                    file.Close
                    totalRemoved = totalRemoved + removed
                    log.WriteLine Now & " - " & removed & " Einträge aus " & subfolder.Name & "\GUI.ini entfernt"
                Else
                    log.WriteLine Now & " - Keine F_POPUP Einträge in [LIST] gefunden"
                End If
                
                processed = processed + 1
            End If
        End If
    Next
    
    log.WriteLine Now & " - Fertig! " & processed & " Dateien, " & totalRemoved & " F_POPUP entfernt"
    log.Close
End Sub