Serenity Operating System
1/*
2 * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <LibGUI/Model.h>
10#include <QAbstractItemModel>
11
12namespace Ladybird {
13
14class ModelTranslator final : public QAbstractItemModel {
15 Q_OBJECT
16public:
17 virtual ~ModelTranslator() override;
18
19 void set_underlying_model(RefPtr<GUI::Model> model)
20 {
21 beginResetModel();
22 m_model = model;
23 endResetModel();
24 }
25
26 virtual int columnCount(QModelIndex const& parent) const override;
27 virtual int rowCount(QModelIndex const& parent) const override;
28 virtual QVariant data(QModelIndex const&, int role) const override;
29 virtual QModelIndex index(int row, int column, QModelIndex const& parent) const override;
30 virtual QModelIndex parent(QModelIndex const& index) const override;
31
32 QModelIndex to_qt(GUI::ModelIndex const&) const;
33 GUI::ModelIndex to_gui(QModelIndex const&) const;
34
35private:
36 RefPtr<GUI::Model> m_model;
37};
38
39}