class DeclarativeFileDialogAttached::Private
{
public:
+ Private() : options(-1) {}
+
+ public:
QString caption;
QString dir;
QStringList nameFilters;
+ int options;
QString selectedFilter;
};
return d->nameFilters;
}
+void DeclarativeFileDialogAttached::setOptions(int options)
+{
+ if (d->options == options)
+ return;
+
+ d->options = static_cast<QFileDialog::Options>(options);
+ emit optionsChanged(options);
+}
+
+int DeclarativeFileDialogAttached::options() const
+{
+ return d->options < 0 ? 0 : d->options;
+}
+
QString DeclarativeFileDialogAttached::selectedFilter() const
{
return d->selectedFilter;
QString DeclarativeFileDialogAttached::getExistingDirectory()
{
- return QFileDialog::getExistingDirectory(bestParentWindow(), d->caption, d->dir, QFileDialog::ShowDirsOnly);
+ const QFileDialog::Options options = (d->options < 0 ? QFileDialog::ShowDirsOnly : static_cast<QFileDialog::Options>(d->options));
+
+ return QFileDialog::getExistingDirectory(bestParentWindow(), d->caption, d->dir, options);
}
QString DeclarativeFileDialogAttached::getOpenFileName()
{
+ const QFileDialog::Options options = static_cast<QFileDialog::Options>(d->options < 0 ? 0 : d->options);
QString selectedFilter;
+
const QString retVal = QFileDialog::getOpenFileName(bestParentWindow(), d->caption, d->dir,
- d->nameFilters.join(";;"), &selectedFilter, 0);
+ d->nameFilters.join(";;"), &selectedFilter, options);
+
setSelectedFilter(selectedFilter);
return retVal;
}
QStringList DeclarativeFileDialogAttached::getOpenFileNames()
{
+ const QFileDialog::Options options = static_cast<QFileDialog::Options>(d->options < 0 ? 0 : d->options);
QString selectedFilter;
+
const QStringList retVal = QFileDialog::getOpenFileNames(bestParentWindow(), d->caption, d->dir,
- d->nameFilters.join(";;"), &selectedFilter, 0);
+ d->nameFilters.join(";;"), &selectedFilter, options);
+
setSelectedFilter(selectedFilter);
return retVal;
}
QString DeclarativeFileDialogAttached::getSaveFileName()
{
+ const QFileDialog::Options options = static_cast<QFileDialog::Options>(d->options < 0 ? 0 : d->options);
QString selectedFilter;
+
const QString retVal = QFileDialog::getSaveFileName(bestParentWindow(), d->caption, d->dir,
- d->nameFilters.join(";;"), &selectedFilter, 0);
+ d->nameFilters.join(";;"), &selectedFilter, options);
+
setSelectedFilter(selectedFilter);
return retVal;
}
Q_PROPERTY(QString caption READ caption WRITE setCaption NOTIFY captionChanged)
Q_PROPERTY(QString dir READ dir WRITE setDir NOTIFY dirChanged)
Q_PROPERTY(QStringList nameFilters READ nameFilters WRITE setNameFilters NOTIFY nameFiltersChanged)
- // TODO dialog option
+ Q_PROPERTY(int options READ options WRITE setOptions NOTIFY optionsChanged)
Q_PROPERTY(QString selectedFilter READ selectedFilter NOTIFY selectedFilterChanged)
public:
void setNameFilters(const QStringList &nameFilters);
QStringList nameFilters() const;
+ void setOptions(int options);
+ int options() const;
+
QString selectedFilter() const;
Q_INVOKABLE QString getExistingDirectory();
void captionChanged(const QString &caption);
void dirChanged(const QString &dir);
void nameFiltersChanged(const QStringList &filters);
+ void optionsChanged(int options);
void selectedFilterChanged(const QString &filter);
private: