2023-08-05 13:42:26 -03:00
|
|
|
/*
|
2024-10-04 08:19:50 -03:00
|
|
|
* Copyright (c) 2022, Andreas Kling <andreas@ladybird.org>
|
2023-08-05 13:42:26 -03:00
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
|
|
|
*/
|
|
|
|
|
|
2026-05-26 14:07:49 -03:00
|
|
|
#include <AK/StringBuilder.h>
|
2026-06-22 09:23:59 -03:00
|
|
|
#include <AK/Utf16StringBuilder.h>
|
2025-02-22 05:51:15 -03:00
|
|
|
#include <LibURL/Parser.h>
|
2024-11-09 14:50:33 -03:00
|
|
|
#include <UI/Qt/StringUtils.h>
|
2023-08-05 13:42:26 -03:00
|
|
|
|
2023-12-16 11:19:34 -03:00
|
|
|
AK::ByteString ak_byte_string_from_qstring(QString const& qstring)
|
2023-08-05 13:42:26 -03:00
|
|
|
{
|
2024-02-14 08:10:58 -03:00
|
|
|
auto utf8_data = qstring.toUtf8();
|
|
|
|
|
return AK::ByteString(utf8_data.data(), utf8_data.size());
|
2023-08-05 13:42:26 -03:00
|
|
|
}
|
|
|
|
|
|
2025-05-01 12:38:31 -03:00
|
|
|
AK::ByteString ak_byte_string_from_qbytearray(QByteArray const& qbytearray)
|
|
|
|
|
{
|
|
|
|
|
return AK::ByteString(qbytearray.data(), qbytearray.size());
|
|
|
|
|
}
|
|
|
|
|
|
2023-12-04 12:08:16 -03:00
|
|
|
String ak_string_from_qstring(QString const& qstring)
|
2023-08-05 13:42:26 -03:00
|
|
|
{
|
2023-12-04 12:12:06 -03:00
|
|
|
auto utf8_data = qstring.toUtf8();
|
2023-12-04 12:08:16 -03:00
|
|
|
return MUST(String::from_utf8(StringView(utf8_data.data(), utf8_data.size())));
|
2023-08-05 13:42:26 -03:00
|
|
|
}
|
|
|
|
|
|
2023-12-04 11:55:47 -03:00
|
|
|
QString qstring_from_ak_string(StringView ak_string)
|
2023-08-05 13:42:26 -03:00
|
|
|
{
|
2023-12-04 11:55:47 -03:00
|
|
|
return QString::fromUtf8(ak_string.characters_without_null_termination(), static_cast<qsizetype>(ak_string.length()));
|
2023-08-05 13:42:26 -03:00
|
|
|
}
|
2024-01-30 23:15:55 -03:00
|
|
|
|
2025-07-28 17:51:01 -03:00
|
|
|
Utf16String utf16_string_from_qstring(QString const& string)
|
|
|
|
|
{
|
|
|
|
|
return Utf16String::from_utf16({ reinterpret_cast<char16_t const*>(string.utf16()), static_cast<size_t>(string.size()) });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString qstring_from_utf16_string(Utf16View const& string)
|
|
|
|
|
{
|
|
|
|
|
if (string.has_ascii_storage())
|
|
|
|
|
return qstring_from_ak_string(string.bytes());
|
|
|
|
|
return QString::fromUtf16(string.utf16_span().data(), static_cast<qsizetype>(string.length_in_code_units()));
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-26 14:07:49 -03:00
|
|
|
QString vqformatted(StringView format, AK::TypeErasedFormatParams& parameters)
|
|
|
|
|
{
|
2026-06-22 09:23:59 -03:00
|
|
|
Utf16StringBuilder builder;
|
2026-05-26 14:07:49 -03:00
|
|
|
MUST(vformat(builder, format, parameters));
|
2026-06-22 09:23:59 -03:00
|
|
|
return qstring_from_utf16_string(builder.view());
|
2026-05-26 14:07:49 -03:00
|
|
|
}
|
|
|
|
|
|
2025-05-01 12:38:31 -03:00
|
|
|
QByteArray qbytearray_from_ak_string(StringView ak_string)
|
|
|
|
|
{
|
|
|
|
|
return { ak_string.characters_without_null_termination(), static_cast<qsizetype>(ak_string.length()) };
|
|
|
|
|
}
|
|
|
|
|
|
2025-02-22 05:51:15 -03:00
|
|
|
Optional<URL::URL> ak_url_from_qstring(QString const& qstring)
|
2024-01-30 23:15:55 -03:00
|
|
|
{
|
2024-02-14 08:10:58 -03:00
|
|
|
auto utf8_data = qstring.toUtf8();
|
2025-02-22 05:51:15 -03:00
|
|
|
return URL::Parser::basic_parse(StringView(utf8_data.data(), utf8_data.size()));
|
2024-01-30 23:15:55 -03:00
|
|
|
}
|
|
|
|
|
|
2024-03-18 00:22:27 -03:00
|
|
|
URL::URL ak_url_from_qurl(QUrl const& qurl)
|
2024-01-30 23:15:55 -03:00
|
|
|
{
|
2025-02-22 05:51:15 -03:00
|
|
|
return ak_url_from_qstring(qurl.toString()).value();
|
2024-01-30 23:15:55 -03:00
|
|
|
}
|