1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 05:07:35 +00:00

Ladybird: Move Qt-specific classes and functions to a Qt subdirectory

This will help a lot with developing chromes for different UI frameworks
where we can see which helper classes and processes are really using Qt
vs just using it to get at helper data.

As a bonus, remove Qt dependency from WebDriver.
This commit is contained in:
Andrew Kaster 2023-08-05 10:42:26 -06:00 committed by Andrew Kaster
parent ccaa423372
commit 391beef707
53 changed files with 160 additions and 157 deletions

View file

@ -0,0 +1,85 @@
/*
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "ModelTranslator.h"
#include "StringUtils.h"
#include <QIcon>
namespace Ladybird {
ModelTranslator::~ModelTranslator() = default;
int ModelTranslator::columnCount(QModelIndex const& parent) const
{
if (!m_model)
return 0;
return m_model->column_count(to_gui(parent));
}
int ModelTranslator::rowCount(QModelIndex const& parent) const
{
if (!m_model)
return 0;
return m_model->row_count(to_gui(parent));
}
static QVariant convert_variant(GUI::Variant const& value)
{
if (value.is_string())
return qstring_from_ak_deprecated_string(value.as_string());
if (value.is_icon()) {
auto const& gui_icon = value.as_icon();
auto bitmap = gui_icon.bitmap_for_size(16);
VERIFY(bitmap);
auto qt_image = QImage(bitmap->scanline_u8(0), 16, 16, QImage::Format_ARGB32);
QIcon qt_icon;
qt_icon.addPixmap(QPixmap::fromImage(qt_image.convertToFormat(QImage::Format::Format_ARGB32_Premultiplied)));
return qt_icon;
}
return {};
}
QVariant ModelTranslator::data(QModelIndex const& index, int role) const
{
VERIFY(m_model);
switch (role) {
case Qt::DisplayRole:
return convert_variant(m_model->data(to_gui(index), GUI::ModelRole::Display));
case Qt::DecorationRole:
return convert_variant(m_model->data(to_gui(index), GUI::ModelRole::Icon));
default:
return {};
}
}
QModelIndex ModelTranslator::index(int row, int column, QModelIndex const& parent) const
{
VERIFY(m_model);
return to_qt(m_model->index(row, column, to_gui(parent)));
}
QModelIndex ModelTranslator::parent(QModelIndex const& index) const
{
VERIFY(m_model);
return to_qt(m_model->parent_index(to_gui(index)));
}
QModelIndex ModelTranslator::to_qt(GUI::ModelIndex const& index) const
{
if (!index.is_valid())
return {};
return createIndex(index.row(), index.column(), index.internal_data());
}
GUI::ModelIndex ModelTranslator::to_gui(QModelIndex const& index) const
{
VERIFY(m_model);
if (!index.isValid())
return {};
return m_model->unsafe_create_index(index.row(), index.column(), index.internalPointer());
}
}