qtutilities/resources/qtconfigarguments.h

104 lines
2.5 KiB
C++

#ifndef APPLICATION_UTILITIES_QTCONFIGARGUMENTS_H
#define APPLICATION_UTILITIES_QTCONFIGARGUMENTS_H
#include "../global.h"
#include <c++utilities/application/argumentparser.h>
#ifdef QT_UTILITIES_GUI_QTQUICK
#include <QQuickStyle>
#include <QString>
#if defined(PLATFORM_ANDROID)
#define QT_UTILITIES_DEFAULT_QQC2_STYLE "material"
#elif defined(PLATFORM_WINDOWS)
#define QT_UTILITIES_DEFAULT_QQC2_STYLE "universal"
#endif
#endif
namespace ApplicationUtilities {
class QT_UTILITIES_EXPORT QtConfigArguments {
public:
QtConfigArguments();
Argument &qtWidgetsGuiArg();
Argument &qtQuickGuiArg();
Argument &languageArg();
bool areQtGuiArgsPresent() const;
void applySettings(bool preventApplyingDefaultFont = false) const;
#ifdef QT_UTILITIES_GUI_QTQUICK
void applySettingsForQuickGui() const;
#endif
private:
Argument m_qtWidgetsGuiArg;
Argument m_qtQuickGuiArg;
Argument m_lngArg;
Argument m_qmlDebuggerArg;
Argument m_styleArg;
Argument m_iconThemeArg;
Argument m_fontArg;
Argument m_libraryPathsArg;
Argument m_platformThemeArg;
};
/*!
* \brief Returns the argument for the Qt Widgets GUI.
*/
inline Argument &QtConfigArguments::qtWidgetsGuiArg()
{
return m_qtWidgetsGuiArg;
}
/*!
* \brief Returns the argument for the Qt Quick GUI.
*/
inline Argument &QtConfigArguments::qtQuickGuiArg()
{
return m_qtQuickGuiArg;
}
/*!
* \brief Returns the language argument.
*/
inline Argument &QtConfigArguments::languageArg()
{
return m_lngArg;
}
/*!
* \brief Returns whether at least one of the GUI arguments is present.
*/
inline bool QtConfigArguments::areQtGuiArgsPresent() const
{
return m_qtWidgetsGuiArg.isPresent() || m_qtQuickGuiArg.isPresent();
}
#ifdef QT_UTILITIES_GUI_QTQUICK
/*!
* \brief Applies settings the for Qt Quick GUI.
*/
inline void QtConfigArguments::applySettingsForQuickGui() const
{
if (m_qtQuickGuiArg.isPresent() && m_styleArg.isPresent()) {
QQuickStyle::setStyle(QString::fromLocal8Bit(m_styleArg.values().front()));
}
#ifdef QT_UTILITIES_DEFAULT_QQC2_STYLE
else if (qEnvironmentVariableIsEmpty("QT_QUICK_CONTROLS_STYLE")) {
QQuickStyle::setStyle(QStringLiteral(QT_UTILITIES_DEFAULT_QQC2_STYLE));
}
#endif // QT_UTILITIES_DEFAULT_QQC2_STYLE
}
#endif // QT_UTILITIES_GUI_QTQUICK
} // namespace ApplicationUtilities
#endif // APPLICATION_UTILITIES_QTCONFIGARGUMENTS_H
#ifdef QT_CONFIG_ARGUMENTS
#undef QT_CONFIG_ARGUMENTS
#endif
#define QT_CONFIG_ARGUMENTS ApplicationUtilities::QtConfigArguments