1/* 2 * Copyright 2007-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 AUTO_CONFIG_VIEW_H 7#define AUTO_CONFIG_VIEW_H 8 9 10#include "AutoConfig.h" 11#include "ConfigViews.h" 12 13#include <Box.h> 14#include <Entry.h> 15#include <GroupView.h> 16#include <MenuField.h> 17#include <String.h> 18#include <TextControl.h> 19 20class BPopUpMenu; 21 22 23const int32 kNameChangedMsg = '?nch'; 24const int32 kEMailChangedMsg = '?ech'; 25const int32 kProtokollChangedMsg = '?pch'; 26const int32 kServerChangedMsg = '?sch'; 27 28 29enum protocol_type { 30 POP, 31 IMAP, 32 SMTP 33}; 34 35 36struct account_info { 37 protocol_type inboundType; 38 entry_ref inboundProtocol; 39 entry_ref outboundProtocol; 40 BString name; 41 BString accountName; 42 BString email; 43 BString loginName; 44 BString password; 45 provider_info providerInfo; 46}; 47 48 49class AutoConfigView : public BBox { 50public: 51 AutoConfigView(AutoConfig& config); 52 53 virtual void AttachedToWindow(); 54 virtual void MessageReceived(BMessage* msg); 55 56 bool GetBasicAccountInfo(account_info& info); 57 bool IsValidMailAddress(BString email); 58 59private: 60 BPopUpMenu* _SetupProtocolMenu(); 61 status_t _GetSMTPAddOnRef(entry_ref* ref); 62 63 BString _ExtractLocalPart(const char* email); 64 void _ProposeUsername(); 65 66private: 67 entry_ref fSMTPAddOnRef; 68 BMenuField* fInProtocolsField; 69 BTextControl* fNameView; 70 BTextControl* fAccountNameView; 71 BTextControl* fEmailView; 72 BTextControl* fLoginNameView; 73 BTextControl* fPasswordView; 74 75 // ref to the parent autoconfig so you only ones read the database 76 AutoConfig& fAutoConfig; 77}; 78 79 80class ServerSettingsView : public BGroupView { 81public: 82 ServerSettingsView(const account_info& info); 83 ~ServerSettingsView(); 84 void GetServerInfo(account_info& info); 85 86private: 87 void _DetectMenuChanges(); 88 bool _HasMarkedChanged(BMenuField* field, 89 BMenuItem* originalItem); 90 void _GetAuthEncrMenu(entry_ref protocol, 91 BMenuField*& authField, 92 BMenuField*& sslField); 93 94private: 95 bool fInboundAccount; 96 bool fOutboundAccount; 97 BTextControl* fInboundNameView; 98 BMenuField* fInboundAuthMenu; 99 BMenuField* fInboundEncryptionMenu; 100 BTextControl* fOutboundNameView; 101 BMenuField* fOutboundAuthMenu; 102 BMenuField* fOutboundEncryptionMenu; 103 104 BMenuItem* fInboundAuthItemStart; 105 BMenuItem* fInboundEncrItemStart; 106 BMenuItem* fOutboundAuthItemStart; 107 BMenuItem* fOutboundEncrItemStart; 108 109 image_id fImageID; 110}; 111 112 113#endif // AUTO_CONFIG_VIEW_H 114