diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-08-16 18:18:54 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-08-16 18:25:04 +0000 |
commit | a69f95259fae492c4b95813da8e75433b2883ac1 (patch) | |
tree | 4ad0516e1c662e6c2af0a324314541eb2ce718d4 | |
parent | 14ee7d5b940cca276bfdc0492c0ae52b69ded62d (diff) |
Platform: widget-based fallbacks no longer need to check availability
It is done in qwidgetplatform_p.h createWidget() outside QT_WIDGETS_LIB
guards so you get the important warnings even in -no-widgets builds.
Now that the widget platform instances are created only when really
available, they can unconditionally instantiate the respective widget,
which simplifies the code quite a bit.
Change-Id: I7430f8e803050e43edb3af3a139b0508445f6a37
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
6 files changed, 80 insertions, 143 deletions
diff --git a/src/imports/platform/widgets/qwidgetplatformcolordialog.cpp b/src/imports/platform/widgets/qwidgetplatformcolordialog.cpp index 88a5f9d3..69a76eb2 100644 --- a/src/imports/platform/widgets/qwidgetplatformcolordialog.cpp +++ b/src/imports/platform/widgets/qwidgetplatformcolordialog.cpp @@ -36,23 +36,19 @@ #include "qwidgetplatformcolordialog_p.h" #include "qwidgetplatformdialog_p.h" -#include "qwidgetplatform_p.h" #include <QtWidgets/qcolordialog.h> QT_BEGIN_NAMESPACE QWidgetPlatformColorDialog::QWidgetPlatformColorDialog(QObject *parent) + : m_dialog(new QColorDialog) { setParent(parent); - static bool available = QWidgetPlatform::isAvailable("color dialog"); - if (available) { - m_dialog.reset(new QColorDialog); - connect(m_dialog.data(), &QColorDialog::accepted, this, &QPlatformDialogHelper::accept); - connect(m_dialog.data(), &QColorDialog::rejected, this, &QPlatformDialogHelper::reject); - connect(m_dialog.data(), &QColorDialog::currentColorChanged, this, &QPlatformColorDialogHelper::currentColorChanged); - } + connect(m_dialog.data(), &QColorDialog::accepted, this, &QPlatformDialogHelper::accept); + connect(m_dialog.data(), &QColorDialog::rejected, this, &QPlatformDialogHelper::reject); + connect(m_dialog.data(), &QColorDialog::currentColorChanged, this, &QPlatformColorDialogHelper::currentColorChanged); } QWidgetPlatformColorDialog::~QWidgetPlatformColorDialog() @@ -61,26 +57,21 @@ QWidgetPlatformColorDialog::~QWidgetPlatformColorDialog() QColor QWidgetPlatformColorDialog::currentColor() const { - return m_dialog ? m_dialog->currentColor() : QColor(); + return m_dialog->currentColor(); } void QWidgetPlatformColorDialog::setCurrentColor(const QColor &color) { - if (m_dialog) - m_dialog->setCurrentColor(color); + m_dialog->setCurrentColor(color); } void QWidgetPlatformColorDialog::exec() { - if (m_dialog) - m_dialog->exec(); + m_dialog->exec(); } bool QWidgetPlatformColorDialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) { - if (!m_dialog) - return false; - QSharedPointer<QColorDialogOptions> options = QPlatformColorDialogHelper::options(); m_dialog->setWindowTitle(options->windowTitle()); m_dialog->setOptions(static_cast<QColorDialog::ColorDialogOptions>(int(options->options())) | QColorDialog::DontUseNativeDialog); @@ -90,8 +81,7 @@ bool QWidgetPlatformColorDialog::show(Qt::WindowFlags flags, Qt::WindowModality void QWidgetPlatformColorDialog::hide() { - if (m_dialog) - m_dialog->hide(); + m_dialog->hide(); } QT_END_NAMESPACE diff --git a/src/imports/platform/widgets/qwidgetplatformfiledialog.cpp b/src/imports/platform/widgets/qwidgetplatformfiledialog.cpp index dd25708d..772443a5 100644 --- a/src/imports/platform/widgets/qwidgetplatformfiledialog.cpp +++ b/src/imports/platform/widgets/qwidgetplatformfiledialog.cpp @@ -36,38 +36,34 @@ #include "qwidgetplatformfiledialog_p.h" #include "qwidgetplatformdialog_p.h" -#include "qwidgetplatform_p.h" #include <QtWidgets/qfiledialog.h> QT_BEGIN_NAMESPACE QWidgetPlatformFileDialog::QWidgetPlatformFileDialog(QObject *parent) + : m_dialog(new QFileDialog) { setParent(parent); - static bool available = QWidgetPlatform::isAvailable("file dialog"); - if (available) { - m_dialog.reset(new QFileDialog); - connect(m_dialog.data(), &QDialog::accepted, this, &QPlatformDialogHelper::accept); - connect(m_dialog.data(), &QDialog::rejected, this, &QPlatformDialogHelper::reject); - - connect(m_dialog.data(), &QFileDialog::fileSelected, [this](const QString &file) { - emit fileSelected(QUrl::fromLocalFile(file)); - }); - connect(m_dialog.data(), &QFileDialog::filesSelected, [this](const QList<QString> &files) { - QList<QUrl> urls; - urls.reserve(files.count()); - for (const QString &file : files) - urls += QUrl::fromLocalFile(file); - emit filesSelected(urls); - }); - connect(m_dialog.data(), &QFileDialog::currentChanged, [this](const QString &path) { - emit currentChanged(QUrl::fromLocalFile(path)); - }); - connect(m_dialog.data(), &QFileDialog::directoryEntered, this, &QWidgetPlatformFileDialog::directoryEntered); - connect(m_dialog.data(), &QFileDialog::filterSelected, this, &QWidgetPlatformFileDialog::filterSelected); - } + connect(m_dialog.data(), &QDialog::accepted, this, &QPlatformDialogHelper::accept); + connect(m_dialog.data(), &QDialog::rejected, this, &QPlatformDialogHelper::reject); + + connect(m_dialog.data(), &QFileDialog::fileSelected, [this](const QString &file) { + emit fileSelected(QUrl::fromLocalFile(file)); + }); + connect(m_dialog.data(), &QFileDialog::filesSelected, [this](const QList<QString> &files) { + QList<QUrl> urls; + urls.reserve(files.count()); + for (const QString &file : files) + urls += QUrl::fromLocalFile(file); + emit filesSelected(urls); + }); + connect(m_dialog.data(), &QFileDialog::currentChanged, [this](const QString &path) { + emit currentChanged(QUrl::fromLocalFile(path)); + }); + connect(m_dialog.data(), &QFileDialog::directoryEntered, this, &QWidgetPlatformFileDialog::directoryEntered); + connect(m_dialog.data(), &QFileDialog::filterSelected, this, &QWidgetPlatformFileDialog::filterSelected); } QWidgetPlatformFileDialog::~QWidgetPlatformFileDialog() @@ -81,24 +77,22 @@ bool QWidgetPlatformFileDialog::defaultNameFilterDisables() const void QWidgetPlatformFileDialog::setDirectory(const QUrl &directory) { - if (m_dialog) - m_dialog->setDirectory(directory.toLocalFile()); + m_dialog->setDirectory(directory.toLocalFile()); } QUrl QWidgetPlatformFileDialog::directory() const { - return m_dialog ? m_dialog->directoryUrl() : QUrl(); + return m_dialog->directoryUrl(); } void QWidgetPlatformFileDialog::selectFile(const QUrl &filename) { - if (m_dialog) - m_dialog->selectUrl(filename); + m_dialog->selectUrl(filename); } QList<QUrl> QWidgetPlatformFileDialog::selectedFiles() const { - return m_dialog ? m_dialog->selectedUrls() : QList<QUrl>(); + return m_dialog->selectedUrls(); } void QWidgetPlatformFileDialog::setFilter() @@ -108,26 +102,21 @@ void QWidgetPlatformFileDialog::setFilter() void QWidgetPlatformFileDialog::selectNameFilter(const QString &filter) { - if (m_dialog) - m_dialog->selectNameFilter(filter); + m_dialog->selectNameFilter(filter); } QString QWidgetPlatformFileDialog::selectedNameFilter() const { - return m_dialog ? m_dialog->selectedNameFilter() : QString(); + return m_dialog->selectedNameFilter(); } void QWidgetPlatformFileDialog::exec() { - if (m_dialog) - m_dialog->exec(); + m_dialog->exec(); } bool QWidgetPlatformFileDialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) { - if (!m_dialog) - return false; - QSharedPointer<QFileDialogOptions> options = QPlatformFileDialogHelper::options(); m_dialog->setWindowTitle(options->windowTitle()); m_dialog->setAcceptMode(static_cast<QFileDialog::AcceptMode>(options->acceptMode())); @@ -145,8 +134,7 @@ bool QWidgetPlatformFileDialog::show(Qt::WindowFlags flags, Qt::WindowModality m void QWidgetPlatformFileDialog::hide() { - if (m_dialog) - m_dialog->hide(); + m_dialog->hide(); } QT_END_NAMESPACE diff --git a/src/imports/platform/widgets/qwidgetplatformfontdialog.cpp b/src/imports/platform/widgets/qwidgetplatformfontdialog.cpp index 4d8b7616..d2b6c539 100644 --- a/src/imports/platform/widgets/qwidgetplatformfontdialog.cpp +++ b/src/imports/platform/widgets/qwidgetplatformfontdialog.cpp @@ -36,23 +36,19 @@ #include "qwidgetplatformfontdialog_p.h" #include "qwidgetplatformdialog_p.h" -#include "qwidgetplatform_p.h" #include <QtWidgets/qfontdialog.h> QT_BEGIN_NAMESPACE QWidgetPlatformFontDialog::QWidgetPlatformFontDialog(QObject *parent) + : m_dialog(new QFontDialog) { setParent(parent); - static bool available = QWidgetPlatform::isAvailable("font dialog"); - if (available) { - m_dialog.reset(new QFontDialog); - connect(m_dialog.data(), &QFontDialog::accepted, this, &QPlatformDialogHelper::accept); - connect(m_dialog.data(), &QFontDialog::rejected, this, &QPlatformDialogHelper::reject); - connect(m_dialog.data(), &QFontDialog::currentFontChanged, this, &QPlatformFontDialogHelper::currentFontChanged); - } + connect(m_dialog.data(), &QFontDialog::accepted, this, &QPlatformDialogHelper::accept); + connect(m_dialog.data(), &QFontDialog::rejected, this, &QPlatformDialogHelper::reject); + connect(m_dialog.data(), &QFontDialog::currentFontChanged, this, &QPlatformFontDialogHelper::currentFontChanged); } QWidgetPlatformFontDialog::~QWidgetPlatformFontDialog() @@ -61,26 +57,21 @@ QWidgetPlatformFontDialog::~QWidgetPlatformFontDialog() QFont QWidgetPlatformFontDialog::currentFont() const { - return m_dialog ? m_dialog->currentFont() : QFont(); + return m_dialog->currentFont(); } void QWidgetPlatformFontDialog::setCurrentFont(const QFont &font) { - if (m_dialog) - m_dialog->setCurrentFont(font); + m_dialog->setCurrentFont(font); } void QWidgetPlatformFontDialog::exec() { - if (m_dialog) - m_dialog->exec(); + m_dialog->exec(); } bool QWidgetPlatformFontDialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) { - if (!m_dialog) - return false; - QSharedPointer<QFontDialogOptions> options = QPlatformFontDialogHelper::options(); m_dialog->setWindowTitle(options->windowTitle()); m_dialog->setOptions(static_cast<QFontDialog::FontDialogOptions>(int(options->options())) | QFontDialog::DontUseNativeDialog); @@ -90,8 +81,7 @@ bool QWidgetPlatformFontDialog::show(Qt::WindowFlags flags, Qt::WindowModality m void QWidgetPlatformFontDialog::hide() { - if (m_dialog) - m_dialog->hide(); + m_dialog->hide(); } QT_END_NAMESPACE diff --git a/src/imports/platform/widgets/qwidgetplatformmenu.cpp b/src/imports/platform/widgets/qwidgetplatformmenu.cpp index a3faafa0..d9ecb16f 100644 --- a/src/imports/platform/widgets/qwidgetplatformmenu.cpp +++ b/src/imports/platform/widgets/qwidgetplatformmenu.cpp @@ -36,7 +36,6 @@ #include "qwidgetplatformmenu_p.h" #include "qwidgetplatformmenuitem_p.h" -#include "qwidgetplatform_p.h" #include <QtGui/qwindow.h> #include <QtWidgets/qmenu.h> @@ -45,15 +44,12 @@ QT_BEGIN_NAMESPACE QWidgetPlatformMenu::QWidgetPlatformMenu(QObject *parent) + : m_menu(new QMenu) { setParent(parent); - static bool available = QWidgetPlatform::isAvailable("menu"); - if (available) { - m_menu.reset(new QMenu); - connect(m_menu.data(), &QMenu::aboutToShow, this, &QPlatformMenu::aboutToShow); - connect(m_menu.data(), &QMenu::aboutToHide, this, &QPlatformMenu::aboutToHide); - } + connect(m_menu.data(), &QMenu::aboutToShow, this, &QPlatformMenu::aboutToShow); + connect(m_menu.data(), &QMenu::aboutToHide, this, &QPlatformMenu::aboutToHide); } QWidgetPlatformMenu::~QWidgetPlatformMenu() @@ -68,7 +64,7 @@ QMenu *QWidgetPlatformMenu::menu() const void QWidgetPlatformMenu::insertMenuItem(QPlatformMenuItem *item, QPlatformMenuItem *before) { QWidgetPlatformMenuItem *widgetItem = qobject_cast<QWidgetPlatformMenuItem *>(item); - if (!widgetItem || !m_menu) + if (!widgetItem) return; QWidgetPlatformMenuItem *widgetBefore = qobject_cast<QWidgetPlatformMenuItem *>(before); @@ -78,7 +74,7 @@ void QWidgetPlatformMenu::insertMenuItem(QPlatformMenuItem *item, QPlatformMenuI void QWidgetPlatformMenu::removeMenuItem(QPlatformMenuItem *item) { QWidgetPlatformMenuItem *widgetItem = qobject_cast<QWidgetPlatformMenuItem *>(item); - if (!widgetItem || !m_menu) + if (!widgetItem) return; m_menu->removeAction(widgetItem->action()); @@ -106,43 +102,38 @@ void QWidgetPlatformMenu::setTag(quintptr tag) void QWidgetPlatformMenu::setText(const QString &text) { - if (m_menu) - m_menu->setTitle(text); + m_menu->setTitle(text); } void QWidgetPlatformMenu::setIcon(const QIcon &icon) { - if (m_menu) - m_menu->setIcon(icon); + m_menu->setIcon(icon); } void QWidgetPlatformMenu::setEnabled(bool enabled) { - if (m_menu) - m_menu->menuAction()->setEnabled(enabled); + m_menu->menuAction()->setEnabled(enabled); } bool QWidgetPlatformMenu::isEnabled() const { - return m_menu && m_menu->menuAction()->isEnabled(); + return m_menu->menuAction()->isEnabled(); } void QWidgetPlatformMenu::setVisible(bool visible) { - if (m_menu) - m_menu->menuAction()->setVisible(visible); + m_menu->menuAction()->setVisible(visible); } void QWidgetPlatformMenu::setMinimumWidth(int width) { - if (m_menu && width > 0) + if (width > 0) m_menu->setMinimumWidth(width); } void QWidgetPlatformMenu::setFont(const QFont &font) { - if (m_menu) - m_menu->setFont(font); + m_menu->setFont(font); } void QWidgetPlatformMenu::setMenuType(MenuType type) @@ -152,9 +143,6 @@ void QWidgetPlatformMenu::setMenuType(MenuType type) void QWidgetPlatformMenu::showPopup(const QWindow *window, const QRect &targetRect, const QPlatformMenuItem *item) { - if (!m_menu) - return; - m_menu->createWinId(); QWindow *handle = m_menu->windowHandle(); Q_ASSERT(handle); @@ -170,8 +158,7 @@ void QWidgetPlatformMenu::showPopup(const QWindow *window, const QRect &targetRe void QWidgetPlatformMenu::dismiss() { - if (m_menu) - m_menu->close(); + m_menu->close(); } QPlatformMenuItem *QWidgetPlatformMenu::menuItemAt(int position) const diff --git a/src/imports/platform/widgets/qwidgetplatformmessagedialog.cpp b/src/imports/platform/widgets/qwidgetplatformmessagedialog.cpp index 70c6e7e4..b546e534 100644 --- a/src/imports/platform/widgets/qwidgetplatformmessagedialog.cpp +++ b/src/imports/platform/widgets/qwidgetplatformmessagedialog.cpp @@ -36,7 +36,6 @@ #include "qwidgetplatformmessagedialog_p.h" #include "qwidgetplatformdialog_p.h" -#include "qwidgetplatform_p.h" #include <QtWidgets/qmessagebox.h> #include <QtWidgets/qabstractbutton.h> @@ -44,20 +43,17 @@ QT_BEGIN_NAMESPACE QWidgetPlatformMessageDialog::QWidgetPlatformMessageDialog(QObject *parent) + : m_dialog(new QMessageBox) { setParent(parent); - static bool available = QWidgetPlatform::isAvailable("message dialog"); - if (available) { - m_dialog.reset(new QMessageBox); - connect(m_dialog.data(), &QMessageBox::accepted, this, &QPlatformDialogHelper::accept); - connect(m_dialog.data(), &QMessageBox::rejected, this, &QPlatformDialogHelper::reject); - connect(m_dialog.data(), &QMessageBox::buttonClicked, [this](QAbstractButton *button) { - QMessageBox::ButtonRole role = m_dialog->buttonRole(button); - QMessageBox::StandardButton standardButton = m_dialog->standardButton(button); - emit clicked(static_cast<StandardButton>(standardButton), static_cast<ButtonRole>(role)); - }); - } + connect(m_dialog.data(), &QMessageBox::accepted, this, &QPlatformDialogHelper::accept); + connect(m_dialog.data(), &QMessageBox::rejected, this, &QPlatformDialogHelper::reject); + connect(m_dialog.data(), &QMessageBox::buttonClicked, [this](QAbstractButton *button) { + QMessageBox::ButtonRole role = m_dialog->buttonRole(button); + QMessageBox::StandardButton standardButton = m_dialog->standardButton(button); + emit clicked(static_cast<StandardButton>(standardButton), static_cast<ButtonRole>(role)); + }); } QWidgetPlatformMessageDialog::~QWidgetPlatformMessageDialog() @@ -65,15 +61,11 @@ QWidgetPlatformMessageDialog::~QWidgetPlatformMessageDialog() } void QWidgetPlatformMessageDialog::exec() { - if (m_dialog) - m_dialog->exec(); + m_dialog->exec(); } bool QWidgetPlatformMessageDialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) { - if (!m_dialog) - return false; - QSharedPointer<QMessageDialogOptions> options = QPlatformMessageDialogHelper::options(); m_dialog->setWindowTitle(options->windowTitle()); m_dialog->setIcon(static_cast<QMessageBox::Icon>(options->icon())); @@ -87,8 +79,7 @@ bool QWidgetPlatformMessageDialog::show(Qt::WindowFlags flags, Qt::WindowModalit void QWidgetPlatformMessageDialog::hide() { - if (m_dialog) - m_dialog->hide(); + m_dialog->hide(); } QT_END_NAMESPACE diff --git a/src/imports/platform/widgets/qwidgetplatformsystemtrayicon.cpp b/src/imports/platform/widgets/qwidgetplatformsystemtrayicon.cpp index b8aff340..cfee02aa 100644 --- a/src/imports/platform/widgets/qwidgetplatformsystemtrayicon.cpp +++ b/src/imports/platform/widgets/qwidgetplatformsystemtrayicon.cpp @@ -36,24 +36,20 @@ #include "qwidgetplatformsystemtrayicon_p.h" #include "qwidgetplatformmenu_p.h" -#include "qwidgetplatform_p.h" #include <QtWidgets/qsystemtrayicon.h> QT_BEGIN_NAMESPACE QWidgetPlatformSystemTrayIcon::QWidgetPlatformSystemTrayIcon(QObject *parent) + : m_systray(new QSystemTrayIcon) { setParent(parent); - static bool available = QWidgetPlatform::isAvailable("system tray"); - if (available) { - m_systray.reset(new QSystemTrayIcon); - connect(m_systray.data(), &QSystemTrayIcon::messageClicked, this, &QPlatformSystemTrayIcon::messageClicked); - connect(m_systray.data(), &QSystemTrayIcon::activated, [this](QSystemTrayIcon::ActivationReason reason) { - emit activated(static_cast<ActivationReason>(reason)); - }); - } + connect(m_systray.data(), &QSystemTrayIcon::messageClicked, this, &QPlatformSystemTrayIcon::messageClicked); + connect(m_systray.data(), &QSystemTrayIcon::activated, [this](QSystemTrayIcon::ActivationReason reason) { + emit activated(static_cast<ActivationReason>(reason)); + }); } QWidgetPlatformSystemTrayIcon::~QWidgetPlatformSystemTrayIcon() @@ -62,32 +58,28 @@ QWidgetPlatformSystemTrayIcon::~QWidgetPlatformSystemTrayIcon() void QWidgetPlatformSystemTrayIcon::init() { - if (m_systray) - m_systray->show(); + m_systray->show(); } void QWidgetPlatformSystemTrayIcon::cleanup() { - if (m_systray) - m_systray->hide(); + m_systray->hide(); } void QWidgetPlatformSystemTrayIcon::updateIcon(const QIcon &icon) { - if (m_systray) - m_systray->setIcon(icon); + m_systray->setIcon(icon); } void QWidgetPlatformSystemTrayIcon::updateToolTip(const QString &tooltip) { - if (m_systray) - m_systray->setToolTip(tooltip); + m_systray->setToolTip(tooltip); } void QWidgetPlatformSystemTrayIcon::updateMenu(QPlatformMenu *menu) { QWidgetPlatformMenu *widgetMenu = qobject_cast<QWidgetPlatformMenu *>(menu); - if (!widgetMenu || !m_systray) + if (!widgetMenu) return; m_systray->setContextMenu(widgetMenu->menu()); @@ -95,24 +87,23 @@ void QWidgetPlatformSystemTrayIcon::updateMenu(QPlatformMenu *menu) QRect QWidgetPlatformSystemTrayIcon::geometry() const { - return m_systray ? m_systray->geometry() : QRect(); + return m_systray->geometry(); } void QWidgetPlatformSystemTrayIcon::showMessage(const QString &title, const QString &msg, const QIcon &icon, MessageIcon iconType, int msecs) { Q_UNUSED(icon); - if (m_systray) - m_systray->showMessage(title, msg, static_cast<QSystemTrayIcon::MessageIcon>(iconType), msecs); + m_systray->showMessage(title, msg, static_cast<QSystemTrayIcon::MessageIcon>(iconType), msecs); } bool QWidgetPlatformSystemTrayIcon::isSystemTrayAvailable() const { - return m_systray && QSystemTrayIcon::isSystemTrayAvailable(); + return QSystemTrayIcon::isSystemTrayAvailable(); } bool QWidgetPlatformSystemTrayIcon::supportsMessages() const { - return m_systray && QSystemTrayIcon::supportsMessages(); + return QSystemTrayIcon::supportsMessages(); } QPlatformMenu *QWidgetPlatformSystemTrayIcon::createMenu() const |