git repos / SagoImageBrowser

blame: src/mainwindow.h

normal view · raw

032aa1e1 Poul Sander 2026-02-19 18:55 1
#pragma once
032aa1e1 Poul Sander 2026-02-19 18:55 2
80a9926d Poul Sander 2026-05-19 20:28 3
#include <QByteArray>
032aa1e1 Poul Sander 2026-02-19 18:55 4
#include <QMainWindow>
032aa1e1 Poul Sander 2026-02-19 18:55 5
032aa1e1 Poul Sander 2026-02-19 18:55 6
class QTreeView;
032aa1e1 Poul Sander 2026-02-19 18:55 7
class QListView;
032aa1e1 Poul Sander 2026-02-19 18:55 8
class QLabel;
61136b77 Poul Sander 2026-02-20 22:45 9
class QStackedWidget;
ccb726b8 Poul Sander 2026-02-23 22:43 10
class QMenuBar;
cbc7d22b Poul Sander 2026-02-24 19:23 11
class QDockWidget;
40efdfde Poul Sander 2026-05-19 21:24 12
class FsDirModel;
3bee3e3e Poul Sander 2026-03-05 17:07 13
class QListWidget;
53fdab93 Poul Sander 2026-05-18 18:45 14
class QTableWidget;
fd7f51cd Poul Sander 2026-05-22 15:30 15
class QLineEdit;
fd7f51cd Poul Sander 2026-05-22 15:30 16
class QPushButton;
fd7f51cd Poul Sander 2026-05-22 15:30 17
class QCompleter;
237d2c81 Poul Sander 2026-06-06 14:53 18
class QPoint;
032aa1e1 Poul Sander 2026-02-19 18:55 19
class ImageModel;
61136b77 Poul Sander 2026-02-20 22:45 20
class ImageViewWidget;
fd7f51cd Poul Sander 2026-05-22 15:30 21
class PathCompleterModel;
f61bf886 Poul Sander 2026-02-23 19:27 22
class PreferencesDialog;
032aa1e1 Poul Sander 2026-02-19 18:55 23
032aa1e1 Poul Sander 2026-02-19 18:55 24
class MainWindow : public QMainWindow
032aa1e1 Poul Sander 2026-02-19 18:55 25
{
032aa1e1 Poul Sander 2026-02-19 18:55 26
    Q_OBJECT
032aa1e1 Poul Sander 2026-02-19 18:55 27
032aa1e1 Poul Sander 2026-02-19 18:55 28
public:
032aa1e1 Poul Sander 2026-02-19 18:55 29
    explicit MainWindow(QWidget *parent = nullptr);
48607848 Poul Sander 2026-05-19 19:20 30
    void openPath(const QString &path);
032aa1e1 Poul Sander 2026-02-19 18:55 31
032aa1e1 Poul Sander 2026-02-19 18:55 32
private:
032aa1e1 Poul Sander 2026-02-19 18:55 33
    void setupUi();
032aa1e1 Poul Sander 2026-02-19 18:55 34
    void setupConnections();
f61bf886 Poul Sander 2026-02-23 19:27 35
    void setupMenuBar();
f61bf886 Poul Sander 2026-02-23 19:27 36
    void loadPreferences();
f61bf886 Poul Sander 2026-02-23 19:27 37
    void savePreferences();
f61bf886 Poul Sander 2026-02-23 19:27 38
    void onPreferencesTriggered();
7370f1c0 Poul Sander 2026-03-01 15:15 39
    void resetLayoutToDefault();
80a9926d Poul Sander 2026-05-19 20:28 40
    void navigateToFolder(const QByteArray &path);
80a9926d Poul Sander 2026-05-19 20:28 41
    void navigateToFolder(const QString &path);  // convenience: converts via QFile::encodeName
665ac308 Poul Sander 2026-02-23 19:34 42
    void selectPreviousFolderIfExists();
ccb726b8 Poul Sander 2026-02-23 22:43 43
    void setFullScreenMode(bool fullScreen);
6fcd6c90 Poul Sander 2026-02-19 21:12 44
    void loadVisibleThumbnails();
cfe4a67b Poul Sander 2026-02-19 23:06 45
    void showPreview(const QModelIndex &index);
80a9926d Poul Sander 2026-05-19 20:28 46
    void updateExifInfo(const QByteArray &path);
61136b77 Poul Sander 2026-02-20 22:45 47
    void enterSingleImageMode(const QModelIndex &index);
61136b77 Poul Sander 2026-02-20 22:45 48
    void leaveSingleImageMode();
beb4a823 Poul Sander 2026-05-19 21:53 49
    void onEditCaption();
237d2c81 Poul Sander 2026-06-06 14:53 50
    void showImageContextMenu(const QPoint &pos);
d93c1ab0 Poul Sander 2026-06-08 21:44 51
    void showImageViewContextMenu(const QPoint &pos);
d93c1ab0 Poul Sander 2026-06-08 21:44 52
    void executeContextMenu(const QPoint &globalPos, const QByteArray &path, const QModelIndex &index);
700d6f2d Poul Sander 2026-06-06 15:44 53
    void moveImageToTrash(const QByteArray &path);
a686d839 Poul Sander 2026-06-06 22:34 54
    void moveCurrentImageToTrash();
48534775 Poul Sander 2026-06-08 18:57 55
    void rotateImage(const QModelIndex &index, bool clockwise);
fd7f51cd Poul Sander 2026-05-22 15:30 56
    void onPathEntered();
fd7f51cd Poul Sander 2026-05-22 15:30 57
    void updatePathField(const QByteArray &path);
80a9926d Poul Sander 2026-05-19 20:28 58
    QList<QByteArray> computeNeighborPaths(const QModelIndex &index) const;
bf525669 Poul Sander 2026-05-30 23:18 59
    QByteArray siblingFolder(int delta) const;
bf525669 Poul Sander 2026-05-30 23:18 60
    void navigateToPrevFolder();
bf525669 Poul Sander 2026-05-30 23:18 61
    void navigateToNextFolder();
6fcd6c90 Poul Sander 2026-02-19 21:12 62
61136b77 Poul Sander 2026-02-20 22:45 63
    void keyPressEvent(QKeyEvent *event) override;
6fcd6c90 Poul Sander 2026-02-19 21:12 64
    bool eventFilter(QObject *obj, QEvent *event) override;
c9e5684a Poul Sander 2026-02-23 19:18 65
    void closeEvent(QCloseEvent *event) override;
032aa1e1 Poul Sander 2026-02-19 18:55 66
40efdfde Poul Sander 2026-05-19 21:24 67
    FsDirModel *m_dirModel;
032aa1e1 Poul Sander 2026-02-19 18:55 68
    ImageModel *m_imageModel;
032aa1e1 Poul Sander 2026-02-19 18:55 69
032aa1e1 Poul Sander 2026-02-19 18:55 70
    QTreeView *m_treeView;
3bee3e3e Poul Sander 2026-03-05 17:07 71
    QListWidget *m_rootList;
032aa1e1 Poul Sander 2026-02-19 18:55 72
    QListView *m_listView;
032aa1e1 Poul Sander 2026-02-19 18:55 73
    QLabel *m_previewLabel;
fd7f51cd Poul Sander 2026-05-22 15:30 74
    QLineEdit *m_pathEdit = nullptr;
fd7f51cd Poul Sander 2026-05-22 15:30 75
    QPushButton *m_goButton = nullptr;
bf525669 Poul Sander 2026-05-30 23:18 76
    QPushButton *m_prevFolderButton = nullptr;
bf525669 Poul Sander 2026-05-30 23:18 77
    QPushButton *m_nextFolderButton = nullptr;
fd7f51cd Poul Sander 2026-05-22 15:30 78
    PathCompleterModel *m_pathCompleterModel = nullptr;
fd7f51cd Poul Sander 2026-05-22 15:30 79
    QCompleter *m_pathCompleter = nullptr;
61136b77 Poul Sander 2026-02-20 22:45 80
61136b77 Poul Sander 2026-02-20 22:45 81
    QStackedWidget *m_stack;
f61bf886 Poul Sander 2026-02-23 19:27 82
    QString m_backgroundColorPreference = "black";
459bad0f Poul Sander 2026-05-17 14:11 83
    int m_folderCacheSizePreference = 4;
ac476ca8 Poul Sander 2026-05-18 16:47 84
    QString m_thumbnailCacheSizePreference = "normal";
61136b77 Poul Sander 2026-02-20 22:45 85
    QWidget *m_browserPage;
61136b77 Poul Sander 2026-02-20 22:45 86
    ImageViewWidget *m_imageView;
3968465e Poul Sander 2026-02-23 19:13 87
    bool m_wasMaximized = false;
ccb726b8 Poul Sander 2026-02-23 22:43 88
    bool m_imageViewWasFullScreen = false;
80a9926d Poul Sander 2026-05-19 20:28 89
    QByteArray m_previousFolderPath;
cbc7d22b Poul Sander 2026-02-24 19:23 90
    QMenuBar *m_menuBar = nullptr;
3bee3e3e Poul Sander 2026-03-05 17:07 91
    QDockWidget *m_rootDock = nullptr;
cbc7d22b Poul Sander 2026-02-24 19:23 92
    QDockWidget *m_folderDock = nullptr;
cbc7d22b Poul Sander 2026-02-24 19:23 93
    QDockWidget *m_previewDock = nullptr;
53fdab93 Poul Sander 2026-05-18 18:45 94
    QDockWidget *m_exifDock = nullptr;
53fdab93 Poul Sander 2026-05-18 18:45 95
    QTableWidget *m_exifTable = nullptr;
3bee3e3e Poul Sander 2026-03-05 17:07 96
    bool m_rootDockWasVisible = true;
cbc7d22b Poul Sander 2026-02-24 19:23 97
    bool m_folderDockWasVisible = true;
cbc7d22b Poul Sander 2026-02-24 19:23 98
    bool m_previewDockWasVisible = true;
53fdab93 Poul Sander 2026-05-18 18:45 99
    bool m_exifDockWasVisible = true;
4ae57f60 Poul Sander 2026-02-25 21:35 100
    bool m_lockDockingPreference = false;
4ae57f60 Poul Sander 2026-02-25 21:35 101
4ae57f60 Poul Sander 2026-02-25 21:35 102
    void applyDockLocking(bool lock);
237d2c81 Poul Sander 2026-06-06 14:53 103
};
1970-01-01 00:00 104