diff options
Diffstat (limited to 'src/widgets/kernel/qplatformdialoghelper_qpa.cpp')
-rw-r--r-- | src/widgets/kernel/qplatformdialoghelper_qpa.cpp | 468 |
1 files changed, 467 insertions, 1 deletions
diff --git a/src/widgets/kernel/qplatformdialoghelper_qpa.cpp b/src/widgets/kernel/qplatformdialoghelper_qpa.cpp index daf864ff30..cfe2b15572 100644 --- a/src/widgets/kernel/qplatformdialoghelper_qpa.cpp +++ b/src/widgets/kernel/qplatformdialoghelper_qpa.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** - ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). + ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** @@ -42,6 +42,11 @@ #include "qplatformdialoghelper_qpa.h" #include <QtCore/QVariant> +#include <QtCore/QSharedData> +#include <QtCore/QSettings> +#include <QtCore/QHash> +#include <QtCore/QUrl> +#include <QtGui/QColor> QT_BEGIN_NAMESPACE @@ -87,4 +92,465 @@ QVariant QPlatformDialogHelper::defaultStyleHint(QPlatformDialogHelper::StyleHi return QVariant(); } +void QPlatformDialogHelper::emitLaunchNativeAppModalPanel() +{ + emit launchNativeAppModalPanel(); +} + +// Font dialog + +class QFontDialogOptionsPrivate : public QSharedData +{ +public: + QFontDialogOptionsPrivate() : options(0) {} + + QFontDialogOptions::FontDialogOptions options; + QString windowTitle; +}; + +QFontDialogOptions::QFontDialogOptions() : d(new QFontDialogOptionsPrivate) +{ +} + +QFontDialogOptions::QFontDialogOptions(const QFontDialogOptions &rhs) : d(rhs.d) +{ +} + +QFontDialogOptions &QFontDialogOptions::operator=(const QFontDialogOptions &rhs) +{ + if (this != &rhs) + d = rhs.d; + return *this; +} + +QFontDialogOptions::~QFontDialogOptions() +{ +} + +QString QFontDialogOptions::windowTitle() const +{ + return d->windowTitle; +} + +void QFontDialogOptions::setWindowTitle(const QString &title) +{ + d->windowTitle = title; +} + +void QFontDialogOptions::setOption(QFontDialogOptions::FontDialogOption option, bool on) +{ + if (!(d->options & option) != !on) + setOptions(d->options ^ option); +} + +bool QFontDialogOptions::testOption(QFontDialogOptions::FontDialogOption option) const +{ + return d->options & option; +} + +void QFontDialogOptions::setOptions(FontDialogOptions options) +{ + if (options != d->options) + d->options = options; +} + +QFontDialogOptions::FontDialogOptions QFontDialogOptions::options() const +{ + return d->options; +} + +const QSharedPointer<QFontDialogOptions> &QPlatformFontDialogHelper::options() const +{ + return m_options; +} + +void QPlatformFontDialogHelper::setOptions(const QSharedPointer<QFontDialogOptions> &options) +{ + m_options = options; +} + +// Color dialog + +class QColorDialogStaticData +{ +public: + enum { CustomColorCount = 16, StandardColorCount = 6 * 8 }; + + QColorDialogStaticData(); + inline void readSettings(); + inline void writeSettings() const; + + QRgb customRgb[CustomColorCount]; + QRgb standardRgb[StandardColorCount]; + bool customSet; +}; + +QColorDialogStaticData::QColorDialogStaticData() : customSet(false) +{ + int i = 0; + for (int g = 0; g < 4; ++g) + for (int r = 0; r < 4; ++r) + for (int b = 0; b < 3; ++b) + standardRgb[i++] = qRgb(r * 255 / 3, g * 255 / 3, b * 255 / 2); + qFill(customRgb, customRgb + CustomColorCount, 0xffffffff); + readSettings(); +} + +void QColorDialogStaticData::readSettings() +{ +#ifndef QT_NO_SETTINGS + const QSettings settings(QSettings::UserScope, QStringLiteral("Trolltech")); + for (int i = 0; i < int(CustomColorCount); ++i) { + const QVariant v = settings.value(QStringLiteral("Qt/customColors/") + QString::number(i)); + if (v.isValid()) + customRgb[i] = v.toUInt(); + } +#endif +} + +void QColorDialogStaticData::writeSettings() const +{ +#ifndef QT_NO_SETTINGS + if (!customSet) { + QSettings settings(QSettings::UserScope, QStringLiteral("Trolltech")); + for (int i = 0; i < int(CustomColorCount); ++i) + settings.setValue(QStringLiteral("Qt/customColors/") + QString::number(i), customRgb[i]); + } +#endif +} + +Q_GLOBAL_STATIC(QColorDialogStaticData, qColorDialogStaticData) + +class QColorDialogOptionsPrivate : public QSharedData +{ +public: + QColorDialogOptionsPrivate() : options(0) {} + // Write out settings around destruction of dialogs + ~QColorDialogOptionsPrivate() { qColorDialogStaticData()->writeSettings(); } + + QColorDialogOptions::ColorDialogOptions options; + QString windowTitle; +}; + +QColorDialogOptions::QColorDialogOptions() : d(new QColorDialogOptionsPrivate) +{ +} + +QColorDialogOptions::QColorDialogOptions(const QColorDialogOptions &rhs) : d(rhs.d) +{ +} + +QColorDialogOptions &QColorDialogOptions::operator=(const QColorDialogOptions &rhs) +{ + if (this != &rhs) + d = rhs.d; + return *this; +} + +QColorDialogOptions::~QColorDialogOptions() +{ +} + +QString QColorDialogOptions::windowTitle() const +{ + return d->windowTitle; +} + +void QColorDialogOptions::setWindowTitle(const QString &title) +{ + d->windowTitle = title; +} + +void QColorDialogOptions::setOption(QColorDialogOptions::ColorDialogOption option, bool on) +{ + if (!(d->options & option) != !on) + setOptions(d->options ^ option); +} + +bool QColorDialogOptions::testOption(QColorDialogOptions::ColorDialogOption option) const +{ + return d->options & option; +} + +void QColorDialogOptions::setOptions(ColorDialogOptions options) +{ + if (options != d->options) + d->options = options; +} + +QColorDialogOptions::ColorDialogOptions QColorDialogOptions::options() const +{ + return d->options; +} + +int QColorDialogOptions::customColorCount() +{ + return QColorDialogStaticData::CustomColorCount; +} + +QRgb QColorDialogOptions::customColor(int index) +{ + if (uint(index) >= uint(QColorDialogStaticData::CustomColorCount)) + return qRgb(255, 255, 255); + return qColorDialogStaticData()->customRgb[index]; +} + +QRgb *QColorDialogOptions::customColors() +{ + return qColorDialogStaticData()->customRgb; +} + +void QColorDialogOptions::setCustomColor(int index, QRgb color) +{ + if (uint(index) >= uint(QColorDialogStaticData::CustomColorCount)) + return; + qColorDialogStaticData()->customSet; + qColorDialogStaticData()->customRgb[index] = color; +} + +QRgb *QColorDialogOptions::standardColors() +{ + return qColorDialogStaticData()->standardRgb; +} + +QRgb QColorDialogOptions::standardColor(int index) +{ + if (uint(index) >= uint(QColorDialogStaticData::StandardColorCount)) + return qRgb(255, 255, 255); + return qColorDialogStaticData()->standardRgb[index]; +} + +void QColorDialogOptions::setStandardColor(int index, QRgb color) +{ + if (uint(index) >= uint(QColorDialogStaticData::StandardColorCount)) + return; + qColorDialogStaticData()->standardRgb[index] = color; +} + +const QSharedPointer<QColorDialogOptions> &QPlatformColorDialogHelper::options() const +{ + return m_options; +} + +void QPlatformColorDialogHelper::setOptions(const QSharedPointer<QColorDialogOptions> &options) +{ + m_options = options; +} + +// File dialog + +class QFileDialogOptionsPrivate : public QSharedData +{ +public: + QFileDialogOptionsPrivate() : options(0), + viewMode(QFileDialogOptions::Detail), + fileMode(QFileDialogOptions::AnyFile), + acceptMode(QFileDialogOptions::AcceptOpen), + filters(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs) + {} + + QFileDialogOptions::FileDialogOptions options; + QString windowTitle; + + QFileDialogOptions::ViewMode viewMode; + QFileDialogOptions::FileMode fileMode; + QFileDialogOptions::AcceptMode acceptMode; + QString labels[QFileDialogOptions::DialogLabelCount]; + QDir::Filters filters; + QList<QUrl> sidebarUrls; + QStringList nameFilters; + QString defaultSuffix; + QStringList history; + QString initialDirectory; + QString initiallySelectedNameFilter; + QStringList initiallySelectedFiles; +}; + +QFileDialogOptions::QFileDialogOptions() : d(new QFileDialogOptionsPrivate) +{ +} + +QFileDialogOptions::QFileDialogOptions(const QFileDialogOptions &rhs) : d(rhs.d) +{ +} + +QFileDialogOptions &QFileDialogOptions::operator=(const QFileDialogOptions &rhs) +{ + if (this != &rhs) + d = rhs.d; + return *this; +} + +QFileDialogOptions::~QFileDialogOptions() +{ +} + +QString QFileDialogOptions::windowTitle() const +{ + return d->windowTitle; +} + +void QFileDialogOptions::setWindowTitle(const QString &title) +{ + d->windowTitle = title; +} + +void QFileDialogOptions::setOption(QFileDialogOptions::FileDialogOption option, bool on) +{ + if (!(d->options & option) != !on) + setOptions(d->options ^ option); +} + +bool QFileDialogOptions::testOption(QFileDialogOptions::FileDialogOption option) const +{ + return d->options & option; +} + +void QFileDialogOptions::setOptions(FileDialogOptions options) +{ + if (options != d->options) + d->options = options; +} + +QFileDialogOptions::FileDialogOptions QFileDialogOptions::options() const +{ + return d->options; +} + +QDir::Filters QFileDialogOptions::filter() const +{ + return d->filters; +} + +void QFileDialogOptions::setFilter(QDir::Filters filters) +{ + d->filters = filters; +} + +void QFileDialogOptions::setViewMode(QFileDialogOptions::ViewMode mode) +{ + d->viewMode = mode; +} + +QFileDialogOptions::ViewMode QFileDialogOptions::viewMode() const +{ + return d->viewMode; +} + +void QFileDialogOptions::setFileMode(QFileDialogOptions::FileMode mode) +{ + d->fileMode = mode; +} + +QFileDialogOptions::FileMode QFileDialogOptions::fileMode() const +{ + return d->fileMode; +} + +void QFileDialogOptions::setAcceptMode(QFileDialogOptions::AcceptMode mode) +{ + d->acceptMode = mode; +} + +QFileDialogOptions::AcceptMode QFileDialogOptions::acceptMode() const +{ + return d->acceptMode; +} + +void QFileDialogOptions::setSidebarUrls(const QList<QUrl> &urls) +{ + d->sidebarUrls = urls; +} + +QList<QUrl> QFileDialogOptions::sidebarUrls() const +{ + return d->sidebarUrls; +} + +void QFileDialogOptions::setNameFilters(const QStringList &filters) +{ + d->nameFilters = filters; +} + +QStringList QFileDialogOptions::nameFilters() const +{ + return d->nameFilters; +} + +void QFileDialogOptions::setDefaultSuffix(const QString &suffix) +{ + d->defaultSuffix = suffix; +} + +QString QFileDialogOptions::defaultSuffix() const +{ + return d->defaultSuffix; +} + +void QFileDialogOptions::setHistory(const QStringList &paths) +{ + d->history = paths; +} + +QStringList QFileDialogOptions::history() const +{ + return d->history; +} + +void QFileDialogOptions::setLabelText(QFileDialogOptions::DialogLabel label, const QString &text) +{ + if (label >= 0 && label < DialogLabelCount) + d->labels[label] = text; +} + +QString QFileDialogOptions::labelText(QFileDialogOptions::DialogLabel label) const +{ + return (label >= 0 && label < DialogLabelCount) ? d->labels[label] : QString(); +} + +bool QFileDialogOptions::isLabelExplicitlySet(DialogLabel label) +{ + return label >= 0 && label < DialogLabelCount && !d->labels[label].isEmpty(); +} + +QString QFileDialogOptions::initialDirectory() const +{ + return d->initialDirectory; +} + +void QFileDialogOptions::setInitialDirectory(const QString &directory) +{ + d->initialDirectory = directory; +} + +QString QFileDialogOptions::initiallySelectedNameFilter() const +{ + return d->initiallySelectedNameFilter; +} + +void QFileDialogOptions::setInitiallySelectedNameFilter(const QString &filter) +{ + d->initiallySelectedNameFilter = filter; +} + +QStringList QFileDialogOptions::initiallySelectedFiles() const +{ + return d->initiallySelectedFiles; +} + +void QFileDialogOptions::setInitiallySelectedFiles(const QStringList &files) +{ + d->initiallySelectedFiles = files; +} + +const QSharedPointer<QFileDialogOptions> &QPlatformFileDialogHelper::options() const +{ + return m_options; +} + +void QPlatformFileDialogHelper::setOptions(const QSharedPointer<QFileDialogOptions> &options) +{ + m_options = options; +} + QT_END_NAMESPACE |