from PySide6.QtWidgets import QFileDialog, QApplication, QPushButton, QVBoxLayout, QWidget
from PySide6.QtCore import  qVersion
import sys

opt_no_native = False

class FileDialogHelper:
    def __init__(self, dialog):
        self.dialog = dialog
        self.dialog.directoryEntered.connect(self.on_directory_entered)
    
    def on_directory_entered(self, directory):
        self.dialog.dirEntered(directory)

class TestFileDialog(QFileDialog):
    def __init__(self, parent=None):
        super(TestFileDialog, self).__init__(parent)
        self.setWindowTitle("Test File Dialog")
        self.setFileMode(QFileDialog.ExistingFiles)
        if opt_no_native:
            self.setOption(QFileDialog.DontUseNativeDialog, True)
        self.helper = FileDialogHelper(self)

    def dirEntered(self, directory):
        print("dirEntered",directory )
        if directory.endswith("Desktop") or directory.endswith("Windows"):
            print("done()")
            self.done(QFileDialog.Accepted)


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        layout = QVBoxLayout(self)
        self.button = QPushButton("Open File Dialog")
        self.button.clicked.connect(self.show_file_dialog)
        layout.addWidget(self.button)

    def show_file_dialog(self):
        dialog = TestFileDialog(self)
        if dialog.exec() == QFileDialog.Accepted:
            selected_files = dialog.selectedFiles()
            print("Selected files:", selected_files)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    opt_no_native = "-n" in sys.argv
    t = qVersion() + ' '  + app.platformName()
    print(t)
    window = MainWindow()
    window.setWindowTitle(t)
    window.show()
    sys.exit(app.exec())
