diff options
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/common/utils.cpp')
| -rw-r--r-- | SQLiteStudio3/coreSQLiteStudio/common/utils.cpp | 76 |
1 files changed, 71 insertions, 5 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/common/utils.cpp b/SQLiteStudio3/coreSQLiteStudio/common/utils.cpp index fd40355..0b95a85 100644 --- a/SQLiteStudio3/coreSQLiteStudio/common/utils.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/common/utils.cpp @@ -2,6 +2,7 @@ #include "common/global.h" #include "dbobjecttype.h" #include "rsa/RSA.h" +#include "common/compatibility.h" #include <QTextCodec> #include <QString> #include <QSet> @@ -12,7 +13,9 @@ #include <QRegularExpression> #include <QDir> #include <QByteArray> +#include <QBitArray> #include <QDataStream> +#include <QRandomGenerator> #ifdef Q_OS_LINUX #include <sys/utsname.h> @@ -68,7 +71,7 @@ QChar charAt(const QString& str, int pos) int rand(int min, int max) { - return qrand() % (max-min) + min; + return QRandomGenerator::system()->generate() % (max-min) + min; } QString randStr(int length, bool numChars, bool whiteSpaces) @@ -414,7 +417,7 @@ QString shortest(const QStringList& strList) QString longestCommonPart(const QStringList& strList) { if (strList.size() == 0) - return QString::null; + return QString(); QString common; QString first = strList.first(); @@ -626,8 +629,8 @@ QStringList textCodecNames() for (const QByteArray& codec : codecs) nameSet << QString::fromLatin1(codec.constData()); - names = nameSet.toList(); - qSort(names); + names = nameSet.values(); + sSort(names); return names; } @@ -975,7 +978,7 @@ QString doubleToString(const QVariant& val) void sortWithReferenceList(QList<QString>& listToSort, const QList<QString>& referenceList, Qt::CaseSensitivity cs) { - qSort(listToSort.begin(), listToSort.end(), [referenceList, cs](const QString& s1, const QString& s2) -> bool + sSort(listToSort, [referenceList, cs](const QString& s1, const QString& s2) -> bool { int idx1 = indexOf(referenceList, s1, cs); int idx2 = indexOf(referenceList, s2, cs); @@ -1031,3 +1034,66 @@ QString readFileContents(const QString& path, QString* err) return contents; } + + +uint qHash(const QVariant& var) +{ + if (!var.isValid() || var.isNull()) + return -1; + + switch (var.type()) + { + case QVariant::Int: + return qHash(var.toInt()); + case QVariant::UInt: + return qHash(var.toUInt()); + case QVariant::Bool: + return qHash(var.toUInt()); + case QVariant::Double: + return qHash(var.toUInt()); + case QVariant::LongLong: + return qHash(var.toLongLong()); + case QVariant::ULongLong: + return qHash(var.toULongLong()); + case QVariant::String: + return qHash(var.toString()); + case QVariant::Char: + return qHash(var.toChar()); + case QVariant::StringList: + return qHash(var.toString()); + case QVariant::ByteArray: + return qHash(var.toByteArray()); + case QVariant::Date: + case QVariant::Time: + case QVariant::DateTime: + case QVariant::Url: + case QVariant::Locale: + case QVariant::RegExp: + return qHash(var.toString()); + case QVariant::Hash: + return qHash(var.toHash()); + case QVariant::Map: + return qHash(var.toMap()); + case QVariant::List: + return qHash(var.toList()); + case QVariant::BitArray: + return qHash(var.toBitArray()); + case QVariant::Size: + case QVariant::SizeF: + case QVariant::Rect: + case QVariant::LineF: + case QVariant::Line: + case QVariant::RectF: + case QVariant::Point: + case QVariant::PointF: + // not supported yet + break; + case QVariant::UserType: + case QVariant::Invalid: + default: + return -3; + } + + // could not generate a hash for the given variant + return -2; +} |
