6 #include <QApplication>
7 #include <QFontMetrics>
8 #include "fileselectwidget.h"
10 #include "common/util.h"
11 #endif // Q_OS_ANDROID
14 FileSelectWidget::FileSelectWidget(QWidget
*parent
) : QWidget(parent
)
16 _edit
= new QLineEdit();
18 _edit
->setDisabled(true);
20 QFontMetrics
fm(QApplication::font());
21 _edit
->setMinimumWidth(fm
.averageCharWidth() * (QDir::homePath().length()
23 #endif // Q_OS_ANDROID
25 _button
= new QPushButton("...");
26 _button
->setMaximumWidth(_button
->sizeHint().width() / 2);
28 _button
= new QToolButton();
29 _button
->setText("...");
31 connect(_button
, &QToolButton::clicked
, this, &FileSelectWidget::browse
);
33 QHBoxLayout
*layout
= new QHBoxLayout();
34 layout
->setContentsMargins(QMargins());
35 layout
->addWidget(_edit
);
36 layout
->addWidget(_button
);
39 QSizePolicy
p(QSizePolicy::MinimumExpanding
, QSizePolicy::Fixed
);
43 void FileSelectWidget::browse()
46 _fileName
= QFileDialog::getSaveFileName(this, tr("Select file"));
47 if (!_fileName
.isEmpty())
48 _edit
->setText(Util::displayName(_fileName
));
50 QFileInfo
fi(_edit
->text());
51 QString fileName
= QFileDialog::getSaveFileName(this, tr("Select file"),
52 fi
.dir().absolutePath(), _filter
);
53 if (!fileName
.isEmpty())
54 _edit
->setText(fileName
);
55 #endif // Q_OS_ANDROID
58 bool FileSelectWidget::checkFile(QString
&error
) const
60 if (file().isEmpty()) {
61 error
= tr("No output file selected.");
67 bool exists
= fi
.exists();
70 if (exists
&& fi
.isDir()) {
71 error
= tr("%1 is a directory.").arg(f
.fileName());
73 } else if ((exists
&& !fi
.isWritable())
74 || !(opened
= f
.open(QFile::Append
))) {
75 error
= tr("%1 is not writable.").arg(f
.fileName());