Hide warnings, minimal requirements for build is Qt 5.0.0.

--HG--
branch : develop
This commit is contained in:
Roman Telezhynskyi 2015-04-01 15:51:54 +03:00
parent e1e995abe7
commit 30f6aea194
23 changed files with 1832 additions and 25 deletions

View File

@ -150,7 +150,7 @@ GCC_DEBUG_CXXFLAGS += \
-Wmissing-format-attribute \
-Wswitch-default \
-Wuninitialized \
-Wvariadic-macros \
-Wno-variadic-macros \
-Wlogical-op \
-Wnoexcept \
-Wmissing-noreturn \

View File

@ -1,9 +1,9 @@
include(Valentina.pri)
#Check if Qt version >= 5.2.0
#Check if Qt version >= 5.0.0
!minQtVersion(5, 2, 0) {
message("Cannot build Valentina with Qt version $${QT_VERSION}.")
error("Use at least Qt 5.2.0.")
error("Use at least Qt 5.0.0.")
}
TEMPLATE = subdirs

View File

@ -46,6 +46,7 @@ UI_DIR = uic
# Suport subdirectories. Just better project code tree.
include(app.pri)
include(../utils/utils.pri)
# This include path help promoute VMainGraphicsView on main window. Without it compiler can't find path to custom view
INCLUDEPATH += "$${PWD}/widgets"

View File

@ -27,13 +27,14 @@
*************************************************************************/
#include "vcontainer.h"
#include <QDebug>
#include "../core/vapplication.h"
#include "../geometry/varc.h"
#include "../geometry/vsplinepath.h"
#include "../../utils/logging.h"
#include <QLineF>
#include <QtAlgorithms>
#include <QLoggingCategory>
#include <QDebug>
Q_LOGGING_CATEGORY(vCon, "v.container")

View File

@ -4,9 +4,13 @@
HEADERS += \
$$PWD/vapplication.h \
$$PWD/undoevent.h \
$$PWD/vsettings.h
$$PWD/vsettings.h \
$$PWD/qcommandlineoption.h \
$$PWD/qcommandlineparser.h
SOURCES += \
$$PWD/vapplication.cpp \
$$PWD/undoevent.cpp \
$$PWD/vsettings.cpp
$$PWD/vsettings.cpp \
$$PWD/qcommandlineoption.cpp \
$$PWD/qcommandlineparser.cpp

View File

@ -0,0 +1,381 @@
/****************************************************************************
**
** Copyright (C) 2013 Laszlo Papp <lpapp@kde.org>
** Copyright (C) 2013 David Faure <faure@kde.org>
** Contact: http://www.qt.io/licensing/
**
** $QT_BEGIN_LICENSE:LGPL21$
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qcommandlineoption.h"
#include "qset.h"
#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
class QCommandLineOptionPrivate : public QSharedData
{
public:
inline QCommandLineOptionPrivate()
: hidden(false)
{ }
void setNames(const QStringList &nameList);
//! The list of names used for this option.
QStringList names;
//! The documentation name for the value, if one is expected
//! Example: "-o <file>" means valueName == "file"
QString valueName;
//! The description used for this option.
QString description;
//! The list of default values used for this option.
QStringList defaultValues;
//! Show or hide in --help
bool hidden;
};
/*!
\since 5.2
\class QCommandLineOption
\brief The QCommandLineOption class defines a possible command-line option.
\inmodule QtCore
\ingroup shared
\ingroup tools
This class is used to describe an option on the command line. It allows
different ways of defining the same option with multiple aliases possible.
It is also used to describe how the option is used - it may be a flag (e.g. \c{-v})
or take a value (e.g. \c{-o file}).
Examples:
\snippet code/src_corelib_tools_qcommandlineoption.cpp 0
\sa QCommandLineParser
*/
/*!
\fn QCommandLineOption &QCommandLineOption::operator=(QCommandLineOption &&other)
Move-assigns \a other to this QCommandLineOption instance.
\since 5.2
*/
/*!
Constructs a command line option object with the name \a name.
The name can be either short or long. If the name is one character in
length, it is considered a short name. Option names must not be empty,
must not start with a dash or a slash character, must not contain a \c{=}
and cannot be repeated.
\sa setDescription(), setValueName(), setDefaultValues()
*/
QCommandLineOption::QCommandLineOption(const QString &name)
: d(new QCommandLineOptionPrivate)
{
d->setNames(QStringList(name));
}
/*!
Constructs a command line option object with the names \a names.
This overload allows to set multiple names for the option, for instance
\c{o} and \c{output}.
The names can be either short or long. Any name in the list that is one
character in length is a short name. Option names must not be empty,
must not start with a dash or a slash character, must not contain a \c{=}
and cannot be repeated.
\sa setDescription(), setValueName(), setDefaultValues()
*/
QCommandLineOption::QCommandLineOption(const QStringList &names)
: d(new QCommandLineOptionPrivate)
{
d->setNames(names);
}
/*!
Constructs a command line option object with the given arguments.
The name of the option is set to \a name.
The name can be either short or long. If the name is one character in
length, it is considered a short name. Option names must not be empty,
must not start with a dash or a slash character, must not contain a \c{=}
and cannot be repeated.
The description is set to \a description. It is customary to add a "."
at the end of the description.
In addition, the \a valueName can be set if the option expects a value.
The default value for the option is set to \a defaultValue.
In Qt versions before 5.4, this constructor was \c explicit. In Qt 5.4
and later, it no longer is and can be used for C++11-style uniform
initialization:
\snippet code/src_corelib_tools_qcommandlineoption.cpp cxx11-init
\sa setDescription(), setValueName(), setDefaultValues()
*/
QCommandLineOption::QCommandLineOption(const QString &name, const QString &description,
const QString &valueName,
const QString &defaultValue)
: d(new QCommandLineOptionPrivate)
{
d->setNames(QStringList(name));
setValueName(valueName);
setDescription(description);
setDefaultValue(defaultValue);
}
/*!
Constructs a command line option object with the given arguments.
This overload allows to set multiple names for the option, for instance
\c{o} and \c{output}.
The names of the option are set to \a names.
The names can be either short or long. Any name in the list that is one
character in length is a short name. Option names must not be empty,
must not start with a dash or a slash character, must not contain a \c{=}
and cannot be repeated.
The description is set to \a description. It is customary to add a "."
at the end of the description.
In addition, the \a valueName can be set if the option expects a value.
The default value for the option is set to \a defaultValue.
In Qt versions before 5.4, this constructor was \c explicit. In Qt 5.4
and later, it no longer is and can be used for C++11-style uniform
initialization:
\snippet code/src_corelib_tools_qcommandlineoption.cpp cxx11-init-list
\sa setDescription(), setValueName(), setDefaultValues()
*/
QCommandLineOption::QCommandLineOption(const QStringList &names, const QString &description,
const QString &valueName,
const QString &defaultValue)
: d(new QCommandLineOptionPrivate)
{
d->setNames(names);
setValueName(valueName);
setDescription(description);
setDefaultValue(defaultValue);
}
/*!
Constructs a QCommandLineOption object that is a copy of the QCommandLineOption
object \a other.
\sa operator=()
*/
QCommandLineOption::QCommandLineOption(const QCommandLineOption &other)
: d(other.d)
{
}
/*!
Destroys the command line option object.
*/
QCommandLineOption::~QCommandLineOption()
{
}
/*!
Makes a copy of the \a other object and assigns it to this QCommandLineOption
object.
*/
QCommandLineOption &QCommandLineOption::operator=(const QCommandLineOption &other)
{
d = other.d;
return *this;
}
/*!
\fn void QCommandLineOption::swap(QCommandLineOption &other)
Swaps option \a other with this option. This operation is very
fast and never fails.
*/
/*!
Returns the names set for this option.
*/
QStringList QCommandLineOption::names() const
{
return d->names;
}
void QCommandLineOptionPrivate::setNames(const QStringList &nameList)
{
QStringList newNames;
newNames.reserve(nameList.size());
if (nameList.isEmpty())
qWarning("QCommandLineOption: Options must have at least one name");
foreach (const QString &name, nameList) {
if (name.isEmpty()) {
qWarning("QCommandLineOption: Option names cannot be empty");
} else {
const QChar c = name.at(0);
if (c == QLatin1Char('-'))
qWarning("QCommandLineOption: Option names cannot start with a '-'");
else if (c == QLatin1Char('/'))
qWarning("QCommandLineOption: Option names cannot start with a '/'");
else if (name.contains(QLatin1Char('=')))
qWarning("QCommandLineOption: Option names cannot contain a '='");
else
newNames.append(name);
}
}
// commit
names.swap(newNames);
}
/*!
Sets the name of the expected value, for the documentation, to \a valueName.
Options without a value assigned have a boolean-like behavior:
either the user specifies --option or they don't.
Options with a value assigned need to set a name for the expected value,
for the documentation of the option in the help output. An option with names \c{o} and \c{output},
and a value name of \c{file} will appear as \c{-o, --output <file>}.
Call QCommandLineParser::value() if you expect the option to be present
only once, and QCommandLineParser::values() if you expect that option
to be present multiple times.
\sa valueName()
*/
void QCommandLineOption::setValueName(const QString &valueName)
{
d->valueName = valueName;
}
/*!
Returns the name of the expected value.
If empty, the option doesn't take a value.
\sa setValueName()
*/
QString QCommandLineOption::valueName() const
{
return d->valueName;
}
/*!
Sets the description used for this option to \a description.
It is customary to add a "." at the end of the description.
The description is used by QCommandLineParser::showHelp().
\sa description()
*/
void QCommandLineOption::setDescription(const QString &description)
{
d->description = description;
}
/*!
Returns the description set for this option.
\sa setDescription()
*/
QString QCommandLineOption::description() const
{
return d->description;
}
/*!
Sets the default value used for this option to \a defaultValue.
The default value is used if the user of the application does not specify
the option on the command line.
If \a defaultValue is empty, the option has no default values.
\sa defaultValues() setDefaultValues()
*/
void QCommandLineOption::setDefaultValue(const QString &defaultValue)
{
QStringList newDefaultValues;
if (!defaultValue.isEmpty()) {
newDefaultValues.reserve(1);
newDefaultValues << defaultValue;
}
// commit:
d->defaultValues.swap(newDefaultValues);
}
/*!
Sets the list of default values used for this option to \a defaultValues.
The default values are used if the user of the application does not specify
the option on the command line.
\sa defaultValues() setDefaultValue()
*/
void QCommandLineOption::setDefaultValues(const QStringList &defaultValues)
{
d->defaultValues = defaultValues;
}
/*!
Returns the default values set for this option.
\sa setDefaultValues()
*/
QStringList QCommandLineOption::defaultValues() const
{
return d->defaultValues;
}
/*!
Sets whether to hide this option in the user-visible help output.
All options are visible by default. Setting \a hidden to true for
a particular option makes it internal, i.e. not listed in the help output.
\since 5.6
\sa isHidden
*/
void QCommandLineOption::setHidden(bool hide)
{
d->hidden = hide;
}
/*!
Returns true if this option is omitted from the help output,
false if the option is listed.
\since 5.6
\sa setHidden()
*/
bool QCommandLineOption::isHidden() const
{
return d->hidden;
}
#endif //QT_VERSION < QT_VERSION_CHECK(5, 2, 0)

View File

@ -0,0 +1,87 @@
/****************************************************************************
**
** Copyright (C) 2013 Laszlo Papp <lpapp@kde.org>
** Contact: http://www.qt.io/licensing/
**
** $QT_BEGIN_LICENSE:LGPL21$
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QCOMMANDLINEOPTION_H
#define QCOMMANDLINEOPTION_H
#include <QStringList>
#include <QSharedData>
#include <QtGlobal>
#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
#ifdef Q_CC_GNU
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#endif
class QCommandLineOptionPrivate;
class QCommandLineOption
{
public:
explicit QCommandLineOption(const QString &name);
explicit QCommandLineOption(const QStringList &names);
/*implicit*/ QCommandLineOption(const QString &name, const QString &description,
const QString &valueName = QString(),
const QString &defaultValue = QString());
/*implicit*/ QCommandLineOption(const QStringList &names, const QString &description,
const QString &valueName = QString(),
const QString &defaultValue = QString());
QCommandLineOption(const QCommandLineOption &other);
~QCommandLineOption();
QCommandLineOption &operator=(const QCommandLineOption &other);
#ifdef Q_COMPILER_RVALUE_REFS
inline QCommandLineOption &operator=(QCommandLineOption &&other)
{ qSwap(d, other.d); return *this; }
#endif
inline void swap(QCommandLineOption &other)
{ qSwap(d, other.d); }
QStringList names() const;
void setValueName(const QString &name);
QString valueName() const;
void setDescription(const QString &description);
QString description() const;
void setDefaultValue(const QString &defaultValue);
void setDefaultValues(const QStringList &defaultValues);
QStringList defaultValues() const;
void setHidden(bool hidden);
bool isHidden() const;
private:
QSharedDataPointer<QCommandLineOptionPrivate> d;
};
#ifdef Q_CC_GNU
#pragma GCC diagnostic pop
#endif
Q_DECLARE_SHARED(QCommandLineOption)
#endif //QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
#endif // QCOMMANDLINEOPTION_H

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,101 @@
/****************************************************************************
**
** Copyright (C) 2013 Laszlo Papp <lpapp@kde.org>
** Contact: http://www.qt.io/licensing/
**
** $QT_BEGIN_LICENSE:LGPL21$
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QCOMMANDLINEPARSER_H
#define QCOMMANDLINEPARSER_H
#include <QStringList>
#include <QCoreApplication>
#include <QtGlobal>
#include "qcommandlineoption.h"
#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
class QCommandLineParserPrivate;
class QCoreApplication;
#ifdef Q_CC_GNU
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#endif
class QCommandLineParser
{
Q_DECLARE_TR_FUNCTIONS(QCommandLineParser)
public:
QCommandLineParser();
~QCommandLineParser();
enum SingleDashWordOptionMode {
ParseAsCompactedShortOptions,
ParseAsLongOptions
};
void setSingleDashWordOptionMode(SingleDashWordOptionMode parsingMode);
enum OptionsAfterPositionalArgumentsMode {
ParseAsOptions,
ParseAsPositionalArguments
};
void setOptionsAfterPositionalArgumentsMode(OptionsAfterPositionalArgumentsMode mode);
bool addOption(const QCommandLineOption &commandLineOption);
bool addOptions(const QList<QCommandLineOption> &options);
QCommandLineOption addVersionOption();
QCommandLineOption addHelpOption();
void setApplicationDescription(const QString &description);
QString applicationDescription() const;
void addPositionalArgument(const QString &name, const QString &description, const QString &syntax = QString());
void clearPositionalArguments();
void process(const QStringList &arguments);
void process(const QCoreApplication &app);
bool parse(const QStringList &arguments);
QString errorText() const;
bool isSet(const QString &name) const;
QString value(const QString &name) const;
QStringList values(const QString &name) const;
bool isSet(const QCommandLineOption &option) const;
QString value(const QCommandLineOption &option) const;
QStringList values(const QCommandLineOption &option) const;
QStringList positionalArguments() const;
QStringList optionNames() const;
QStringList unknownOptionNames() const;
Q_NORETURN void showVersion();
Q_NORETURN void showHelp(int exitCode = 0);
QString helpText() const;
private:
Q_DISABLE_COPY(QCommandLineParser)
QCommandLineParserPrivate * const d;
};
#ifdef Q_CC_GNU
#pragma GCC diagnostic pop
#endif
#endif //QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
#endif // QCOMMANDLINEPARSER_H

View File

@ -35,6 +35,7 @@
#include "vmaingraphicsview.h"
#include "../container/calculator.h"
#include "../version.h"
#include "../../utils/logging.h"
#include <QDebug>
#include <QDir>
@ -46,7 +47,6 @@
#include <QFile>
#include <QStandardPaths>
#include <QMessageBox>
#include <QLoggingCategory>
#include <QThread>
#include <QDateTime>
#include <QLockFile>

View File

@ -28,14 +28,15 @@
#include "dialogstandardmeasurements.h"
#include "ui_dialogstandardmeasurements.h"
#include <QDir>
#include <QPushButton>
#include <QDesktopWidget>
#include "../../xml/vstandardmeasurements.h"
#include "../../core/vapplication.h"
#include "../../core/vsettings.h"
#include "../../container/vcontainer.h"
#include <QLoggingCategory>
#include "../../utils/logging.h"
#include <QDir>
#include <QPushButton>
#include <QDesktopWidget>
Q_LOGGING_CATEGORY(vStMeasur, "v.st.measurements")

View File

@ -29,15 +29,16 @@
#ifndef DIALOGTOOL_H
#define DIALOGTOOL_H
#include "../../core/vapplication.h"
#include "../../utils/logging.h"
#include <QDialog>
#include <QDialogButtonBox>
#include <QLineEdit>
#include <QListWidget>
#include <QRadioButton>
#include "../../core/vapplication.h"
#include <QPushButton>
#include <QCheckBox>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(vDialog)

View File

@ -35,7 +35,11 @@
#include <QTextCodec>
#include <QMessageBox>
#include <QThread>
#include <QCommandLineParser>
#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
# include "../core/qcommandlineparser.h"
#else
# include <QCommandLineParser>
#endif
#include <QtXml>
#include <QLibraryInfo>
@ -48,7 +52,7 @@ int main(int argc, char *argv[])
Q_INIT_RESOURCE(theme);
Q_INIT_RESOURCE(flags);
QT_REQUIRE_VERSION(argc, argv, "5.2.0");
QT_REQUIRE_VERSION(argc, argv, "5.0.0");
VApplication app(argc, argv);

View File

@ -44,6 +44,7 @@
#include "vtooloptionspropertybrowser.h"
#include "options.h"
#include "../libs/ifc/xml/vpatternconverter.h"
#include "../../utils/logging.h"
#include <QInputDialog>
#include <QDebug>
@ -60,7 +61,6 @@
#include <QtGlobal>
#include <QDesktopWidget>
#include <QDesktopServices>
#include <QLoggingCategory>
#include <QLockFile>
Q_LOGGING_CATEGORY(vMainWindow, "v.mainwindow")

View File

@ -27,12 +27,13 @@
*************************************************************************/
#include "vtoolpoint.h"
#include <QKeyEvent>
#include <QLoggingCategory>
#include "../../utils/logging.h"
#include "../../geometry/vpointf.h"
#include "../../visualization/vgraphicssimpletextitem.h"
#include "../../undocommands/movelabel.h"
#include <QKeyEvent>
Q_LOGGING_CATEGORY(vToolPoint, "v.toolPoint")
const QString VToolPoint::TagName = QStringLiteral("point");

View File

@ -30,7 +30,7 @@
#define VDATATOOL_H
#include "../container/vcontainer.h"
#include <QLoggingCategory>
#include "../../utils/logging.h"
Q_DECLARE_LOGGING_CATEGORY(vTool)

View File

@ -31,7 +31,8 @@
#include <QUndoCommand>
#include <QDomElement>
#include <QLoggingCategory>
#include "../../utils/logging.h"
#include "../xml/vpattern.h"
Q_DECLARE_LOGGING_CATEGORY(vUndo)

View File

@ -31,9 +31,10 @@
#include <QObject>
#include <QGraphicsItem>
#include "../core/vapplication.h"
#include "../widgets/vmaingraphicsscene.h"
#include <QLoggingCategory>
#include "../../utils/logging.h"
Q_DECLARE_LOGGING_CATEGORY(vVis)

View File

@ -27,11 +27,12 @@
*************************************************************************/
#include "vexception.h"
#include "../../../utils/logging.h"
#include <QGridLayout>
#include <QMessageBox>
#include <QSpacerItem>
#include <QApplication>
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(vExcep, "v.excep")

View File

@ -31,6 +31,7 @@ CONFIG -= debug_and_release debug_and_release_target
DEFINES += QT_MESSAGELOGCONTEXT
include(ifc.pri)
include(../../utils/utils.pri)
# This is static library so no need in "make install"
@ -74,7 +75,7 @@ CONFIG(debug, debug|release){
-isystem "$${OUT_PWD}/$${MOC_DIR}" \
$$CLANG_DEBUG_CXXFLAGS # See Valentina.pri for more details.
# -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and
# -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and
# want them in global list. Compromise decision delete them from local list.
QMAKE_CXXFLAGS -= \
-Wmissing-prototypes

View File

@ -31,10 +31,10 @@
#include <QDomDocument>
#include <QDebug>
#include <QLoggingCategory>
#include <QCoreApplication>
#include "ifcdef.h"
#include "../../../utils/logging.h"
Q_DECLARE_LOGGING_CATEGORY(vXML)

100
src/utils/logging.h Normal file
View File

@ -0,0 +1,100 @@
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc.
** Contact: http://www.qt-project.org/legal
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
****************************************************************************/
#ifndef LOGGING_H
#define LOGGING_H
#include <qglobal.h>
#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
//
// Qt < 5.2 didn't feature categorized logging:
// Just enable qCWarning, qCCritical, but disable qCDebug
//
class QLoggingCategory
{
Q_DISABLE_COPY(QLoggingCategory)
public:
explicit QLoggingCategory(const char *category) : name(category) {}
~QLoggingCategory();
bool isDebugEnabled() const { return false; }
bool isWarningEnabled() const { return true; }
bool isCriticalEnabled() const { return true; }
const char *categoryName() const { return name; }
QLoggingCategory &operator()() { return *this; }
private:
const char *name;
};
#define Q_DECLARE_LOGGING_CATEGORY(name) \
extern QLoggingCategory &name();
// relies on QLoggingCategory(QString) being thread safe!
#define Q_LOGGING_CATEGORY(name, string) \
QLoggingCategory &name() \
{ \
static QLoggingCategory category(string); \
return category; \
}
#if QT_VERSION > QT_VERSION_CHECK(5, 0, 0)
//
// Qt 5.0, 5.1 do have already support for categories in QMessageLogger
//
#define qCDebug(category, ...) \
for (bool q_category_enabled = category().isDebugEnabled(); q_category_enabled; q_category_enabled = false) \
QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).debug(__VA_ARGS__)
#define qCWarning(category, ...) \
for (bool q_category_enabled = category().isWarningEnabled(); q_category_enabled; q_category_enabled = false) \
QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).warning(__VA_ARGS__)
#define qCCritical(category, ...) \
for (bool q_category_enabled = category().isCriticalEnabled(); q_category_enabled; q_category_enabled = false) \
QMessageLogger(__FILE__, __LINE__, Q_FUNC_QT_VERSION < 0x053000INFO, \
category().categoryName()).critical(__VA_ARGS__)
# endif // QT_VERSION > QT_VERSION_CHECK(5, 0, 0)
#else // QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
#include <QLoggingCategory>
#if QT_VERSION < QT_VERSION_CHECK(5, 3, 0)
// printf style for qCDebug was only added in Qt 5.3
#undef qCDebug
#undef qCWarning
#undef qCCritical
#define qCDebug(category, ...) \
for (bool q_category_enabled = category().isDebugEnabled(); q_category_enabled; q_category_enabled = false) \
QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).debug(__VA_ARGS__)
#define qCWarning(category, ...) \
for (bool q_category_enabled = category().isWarningEnabled(); q_category_enabled; q_category_enabled = false) \
QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).warning(__VA_ARGS__)
#define qCCritical(category, ...) \
for (bool q_category_enabled = category().isCriticalEnabled(); q_category_enabled; q_category_enabled = false) \
QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).critical(__VA_ARGS__)
#endif // QT_VERSION < QT_VERSION_CHECK(5, 3, 0)
#endif // QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
#endif // LOGGING_H

2
src/utils/utils.pri Normal file
View File

@ -0,0 +1,2 @@
HEADERS += \
$$PWD/logging.h