tageditor/misc/utility.h

64 lines
2.1 KiB
C
Raw Permalink Normal View History

2015-04-22 19:33:53 +02:00
#ifndef UTILITYFEATURES_H
#define UTILITYFEATURES_H
#include <tagparser/tagvalue.h>
#include <QString>
#include <QStringList>
#include <limits>
2023-07-25 23:34:39 +02:00
#include <type_traits>
2015-04-22 19:33:53 +02:00
QT_FORWARD_DECLARE_CLASS(QDir)
QT_FORWARD_DECLARE_CLASS(QAbstractItemModel)
QT_FORWARD_DECLARE_CLASS(QModelIndex)
2015-04-22 19:33:53 +02:00
2018-03-06 23:10:13 +01:00
namespace TagParser {
2015-04-22 19:33:53 +02:00
class MediaFileInfo;
class Tag;
2018-01-31 21:04:15 +01:00
enum class ElementPosition;
2018-03-11 18:58:50 +01:00
} // namespace TagParser
2015-04-22 19:33:53 +02:00
namespace Utility {
2018-03-06 23:10:13 +01:00
const char *textEncodingToCodecName(TagParser::TagTextEncoding textEncoding);
QString tagValueToQString(const TagParser::TagValue &value);
QString dataToQString(const char *data, std::size_t dataSize, TagParser::TagTextEncoding encoding);
QString stringToQString(const std::string &value, TagParser::TagTextEncoding textEncoding);
std::string qstringToString(const QString &value, TagParser::TagTextEncoding textEncoding);
TagParser::TagValue qstringToTagValue(const QString &value, TagParser::TagTextEncoding textEncoding);
QString elementPositionToQString(TagParser::ElementPosition elementPosition);
2015-04-22 19:33:53 +02:00
QString formatName(const QString &str, bool underscoreToWhitespace = true);
QString fixUmlauts(const QString &str);
void parseFileName(const QString &fileName, QString &title, int &trackNumber);
QString printModel(QAbstractItemModel *model);
void printModelIndex(const QModelIndex &index, QString &res, int level);
template <typename IntType = int> constexpr IntType sizeToInt(std::size_t size)
2018-03-06 02:04:35 +01:00
{
return size > std::numeric_limits<IntType>::max() ? std::numeric_limits<IntType>::max() : static_cast<IntType>(size);
2018-03-06 02:04:35 +01:00
}
constexpr int containerSizeToInt(typename QStringList::size_type size)
{
if constexpr (std::is_same_v<decltype(size), int>) {
return size;
} else {
return size > std::numeric_limits<int>::max() ? std::numeric_limits<int>::max() : static_cast<int>(size);
}
}
2018-03-06 02:04:35 +01:00
constexpr int trQuandity(quint64 quandity)
{
return quandity > std::numeric_limits<int>::max() ? std::numeric_limits<int>::max() : static_cast<int>(quandity);
}
2021-01-30 21:57:09 +01:00
inline QString qstr(std::string_view stdstr)
{
return QString::fromUtf8(stdstr.data(), static_cast<int>(stdstr.size()));
}
2018-03-11 18:58:50 +01:00
} // namespace Utility
2015-04-22 19:33:53 +02:00
#endif // UTILITYFEATURES_H