Mercurial > retraceit
annotate src/mainwindow.cpp @ 34:40a683d1a318
(issue15) Change picture speed setting to seconds and default to 1s
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 06 May 2015 16:07:35 +0200 |
parents | 58f1b3c330af |
children | 26e1521b9afd |
rev | line source |
---|---|
25
64a51a42c01f
Assign copyright correctly
Andre Heinecke <andre.heinecke@intevation.de>
parents:
16
diff
changeset
|
1 /* Copyright (C) 2015 by ETH Zürich |
64a51a42c01f
Assign copyright correctly
Andre Heinecke <andre.heinecke@intevation.de>
parents:
16
diff
changeset
|
2 * Software engineering by Intevation GmbH |
0
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
3 * |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU GPL (v>=2) |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
6 * See LICENSE.txt for details. |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
7 */ |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
8 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
9 /** @file See mainwindow.h */ |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
10 #include "mainwindow.h" |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
11 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
12 #include "constants.h" |
2
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
13 #include "metadataview.h" |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
14 #include "pngplayer.h" |
9
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
15 #include "folderselectdialog.h" |
0
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
16 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
17 #include <QDebug> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
18 #include <QDialog> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
19 #include <QWidget> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
20 #include <QHBoxLayout> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
21 #include <QLabel> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
22 #include <QPushButton> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
23 #include <QDir> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
24 #include <QFileDialog> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
25 #include <QMessageBox> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
26 #include <QApplication> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
27 #include <QDragEnterEvent> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
28 #include <QDragLeaveEvent> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
29 #include <QDropEvent> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
30 #include <QDragMoveEvent> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
31 #include <QMimeData> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
32 #include <QStandardPaths> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
33 #include <QStyle> |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
34 #include <QStatusBar> |
2
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
35 #include <QTabWidget> |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
36 #include <QVBoxLayout> |
32
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
37 #include <QShortcut> |
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
38 #include <QKeySequence> |
0
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
39 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
40 MainWindow::MainWindow() : |
2
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
41 mDataView(NULL) { |
0
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
42 setStatusBar(new QStatusBar()); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
43 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
44 setupGUI(); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
45 readSettings(); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
46 setAcceptDrops(true); |
32
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
47 setupShortcuts(); |
0
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
48 //QIcon windowIcon = QIcon(":/icon-64.png"); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
49 //setWindowIcon(windowIcon); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
50 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
51 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
52 |
2
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
53 void MainWindow::setupGUI() { |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
54 QTabWidget *tabWidget = new QTabWidget; |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
55 mDataView = new MetaDataView(this); |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
56 mPlayer = new PNGPlayer(this); |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
57 |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
58 tabWidget->addTab(mPlayer, tr("Player")); |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
59 tabWidget->addTab(mDataView, tr("Filter/Details")); |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
60 tabWidget->setMovable(true); |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
61 |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
62 setCentralWidget(tabWidget); |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
63 |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
64 connect (mPlayer, &PNGPlayer::error, this, &MainWindow::showErrorMessage); |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
65 connect (mPlayer, &PNGPlayer::advance, mDataView, &MetaDataView::selectNextRow); |
3
248d5d1cdb38
Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
2
diff
changeset
|
66 connect (mPlayer, &PNGPlayer::back, mDataView, &MetaDataView::selectPrevRow); |
248d5d1cdb38
Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
2
diff
changeset
|
67 connect (mPlayer, &PNGPlayer::jumpToFrame, mDataView, &MetaDataView::selectRow); |
2
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
68 connect (mDataView, &MetaDataView::selectionChanged, mPlayer, |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
69 &PNGPlayer::showPicture); |
5
107e435cb569
Enable speed slider in pngplayer
Andre Heinecke <andre.heinecke@intevation.de>
parents:
3
diff
changeset
|
70 connect (mDataView, &MetaDataView::selectionChanged, this, |
107e435cb569
Enable speed slider in pngplayer
Andre Heinecke <andre.heinecke@intevation.de>
parents:
3
diff
changeset
|
71 &MainWindow::showPictureNameStatus); |
0
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
72 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
73 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
74 void MainWindow::showErrorMessage(const QString& errMsg) { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
75 QMessageBox::warning(this, tr("Error!"), errMsg); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
76 statusBar()->showMessage(errMsg); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
77 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
78 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
79 void MainWindow::closeEvent(QCloseEvent *event) { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
80 mSettings.setValue("geometry", saveGeometry()); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
81 mSettings.setValue("windowState", saveState()); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
82 QMainWindow::closeEvent(event); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
83 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
84 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
85 void MainWindow::readSettings() { |
33
58f1b3c330af
(issue9) Show maximized by default
Andre Heinecke <andre.heinecke@intevation.de>
parents:
32
diff
changeset
|
86 if (mSettings.contains("geometry")) { |
58f1b3c330af
(issue9) Show maximized by default
Andre Heinecke <andre.heinecke@intevation.de>
parents:
32
diff
changeset
|
87 restoreGeometry(mSettings.value("geometry").toByteArray()); |
58f1b3c330af
(issue9) Show maximized by default
Andre Heinecke <andre.heinecke@intevation.de>
parents:
32
diff
changeset
|
88 restoreState(mSettings.value("windowState").toByteArray()); |
58f1b3c330af
(issue9) Show maximized by default
Andre Heinecke <andre.heinecke@intevation.de>
parents:
32
diff
changeset
|
89 } |
0
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
90 } |
2
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
91 /* |
0
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
92 void MainWindow::dragEnterEvent(QDragEnterEvent *event) |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
93 { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
94 if (event->mimeData()->hasUrls()) { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
95 foreach (const QUrl & url, event->mimeData()->urls()) { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
96 if (url.isLocalFile()) { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
97 event->acceptProposedAction(); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
98 return; |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
99 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
100 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
101 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
102 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
103 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
104 void MainWindow::dragMoveEvent(QDragMoveEvent *event) |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
105 { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
106 if (event->mimeData()->hasUrls()) { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
107 foreach (const QUrl & url, event->mimeData()->urls()) { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
108 if (url.isLocalFile()) { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
109 event->acceptProposedAction(); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
110 return; |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
111 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
112 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
113 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
114 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
115 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
116 void MainWindow::dropEvent(QDropEvent *event) |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
117 { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
118 const QMimeData *mimeData = event->mimeData(); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
119 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
120 if (mimeData->hasUrls()) { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
121 foreach (const QUrl & url, mimeData->urls()) { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
122 if (!url.isLocalFile()) { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
123 qDebug() << "Ignoring drop of " << url; |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
124 continue; |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
125 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
126 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
127 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
128 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
129 |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
130 void MainWindow::dragLeaveEvent(QDragLeaveEvent *event) |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
131 { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
132 event->accept(); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
133 } |
2
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
134 */ |
0
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
135 void MainWindow::setFolder(const QString& folder) |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
136 { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
137 QFileInfo fi(folder); |
16
6d5dd3ae2ad3
Save last selection in settings
Andre Heinecke <andre.heinecke@intevation.de>
parents:
9
diff
changeset
|
138 mSettings.setValue(SUB_FOLDER_KEY, folder); |
0
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
139 if (!fi.isDir() || !fi.isReadable()) { |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
140 showErrorMessage(tr("Failed to access directory: '%1'").arg(folder)); |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
141 } |
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
142 QDir dir = QDir(folder); |
2
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
143 QFileInfo metaData = dir.absoluteFilePath("metadata.csv"); |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
144 if (!metaData.exists() || !metaData.isReadable()) { |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
145 showErrorMessage(tr("Failed to access meta data file: '%1'").arg( |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
146 metaData.filePath())); |
0
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
147 |
2
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
148 } |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
149 QString errorMsg = mDataView->parseMetaData(metaData.filePath()); |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
150 if (!errorMsg.isEmpty()) { |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
151 showErrorMessage(errorMsg); |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
152 return; |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
153 } |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
154 statusBar()->showMessage(tr("Parsed: '%1'").arg(metaData.filePath())); |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
155 qDebug() << "Parsed: " << metaData.filePath(); |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
156 mCurFolder = folder; |
97d2c8869c39
First prototype implementation of table view and player
Andre Heinecke <andre.heinecke@intevation.de>
parents:
0
diff
changeset
|
157 mPlayer->setBaseDir(folder); |
3
248d5d1cdb38
Add functionalty to control buttons and make picture resizable
Andre Heinecke <andre.heinecke@intevation.de>
parents:
2
diff
changeset
|
158 mDataView->selectNextRow(); |
33
58f1b3c330af
(issue9) Show maximized by default
Andre Heinecke <andre.heinecke@intevation.de>
parents:
32
diff
changeset
|
159 if (!mSettings.contains("geometry")) { |
58f1b3c330af
(issue9) Show maximized by default
Andre Heinecke <andre.heinecke@intevation.de>
parents:
32
diff
changeset
|
160 qDebug() << "Showing maximized"; |
58f1b3c330af
(issue9) Show maximized by default
Andre Heinecke <andre.heinecke@intevation.de>
parents:
32
diff
changeset
|
161 show(); |
58f1b3c330af
(issue9) Show maximized by default
Andre Heinecke <andre.heinecke@intevation.de>
parents:
32
diff
changeset
|
162 showMaximized(); |
58f1b3c330af
(issue9) Show maximized by default
Andre Heinecke <andre.heinecke@intevation.de>
parents:
32
diff
changeset
|
163 } else { |
58f1b3c330af
(issue9) Show maximized by default
Andre Heinecke <andre.heinecke@intevation.de>
parents:
32
diff
changeset
|
164 show(); |
58f1b3c330af
(issue9) Show maximized by default
Andre Heinecke <andre.heinecke@intevation.de>
parents:
32
diff
changeset
|
165 } |
0
147b08bc7d64
Initial commit of a basic Application framework.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
166 } |
5
107e435cb569
Enable speed slider in pngplayer
Andre Heinecke <andre.heinecke@intevation.de>
parents:
3
diff
changeset
|
167 |
107e435cb569
Enable speed slider in pngplayer
Andre Heinecke <andre.heinecke@intevation.de>
parents:
3
diff
changeset
|
168 void MainWindow::showPictureNameStatus(const QString& fileName, int current, |
107e435cb569
Enable speed slider in pngplayer
Andre Heinecke <andre.heinecke@intevation.de>
parents:
3
diff
changeset
|
169 int max, const QDateTime& timestamp) { |
107e435cb569
Enable speed slider in pngplayer
Andre Heinecke <andre.heinecke@intevation.de>
parents:
3
diff
changeset
|
170 if (current != 0 && max != 0) { |
107e435cb569
Enable speed slider in pngplayer
Andre Heinecke <andre.heinecke@intevation.de>
parents:
3
diff
changeset
|
171 statusBar()->showMessage(tr("Showing: '%1'").arg(fileName)); |
107e435cb569
Enable speed slider in pngplayer
Andre Heinecke <andre.heinecke@intevation.de>
parents:
3
diff
changeset
|
172 } |
107e435cb569
Enable speed slider in pngplayer
Andre Heinecke <andre.heinecke@intevation.de>
parents:
3
diff
changeset
|
173 } |
9
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
174 |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
175 void MainWindow::setRootFolder(const QString &folder) { |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
176 mRootFolder = folder; |
16
6d5dd3ae2ad3
Save last selection in settings
Andre Heinecke <andre.heinecke@intevation.de>
parents:
9
diff
changeset
|
177 QDir dir(folder); |
6d5dd3ae2ad3
Save last selection in settings
Andre Heinecke <andre.heinecke@intevation.de>
parents:
9
diff
changeset
|
178 dir.cdUp(); |
6d5dd3ae2ad3
Save last selection in settings
Andre Heinecke <andre.heinecke@intevation.de>
parents:
9
diff
changeset
|
179 mSettings.setValue(ROOT_FOLDER_KEY, dir.absolutePath()); |
6d5dd3ae2ad3
Save last selection in settings
Andre Heinecke <andre.heinecke@intevation.de>
parents:
9
diff
changeset
|
180 |
9
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
181 showSubFolderSelect(); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
182 } |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
183 |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
184 void MainWindow::showSubFolderSelect() { |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
185 const QString subPattern = mSettings.value(SUB_FOLDER_PATTERN_KEY, |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
186 SUB_FOLDER_PATTERN).toString(); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
187 FolderSelectDialog *fsDialog = new FolderSelectDialog(mRootFolder, |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
188 subPattern); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
189 fsDialog->setWindowTitle(tr("Persons")); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
190 connect(fsDialog, &FolderSelectDialog::folderSelected, |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
191 this, &MainWindow::setFolder); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
192 |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
193 fsDialog->show(); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
194 // connect(fsDialog, &QDialog::closeEvent, fsDialog, &QObject::deleteLater); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
195 } |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
196 |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
197 void MainWindow::showWithFolderSelect() { |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
198 const QString startFolder = mSettings.value(ROOT_FOLDER_KEY, |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
199 QString()).toString(); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
200 const QString rootPattern = mSettings.value(ROOT_FOLDER_PATTERN_KEY, |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
201 DEFAULT_ROOT_PATTERN).toString(); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
202 FolderSelectDialog *fsDialog = new FolderSelectDialog(startFolder, |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
203 rootPattern, |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
204 tr("Root-Path")); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
205 fsDialog->setWindowTitle(tr("Exams")); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
206 connect(fsDialog, &FolderSelectDialog::folderSelected, |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
207 this, &MainWindow::setRootFolder); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
208 |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
209 fsDialog->show(); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
210 // connect(fsDialog, &QDialog::closeEvent, fsDialog, &QObject::deleteLater); |
e3c8f61e45a9
Implement folderselection dialogs
Andre Heinecke <andre.heinecke@intevation.de>
parents:
5
diff
changeset
|
211 } |
32
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
212 |
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
213 void MainWindow::setupShortcuts() { |
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
214 QShortcut *next = new QShortcut(Qt::Key_Right, this); |
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
215 QShortcut *prev = new QShortcut(Qt::Key_Left, this); |
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
216 QShortcut *pause = new QShortcut(Qt::Key_Space, this); |
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
217 |
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
218 connect(pause, &QShortcut::activated, mPlayer, &PNGPlayer::togglePlay); |
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
219 connect(next, &QShortcut::activated, mDataView, &MetaDataView::selectNextRow); |
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
220 connect(prev, &QShortcut::activated, mDataView, &MetaDataView::selectPrevRow); |
179239c94740
(issue7-8) Add shortcuts for play/pause and next
Andre Heinecke <andre.heinecke@intevation.de>
parents:
25
diff
changeset
|
221 } |