diff --git a/Userland/Applications/HexEditor/HexEditorWidget.cpp b/Userland/Applications/HexEditor/HexEditorWidget.cpp index 513c89d916..1c9fbb9adc 100644 --- a/Userland/Applications/HexEditor/HexEditorWidget.cpp +++ b/Userland/Applications/HexEditor/HexEditorWidget.cpp @@ -12,6 +12,7 @@ #include "GoToOffsetDialog.h" #include "SearchResultsModel.h" #include "ValueInspectorModel.h" +#include #include #include #include @@ -341,7 +342,19 @@ void HexEditorWidget::update_inspector_values(size_t position) else value_inspector_model->set_parsed_value(ValueInspectorModel::ValueType::UTF8, utf8_view.unicode_substring_view(0, 1).as_string()); - // FIXME: Parse as other values like UTF16, Timestamp etc + if (byte_read_count % 2 == 0) { + Utf16View utf16_view { Span { reinterpret_cast(&unsigned_64_bit_int), 4 } }; + size_t valid_code_units; + utf8_view.validate(valid_code_units); + if (valid_code_units == 0) + value_inspector_model->set_parsed_value(ValueInspectorModel::ValueType::UTF16, ""); + else + value_inspector_model->set_parsed_value(ValueInspectorModel::ValueType::UTF16, utf16_view.unicode_substring_view(0, 1).to_utf8()); + } else { + value_inspector_model->set_parsed_value(ValueInspectorModel::ValueType::UTF16, ""); + } + + // FIXME: Parse as other values like Timestamp etc m_value_inspector->set_model(value_inspector_model); m_value_inspector->update(); diff --git a/Userland/Applications/HexEditor/ValueInspectorModel.h b/Userland/Applications/HexEditor/ValueInspectorModel.h index bd77d2872c..0cddf740e2 100644 --- a/Userland/Applications/HexEditor/ValueInspectorModel.h +++ b/Userland/Applications/HexEditor/ValueInspectorModel.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -28,6 +29,7 @@ public: Double, ASCII, UTF8, + UTF16, __Count }; @@ -96,6 +98,8 @@ public: return "ASCII"; case UTF8: return "UTF-8"; + case UTF16: + return "UTF-16"; default: return ""; } @@ -137,6 +141,12 @@ public: return static_cast(utf8_view.byte_length()); return 0; } + case UTF16: { + auto utf16_view = Utf16View(utf8_to_utf16(m_values.at(index.row()))); + if (utf16_view.validate()) + return static_cast(utf16_view.length_in_code_units() * 2); + return 0; + } default: return 0; }