19 #include <QImageWriter>
29 QString
const &filters, QStringList & selectedFiles, QString& enc, QString &title,
35 QString lastUsedFilter = settings.value(
"/UI/" + filterName,
"" ).toString();
36 QString lastUsedDir = settings.value(
"/UI/" + filterName +
"Dir",
"." ).toString();
38 QgsDebugMsg(
"Opening file dialog with filters: " + filters );
41 selectedFiles = QFileDialog::getOpenFileNames( 0, title, lastUsedDir, filters, &lastUsedFilter );
47 openFileDialog->setFileMode( QFileDialog::ExistingFiles );
49 if ( !lastUsedFilter.isEmpty() )
51 openFileDialog->selectFilter( lastUsedFilter );
54 if ( openFileDialog->exec() == QDialog::Accepted )
56 selectedFiles = openFileDialog->selectedFiles();
68 if ( !selectedFiles.isEmpty() )
73 QString firstFileName = selectedFiles.first();
74 QFileInfo fi( firstFileName );
75 QString path = fi.path();
79 settings.setValue(
"/UI/" + filterName, lastUsedFilter );
80 settings.setValue(
"/UI/" + filterName +
"Dir", path );
88 QMap<QString, QString> filterMap;
89 foreach( QByteArray format, QImageWriter::supportedImageFormats() )
92 if ( format ==
"svg" )
95 filterMap.insert(
createFileFilter_( format +
" format",
"*." + format ), format );
100 for ( QMap<QString, QString>::iterator it = filterMap.begin(); it != filterMap.end(); ++it )
108 QString lastUsedFilter = settings.value(
"/UI/lastSaveAsImageFilter" ).toString();
109 QString lastUsedDir = settings.value(
"/UI/lastSaveAsImageDir",
"." ).toString();
111 QString outputFileName;
112 QString selectedFilter = lastUsedFilter;
115 #if defined(Q_OS_WIN) || defined(Q_OS_MAC)
116 outputFileName = QFileDialog::getSaveFileName( theParent, theMessage, lastUsedDir, QStringList( filterMap.keys() ).join(
";;" ), &selectedFilter );
118 if ( !outputFileName.isNull() )
120 ext = filterMap.value( selectedFilter, QString::null );
122 settings.setValue(
"/UI/lastSaveAsImageFilter", selectedFilter );
123 settings.setValue(
"/UI/lastSaveAsImageDir", QFileInfo( outputFileName ).absolutePath() );
127 std::auto_ptr<QFileDialog> fileDialog(
new QFileDialog( theParent, theMessage, lastUsedDir, QStringList( filterMap.keys() ).join(
";;" ) ) );
130 fileDialog->setFileMode( QFileDialog::AnyFile );
131 fileDialog->setAcceptMode( QFileDialog::AcceptSave );
132 fileDialog->setConfirmOverwrite(
true );
134 if ( !lastUsedFilter.isEmpty() )
136 fileDialog->selectFilter( lastUsedFilter );
140 if ( fileDialog->exec() == QDialog::Accepted )
142 outputFileName = fileDialog->selectedFiles().first();
145 selectedFilter = fileDialog->selectedFilter();
146 QgsDebugMsg(
"Selected filter: " + selectedFilter );
147 ext = filterMap.value( selectedFilter, QString::null );
150 settings.setValue(
"/UI/lastSaveAsImageFilter", selectedFilter );
152 settings.setValue(
"/UI/lastSaveAsImageDir", fileDialog->directory().absolutePath() );
156 if ( !ext.isNull() && !outputFileName.endsWith(
"." + ext ) )
158 outputFileName +=
"." + ext;
161 return qMakePair<QString, QString>( outputFileName, ext );
166 return longName +
" (" + glob.toLower() +
" " + glob.toUpper() +
")";