Remove direct dependency on Qt 5 compatibility module (#4906)
This commit is contained in:
+16
-13
@@ -11,7 +11,7 @@ namespace chatterino {
|
||||
|
||||
namespace _helpers_internal {
|
||||
|
||||
int skipSpace(const QStringRef &view, int startPos)
|
||||
SizeType skipSpace(StringView view, SizeType startPos)
|
||||
{
|
||||
while (startPos < view.length() && view.at(startPos).isSpace())
|
||||
{
|
||||
@@ -20,26 +20,26 @@ namespace _helpers_internal {
|
||||
return startPos - 1;
|
||||
}
|
||||
|
||||
bool matchesIgnorePlural(const QStringRef &word, const QString &singular)
|
||||
bool matchesIgnorePlural(StringView word, const QString &expected)
|
||||
{
|
||||
if (!word.startsWith(singular))
|
||||
if (!word.startsWith(expected))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (word.length() == singular.length())
|
||||
if (word.length() == expected.length())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return word.length() == singular.length() + 1 &&
|
||||
return word.length() == expected.length() + 1 &&
|
||||
word.at(word.length() - 1).toLatin1() == 's';
|
||||
}
|
||||
|
||||
std::pair<uint64_t, bool> findUnitMultiplierToSec(const QStringRef &view,
|
||||
int &pos)
|
||||
std::pair<uint64_t, bool> findUnitMultiplierToSec(StringView view,
|
||||
SizeType &pos)
|
||||
{
|
||||
// Step 1. find end of unit
|
||||
int startIdx = pos;
|
||||
int endIdx = view.length();
|
||||
auto startIdx = pos;
|
||||
auto endIdx = view.length();
|
||||
for (; pos < view.length(); pos++)
|
||||
{
|
||||
auto c = view.at(pos);
|
||||
@@ -207,16 +207,19 @@ int64_t parseDurationToSeconds(const QString &inputString,
|
||||
return -1;
|
||||
}
|
||||
|
||||
// TODO(QT6): use QStringView
|
||||
QStringRef input(&inputString);
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 2)
|
||||
StringView input(inputString);
|
||||
#else
|
||||
StringView input(&inputString);
|
||||
#endif
|
||||
input = input.trimmed();
|
||||
|
||||
uint64_t currentValue = 0;
|
||||
|
||||
bool visitingNumber = true; // input must start with a number
|
||||
int numberStartIdx = 0;
|
||||
SizeType numberStartIdx = 0;
|
||||
|
||||
for (int pos = 0; pos < input.length(); pos++)
|
||||
for (SizeType pos = 0; pos < input.length(); pos++)
|
||||
{
|
||||
QChar c = input.at(pos);
|
||||
|
||||
|
||||
+15
-5
@@ -3,7 +3,10 @@
|
||||
#include <QColor>
|
||||
#include <QLocale>
|
||||
#include <QString>
|
||||
#include <QStringRef>
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 2)
|
||||
# include <QStringRef>
|
||||
#endif
|
||||
|
||||
#include <cmath>
|
||||
#include <optional>
|
||||
@@ -14,6 +17,13 @@ namespace chatterino {
|
||||
// only qualified for tests
|
||||
namespace _helpers_internal {
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 2)
|
||||
using StringView = QStringView;
|
||||
#else
|
||||
using StringView = QStringRef;
|
||||
#endif
|
||||
using SizeType = StringView::size_type;
|
||||
|
||||
/**
|
||||
* Skips all spaces.
|
||||
* The caller must guarantee view.at(startPos).isSpace().
|
||||
@@ -22,7 +32,7 @@ namespace _helpers_internal {
|
||||
* @param startPos The starting position (there must be a space in the view).
|
||||
* @return The position of the last space.
|
||||
*/
|
||||
int skipSpace(const QStringRef &view, int startPos);
|
||||
SizeType skipSpace(StringView view, SizeType startPos);
|
||||
|
||||
/**
|
||||
* Checks if `word` equals `expected` (singular) or `expected` + 's' (plural).
|
||||
@@ -31,7 +41,7 @@ namespace _helpers_internal {
|
||||
* @param expected Singular of the expected word.
|
||||
* @return true if `word` is singular or plural of `expected`.
|
||||
*/
|
||||
bool matchesIgnorePlural(const QStringRef &word, const QString &expected);
|
||||
bool matchesIgnorePlural(StringView word, const QString &expected);
|
||||
|
||||
/**
|
||||
* Tries to find the unit starting at `pos` and returns its multiplier so
|
||||
@@ -48,8 +58,8 @@ namespace _helpers_internal {
|
||||
* if it's a valid unit, undefined otherwise.
|
||||
* @return (multiplier, ok)
|
||||
*/
|
||||
std::pair<uint64_t, bool> findUnitMultiplierToSec(const QStringRef &view,
|
||||
int &pos);
|
||||
std::pair<uint64_t, bool> findUnitMultiplierToSec(StringView view,
|
||||
SizeType &pos);
|
||||
|
||||
} // namespace _helpers_internal
|
||||
|
||||
|
||||
Reference in New Issue
Block a user