Major mail protocol/filter settings rework.

* Instead of abusing BArchive::Archive() we now use a BMailSettingsView as
  a base view for all filter/protocol settings that works with
  BMailAddOnSettings.
* Cleanups in E-mail which is now completely layout friendly. But also still
  crashes when changing the views.
This commit is contained in:
Axel Dörfler
2015-01-06 15:22:56 +01:00
parent a6943acbe0
commit ca3341c7b4
26 changed files with 495 additions and 348 deletions
+9 -8
View File
@@ -11,17 +11,15 @@
class BMailProtocol;
class BView;
class BMailSettingsView;
class BMailFilter {
public:
BMailFilter(BMailProtocol& protocol,
BMailAddOnSettings* settings);
const BMailAddOnSettings* settings);
virtual ~BMailFilter();
virtual BString DescriptiveName() const = 0;
// Message hooks if filter is installed to an inbound protocol
virtual void HeaderFetched(const entry_ref& ref,
BFile* file);
@@ -36,15 +34,18 @@ public:
protected:
BMailProtocol& fMailProtocol;
BMailAddOnSettings* fSettings;
const BMailAddOnSettings* fSettings;
};
// Your filter needs to export these hooks in order to be picked up
extern "C" BView* instantiate_filter_config_panel(BMailAddOnSettings& settings);
extern "C" BMailSettingsView* instantiate_filter_settings_view(
const BMailAccountSettings& accountSettings,
const BMailAddOnSettings& settings);
extern "C" BString filter_name(const BMailAccountSettings& accountSettings,
const BMailAddOnSettings* settings);
extern "C" BMailFilter* instantiate_filter(BMailProtocol& protocol,
BMailAddOnSettings* settings);
extern "C" BString filter_name();
const BMailAddOnSettings& settings);
#endif // _MAIL_FILTER_H
@@ -22,6 +22,7 @@
class BMailFilter;
class BMailSettingsView;
class BView;
@@ -103,7 +104,7 @@ protected:
const BMailProtocolSettings& settings);
private:
BMailFilter* _LoadFilter(BMailAddOnSettings* filterSettings);
BMailFilter* _LoadFilter(const BMailAddOnSettings& settings);
protected:
const BMailAccountSettings fAccountSettings;
@@ -149,12 +150,14 @@ public:
// Your protocol needs to export these hooks in order to be picked up
extern "C" _EXPORT BInboundMailProtocol* instantiate_inbound_protocol(
extern "C" BInboundMailProtocol* instantiate_inbound_protocol(
const BMailAccountSettings& settings);
extern "C" _EXPORT BOutboundMailProtocol* instantiate_outbound_protocol(
extern "C" BOutboundMailProtocol* instantiate_outbound_protocol(
const BMailAccountSettings& settings);
extern "C" _EXPORT BView* instantiate_protocol_config_panel(
BMailAccountSettings& settings);
extern "C" BMailSettingsView* instantiate_protocol_settings_view(
const BMailAccountSettings& accountSettings,
const BMailProtocolSettings& settings);
#endif // _MAIL_PROTOCOL_H
@@ -0,0 +1,25 @@
/*
* Copyright 2012, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _MAIL_SETTINGS_VIEW_H
#define _MAIL_SETTINGS_VIEW_H
#include <MailSettings.h>
#include <View.h>
class BMailSettingsView : public BView {
public:
BMailSettingsView(const char* name);
virtual ~BMailSettingsView();
// virtual BString DescriptiveName() const = 0;
virtual status_t SaveInto(
BMailAddOnSettings& settings) const = 0;
};
#endif // _MAIL_SETTINGS_VIEW_H