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;
032aa1e1 Poul Sander 2026-02-19 18:55 12
class QFileSystemModel;
3bee3e3e Poul Sander 2026-03-05 17:07 13
class QListWidget;
53fdab93 Poul Sander 2026-05-18 18:45 14
class QTableWidget;
032aa1e1 Poul Sander 2026-02-19 18:55 15
class ImageModel;
61136b77 Poul Sander 2026-02-20 22:45 16
class ImageViewWidget;
f61bf886 Poul Sander 2026-02-23 19:27 17
class PreferencesDialog;
032aa1e1 Poul Sander 2026-02-19 18:55 18
032aa1e1 Poul Sander 2026-02-19 18:55 19
class MainWindow : public QMainWindow
032aa1e1 Poul Sander 2026-02-19 18:55 20
{
032aa1e1 Poul Sander 2026-02-19 18:55 21
    Q_OBJECT
032aa1e1 Poul Sander 2026-02-19 18:55 22
032aa1e1 Poul Sander 2026-02-19 18:55 23
public:
032aa1e1 Poul Sander 2026-02-19 18:55 24
    explicit MainWindow(QWidget *parent = nullptr);
48607848 Poul Sander 2026-05-19 19:20 25
    void openPath(const QString &path);
032aa1e1 Poul Sander 2026-02-19 18:55 26
032aa1e1 Poul Sander 2026-02-19 18:55 27
private:
032aa1e1 Poul Sander 2026-02-19 18:55 28
    void setupUi();
032aa1e1 Poul Sander 2026-02-19 18:55 29
    void setupConnections();
f61bf886 Poul Sander 2026-02-23 19:27 30
    void setupMenuBar();
f61bf886 Poul Sander 2026-02-23 19:27 31
    void loadPreferences();
f61bf886 Poul Sander 2026-02-23 19:27 32
    void savePreferences();
f61bf886 Poul Sander 2026-02-23 19:27 33
    void onPreferencesTriggered();
7370f1c0 Poul Sander 2026-03-01 15:15 34
    void resetLayoutToDefault();
80a9926d Poul Sander 2026-05-19 20:28 35
    void navigateToFolder(const QByteArray &path);
80a9926d Poul Sander 2026-05-19 20:28 36
    void navigateToFolder(const QString &path);  // convenience: converts via QFile::encodeName
665ac308 Poul Sander 2026-02-23 19:34 37
    void selectPreviousFolderIfExists();
ccb726b8 Poul Sander 2026-02-23 22:43 38
    void setFullScreenMode(bool fullScreen);
6fcd6c90 Poul Sander 2026-02-19 21:12 39
    void loadVisibleThumbnails();
cfe4a67b Poul Sander 2026-02-19 23:06 40
    void showPreview(const QModelIndex &index);
80a9926d Poul Sander 2026-05-19 20:28 41
    void updateExifInfo(const QByteArray &path);
61136b77 Poul Sander 2026-02-20 22:45 42
    void enterSingleImageMode(const QModelIndex &index);
61136b77 Poul Sander 2026-02-20 22:45 43
    void leaveSingleImageMode();
80a9926d Poul Sander 2026-05-19 20:28 44
    QList<QByteArray> computeNeighborPaths(const QModelIndex &index) const;
6fcd6c90 Poul Sander 2026-02-19 21:12 45
61136b77 Poul Sander 2026-02-20 22:45 46
    void keyPressEvent(QKeyEvent *event) override;
6fcd6c90 Poul Sander 2026-02-19 21:12 47
    bool eventFilter(QObject *obj, QEvent *event) override;
c9e5684a Poul Sander 2026-02-23 19:18 48
    void closeEvent(QCloseEvent *event) override;
032aa1e1 Poul Sander 2026-02-19 18:55 49
032aa1e1 Poul Sander 2026-02-19 18:55 50
    QFileSystemModel *m_dirModel;
032aa1e1 Poul Sander 2026-02-19 18:55 51
    ImageModel *m_imageModel;
032aa1e1 Poul Sander 2026-02-19 18:55 52
032aa1e1 Poul Sander 2026-02-19 18:55 53
    QTreeView *m_treeView;
3bee3e3e Poul Sander 2026-03-05 17:07 54
    QListWidget *m_rootList;
032aa1e1 Poul Sander 2026-02-19 18:55 55
    QListView *m_listView;
032aa1e1 Poul Sander 2026-02-19 18:55 56
    QLabel *m_previewLabel;
61136b77 Poul Sander 2026-02-20 22:45 57
61136b77 Poul Sander 2026-02-20 22:45 58
    QStackedWidget *m_stack;
f61bf886 Poul Sander 2026-02-23 19:27 59
    QString m_backgroundColorPreference = "black";
459bad0f Poul Sander 2026-05-17 14:11 60
    int m_folderCacheSizePreference = 4;
ac476ca8 Poul Sander 2026-05-18 16:47 61
    QString m_thumbnailCacheSizePreference = "normal";
61136b77 Poul Sander 2026-02-20 22:45 62
    QWidget *m_browserPage;
61136b77 Poul Sander 2026-02-20 22:45 63
    ImageViewWidget *m_imageView;
3968465e Poul Sander 2026-02-23 19:13 64
    bool m_wasMaximized = false;
ccb726b8 Poul Sander 2026-02-23 22:43 65
    bool m_imageViewWasFullScreen = false;
80a9926d Poul Sander 2026-05-19 20:28 66
    QByteArray m_previousFolderPath;
cbc7d22b Poul Sander 2026-02-24 19:23 67
    QMenuBar *m_menuBar = nullptr;
3bee3e3e Poul Sander 2026-03-05 17:07 68
    QDockWidget *m_rootDock = nullptr;
cbc7d22b Poul Sander 2026-02-24 19:23 69
    QDockWidget *m_folderDock = nullptr;
cbc7d22b Poul Sander 2026-02-24 19:23 70
    QDockWidget *m_previewDock = nullptr;
53fdab93 Poul Sander 2026-05-18 18:45 71
    QDockWidget *m_exifDock = nullptr;
53fdab93 Poul Sander 2026-05-18 18:45 72
    QTableWidget *m_exifTable = nullptr;
3bee3e3e Poul Sander 2026-03-05 17:07 73
    bool m_rootDockWasVisible = true;
cbc7d22b Poul Sander 2026-02-24 19:23 74
    bool m_folderDockWasVisible = true;
cbc7d22b Poul Sander 2026-02-24 19:23 75
    bool m_previewDockWasVisible = true;
53fdab93 Poul Sander 2026-05-18 18:45 76
    bool m_exifDockWasVisible = true;
4ae57f60 Poul Sander 2026-02-25 21:35 77
    bool m_lockDockingPreference = false;
4ae57f60 Poul Sander 2026-02-25 21:35 78
4ae57f60 Poul Sander 2026-02-25 21:35 79
    void applyDockLocking(bool lock);
cbc7d22b Poul Sander 2026-02-24 19:23 80
};