1/* 2 * Copyright 2011-2015, Haiku, Inc. All rights reserved. 3 * Copyright 2011, Clemens Zeidler <haiku@clemens-zeidler.de> 4 * Distributed under the terms of the MIT License. 5 */ 6#ifndef FILTER_LIST_H 7#define FILTER_LIST_H 8 9 10#include <MailSettings.h> 11#include <MailSettingsView.h> 12 13 14enum direction { 15 kIncoming, 16 kOutgoing 17}; 18 19 20struct FilterInfo { 21 image_id image; 22 entry_ref ref; 23 BMailSettingsView* (*instantiateSettingsView)( 24 const BMailAccountSettings& accountSettings, 25 const BMailAddOnSettings& settings); 26 BString (*name)( 27 const BMailAccountSettings& accountSettings, 28 const BMailAddOnSettings* settings); 29}; 30 31 32class FilterList { 33public: 34 FilterList(direction dir); 35 ~FilterList(); 36 37 void Reload(); 38 39 int32 CountInfos() const; 40 const FilterInfo& InfoAt(int32 index) const; 41 int32 InfoIndexFor(const entry_ref& ref) const; 42 43 BString SimpleName(int32 index, 44 const BMailAccountSettings& settings) const; 45 BString SimpleName(const entry_ref& ref, 46 const BMailAccountSettings& settings) const; 47 BString DescriptiveName(int32 index, 48 const BMailAccountSettings& accountSettings, 49 const BMailAddOnSettings* settings) const; 50 BString DescriptiveName(const entry_ref& ref, 51 const BMailAccountSettings& accountSettings, 52 const BMailAddOnSettings* settings) const; 53 54 BMailSettingsView* CreateSettingsView( 55 const BMailAccountSettings& accountSettings, 56 const BMailAddOnSettings& settings); 57 58private: 59 void _MakeEmpty(); 60 status_t _LoadAddOn(BEntry& entry); 61 62private: 63 direction fDirection; 64 std::vector<FilterInfo> fList; 65}; 66 67 68#endif // FILTER_LIST_H 69