Mimetypes: Make implementation switchable between new and old

- configure with QTC_USE_NEW_MIMEDATABASE to switch to the new one in
  utils/mimetypes2/
- added utils/mimeutils.h header for the Qt Creator specific static
  wrappers, that also includes the "public" headers for MimeType et al
  from the new or old implementation, depending on configuration
- change all utils/mimetypes/ includes to utils/mimeutils.h
- move the implementation for the wrappers to
  utils/mimetypes(2)/mimeutils.cpp
- also move the MimeDatabase declaration in the "old" implementation
  back to utils/mimetypes/mimedatabase.h

Change-Id: Ie8de229c035d6cd9a5e4739dc0fa78d9c17228e3
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Eike Ziller
2022-02-23 17:11:20 +01:00
parent 343a567e07
commit f562ebf239
92 changed files with 559 additions and 442 deletions

View File

@@ -53,7 +53,7 @@
#include <utils/executeondestruction.h>
#include <utils/fileutils.h>
#include <utils/hostosinfo.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <utils/qtcsettings.h>

View File

@@ -27,8 +27,6 @@
#include "jsonrpcmessages.h"
#include <utils/mimetypes/mimedatabase.h>
#include <QBuffer>
#include <QTextCodec>

View File

@@ -27,8 +27,6 @@
#include "languageserverprotocol_global.h"
#include <utils/mimetypes/mimetype.h>
#include <QByteArray>
#include <QCoreApplication>
#include <QLoggingCategory>

View File

@@ -28,7 +28,6 @@
#include "basemessage.h"
#include "lsputils.h"
#include <utils/mimetypes/mimetype.h>
#include <utils/qtcassert.h>
#include <utils/variant.h>

View File

@@ -28,7 +28,6 @@
#include "lsputils.h"
#include "initializemessages.h"
#include <utils/mimetypes/mimedatabase.h>
#include <utils/qtcassert.h>
#include <QCoreApplication>

View File

@@ -26,7 +26,6 @@
#include "lsptypes.h"
#include "lsputils.h"
#include <utils/mimetypes/mimedatabase.h>
#include <utils/textutils.h>
#include <QFile>

View File

@@ -31,6 +31,7 @@
#include <utils/fileutils.h>
#include <utils/link.h>
#include <utils/mimeutils.h>
#include <utils/optional.h>
#include <utils/textutils.h>
#include <utils/variant.h>

View File

@@ -25,8 +25,6 @@
#include "lsputils.h"
#include <utils/mimetypes/mimedatabase.h>
#include <QHash>
#include <QLoggingCategory>
#include <QVector>

View File

@@ -28,7 +28,6 @@
#include "languageserverprotocol_global.h"
#include <utils/algorithm.h>
#include <utils/mimetypes/mimetype.h>
#include <utils/optional.h>
#include <utils/qtcassert.h>
#include <utils/variant.h>

View File

@@ -86,13 +86,7 @@ add_qtc_library(Utils
listutils.h
macroexpander.cpp macroexpander.h
mapreduce.h
mimetypes/mimedatabase.cpp mimetypes/mimedatabase.h mimetypes/mimedatabase_p.h
mimetypes/mimeglobpattern.cpp mimetypes/mimeglobpattern_p.h
mimetypes/mimemagicrule.cpp mimetypes/mimemagicrule_p.h
mimetypes/mimemagicrulematcher.cpp mimetypes/mimemagicrulematcher_p.h
mimetypes/mimeprovider.cpp mimetypes/mimeprovider_p.h
mimetypes/mimetype.cpp mimetypes/mimetype.h mimetypes/mimetype_p.h
mimetypes/mimetypeparser.cpp mimetypes/mimetypeparser_p.h
mimeutils.h
multitextcursor.cpp multitextcursor.h
namevaluedictionary.cpp namevaluedictionary.h
namevaluedictionary.cpp namevaluedictionary.h
@@ -192,6 +186,37 @@ add_qtc_library(Utils
wizardpage.cpp wizardpage.h
)
option(QTC_USE_NEW_MIMEDATABASE "Use updated MIME database implementation" NO)
if(QTC_USE_NEW_MIMEDATABASE)
set(mime_prefix "mimetypes2")
else()
set(mime_prefix "mimetypes")
endif()
extend_qtc_library(Utils
SOURCES_PREFIX ${mime_prefix}
PUBLIC_INCLUDES ${mime_prefix}
SOURCES
mimedatabase.cpp
mimedatabase.h
mimedatabase_p.h
mimeglobpattern.cpp
mimeglobpattern_p.h
mimemagicrule.cpp
mimemagicrule_p.h
mimemagicrulematcher.cpp
mimemagicrulematcher_p.h
mimeprovider.cpp
mimeprovider_p.h
mimetype.cpp
mimetype.h
mimetype_p.h
mimetypeparser.cpp
mimetypeparser_p.h
mimeutils.cpp
)
extend_qtc_library(Utils CONDITION WIN32
SOURCES
touchbar/touchbar.cpp

View File

@@ -28,7 +28,7 @@
#include "algorithm.h"
#include "checkablemessagebox.h"
#include "environment.h"
#include "mimetypes/mimedatabase.h"
#include "mimeutils.h"
#include "qtcassert.h"
#include "qtcprocess.h"

View File

@@ -328,19 +328,6 @@ MimeDatabase::~MimeDatabase()
d = nullptr;
}
void Utils::addMimeTypes(const QString &fileName, const QByteArray &data)
{
auto d = MimeDatabasePrivate::instance();
QMutexLocker locker(&d->mutex);
if (d->m_startupPhase >= MimeDatabase::PluginsDelayedInitializing)
qWarning("Adding items from %s to MimeDatabase after initialization time",
qPrintable(fileName));
auto xmlProvider = static_cast<MimeXMLProvider *>(d->provider());
xmlProvider->addData(fileName, data);
}
/*!
\fn MimeType MimeDatabase::mimeTypeForName(const QString &nameOrAlias) const;
Returns a MIME type for \a nameOrAlias or an invalid one if none found.
@@ -633,77 +620,3 @@ QList<MimeType> MimeDatabase::allMimeTypes() const
\value MatchContent The file content is used to look for a match
*/
QMap<int, QList<MimeMagicRule> > Utils::magicRulesForMimeType(const MimeType &mimeType)
{
auto d = MimeDatabasePrivate::instance();
QMutexLocker locker(&d->mutex);
return d->provider()->magicRulesForMimeType(mimeType);
}
void Utils::setGlobPatternsForMimeType(const MimeType &mimeType, const QStringList &patterns)
{
auto d = MimeDatabasePrivate::instance();
QMutexLocker locker(&d->mutex);
d->provider()->setGlobPatternsForMimeType(mimeType, patterns);
}
void Utils::setMagicRulesForMimeType(const MimeType &mimeType, const QMap<int, QList<MimeMagicRule> > &rules)
{
auto d = MimeDatabasePrivate::instance();
QMutexLocker locker(&d->mutex);
d->provider()->setMagicRulesForMimeType(mimeType, rules);
}
void Utils::setMimeStartupPhase(MimeStartupPhase phase)
{
auto d = MimeDatabasePrivate::instance();
QMutexLocker locker(&d->mutex);
if (int(phase) != d->m_startupPhase + 1)
qWarning("Unexpected jump in MimedDatabase lifetime from %d to %d", d->m_startupPhase, int(phase));
d->m_startupPhase = int(phase);
}
MimeType Utils::mimeTypeForName(const QString &nameOrAlias)
{
MimeDatabase mdb;
return mdb.mimeTypeForName(nameOrAlias);
}
MimeType Utils::mimeTypeForFile(const QString &fileName, MimeMatchMode mode)
{
MimeDatabase mdb;
return mdb.mimeTypeForFile(fileName, MimeDatabase::MatchMode(mode));
}
MimeType Utils::mimeTypeForFile(const QFileInfo &fileInfo, MimeMatchMode mode)
{
MimeDatabase mdb;
return mdb.mimeTypeForFile(fileInfo, MimeDatabase::MatchMode(mode));
}
MimeType Utils::mimeTypeForFile(const FilePath &filePath, MimeMatchMode mode)
{
MimeDatabase mdb;
if (filePath.needsDevice())
return mdb.mimeTypeForUrl(filePath.toUrl());
return mdb.mimeTypeForFile(filePath.toString(), MimeDatabase::MatchMode(mode));
}
QList<MimeType> Utils::mimeTypesForFileName(const QString &fileName)
{
MimeDatabase mdb;
return mdb.mimeTypesForFileName(fileName);
}
MimeType Utils::mimeTypeForData(const QByteArray &data)
{
MimeDatabase mdb;
return mdb.mimeTypeForData(data);
}
QList<MimeType> Utils::allMimeTypes()
{
MimeDatabase mdb;
return mdb.allMimeTypes();
}

View File

@@ -40,49 +40,54 @@
#pragma once
#include "mimetype.h"
#include "mimemagicrule_p.h"
#include <utils/utils_global.h>
QT_BEGIN_NAMESPACE
class QFileInfo;
class QIODevice;
class QUrl;
QT_END_NAMESPACE
namespace Utils {
class FilePath;
class MimeDatabase
{
Q_DISABLE_COPY(MimeDatabase)
// Wrapped QMimeDataBase functions
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForName(const QString &nameOrAlias);
public:
MimeDatabase();
~MimeDatabase();
enum class MimeMatchMode {
MatchDefault = 0x0,
MatchExtension = 0x1,
MatchContent = 0x2
MimeType mimeTypeForName(const QString &nameOrAlias) const;
enum MatchMode { MatchDefault = 0x0, MatchExtension = 0x1, MatchContent = 0x2 };
MimeType mimeTypeForFile(const QString &fileName, MatchMode mode = MatchDefault) const;
MimeType mimeTypeForFile(const QFileInfo &fileInfo, MatchMode mode = MatchDefault) const;
QList<MimeType> mimeTypesForFileName(const QString &fileName) const;
MimeType mimeTypeForData(const QByteArray &data) const;
MimeType mimeTypeForData(QIODevice *device) const;
MimeType mimeTypeForUrl(const QUrl &url) const;
MimeType mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const;
MimeType mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const;
QString suffixForFileName(const QString &fileName) const;
QList<MimeType> allMimeTypes() const;
// For debugging purposes.
enum StartupPhase {
BeforeInitialize,
PluginsLoading,
PluginsInitializing, // Register up to here.
PluginsDelayedInitializing, // Use from here on.
UpAndRunning
};
static void setStartupPhase(StartupPhase);
private:
Internal::MimeDatabasePrivate *d;
};
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const QString &fileName, MimeMatchMode mode = MimeMatchMode::MatchDefault);
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const QFileInfo &fileInfo, MimeMatchMode mode = MimeMatchMode::MatchDefault);
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const FilePath &filePath, MimeMatchMode mode = MimeMatchMode::MatchDefault);
QTCREATOR_UTILS_EXPORT QList<MimeType> mimeTypesForFileName(const QString &fileName);
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForData(const QByteArray &data);
QTCREATOR_UTILS_EXPORT QList<MimeType> allMimeTypes();
// Qt Creator additions
// For debugging purposes.
enum class MimeStartupPhase {
BeforeInitialize,
PluginsLoading,
PluginsInitializing, // Register up to here.
PluginsDelayedInitializing, // Use from here on.
UpAndRunning
};
QTCREATOR_UTILS_EXPORT void setMimeStartupPhase(MimeStartupPhase);
QTCREATOR_UTILS_EXPORT void addMimeTypes(const QString &id, const QByteArray &data);
QTCREATOR_UTILS_EXPORT QMap<int, QList<Internal::MimeMagicRule> > magicRulesForMimeType(const MimeType &mimeType); // priority -> rules
QTCREATOR_UTILS_EXPORT void setGlobPatternsForMimeType(const MimeType &mimeType, const QStringList &patterns);
QTCREATOR_UTILS_EXPORT void setMagicRulesForMimeType(const MimeType &mimeType,
const QMap<int, QList<Internal::MimeMagicRule> > &rules); // priority -> rules
} // Utils

View File

@@ -62,9 +62,7 @@
#include <QtCore/qhash.h>
#include <QtCore/qmutex.h>
QT_BEGIN_NAMESPACE
class QFileInfo;
class QIODevice;
class QUrl;
QT_END_NAMESPACE
#include "mimetype.h"
@@ -108,50 +106,5 @@ public:
int m_startupPhase = 0;
};
class MimeDatabase
{
Q_DISABLE_COPY(MimeDatabase)
public:
MimeDatabase();
~MimeDatabase();
MimeType mimeTypeForName(const QString &nameOrAlias) const;
enum MatchMode {
MatchDefault = 0x0,
MatchExtension = 0x1,
MatchContent = 0x2
};
MimeType mimeTypeForFile(const QString &fileName, MatchMode mode = MatchDefault) const;
MimeType mimeTypeForFile(const QFileInfo &fileInfo, MatchMode mode = MatchDefault) const;
QList<MimeType> mimeTypesForFileName(const QString &fileName) const;
MimeType mimeTypeForData(const QByteArray &data) const;
MimeType mimeTypeForData(QIODevice *device) const;
MimeType mimeTypeForUrl(const QUrl &url) const;
MimeType mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const;
MimeType mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const;
QString suffixForFileName(const QString &fileName) const;
QList<MimeType> allMimeTypes() const;
// For debugging purposes.
enum StartupPhase {
BeforeInitialize,
PluginsLoading,
PluginsInitializing, // Register up to here.
PluginsDelayedInitializing, // Use from here on.
UpAndRunning
};
static void setStartupPhase(StartupPhase);
private:
Internal::MimeDatabasePrivate *d;
};
} // Internal
} // Utils

View File

@@ -62,8 +62,8 @@ namespace Utils {
class MimeType;
namespace Internal {
class MimeMagicRulePrivate;
}
class QTCREATOR_UTILS_EXPORT MimeMagicRule
{
@@ -97,12 +97,11 @@ public:
static bool matchSubstring(const char *dataPtr, int dataSize, int rangeStart, int rangeLength, int valueLength, const char *valueData, const char *mask);
private:
const QScopedPointer<MimeMagicRulePrivate> d;
const QScopedPointer<Internal::MimeMagicRulePrivate> d;
};
} // Internal
} // Utils
QT_BEGIN_NAMESPACE
Q_DECLARE_TYPEINFO(Utils::Internal::MimeMagicRule, Q_MOVABLE_TYPE);
Q_DECLARE_TYPEINFO(Utils::MimeMagicRule, Q_MOVABLE_TYPE);
QT_END_NAMESPACE

View File

@@ -0,0 +1,140 @@
/****************************************************************************
**
** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or (at your option) the GNU General
** Public license version 3 or any later version approved by the KDE Free
** Qt Foundation. The licenses are as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
** https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "mimeutils.h"
#include "mimedatabase.h"
#include "mimedatabase_p.h"
#include "mimemagicrule_p.h"
#include "mimeprovider_p.h"
#include "filepath.h"
using namespace Utils;
using namespace Utils::Internal;
void Utils::addMimeTypes(const QString &fileName, const QByteArray &data)
{
auto d = MimeDatabasePrivate::instance();
QMutexLocker locker(&d->mutex);
if (d->m_startupPhase >= MimeDatabase::PluginsDelayedInitializing)
qWarning("Adding items from %s to MimeDatabase after initialization time",
qPrintable(fileName));
auto xmlProvider = static_cast<MimeXMLProvider *>(d->provider());
xmlProvider->addData(fileName, data);
}
QMap<int, QList<MimeMagicRule>> Utils::magicRulesForMimeType(const MimeType &mimeType)
{
auto d = MimeDatabasePrivate::instance();
QMutexLocker locker(&d->mutex);
return d->provider()->magicRulesForMimeType(mimeType);
}
void Utils::setGlobPatternsForMimeType(const MimeType &mimeType, const QStringList &patterns)
{
auto d = MimeDatabasePrivate::instance();
QMutexLocker locker(&d->mutex);
d->provider()->setGlobPatternsForMimeType(mimeType, patterns);
}
void Utils::setMagicRulesForMimeType(const MimeType &mimeType,
const QMap<int, QList<MimeMagicRule>> &rules)
{
auto d = MimeDatabasePrivate::instance();
QMutexLocker locker(&d->mutex);
d->provider()->setMagicRulesForMimeType(mimeType, rules);
}
void Utils::setMimeStartupPhase(MimeStartupPhase phase)
{
auto d = MimeDatabasePrivate::instance();
QMutexLocker locker(&d->mutex);
if (int(phase) != d->m_startupPhase + 1)
qWarning("Unexpected jump in MimedDatabase lifetime from %d to %d",
d->m_startupPhase,
int(phase));
d->m_startupPhase = int(phase);
}
MimeType Utils::mimeTypeForName(const QString &nameOrAlias)
{
MimeDatabase mdb;
return mdb.mimeTypeForName(nameOrAlias);
}
MimeType Utils::mimeTypeForFile(const QString &fileName, MimeMatchMode mode)
{
MimeDatabase mdb;
return mdb.mimeTypeForFile(fileName, MimeDatabase::MatchMode(mode));
}
MimeType Utils::mimeTypeForFile(const QFileInfo &fileInfo, MimeMatchMode mode)
{
MimeDatabase mdb;
return mdb.mimeTypeForFile(fileInfo, MimeDatabase::MatchMode(mode));
}
MimeType Utils::mimeTypeForFile(const FilePath &filePath, MimeMatchMode mode)
{
MimeDatabase mdb;
if (filePath.needsDevice())
return mdb.mimeTypeForUrl(filePath.toUrl());
return mdb.mimeTypeForFile(filePath.toString(), MimeDatabase::MatchMode(mode));
}
QList<MimeType> Utils::mimeTypesForFileName(const QString &fileName)
{
MimeDatabase mdb;
return mdb.mimeTypesForFileName(fileName);
}
MimeType Utils::mimeTypeForData(const QByteArray &data)
{
MimeDatabase mdb;
return mdb.mimeTypeForData(data);
}
QList<MimeType> Utils::allMimeTypes()
{
MimeDatabase mdb;
return mdb.allMimeTypes();
}

View File

@@ -46,8 +46,6 @@
#include "mimeprovider_p.h"
#include "mimetype_p.h"
#include "filepath.h"
#include <QtCore/QFile>
#include <QtCore/QFileInfo>
#include <QtCore/QStandardPaths>
@@ -829,94 +827,4 @@ QList<MimeType> MimeDatabase::allMimeTypes() const
\value MatchContent The file content is used to look for a match
*/
MimeType mimeTypeForName(const QString &nameOrAlias)
{
MimeDatabase mdb;
return mdb.mimeTypeForName(nameOrAlias);
}
MimeType mimeTypeForFile(const QString &fileName, MimeMatchMode mode)
{
MimeDatabase mdb;
return mdb.mimeTypeForFile(fileName, MimeDatabase::MatchMode(mode));
}
MimeType mimeTypeForFile(const QFileInfo &fileInfo, MimeMatchMode mode)
{
MimeDatabase mdb;
return mdb.mimeTypeForFile(fileInfo, MimeDatabase::MatchMode(mode));
}
MimeType mimeTypeForFile(const FilePath &filePath, MimeMatchMode mode)
{
MimeDatabase mdb;
if (filePath.needsDevice())
return mdb.mimeTypeForUrl(filePath.toUrl());
return mdb.mimeTypeForFile(filePath.toString(), MimeDatabase::MatchMode(mode));
}
QList<MimeType> mimeTypesForFileName(const QString &fileName)
{
MimeDatabase mdb;
return mdb.mimeTypesForFileName(fileName);
}
MimeType mimeTypeForData(const QByteArray &data)
{
MimeDatabase mdb;
return mdb.mimeTypeForData(data);
}
QList<MimeType> allMimeTypes()
{
MimeDatabase mdb;
return mdb.allMimeTypes();
}
void setMimeStartupPhase(MimeStartupPhase phase)
{
// auto d = MimeDatabasePrivate::instance();
// QMutexLocker locker(&d->mutex);
// if (int(phase) != d->m_startupPhase + 1)
// qWarning("Unexpected jump in MimedDatabase lifetime from %d to %d", d->m_startupPhase, int(phase));
// d->m_startupPhase = int(phase);
}
void addMimeTypes(const QString &fileName, const QByteArray &data)
{
// auto d = MimeDatabasePrivate::instance();
// QMutexLocker locker(&d->mutex);
// if (d->m_startupPhase >= MimeDatabase::PluginsDelayedInitializing)
// qWarning("Adding items from %s to MimeDatabase after initialization time",
// qPrintable(fileName));
// auto xmlProvider = static_cast<MimeXMLProvider *>(d->provider());
// xmlProvider->addData(fileName, data);
}
QMap<int, QList<MimeMagicRule> > magicRulesForMimeType(const MimeType &mimeType)
{
// auto d = MimeDatabasePrivate::instance();
// QMutexLocker locker(&d->mutex);
// return d->provider()->magicRulesForMimeType(mimeType);
return {};
}
void setGlobPatternsForMimeType(const MimeType &mimeType, const QStringList &patterns)
{
// auto d = MimeDatabasePrivate::instance();
// QMutexLocker locker(&d->mutex);
// d->provider()->setGlobPatternsForMimeType(mimeType, patterns);
}
void setMagicRulesForMimeType(const MimeType &mimeType, const QMap<int, QList<MimeMagicRule> > &rules)
{
// auto d = MimeDatabasePrivate::instance();
// QMutexLocker locker(&d->mutex);
// d->provider()->setMagicRulesForMimeType(mimeType, rules);
}
} // namespace Utils

View File

@@ -57,45 +57,9 @@ QT_END_NAMESPACE
namespace Utils {
class FilePath;
// Wrapped QMimeDataBase functions
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForName(const QString &nameOrAlias);
enum class MimeMatchMode {
MatchDefault = 0x0,
MatchExtension = 0x1,
MatchContent = 0x2
};
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const QString &fileName, MimeMatchMode mode = MimeMatchMode::MatchDefault);
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const QFileInfo &fileInfo, MimeMatchMode mode = MimeMatchMode::MatchDefault);
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const FilePath &filePath, MimeMatchMode mode = MimeMatchMode::MatchDefault);
QTCREATOR_UTILS_EXPORT QList<MimeType> mimeTypesForFileName(const QString &fileName);
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForData(const QByteArray &data);
QTCREATOR_UTILS_EXPORT QList<MimeType> allMimeTypes();
// Qt Creator additions
// For debugging purposes.
enum class MimeStartupPhase {
BeforeInitialize,
PluginsLoading,
PluginsInitializing, // Register up to here.
PluginsDelayedInitializing, // Use from here on.
UpAndRunning
};
QTCREATOR_UTILS_EXPORT void setMimeStartupPhase(MimeStartupPhase);
QTCREATOR_UTILS_EXPORT void addMimeTypes(const QString &id, const QByteArray &data);
QTCREATOR_UTILS_EXPORT QMap<int, QList<MimeMagicRule> > magicRulesForMimeType(const MimeType &mimeType); // priority -> rules
QTCREATOR_UTILS_EXPORT void setGlobPatternsForMimeType(const MimeType &mimeType, const QStringList &patterns);
QTCREATOR_UTILS_EXPORT void setMagicRulesForMimeType(const MimeType &mimeType,
const QMap<int, QList<MimeMagicRule> > &rules); // priority -> rules
// Original
class MimeDatabasePrivate;
class QTCREATOR_UTILS_EXPORT MimeDatabase
class MimeDatabase
{
Q_DISABLE_COPY(MimeDatabase)

View File

@@ -0,0 +1,139 @@
/****************************************************************************
**
** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or (at your option) the GNU General
** Public license version 3 or any later version approved by the KDE Free
** Qt Foundation. The licenses are as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
** https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "mimeutils.h"
#include "mimedatabase.h"
#include "mimedatabase_p.h"
#include "mimemagicrule_p.h"
#include "mimeprovider_p.h"
#include "filepath.h"
namespace Utils {
MimeType mimeTypeForName(const QString &nameOrAlias)
{
MimeDatabase mdb;
return mdb.mimeTypeForName(nameOrAlias);
}
MimeType mimeTypeForFile(const QString &fileName, MimeMatchMode mode)
{
MimeDatabase mdb;
return mdb.mimeTypeForFile(fileName, MimeDatabase::MatchMode(mode));
}
MimeType mimeTypeForFile(const QFileInfo &fileInfo, MimeMatchMode mode)
{
MimeDatabase mdb;
return mdb.mimeTypeForFile(fileInfo, MimeDatabase::MatchMode(mode));
}
MimeType mimeTypeForFile(const FilePath &filePath, MimeMatchMode mode)
{
MimeDatabase mdb;
if (filePath.needsDevice())
return mdb.mimeTypeForUrl(filePath.toUrl());
return mdb.mimeTypeForFile(filePath.toString(), MimeDatabase::MatchMode(mode));
}
QList<MimeType> mimeTypesForFileName(const QString &fileName)
{
MimeDatabase mdb;
return mdb.mimeTypesForFileName(fileName);
}
MimeType mimeTypeForData(const QByteArray &data)
{
MimeDatabase mdb;
return mdb.mimeTypeForData(data);
}
QList<MimeType> allMimeTypes()
{
MimeDatabase mdb;
return mdb.allMimeTypes();
}
void setMimeStartupPhase(MimeStartupPhase phase)
{
// auto d = MimeDatabasePrivate::instance();
// QMutexLocker locker(&d->mutex);
// if (int(phase) != d->m_startupPhase + 1)
// qWarning("Unexpected jump in MimedDatabase lifetime from %d to %d", d->m_startupPhase, int(phase));
// d->m_startupPhase = int(phase);
}
void addMimeTypes(const QString &fileName, const QByteArray &data)
{
// auto d = MimeDatabasePrivate::instance();
// QMutexLocker locker(&d->mutex);
// if (d->m_startupPhase >= MimeDatabase::PluginsDelayedInitializing)
// qWarning("Adding items from %s to MimeDatabase after initialization time",
// qPrintable(fileName));
// auto xmlProvider = static_cast<MimeXMLProvider *>(d->provider());
// xmlProvider->addData(fileName, data);
}
QMap<int, QList<MimeMagicRule>> magicRulesForMimeType(const MimeType &mimeType)
{
// auto d = MimeDatabasePrivate::instance();
// QMutexLocker locker(&d->mutex);
// return d->provider()->magicRulesForMimeType(mimeType);
return {};
}
void setGlobPatternsForMimeType(const MimeType &mimeType, const QStringList &patterns)
{
// auto d = MimeDatabasePrivate::instance();
// QMutexLocker locker(&d->mutex);
// d->provider()->setGlobPatternsForMimeType(mimeType, patterns);
}
void setMagicRulesForMimeType(const MimeType &mimeType, const QMap<int, QList<MimeMagicRule>> &rules)
{
// auto d = MimeDatabasePrivate::instance();
// QMutexLocker locker(&d->mutex);
// d->provider()->setMagicRulesForMimeType(mimeType, rules);
}
} // namespace Utils

View File

@@ -0,0 +1,89 @@
/****************************************************************************
**
** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or (at your option) the GNU General
** Public license version 3 or any later version approved by the KDE Free
** Qt Foundation. The licenses are as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
** https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#pragma once
#include <mimemagicrule_p.h>
#include <mimetype.h>
#include <utils/utils_global.h>
QT_BEGIN_NAMESPACE
class QFileInfo;
QT_END_NAMESPACE
namespace Utils {
class FilePath;
// Wrapped QMimeDataBase functions
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForName(const QString &nameOrAlias);
enum class MimeMatchMode { MatchDefault = 0x0, MatchExtension = 0x1, MatchContent = 0x2 };
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const QString &fileName,
MimeMatchMode mode = MimeMatchMode::MatchDefault);
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const QFileInfo &fileInfo,
MimeMatchMode mode = MimeMatchMode::MatchDefault);
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const FilePath &filePath,
MimeMatchMode mode = MimeMatchMode::MatchDefault);
QTCREATOR_UTILS_EXPORT QList<MimeType> mimeTypesForFileName(const QString &fileName);
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForData(const QByteArray &data);
QTCREATOR_UTILS_EXPORT QList<MimeType> allMimeTypes();
// Qt Creator additions
// For debugging purposes.
enum class MimeStartupPhase {
BeforeInitialize,
PluginsLoading,
PluginsInitializing, // Register up to here.
PluginsDelayedInitializing, // Use from here on.
UpAndRunning
};
QTCREATOR_UTILS_EXPORT void setMimeStartupPhase(MimeStartupPhase);
QTCREATOR_UTILS_EXPORT void addMimeTypes(const QString &id, const QByteArray &data);
QTCREATOR_UTILS_EXPORT QMap<int, QList<MimeMagicRule>> magicRulesForMimeType(
const MimeType &mimeType); // priority -> rules
QTCREATOR_UTILS_EXPORT void setGlobPatternsForMimeType(const MimeType &mimeType,
const QStringList &patterns);
QTCREATOR_UTILS_EXPORT void setMagicRulesForMimeType(
const MimeType &mimeType, const QMap<int, QList<MimeMagicRule>> &rules); // priority -> rules
} // namespace Utils

View File

@@ -5,7 +5,7 @@ Project {
name: "Utils"
QtcLibrary {
cpp.includePaths: base.concat("mimetypes", ".")
cpp.defines: base.concat([
"UTILS_LIBRARY"
])
@@ -179,6 +179,7 @@ Project {
"macroexpander.cpp",
"macroexpander.h",
"mapreduce.h",
"mimeutils.h",
"multitextcursor.cpp",
"multitextcursor.h",
"namevaluedictionary.cpp",
@@ -404,6 +405,7 @@ Project {
"mimetype_p.h",
"mimetypeparser.cpp",
"mimetypeparser_p.h",
"mimeutils.cpp"
]
}
@@ -430,6 +432,7 @@ Project {
Export {
Depends { name: "Qt"; submodules: ["concurrent", "widgets" ] }
cpp.includePaths: base.concat("mimetypes")
}
}
}

View File

@@ -33,7 +33,7 @@
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/genericconstants.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QFile>
#include <QFileInfo>

View File

@@ -51,7 +51,7 @@
#include <texteditor/texteditorconstants.h>
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <utils/runextensions.h>

View File

@@ -30,7 +30,7 @@
#include <coreplugin/icore.h>
#include <utils/algorithm.h>
#include <utils/genericconstants.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
namespace Beautifier {
namespace Internal {

View File

@@ -25,7 +25,7 @@
#pragma once
#include <utils/mimetypes/mimetype.h>
#include <utils/mimeutils.h>
#include <QList>

View File

@@ -50,7 +50,7 @@
#include <clangsupport/filecontainer.h>
#include <utils/algorithm.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/optional.h>
#include <utils/porting.h>
#include <utils/qtcassert.h>

View File

@@ -38,8 +38,7 @@
#include "clangtoolsunittests.h"
#endif
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimetypes/mimetype.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <coreplugin/actionmanager/actioncontainer.h>

View File

@@ -59,7 +59,7 @@
#include <utils/checkablemessagebox.h>
#include <utils/fileutils.h>
#include <utils/macroexpander.h>
#include <utils/mimetypes/mimetype.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <utils/runextensions.h>

View File

@@ -31,7 +31,7 @@
#include <cppeditor/cppeditorconstants.h>
#include <utils/algorithm.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <utils/utilsicons.h>

View File

@@ -28,7 +28,7 @@
#include <coreplugin/progressmanager/progressmanager.h>
#include <projectexplorer/task.h>
#include <projectexplorer/treescanner.h>
#include <utils/mimetypes/mimetype.h>
#include <utils/mimeutils.h>
#include <utils/runextensions.h>
#include <QCryptographicHash>

View File

@@ -26,14 +26,14 @@
#include "basefilewizardfactory.h"
#include "basefilewizard.h"
#include "dialogs/promptoverwritedialog.h"
#include "editormanager/editormanager.h"
#include "icontext.h"
#include "icore.h"
#include "ifilewizardextension.h"
#include "editormanager/editormanager.h"
#include "dialogs/promptoverwritedialog.h"
#include <extensionsystem/pluginmanager.h>
#include <utils/filewizardpage.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/stringutils.h>
#include <utils/wizard.h>

View File

@@ -28,7 +28,7 @@
#include <app/app_version.h>
#include <utils/fileutils.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <QDir>

View File

@@ -53,7 +53,7 @@
#include <utils/commandline.h>
#include <utils/infobar.h>
#include <utils/macroexpander.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/pathchooser.h>
#include <utils/savefile.h>
#include <utils/stringutils.h>

View File

@@ -29,7 +29,7 @@
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditorfactory.h>
#include <utils/fileutils.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QDateTime>
#include <QDebug>

View File

@@ -50,7 +50,7 @@
#include <utils/fileutils.h>
#include <utils/globalfilechangeblocker.h>
#include <utils/hostosinfo.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/optional.h>
#include <utils/pathchooser.h>
#include <utils/qtcassert.h>

View File

@@ -72,8 +72,7 @@
#include <utils/infobar.h>
#include <utils/link.h>
#include <utils/macroexpander.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimetypes/mimetype.h>
#include <utils/mimeutils.h>
#include <utils/overridecursor.h>
#include <utils/qtcassert.h>
#include <utils/stringutils.h>

View File

@@ -28,7 +28,7 @@
#include "editormanager.h"
#include <utils/algorithm.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <QFileInfo>

View File

@@ -28,14 +28,16 @@
#include <coreplugin/core_global.h>
#include <utils/id.h>
#include <utils/mimetypes/mimetype.h>
#include <QObject>
#include <QStringList>
#include <functional>
namespace Utils { class FilePath; }
namespace Utils {
class FilePath;
class MimeType;
}
namespace Core {

View File

@@ -25,8 +25,7 @@
#pragma once
#include <utils/mimetypes/mimetype.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QHash>
#include <QSet>

View File

@@ -30,11 +30,13 @@
#include <coreplugin/core_global.h>
#include <utils/id.h>
#include <utils/mimetypes/mimetype.h>
#include <QObject>
namespace Utils { class FilePath; }
namespace Utils {
class FilePath;
class MimeType;
}
namespace Core {

View File

@@ -27,7 +27,7 @@
#include <utils/fileutils.h>
#include <utils/hostosinfo.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/optional.h>
#include <utils/qtcassert.h>
#include <utils/variant.h>

View File

@@ -56,13 +56,13 @@
#include <coreplugin/actionmanager/actionmanager_p.h>
#include <coreplugin/actionmanager/command.h>
#include <coreplugin/dialogs/externaltoolconfig.h>
#include <coreplugin/iwizardfactory.h>
#include <coreplugin/dialogs/shortcutsettings.h>
#include <coreplugin/editormanager/documentmodel_p.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/editormanager_p.h>
#include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/inavigationwidgetfactory.h>
#include <coreplugin/iwizardfactory.h>
#include <coreplugin/progressmanager/progressmanager_p.h>
#include <coreplugin/progressmanager/progressview.h>
#include <coreplugin/settingsdatabase.h>
@@ -70,11 +70,11 @@
#include <utils/algorithm.h>
#include <utils/historycompleter.h>
#include <utils/hostosinfo.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/stringutils.h>
#include <utils/stylehelper.h>
#include <utils/theme/theme.h>
#include <utils/stringutils.h>
#include <utils/utilsicons.h>
#include <QActionGroup>

View File

@@ -37,11 +37,11 @@
using namespace Core;
using namespace Internal;
static Utils::Internal::MimeMagicRule::Type typeValue(int i)
static Utils::MimeMagicRule::Type typeValue(int i)
{
QTC_ASSERT(i < Utils::Internal::MimeMagicRule::Byte,
return Utils::Internal::MimeMagicRule::Invalid);
return Utils::Internal::MimeMagicRule::Type(i + 1/*0==invalid*/);
QTC_ASSERT(i < Utils::MimeMagicRule::Byte,
return Utils::MimeMagicRule::Invalid);
return Utils::MimeMagicRule::Type(i + 1/*0==invalid*/);
}
MimeTypeMagicDialog::MimeTypeMagicDialog(QWidget *parent) :
@@ -96,7 +96,7 @@ void MimeTypeMagicDialog::applyRecommended(bool checked)
void MimeTypeMagicDialog::validateAccept()
{
QString errorMessage;
Utils::Internal::MimeMagicRule rule = createRule(&errorMessage);
Utils::MimeMagicRule rule = createRule(&errorMessage);
if (rule.isValid())
accept();
else
@@ -130,12 +130,12 @@ bool MagicData::operator==(const MagicData &other) const
Returns the mask, or an empty string if the mask is the default mask which is set by
MimeMagicRule when setting an empty mask for string patterns.
*/
QByteArray MagicData::normalizedMask(const Utils::Internal::MimeMagicRule &rule)
QByteArray MagicData::normalizedMask(const Utils::MimeMagicRule &rule)
{
// convert mask and see if it is the "default" one (which corresponds to "empty" mask)
// see MimeMagicRule constructor
QByteArray mask = rule.mask();
if (rule.type() == Utils::Internal::MimeMagicRule::String) {
if (rule.type() == Utils::MimeMagicRule::String) {
QByteArray actualMask = QByteArray::fromHex(QByteArray::fromRawData(mask.constData() + 2,
mask.size() - 2));
if (actualMask.count(char(-1)) == actualMask.size()) {
@@ -146,16 +146,16 @@ QByteArray MagicData::normalizedMask(const Utils::Internal::MimeMagicRule &rule)
return mask;
}
Utils::Internal::MimeMagicRule MimeTypeMagicDialog::createRule(QString *errorMessage) const
Utils::MimeMagicRule MimeTypeMagicDialog::createRule(QString *errorMessage) const
{
Utils::Internal::MimeMagicRule::Type type = typeValue(ui.typeSelector->currentIndex());
Utils::Internal::MimeMagicRule rule(type,
Utils::MimeMagicRule::Type type = typeValue(ui.typeSelector->currentIndex());
Utils::MimeMagicRule rule(type,
ui.valueLineEdit->text().toUtf8(),
ui.startRangeSpinBox->value(),
ui.endRangeSpinBox->value(),
ui.maskLineEdit->text().toLatin1(),
errorMessage);
if (type == Utils::Internal::MimeMagicRule::Invalid) {
if (type == Utils::MimeMagicRule::Invalid) {
if (errorMessage)
*errorMessage = tr("Internal error: Type is invalid");
}

View File

@@ -27,7 +27,7 @@
#include "ui_mimetypemagicdialog.h"
#include <utils/mimetypes/mimemagicrule_p.h>
#include <utils/mimeutils.h>
namespace Core {
namespace Internal {
@@ -36,11 +36,11 @@ class MagicData
{
public:
MagicData()
: m_rule(Utils::Internal::MimeMagicRule::String, QByteArray(" "), 0, 0)
: m_rule(Utils::MimeMagicRule::String, QByteArray(" "), 0, 0)
{
}
MagicData(Utils::Internal::MimeMagicRule rule, int priority)
MagicData(Utils::MimeMagicRule rule, int priority)
: m_rule(rule)
, m_priority(priority)
{
@@ -49,9 +49,9 @@ public:
bool operator==(const MagicData &other) const;
bool operator!=(const MagicData &other) { return !(*this == other); }
static QByteArray normalizedMask(const Utils::Internal::MimeMagicRule &rule);
static QByteArray normalizedMask(const Utils::MimeMagicRule &rule);
Utils::Internal::MimeMagicRule m_rule;
Utils::MimeMagicRule m_rule;
int m_priority = 0;
};
@@ -68,7 +68,7 @@ private:
void setToRecommendedValues();
void applyRecommended(bool checked);
void validateAccept();
Utils::Internal::MimeMagicRule createRule(QString *errorMessage = nullptr) const;
Utils::MimeMagicRule createRule(QString *errorMessage = nullptr) const;
Ui::MimeTypeMagicDialog ui;
int m_customRangeStart = 0;

View File

@@ -35,7 +35,7 @@
#include <utils/algorithm.h>
#include <utils/headerviewstretcher.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/stringutils.h>
@@ -87,7 +87,7 @@ public:
bool isValid() const { return !name.isEmpty(); }
QString name;
QStringList globPatterns;
QMap<int, QList<Utils::Internal::MimeMagicRule> > rules;
QMap<int, QList<Utils::MimeMagicRule> > rules;
};
// MimeTypeSettingsModel
@@ -346,12 +346,12 @@ void MimeTypeSettingsPrivate::syncData(const QModelIndex &current,
modifiedType.isValid() ? modifiedType.globPatterns.join(kSemiColon)
: currentMimeType.globPatterns().join(kSemiColon));
QMap<int, QList<Utils::Internal::MimeMagicRule> > rules =
QMap<int, QList<Utils::MimeMagicRule> > rules =
modifiedType.isValid() ? modifiedType.rules
: Utils::magicRulesForMimeType(currentMimeType);
for (auto it = rules.constBegin(); it != rules.constEnd(); ++it) {
int priority = it.key();
foreach (const Utils::Internal::MimeMagicRule &rule, it.value()) {
foreach (const Utils::MimeMagicRule &rule, it.value()) {
addMagicHeaderRow(MagicData(rule, priority));
}
}
@@ -394,7 +394,7 @@ void MimeTypeSettingsPrivate::editMagicHeaderRowData(const int row, const MagicD
{
auto item = new QTreeWidgetItem;
item->setText(0, QString::fromUtf8(data.m_rule.value()));
item->setText(1, QString::fromLatin1(Utils::Internal::MimeMagicRule::typeName(data.m_rule.type())));
item->setText(1, QString::fromLatin1(Utils::MimeMagicRule::typeName(data.m_rule.type())));
item->setText(2, QString::fromLatin1("%1:%2").arg(data.m_rule.startPos()).arg(data.m_rule.endPos()));
item->setText(3, QString::number(data.m_priority));
item->setData(0, Qt::UserRole, QVariant::fromValue(data));
@@ -522,12 +522,12 @@ void MimeTypeSettingsPrivate::writeUserModifiedMimeTypes()
mt.globPatterns.join(kSemiColon));
for (auto prioIt = mt.rules.constBegin(); prioIt != mt.rules.constEnd(); ++prioIt) {
const QString priorityString = QString::number(prioIt.key());
foreach (const Utils::Internal::MimeMagicRule &rule, prioIt.value()) {
foreach (const Utils::MimeMagicRule &rule, prioIt.value()) {
writer.writeStartElement(QLatin1String(matchTagC));
writer.writeAttribute(QLatin1String(matchValueAttributeC),
QString::fromUtf8(rule.value()));
writer.writeAttribute(QLatin1String(matchTypeAttributeC),
QString::fromUtf8(Utils::Internal::MimeMagicRule::typeName(rule.type())));
QString::fromUtf8(Utils::MimeMagicRule::typeName(rule.type())));
writer.writeAttribute(QLatin1String(matchOffsetAttributeC),
QString::fromLatin1("%1:%2").arg(rule.startPos())
.arg(rule.endPos()));
@@ -585,7 +585,7 @@ MimeTypeSettingsPrivate::UserMimeTypeHash MimeTypeSettingsPrivate::readUserModif
int priority = atts.value(QLatin1String(priorityAttributeC)).toString().toInt();
QByteArray mask = atts.value(QLatin1String(matchMaskAttributeC)).toLatin1();
QString errorMessage;
Utils::Internal::MimeMagicRule rule(Utils::Internal::MimeMagicRule::type(typeName),
Utils::MimeMagicRule rule(Utils::MimeMagicRule::type(typeName),
value, range.first, range.second, mask,
&errorMessage);
if (rule.isValid()) {

View File

@@ -43,7 +43,7 @@
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/temporarydirectory.h>

View File

@@ -42,9 +42,9 @@
#include <texteditor/texteditorsettings.h>
#include <texteditor/completionsettings.h>
#include <utils/textutils.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/textutils.h>
#include <cplusplus/BackwardsScanner.h>
#include <cplusplus/CppRewriter.h>

View File

@@ -49,7 +49,7 @@
#include <utils/executeondestruction.h>
#include <utils/infobar.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/runextensions.h>

View File

@@ -107,7 +107,7 @@
#include <utils/fileutils.h>
#include <utils/hostosinfo.h>
#include <utils/macroexpander.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/theme/theme.h>

View File

@@ -37,7 +37,7 @@
#include <utils/environment.h>
#include <utils/fileutils.h>
#include <utils/hostosinfo.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/stringutils.h>
#include <QCoreApplication>

View File

@@ -28,7 +28,7 @@
#include "cppeditorconstants.h"
#include <coreplugin/icore.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QDebug>

View File

@@ -32,7 +32,7 @@
#include <texteditor/texteditor.h>
#include <utils/executeondestruction.h>
#include <utils/fileutils.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/tooltip/tooltip.h>

View File

@@ -43,7 +43,7 @@
#include <texteditor/texteditor.h>
#include <utils/aspects.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <QTextBlock>

View File

@@ -31,7 +31,7 @@
#include <coreplugin/icore.h>
#include <cppeditor/cppeditorconstants.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QDebug>
#include <QMessageBox>

View File

@@ -39,14 +39,14 @@
#include <coreplugin/actionmanager/actioncontainer.h>
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/command.h>
#include <coreplugin/coreconstants.h>
#include <coreplugin/designmode.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/icore.h>
#include <coreplugin/idocument.h>
#include <coreplugin/coreconstants.h>
#include <coreplugin/designmode.h>
#include <cppeditor/cppeditorconstants.h>
#include <projectexplorer/jsonwizard/jsonwizardfactory.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QAction>
#include <QCoreApplication>

View File

@@ -46,7 +46,7 @@
#include <projectexplorer/projecttree.h>
#include <projectexplorer/session.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/stringutils.h>

View File

@@ -36,7 +36,7 @@
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/filewizardpage.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QApplication>
#include <QDebug>

View File

@@ -47,7 +47,7 @@
#include <utils/commandline.h>
#include <utils/fileutils.h>
#include <utils/hostosinfo.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <utils/stringutils.h>

View File

@@ -30,7 +30,7 @@
#include <coreplugin/editormanager/documentmodel.h>
#include <utils/fileutils.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <QFileInfo>

View File

@@ -57,7 +57,7 @@
#include <texteditor/texteditoractionhandler.h>
#include <texteditor/texteditorsettings.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcprocess.h>

View File

@@ -30,7 +30,7 @@
#include <texteditor/tabsettings.h>
#include <texteditor/textdocument.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QTextDocument>

View File

@@ -29,7 +29,7 @@
#include <texteditor/textdocument.h>
#include <texteditor/texteditor.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/tooltip/tooltip.h>

View File

@@ -42,7 +42,6 @@
#include <texteditor/textmark.h>
#include <utils/algorithm.h>
#include <utils/executeondestruction.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/theme/theme.h>
#include <utils/utilsicons.h>

View File

@@ -28,13 +28,12 @@
#include "languageclientmanager.h"
#include "languageclientutils.h"
#include <coreplugin/find/itemviewfind.h>
#include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/find/itemviewfind.h>
#include <languageserverprotocol/languagefeatures.h>
#include <texteditor/textdocument.h>
#include <texteditor/texteditor.h>
#include <utils/itemviews.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/treemodel.h>
#include <utils/treeviewcombobox.h>
#include <utils/utilsicons.h>

View File

@@ -41,12 +41,11 @@
#include <texteditor/textmark.h>
#include <utils/algorithm.h>
#include <utils/utilsicons.h>
#include <utils/delegates.h>
#include <utils/fancylineedit.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/jsontreeitem.h>
#include <utils/stringutils.h>
#include <utils/utilsicons.h>
#include <utils/variablechooser.h>
#include <QBoxLayout>

View File

@@ -31,7 +31,7 @@
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/find/searchresultwindow.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QFile>

View File

@@ -32,7 +32,7 @@
#include <texteditor/syntaxhighlighter.h>
#include <texteditor/texteditor.h>
#include <texteditor/texteditorsettings.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QTextDocument>

View File

@@ -43,10 +43,9 @@
#include <projectexplorer/session.h>
#include <projectexplorer/projectnodes.h>
#include <utils/mimetypes/mimetype.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/qtcassert.h>
#include <utils/mimeutils.h>
#include <utils/porting.h>
#include <utils/qtcassert.h>
#include <QQueue>
#include <QMutex>

View File

@@ -39,7 +39,6 @@
#include <projectexplorer/target.h>
#include <utils/aspects.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/qtcassert.h>
using namespace ProjectExplorer;

View File

@@ -49,10 +49,9 @@
#include <utils/algorithm.h>
#include <utils/detailswidget.h>
#include <utils/macroexpander.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimetypes/mimetype.h>
#include <utils/layoutbuilder.h>
#include <utils/macroexpander.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/variablechooser.h>

View File

@@ -30,7 +30,7 @@
#include <cppeditor/cppeditorconstants.h>
#include <utils/macroexpander.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/stringutils.h>
#include <utils/templateengine.h>

View File

@@ -35,7 +35,7 @@
#include <utils/algorithm.h>
#include <utils/macroexpander.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
using namespace Core;

View File

@@ -42,9 +42,9 @@
#include <texteditor/textindenter.h>
#include <utils/algorithm.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/stringutils.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/stringutils.h>
#include <QCoreApplication>
#include <QDebug>

View File

@@ -34,9 +34,9 @@
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/qtcassert.h>
#include <utils/macroexpander.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <QCoreApplication>
#include <QDir>

View File

@@ -139,7 +139,7 @@
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/macroexpander.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/parameteraction.h>
#include <utils/processhandle.h>
#include <utils/proxyaction.h>

View File

@@ -44,7 +44,7 @@
#include <texteditor/tabsettings.h>
#include <texteditor/texteditorsettings.h>
#include <texteditor/textindenter.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QPointer>
#include <QDebug>

View File

@@ -39,8 +39,7 @@
#include <utils/fileutils.h>
#include <utils/hostosinfo.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimetypes/mimetype.h>
#include <utils/mimeutils.h>
#include <utils/pointeralgorithm.h>
#include <utils/qtcassert.h>
#include <utils/stringutils.h>

View File

@@ -42,7 +42,7 @@
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/filewizardpage.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/wizard.h>
#include <QApplication>

View File

@@ -28,8 +28,8 @@
#include "projectexplorer_export.h"
#include "projectnodes.h"
#include <utils/mimetypes/mimedatabase.h>
#include <utils/fileutils.h>
#include <utils/mimeutils.h>
#include <QObject>
#include <QFuture>

View File

@@ -36,7 +36,7 @@
#include <projectexplorer/target.h>
#include <utils/algorithm.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcprocess.h>
using namespace Utils;

View File

@@ -46,7 +46,6 @@
#include <qtsupport/qtkitinformation.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>

View File

@@ -56,10 +56,8 @@
#include <qtsupport/qtkitinformation.h>
#include <qtsupport/qtversionmanager.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <utils/qtcassert.h>
#include <QDebug>
#include <QInputDialog>

View File

@@ -46,13 +46,13 @@
#include <texteditor/tabsettings.h>
#include <texteditor/texteditorsettings.h>
#include <utils/QtConcurrentTools>
#include <utils/algorithm.h>
#include <utils/filesystemwatcher.h>
#include <utils/mimeutils.h>
#include <utils/qtcprocess.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/stringutils.h>
#include <utils/temporarydirectory.h>
#include <utils/QtConcurrentTools>
#include <QLoggingCategory>
#include <QMessageBox>

View File

@@ -55,7 +55,7 @@
#include <utils/algorithm.h>
#include <utils/hostosinfo.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QDir>
#include <QFile>

View File

@@ -37,7 +37,7 @@
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/target.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <QComboBox>

View File

@@ -49,7 +49,6 @@
#include <utils/aspects.h>
#include <utils/environment.h>
#include <utils/fileutils.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/qtcprocess.h>
#include <utils/winutils.h>

View File

@@ -34,7 +34,7 @@
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/threadutils.h>

View File

@@ -51,10 +51,10 @@
#include <qmldesigner/qmldesignerplugin.h>
#include <utils/checkablemessagebox.h>
#include <utils/dynamiclicensecheck.h>
#include <utils/hostosinfo.h>
#include <utils/icon.h>
#include <utils/infobar.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/stringutils.h>
#include <utils/theme/theme.h>

View File

@@ -34,7 +34,7 @@
#include <coreplugin/editormanager/documentmodel.h>
#include <coreplugin/icore.h>
#include <coreplugin/messagemanager.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <utils/stylehelper.h>

View File

@@ -27,21 +27,21 @@
#include "extraencodingsettings.h"
#include "fontsettings.h"
#include "textindenter.h"
#include "storagesettings.h"
#include "syntaxhighlighter.h"
#include "tabsettings.h"
#include "textdocumentlayout.h"
#include "texteditor.h"
#include "texteditorconstants.h"
#include "textindenter.h"
#include "typingsettings.h"
#include <coreplugin/diffservice.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/documentmodel.h>
#include <coreplugin/editormanager/editormanager.h>
#include <extensionsystem/pluginmanager.h>
#include <utils/textutils.h>
#include <utils/guard.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/textutils.h>
#include <QAction>
#include <QApplication>

View File

@@ -79,7 +79,7 @@
#include <utils/fixedsizeclicklabel.h>
#include <utils/hostosinfo.h>
#include <utils/infobar.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/mimeutils.h>
#include <utils/multitextcursor.h>
#include <utils/qtcassert.h>
#include <utils/styledbar.h>

View File

@@ -26,8 +26,6 @@
#include <languageserverprotocol/basemessage.h>
#include <languageserverprotocol/jsonobject.h>
#include <languageserverprotocol/jsonrpcmessages.h>
#include <utils/mimetypes/mimetype.h>
#include <utils/mimetypes/mimedatabase.h>
#include <QTextCodec>
#include <QtTest>