Replace native file dialog with Qt's file dialog on Linux
This commit is contained in:
parent
c6d512ccab
commit
449e71a6b4
|
@ -571,28 +571,8 @@ bool Document::saveAs(void)
|
|||
getMainWindow()->showMessage(QObject::tr("Save document under new filename..."));
|
||||
|
||||
QString exe = qApp->applicationName();
|
||||
QString fn = QFileDialog::getSaveFileName(getMainWindow(), QObject::tr("Save %1 Document").arg(exe),
|
||||
FileDialog::getWorkingDirectory(), QObject::tr("%1 document (*.FCStd)").arg(exe));
|
||||
if (!fn.isEmpty()) {
|
||||
FileDialog::setWorkingDirectory(fn);
|
||||
QString file = fn.toLower();
|
||||
if (!file.endsWith(QLatin1String(".fcstd"))) {
|
||||
fn += QLatin1String(".fcstd");
|
||||
QFileInfo fi;
|
||||
fi.setFile(fn);
|
||||
if (fi.exists()) {
|
||||
// if we auto-append the extension make sure that we don't override an existing file
|
||||
int ret = QMessageBox::question(getMainWindow(), QObject::tr("Save As"),
|
||||
QObject::tr("%1 already exists.\n"
|
||||
"Do you want to replace it?").arg(fn),
|
||||
QMessageBox::Yes|QMessageBox::Default,
|
||||
QMessageBox::No|QMessageBox::Escape);
|
||||
if (ret != QMessageBox::Yes)
|
||||
fn = QString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString fn = FileDialog::getSaveFileName(getMainWindow(), QObject::tr("Save %1 Document").arg(exe),
|
||||
QString(), QObject::tr("%1 document (*.FCStd)").arg(exe));
|
||||
if (!fn.isEmpty()) {
|
||||
QFileInfo fi;
|
||||
fi.setFile(fn);
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
# include <QLineEdit>
|
||||
# include <QPushButton>
|
||||
# include <QRadioButton>
|
||||
# include <QStyle>
|
||||
# include <QUrl>
|
||||
#endif
|
||||
|
||||
|
@ -64,7 +65,7 @@ void FileDialog::onSelectedFilter(const QString& filter)
|
|||
QString suf = selectedFilter();
|
||||
if (rx.indexIn(suf) >= 0) {
|
||||
suf = rx.cap(1);
|
||||
setDefaultSuffix(suf);
|
||||
setDefaultSuffix(suf.toLower());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -117,12 +118,16 @@ QString FileDialog::getSaveFileName (QWidget * parent, const QString & caption,
|
|||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::DesktopLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::HomeLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::MusicLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::PicturesLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::MoviesLocation));
|
||||
urls << QUrl::fromLocalFile(getWorkingDirectory());
|
||||
|
||||
QString file;
|
||||
FileDialog dlg(parent);
|
||||
dlg.setWindowTitle(windowTitle);
|
||||
dlg.setSidebarUrls(urls);
|
||||
dlg.setIconProvider(new FileIconProvider());
|
||||
dlg.setFileMode(QFileDialog::AnyFile);
|
||||
dlg.setAcceptMode(QFileDialog::AcceptSave);
|
||||
dlg.setDirectory(dirName);
|
||||
|
@ -183,7 +188,36 @@ QString FileDialog::getOpenFileName(QWidget * parent, const QString & caption, c
|
|||
#if defined(FC_OS_MACOSX)
|
||||
options |= QFileDialog::DontUseNativeDialog;
|
||||
#endif
|
||||
|
||||
#if defined(FC_OS_LINUX)
|
||||
QList<QUrl> urls;
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::DesktopLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::HomeLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::MusicLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::PicturesLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::MoviesLocation));
|
||||
urls << QUrl::fromLocalFile(getWorkingDirectory());
|
||||
|
||||
QString file;
|
||||
FileDialog dlg(parent);
|
||||
dlg.setWindowTitle(windowTitle);
|
||||
dlg.setSidebarUrls(urls);
|
||||
dlg.setIconProvider(new FileIconProvider());
|
||||
dlg.setFileMode(QFileDialog::ExistingFile);
|
||||
dlg.setAcceptMode(QFileDialog::AcceptOpen);
|
||||
dlg.setDirectory(dirName);
|
||||
dlg.setOptions(options);
|
||||
dlg.setFilters(filter.split(QLatin1String(";;")));
|
||||
dlg.setNameFilterDetailsVisible(true);
|
||||
if (dlg.exec() == QDialog::Accepted) {
|
||||
if (selectedFilter)
|
||||
*selectedFilter = dlg.selectedFilter();
|
||||
file = dlg.selectedFiles().front();
|
||||
}
|
||||
#else
|
||||
QString file = QFileDialog::getOpenFileName(parent, windowTitle, dirName, filter, selectedFilter, options);
|
||||
#endif
|
||||
if (!file.isEmpty()) {
|
||||
setWorkingDirectory(file);
|
||||
return file;
|
||||
|
@ -209,7 +243,36 @@ QStringList FileDialog::getOpenFileNames (QWidget * parent, const QString & capt
|
|||
#if defined(FC_OS_MACOSX)
|
||||
options |= QFileDialog::DontUseNativeDialog;
|
||||
#endif
|
||||
|
||||
#if defined(FC_OS_LINUX)
|
||||
QList<QUrl> urls;
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::DesktopLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::HomeLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::MusicLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::PicturesLocation));
|
||||
urls << QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::MoviesLocation));
|
||||
urls << QUrl::fromLocalFile(getWorkingDirectory());
|
||||
|
||||
QStringList files;
|
||||
FileDialog dlg(parent);
|
||||
dlg.setWindowTitle(windowTitle);
|
||||
dlg.setSidebarUrls(urls);
|
||||
dlg.setIconProvider(new FileIconProvider());
|
||||
dlg.setFileMode(QFileDialog::ExistingFiles);
|
||||
dlg.setAcceptMode(QFileDialog::AcceptOpen);
|
||||
dlg.setDirectory(dirName);
|
||||
dlg.setOptions(options);
|
||||
dlg.setFilters(filter.split(QLatin1String(";;")));
|
||||
dlg.setNameFilterDetailsVisible(true);
|
||||
if (dlg.exec() == QDialog::Accepted) {
|
||||
if (selectedFilter)
|
||||
*selectedFilter = dlg.selectedFilter();
|
||||
files = dlg.selectedFiles();
|
||||
}
|
||||
#else
|
||||
QStringList files = QFileDialog::getOpenFileNames(parent, windowTitle, dirName, filter, selectedFilter, options);
|
||||
#endif
|
||||
if (!files.isEmpty()) {
|
||||
setWorkingDirectory(files.front());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user