/*
Copyright 2021 Adam Reichold
This file is part of qpdfview.
qpdfview is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
qpdfview is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with qpdfview. If not, see .
*/
#ifndef COMPATIBILITY_H
#define COMPATIBILITY_H
#include
#include
#include
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
#include
#else
#include
#endif // QT_VERSION
namespace qpdfview
{
inline bool rotatedForward(const QWheelEvent* event)
{
#if QT_VERSION >= QT_VERSION_CHECK(5,15,0)
return event->angleDelta().y() > 0;
#else
return event->delta() > 0;
#endif // QT_VERSION
}
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
typedef QRegularExpression RegularExpression;
class Match
{
QRegularExpressionMatch match;
public:
Match(RegularExpression& expr, const QString& text) :
match(expr.match(text))
{
}
operator bool() const
{
return match.hasMatch();
}
QString captured(int nth) const
{
return match.captured(nth);
}
};
#else
typedef QRegExp RegularExpression;
class Match
{
QRegExp* expr;
public:
Match(QRegExp& expr, const QString& text) :
expr(expr.indexIn(text) != -1 ? &expr : 0)
{
}
operator bool() const
{
return expr != 0;
}
QString captured(int nth) const
{
return expr->cap(nth);
}
};
#endif // QT_VERSION
#if QT_VERSION >= QT_VERSION_CHECK(5,14,0)
typedef Qt::SplitBehaviorFlags SplitBehavior;
namespace SplitBehaviorValues = Qt;
#else
typedef QString::SplitBehavior SplitBehavior;
typedef QString SplitBehaviorValues;
#endif // QT_VERSION
#if QT_VERSION >= QT_VERSION_CHECK(5,3,0)
typedef QPageLayout::Orientation PageOrientation;
typedef QPageLayout PageOrientationValues;
#else
typedef QPrinter::Orientation PageOrientation;
typedef QPrinter PageOrientationValues;
#endif // QT_VERSION
template< typename Iterator, typename Value >
Iterator binarySearch(Iterator first, Iterator last, const Value& value)
{
first = std::lower_bound(first, last, value);
return first == last || value < *first ? last : first;
}
inline bool startDetached(QString command)
{
#if QT_VERSION >= QT_VERSION_CHECK(5,15,0)
QStringList arguments = QProcess::splitCommand(command);
QString program = arguments.takeFirst();
return QProcess::startDetached(program, arguments);
#else
return QProcess::startDetached(command);
#endif // QT_VERSION
}
} // qpdfview
#endif // MISCELLANEOUS_H