1#ifndef QUAZIP_QT_COMPAT_H
2#define QUAZIP_QT_COMPAT_H
13#include <QtCore/QtGlobal>
15#include "quazip_textcodec.h"
20#if (QT_VERSION >= 0x050100)
21#include <QtCore/QSaveFile>
22inline bool quazip_close(QIODevice *device) {
23 QSaveFile *file = qobject_cast<QSaveFile*>(device);
24 if (file !=
nullptr) {
26 return file->commit();
32inline bool quazip_close(QIODevice *device) {
39#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
40using Qt::SkipEmptyParts;
42#include <QtCore/QString>
43const auto SkipEmptyParts = QString::SplitBehavior::SkipEmptyParts;
47#include <QtCore/QList>
48#if (QT_VERSION >= QT_VERSION_CHECK(5, 2, 0))
50template<
typename T,
typename C>
51inline void quazip_sort(T begin, T end, C comparator) {
52 std::sort(begin, end, comparator);
55#include <QtCore/QtAlgorithms>
56template<
typename T,
typename C>
57inline void quazip_sort(T begin, T end, C comparator) {
58 qSort(begin, end, comparator);
63#include <QtCore/QDateTime>
64#include <QtCore/QFileInfo>
65#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
66inline QDateTime quazip_ctime(
const QFileInfo &fi) {
67 return fi.birthTime();
70inline QDateTime quazip_ctime(
const QFileInfo &fi) {
76#include <QtCore/QFileInfo>
77#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
78inline bool quazip_is_symlink(
const QFileInfo &fi) {
79 return fi.isSymbolicLink();
82inline bool quazip_is_symlink(
const QFileInfo &fi) {
84 return fi.isSymLink();
89#include <QtCore/QFileInfo>
90#if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0))
91inline QString quazip_symlink_target(
const QFileInfo &fi) {
92 return fi.symLinkTarget();
95inline QString quazip_symlink_target(
const QFileInfo &fi) {
101#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
102#include <QtCore/QTimeZone>
103inline QDateTime quazip_since_epoch() {
104 return QDateTime(QDate(1970, 1, 1), QTime(0, 0), QTimeZone::UTC);
107inline QDateTime quazip_since_epoch_ntfs() {
108 return QDateTime(QDate(1601, 1, 1), QTime(0, 0), QTimeZone::UTC);
111inline QDateTime quazip_since_epoch() {
112 return QDateTime(QDate(1970, 1, 1), QTime(0, 0), Qt::UTC);
115inline QDateTime quazip_since_epoch_ntfs() {
116 return QDateTime(QDate(1601, 1, 1), QTime(0, 0), Qt::UTC);
121#include <QtCore/QDateTime>
122#if (QT_VERSION >= 0x040700)
123inline quint64 quazip_ntfs_ticks(
const QDateTime &time,
int fineTicks) {
124 QDateTime base = quazip_since_epoch_ntfs();
125 return base.msecsTo(time) * 10000 + fineTicks;
128inline quint64 quazip_ntfs_ticks(
const QDateTime &time,
int fineTicks) {
129 QDateTime base = quazip_since_epoch_ntfs();
130 QDateTime utc = time.toUTC();
131 return (
static_cast<qint64
>(base.date().daysTo(utc.date()))
132 * Q_INT64_C(86400000)
133 +
static_cast<qint64
>(base.time().msecsTo(utc.time())))
134 * Q_INT64_C(10000) + fineTicks;
139#include <QtCore/QDateTime>
140#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)
141inline qint64 quazip_to_time64_t(
const QDateTime &time) {
142 return time.toSecsSinceEpoch();
145inline qint64 quazip_to_time64_t(
const QDateTime &time) {
146 return static_cast<qint64
>(time.toTime_t());
150#include <QtCore/QTextStream>
152#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
153const auto quazip_endl = Qt::endl;
155const auto quazip_endl = endl;
159#if QT_CONFIG(timezone)
162#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
164#define COMPAT_UTC_TZ QTimeZone(QTimeZone::UTC)
167#define COMPAT_UTC_TZ QTimeZone::utc()
173#define COMPAT_UTC_TZ Qt::UTC