Serenity Operating System
at master 38 lines 1.2 kB view raw
1/* 2 * Copyright (c) 2021, Luke Wilde <lukew@serenityos.org> 3 * Copyright (c) 2022, the SerenityOS developers. 4 * 5 * SPDX-License-Identifier: BSD-2-Clause 6 */ 7 8#pragma once 9 10#include <LibGUI/Model.h> 11#include <LibIMAP/Objects.h> 12 13class AccountHolder; 14 15class MailboxTreeModel final : public GUI::Model { 16public: 17 static NonnullRefPtr<MailboxTreeModel> create(AccountHolder const& account_holder) 18 { 19 return adopt_ref(*new MailboxTreeModel(account_holder)); 20 } 21 22 virtual ~MailboxTreeModel() override = default; 23 24 virtual int row_count(GUI::ModelIndex const& = GUI::ModelIndex()) const override; 25 virtual int column_count(GUI::ModelIndex const& = GUI::ModelIndex()) const override; 26 virtual GUI::Variant data(GUI::ModelIndex const&, GUI::ModelRole) const override; 27 virtual GUI::ModelIndex index(int row, int column, GUI::ModelIndex const& parent = GUI::ModelIndex()) const override; 28 virtual GUI::ModelIndex parent_index(GUI::ModelIndex const&) const override; 29 30private: 31 explicit MailboxTreeModel(AccountHolder const&); 32 33 AccountHolder const& m_account_holder; 34 35 GUI::Icon m_mail_icon; 36 GUI::Icon m_folder_icon; 37 GUI::Icon m_account_icon; 38};