class DeclarativeFileDialogAttached::Private
{
public:
- QPointer<QObject> dialogParent;
QString caption;
QString dir;
QStringList nameFilters;
};
DeclarativeFileDialogAttached::DeclarativeFileDialogAttached(QObject *parent)
- : QObject(parent), d(new Private)
+ : StaticDialogMethodAttached(parent), d(new Private)
{
}
delete d;
}
-void DeclarativeFileDialogAttached::setDialogParent(QObject *parent)
-{
- if (parent == d->dialogParent)
- return;
-
- d->dialogParent = parent;
- emit dialogParentChanged(parent);
-}
-
-QObject *DeclarativeFileDialogAttached::dialogParent() const
-{
- return d->dialogParent;
-}
-
void DeclarativeFileDialogAttached::setCaption(const QString &caption)
{
if (caption == d->caption)
QString DeclarativeFileDialogAttached::getExistingDirectory()
{
- return QFileDialog::getExistingDirectory(bestParentWindow(d->dialogParent), d->caption, d->dir, QFileDialog::ShowDirsOnly);
+ return QFileDialog::getExistingDirectory(bestParentWindow(), d->caption, d->dir, QFileDialog::ShowDirsOnly);
}
QString DeclarativeFileDialogAttached::getOpenFileName()
{
QString selectedFilter;
- const QString retVal = QFileDialog::getOpenFileName(bestParentWindow(d->dialogParent), d->caption, d->dir,
+ const QString retVal = QFileDialog::getOpenFileName(bestParentWindow(), d->caption, d->dir,
d->nameFilters.join(";;"), &selectedFilter, 0);
setSelectedFilter(selectedFilter);
return retVal;
QStringList DeclarativeFileDialogAttached::getOpenFileNames()
{
QString selectedFilter;
- const QStringList retVal = QFileDialog::getOpenFileNames(bestParentWindow(d->dialogParent), d->caption, d->dir,
+ const QStringList retVal = QFileDialog::getOpenFileNames(bestParentWindow(), d->caption, d->dir,
d->nameFilters.join(";;"), &selectedFilter, 0);
setSelectedFilter(selectedFilter);
return retVal;
QString DeclarativeFileDialogAttached::getSaveFileName()
{
QString selectedFilter;
- const QString retVal = QFileDialog::getSaveFileName(bestParentWindow(d->dialogParent), d->caption, d->dir,
+ const QString retVal = QFileDialog::getSaveFileName(bestParentWindow(), d->caption, d->dir,
d->nameFilters.join(";;"), &selectedFilter, 0);
setSelectedFilter(selectedFilter);
return retVal;
}
-QWidget *DeclarativeFileDialogAttached::bestParentWindow(QObject *parent) const
-{
- if (!parent)
- parent = this->parent();
-
- // if parent is a Declarative Object, search the proxied hierarchy
- AbstractDeclarativeObject *declarativeObject = dynamic_cast<AbstractDeclarativeObject*>(parent);
- if (declarativeObject)
- parent = declarativeObject->object();
-
- while (parent) {
- QWidget *widget = qobject_cast<QWidget*>(parent);
- if (widget)
- return widget->topLevelWidget();
-
- parent = parent->parent();
- }
-
- return 0;
-}
-
void DeclarativeFileDialogAttached::setSelectedFilter(const QString &filter)
{
if (filter == d->selectedFilter)
#include "declarativewidgetproxy_p.h"
#include "objectadaptors_p.h"
+#include "staticdialogmethodattached_p.h"
-class DeclarativeFileDialogAttached : public QObject
+class DeclarativeFileDialogAttached : public StaticDialogMethodAttached
{
Q_OBJECT
- Q_PROPERTY(QObject* parent READ dialogParent WRITE setDialogParent NOTIFY dialogParentChanged)
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)
DeclarativeFileDialogAttached(QObject *parent = 0);
~DeclarativeFileDialogAttached();
- void setDialogParent(QObject *parent);
- QObject *dialogParent() const;
-
void setCaption(const QString &caption);
QString caption() const;
Q_INVOKABLE QString getSaveFileName();
Q_SIGNALS:
- void dialogParentChanged(QObject *parent);
void captionChanged(const QString &caption);
void dirChanged(const QString &dir);
void nameFiltersChanged(const QStringList &filters);
void selectedFilterChanged(const QString &filter);
private:
- QWidget *bestParentWindow(QObject *parent) const;
void setSelectedFilter(const QString &filter);
class Private;