Serenity Operating System
1/*
2 * Copyright (c) 2022, Samuel Bowman <sam@sambowman.tech>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <LibGUI/Model.h>
10#include <LibPartition/PartitionTable.h>
11
12namespace PartitionEditor {
13
14class PartitionModel final : public GUI::Model {
15public:
16 enum Column {
17 Partition,
18 StartBlock,
19 EndBlock,
20 TotalBlocks,
21 Size,
22 __Count,
23 };
24
25 static NonnullRefPtr<PartitionModel> create() { return adopt_ref(*new PartitionModel()); }
26 virtual ~PartitionModel() override = default;
27
28 virtual int row_count(GUI::ModelIndex const& = GUI::ModelIndex()) const override { return m_partition_table->partitions_count(); }
29 virtual int column_count(GUI::ModelIndex const& = GUI::ModelIndex()) const override { return Column::__Count; }
30 virtual DeprecatedString column_name(int) const override;
31 virtual GUI::Variant data(GUI::ModelIndex const&, GUI::ModelRole) const override;
32
33 ErrorOr<void> set_device_path(DeprecatedString const&);
34
35private:
36 PartitionModel() = default;
37
38 OwnPtr<Partition::PartitionTable> m_partition_table;
39};
40
41}