| 237 | } |
| 238 | |
| 239 | FileDialog::SaveResult FileDialog::getSaveFileNameWithOptions( |
| 240 | QWidget* parent, const QString& caption, const QString& dir, const QString& filter, const QString& default_suffix, |
| 241 | const std::vector<ExtraOption>& extras) { |
| 242 | FileDialog dlg(parent); |
| 243 | if (!caption.isEmpty()) { |
| 244 | dlg.setDialogTitle(caption); |
| 245 | } |
| 246 | dlg.setAcceptMode(QFileDialog::AcceptSave); |
| 247 | dlg.setFileMode(QFileDialog::AnyFile); |
| 248 | if (!dir.isEmpty()) { |
| 249 | dlg.setDirectory(dir); |
| 250 | } |
| 251 | if (!filter.isEmpty()) { |
| 252 | dlg.setNameFilter(filter); |
| 253 | } |
| 254 | if (!default_suffix.isEmpty()) { |
| 255 | dlg.setDefaultSuffix(default_suffix); |
| 256 | } |
| 257 | auto boxes = dlg.embedExtras(extras); |
| 258 | |
| 259 | SaveResult result; |
| 260 | result.option_states.assign(extras.size(), false); |
| 261 | for (std::size_t i = 0; i < extras.size(); ++i) { |
| 262 | result.option_states[i] = extras[i].default_checked; |
| 263 | } |
| 264 | |
| 265 | if (dlg.exec() != QDialog::Accepted) { |
| 266 | return result; // empty path; option_states left at defaults |
| 267 | } |
| 268 | const QStringList selected = dlg.selectedFiles(); |
| 269 | if (!selected.isEmpty()) { |
| 270 | result.path = selected.first(); |
| 271 | } |
| 272 | for (std::size_t i = 0; i < boxes.size(); ++i) { |
| 273 | result.option_states[i] = boxes[i]->isChecked(); |
| 274 | } |
| 275 | return result; |
| 276 | } |
| 277 | |
| 278 | } // namespace PJ |
nothing calls this directly
no test coverage detected