-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdialogs.cpp
More file actions
106 lines (96 loc) · 4.04 KB
/
dialogs.cpp
File metadata and controls
106 lines (96 loc) · 4.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/////////////////////////////////////////////////////////////////////////////
// Name: dialogs.cpp
// Purpose: File- and message dialogs
// Author: Jan Buchholz
// Created: 2025-10-13
/////////////////////////////////////////////////////////////////////////////
#include "dialogs.h"
#include <QFileDialog>
#include "constants.h"
Dialogs::Dialogs(QWidget *parent) : QObject{parent} {
mainWindow = qobject_cast<QMainWindow*>(parent);
}
Dialogs::~Dialogs() {
}
QString Dialogs::showOpenFileDialog(QString folder) {
QFileDialog openDialog;
QString fileName = "";
openDialog.setParent(mainWindow, Qt::Dialog|
Qt::WindowSystemMenuHint|
Qt::WindowCloseButtonHint|
Qt::WindowTitleHint|
Qt::CustomizeWindowHint);
openDialog.setDirectory(folder);
openDialog.setAcceptMode(QFileDialog::AcceptOpen);
openDialog.setFileMode(QFileDialog::ExistingFile);
openDialog.setNameFilter(FILE_FILTER);
openDialog.setOptions(QFileDialog::DontUseNativeDialog | QFileDialog::ReadOnly);
openDialog.setViewMode(QFileDialog::Detail);
if (openDialog.exec() == QDialog::Accepted) {
QStringList files = openDialog.selectedFiles();
if (!files.empty()) fileName = files.first();
}
return fileName;
}
QString Dialogs::showSaveFileDialog(QString folder, QString fileName) {
QFileDialog saveDialog;
QString fname;
if (fileName.isEmpty()) fname = UNTITLED_DOCUMENT; else fname = fileName;
saveDialog.setParent(mainWindow, Qt::Dialog|
Qt::WindowSystemMenuHint|
Qt::WindowCloseButtonHint|
Qt::WindowTitleHint|
Qt::CustomizeWindowHint);
saveDialog.setDirectory(folder);
saveDialog.setAcceptMode(QFileDialog::AcceptSave);
saveDialog.setFileMode(QFileDialog::AnyFile);
saveDialog.setNameFilter(FILE_FILTER);
saveDialog.setDefaultSuffix(DEFAULT_SUFFIX);
saveDialog.setOption(QFileDialog::DontUseNativeDialog, true);
saveDialog.setViewMode(QFileDialog::Detail);
saveDialog.selectFile(fileName);
if (saveDialog.exec() == QDialog::Accepted) {
QStringList files = saveDialog.selectedFiles();
if (!files.empty()) fileName = files.first();
}
return fileName;
}
int Dialogs::showDialogUnsavedChanges() {
return yesNoCancelDialog(APPNAME, MSG_WANTSAVE, QMessageBox::Question);
}
int Dialogs::showDialogDeleteNote() {
return yesNoCancelDialog(APPNAME, MSG_DELETENOTE, QMessageBox::Question);
}
void Dialogs::showDialogDisplayError(QString message) {
QMessageBox msg;
msg.setParent(mainWindow, Qt::Dialog|
Qt::WindowSystemMenuHint|
Qt::WindowCloseButtonHint|
Qt::WindowTitleHint|
Qt::CustomizeWindowHint|
Qt::MSWindowsFixedSizeDialogHint);
msg.setWindowModality(Qt::WindowModal);
msg.setText(message);
msg.setWindowTitle(APPNAME);
msg.setStandardButtons(QMessageBox::Ok);
msg.setIcon(QMessageBox::Critical);
msg.exec();
}
int Dialogs::yesNoCancelDialog(QString title, QString message, QMessageBox::Icon icon) {
QMessageBox msg;
msg.setParent(mainWindow, Qt::Dialog|
Qt::WindowSystemMenuHint|
Qt::WindowCloseButtonHint|
Qt::WindowTitleHint|
Qt::CustomizeWindowHint|
Qt::MSWindowsFixedSizeDialogHint);
msg.setWindowModality(Qt::WindowModal);
msg.setText(message);
msg.setWindowTitle(title);
msg.setIcon(icon);
msg.addButton(tr("Yes"), QMessageBox::YesRole);
msg.addButton(tr("No"), QMessageBox::NoRole);
QPushButton* cancelButton = msg.addButton(tr("Cancel"), QMessageBox::RejectRole);
msg.setDefaultButton(cancelButton);
return msg.exec();
}