// SPDX-License-Identifier: GPL-3.0-or-later // Copyright (C) 2026 Dany Thinnes #pragma once #include #include #include "removable.h" #include "xdftool.h" class QAction; class QCloseEvent; class QFileSystemModel; class QLabel; class QLineEdit; class QModelIndex; class QPlainTextEdit; class QPushButton; class QTreeView; class QTreeWidget; class QTreeWidgetItem; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); void loadAdf(const QString &file); protected: void closeEvent(QCloseEvent *e) override; private slots: void openAdf(); void reload(); void chooseLocalDir(); void localUp(); void localActivated(const QModelIndex &idx); void adfActivated(QTreeWidgetItem *item, int column); void adfToPc(); void pcToAdf(); void deleteSelected(); void renameSelected(); void makeDir(); void setToolPath(); void ejectDevice(); void showAbout(); private: bool runBatch(const QList &cmds); void showDir(); QList selectedEntries() const; void setLocalDir(const QString &dir); void updateEjectState(); void updatePathLabel(); void log(const QString &text); bool haveAdf(); XdfTool m_tool; QString m_adf; QString m_cwd; // aktueller Ordner in der ADF ("" = Wurzel) QList m_entries; // kompletter Inhalt der ADF QSet m_known; // alle Pfade (kleingeschrieben) QSet m_dirs; // alle Ordnerpfade (kleingeschrieben) QString m_localDir; RemovableInfo m_removable; QLabel *m_adfLabel = nullptr; QLabel *m_cwdLabel = nullptr; QPushButton *m_ejectBtn = nullptr; QAction *m_ejectAct = nullptr; QTreeWidget *m_adfTree = nullptr; QLineEdit *m_localEdit = nullptr; QTreeView *m_localView = nullptr; QFileSystemModel *m_localModel = nullptr; QPlainTextEdit *m_log = nullptr; };