summaryrefslogtreecommitdiff
path: root/Userland/Applications/Mail/MailboxTreeModel.h
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Applications/Mail/MailboxTreeModel.h')
-rw-r--r--Userland/Applications/Mail/MailboxTreeModel.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/Userland/Applications/Mail/MailboxTreeModel.h b/Userland/Applications/Mail/MailboxTreeModel.h
new file mode 100644
index 0000000000..d24a766ce3
--- /dev/null
+++ b/Userland/Applications/Mail/MailboxTreeModel.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <LibGUI/Model.h>
+#include <LibIMAP/Objects.h>
+
+class AccountHolder;
+
+class MailboxTreeModel final : public GUI::Model {
+public:
+ static NonnullRefPtr<MailboxTreeModel> create(AccountHolder const& account_holder)
+ {
+ return adopt_ref(*new MailboxTreeModel(account_holder));
+ }
+
+ virtual ~MailboxTreeModel() override;
+
+ virtual int row_count(GUI::ModelIndex const& = GUI::ModelIndex()) const override;
+ virtual int column_count(GUI::ModelIndex const& = GUI::ModelIndex()) const override;
+ virtual GUI::Variant data(GUI::ModelIndex const&, GUI::ModelRole) const override;
+ virtual GUI::ModelIndex index(int row, int column, GUI::ModelIndex const& parent = GUI::ModelIndex()) const override;
+ virtual GUI::ModelIndex parent_index(GUI::ModelIndex const&) const override;
+ virtual void update() override;
+
+private:
+ explicit MailboxTreeModel(AccountHolder const&);
+
+ AccountHolder const& m_account_holder;
+
+ GUI::Icon m_mail_icon;
+ GUI::Icon m_folder_icon;
+ GUI::Icon m_account_icon;
+};