| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
1 |
#include "mainwindow.h" |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
2 |
#include "imagemodel.h" |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
3 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
4 |
#include <QFileSystemModel> |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
5 |
#include <QTreeView> |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
6 |
#include <QListView> |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
7 |
#include <QLabel> |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
8 |
#include <QSplitter> |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
9 |
#include <QDir> |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
10 |
#include <QImageReader> |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
11 |
#include <QHeaderView> |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
12 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
13 |
MainWindow::MainWindow(QWidget *parent) |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
14 |
: QMainWindow(parent) |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
15 |
{ |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
16 |
setupUi(); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
17 |
setupConnections(); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
18 |
} |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
19 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
20 |
void MainWindow::setupUi() |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
21 |
{ |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
22 |
// Folder model (left pane) |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
23 |
m_dirModel = new QFileSystemModel(this); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
24 |
m_dirModel->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
25 |
m_dirModel->setRootPath(QDir::homePath()); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
26 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
27 |
m_treeView = new QTreeView; |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
28 |
m_treeView->setModel(m_dirModel); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
29 |
m_treeView->setRootIndex(m_dirModel->index(QDir::homePath())); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
30 |
m_treeView->header()->hide(); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
31 |
m_treeView->setColumnHidden(1, true); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
32 |
m_treeView->setColumnHidden(2, true); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
33 |
m_treeView->setColumnHidden(3, true); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
34 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
35 |
// Thumbnail model (center pane) |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
36 |
m_imageModel = new ImageModel(this); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
37 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
38 |
m_listView = new QListView; |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
39 |
m_listView->setModel(m_imageModel); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
40 |
m_listView->setViewMode(QListView::IconMode); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
41 |
m_listView->setIconSize(QSize(128, 128)); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
42 |
m_listView->setResizeMode(QListView::Adjust); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
43 |
m_listView->setSelectionMode(QAbstractItemView::SingleSelection); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
44 |
m_listView->setSpacing(10); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
45 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
46 |
// Preview pane (right) |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
47 |
m_previewLabel = new QLabel; |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
48 |
m_previewLabel->setAlignment(Qt::AlignCenter); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
49 |
m_previewLabel->setMinimumWidth(300); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
50 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
51 |
// Layout |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
52 |
QSplitter *rightSplitter = new QSplitter(Qt::Horizontal); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
53 |
rightSplitter->addWidget(m_listView); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
54 |
rightSplitter->addWidget(m_previewLabel); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
55 |
rightSplitter->setStretchFactor(0, 3); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
56 |
rightSplitter->setStretchFactor(1, 2); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
57 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
58 |
QSplitter *mainSplitter = new QSplitter(Qt::Horizontal); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
59 |
mainSplitter->addWidget(m_treeView); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
60 |
mainSplitter->addWidget(rightSplitter); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
61 |
mainSplitter->setStretchFactor(1, 1); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
62 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
63 |
setCentralWidget(mainSplitter); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
64 |
} |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
65 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
66 |
void MainWindow::setupConnections() |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
67 |
{ |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
68 |
connect(m_treeView, &QTreeView::clicked, this, |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
69 |
[this](const QModelIndex &index) |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
70 |
{ |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
71 |
QString path = m_dirModel->filePath(index); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
72 |
m_imageModel->setDirectory(path); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
73 |
}); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
74 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
75 |
connect(m_listView, &QListView::clicked, this, |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
76 |
[this](const QModelIndex &index) |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
77 |
{ |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
78 |
QString path = m_imageModel->filePath(index); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
79 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
80 |
QImageReader reader(path); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
81 |
reader.setAutoTransform(true); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
82 |
QImage image = reader.read(); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
83 |
|
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
84 |
m_previewLabel->setPixmap( |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
85 |
QPixmap::fromImage(image).scaled( |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
86 |
m_previewLabel->size(), |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
87 |
Qt::KeepAspectRatio, |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
88 |
Qt::SmoothTransformation)); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
89 |
}); |
| 032aa1e1 |
Poul Sander |
2026-02-19 18:55 |
90 |
} |
|
|
1970-01-01 00:00 |
91 |
|