Improve line margin icon for moved lines
[TortoiseGit.git] / src / TortoiseProc / Settings / SettingSMTP.cpp
blob6e142f9c4630cea5177a758835e9936a9974006e
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2009, 2013-2016 - TortoiseGit
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 // SettingSMTP.cpp : implementation file
22 #include "stdafx.h"
23 #include "TortoiseProc.h"
24 #include "SettingSMTP.h"
25 #include "SendMail.h"
26 #include "MailMsg.h"
27 #include "WindowsCredentialsStore.h"
29 // CSettingSMTP dialog
31 IMPLEMENT_DYNAMIC(CSettingSMTP, ISettingsPropPage)
33 CSettingSMTP::CSettingSMTP()
34 : ISettingsPropPage(CSettingSMTP::IDD)
35 , m_regDeliveryType(L"Software\\TortoiseGit\\TortoiseProc\\SendMail\\DeliveryType", SEND_MAIL_SMTP_DIRECT)
36 , m_regServer(L"Software\\TortoiseGit\\TortoiseProc\\SendMail\\Address", L"")
37 , m_regPort(L"Software\\TortoiseGit\\TortoiseProc\\SendMail\\Port", 25)
38 , m_regEncryption(L"Software\\TortoiseGit\\TortoiseProc\\SendMail\\Encryption", 0)
39 , m_regAuthenticate(L"Software\\TortoiseGit\\TortoiseProc\\SendMail\\AuthenticationRequired", FALSE)
41 m_dwDeliveryType = m_regDeliveryType;
42 m_Server = m_regServer;
43 m_Port = m_regPort;
44 m_dwSMTPEnrcyption = m_regEncryption;
45 m_bAuth = m_regAuthenticate;
47 CWindowsCredentialsStore::GetCredential(L"TortoiseGit:SMTP-Credentials", m_User, m_Password);
50 CSettingSMTP::~CSettingSMTP()
54 void CSettingSMTP::DoDataExchange(CDataExchange* pDX)
56 CPropertyPage::DoDataExchange(pDX);
57 DDX_Control(pDX, IDC_SMTPDELIVERYCOMBO, m_SMTPDeliveryTypeCombo);
58 DDX_Control(pDX, IDC_SMTPENCRYPTIONCOMBO, m_SMTPEncryptionCombo);
59 DDX_Check(pDX, IDC_SMTP_AUTH, m_bAuth);
60 DDX_Text(pDX, IDC_SMTP_SERVER, m_Server);
61 DDX_Text(pDX, IDC_SMTP_PORT, m_Port);
62 DDX_Text(pDX, IDC_SMTP_USER, m_User);
63 DDX_Text(pDX, IDC_SMTP_PASSWORD, m_Password);
66 BEGIN_MESSAGE_MAP(CSettingSMTP, CPropertyPage)
67 ON_CBN_SELCHANGE(IDC_SMTPDELIVERYCOMBO, OnModifiedDeliveryCombo)
68 ON_CBN_SELCHANGE(IDC_SMTPENCRYPTIONCOMBO, OnModifiedEncryptionCombo)
69 ON_BN_CLICKED(IDC_SMTP_AUTH, OnBnClickedSmtpAuth)
70 ON_CBN_SELCHANGE(IDC_SMTPENCRYPTIONCOMBO, OnModified)
71 ON_EN_CHANGE(IDC_SMTP_SERVER, OnModified)
72 ON_EN_CHANGE(IDC_SMTP_PORT, OnModified)
73 ON_EN_CHANGE(IDC_SEND_ADDRESS, OnModified)
74 ON_EN_CHANGE(IDC_SMTP_USER, OnModified)
75 ON_EN_CHANGE(IDC_SMTP_PASSWORD, OnModified)
76 END_MESSAGE_MAP()
78 BOOL CSettingSMTP::OnInitDialog()
80 ISettingsPropPage::OnInitDialog();
82 AdjustControlSize(IDC_SMTP_AUTH);
84 int idx = m_SMTPDeliveryTypeCombo.AddString(CString(MAKEINTRESOURCE(IDS_SMTP_DIRECTLY)));
85 m_SMTPDeliveryTypeCombo.SetItemData(idx, SEND_MAIL_SMTP_DIRECT);
86 CString mailCient;
87 CMailMsg::DetectMailClient(mailCient);
88 if (!mailCient.IsEmpty())
90 idx = m_SMTPDeliveryTypeCombo.AddString(CString(MAKEINTRESOURCE(IDS_SMTP_MAPI)));
91 m_SMTPDeliveryTypeCombo.SetItemData(idx, SEND_MAIL_MAPI);
93 idx = m_SMTPDeliveryTypeCombo.AddString(CString(MAKEINTRESOURCE(IDS_SMTP_CONFIGURED)));
94 m_SMTPDeliveryTypeCombo.SetItemData(idx, SEND_MAIL_SMTP_CONFIGURED);
96 if ((int)m_dwDeliveryType >= m_SMTPDeliveryTypeCombo.GetCount())
97 m_dwDeliveryType = 0;
99 m_SMTPDeliveryTypeCombo.SetCurSel(m_dwDeliveryType);
101 m_SMTPEncryptionCombo.AddString(CString(MAKEINTRESOURCE(IDS_ENCRYPT_NONE)));
102 m_SMTPEncryptionCombo.AddString(CString(MAKEINTRESOURCE(IDS_ENCRYPT_STARTTLS)));
103 m_SMTPEncryptionCombo.AddString(CString(MAKEINTRESOURCE(IDS_ENCRYPT_SSL)));
105 if ((int)m_dwSMTPEnrcyption >= m_SMTPEncryptionCombo.GetCount())
106 m_dwSMTPEnrcyption = 0;
108 m_SMTPEncryptionCombo.SetCurSel(m_dwSMTPEnrcyption);
110 this->UpdateData(FALSE);
112 OnModifiedDeliveryCombo();
113 OnBnClickedSmtpAuth();
115 return TRUE;
118 void CSettingSMTP::OnModified()
120 SetModified();
123 void CSettingSMTP::OnModifiedEncryptionCombo()
125 m_dwSMTPEnrcyption = m_SMTPEncryptionCombo.GetCurSel();
126 SetModified();
129 void CSettingSMTP::OnModifiedDeliveryCombo()
131 m_dwDeliveryType = (DWORD)m_SMTPDeliveryTypeCombo.GetItemData(m_SMTPDeliveryTypeCombo.GetCurSel());
133 GetDlgItem(IDC_SMTP_PASSWORD)->EnableWindow(m_dwDeliveryType >= 2 && m_bAuth);
134 GetDlgItem(IDC_SMTP_USER)->EnableWindow(m_dwDeliveryType >= 2 && m_bAuth);
135 GetDlgItem(IDC_SMTP_AUTH)->EnableWindow(m_dwDeliveryType >= 2);
136 GetDlgItem(IDC_SMTPENCRYPTIONCOMBO)->EnableWindow(m_dwDeliveryType >= 2);
137 GetDlgItem(IDC_SMTP_PORT)->EnableWindow(m_dwDeliveryType >= 2);
138 GetDlgItem(IDC_SMTP_SERVER)->EnableWindow(m_dwDeliveryType >= 2);
139 GetDlgItem(IDC_STATIC_SMTPENCRYPTION)->EnableWindow(m_dwDeliveryType >= 2);
140 GetDlgItem(IDC_STATIC_SMTPLOGIN)->EnableWindow(m_dwDeliveryType >= 2 && m_bAuth);
141 GetDlgItem(IDC_STATIC_SMTPPASSWORD)->EnableWindow(m_dwDeliveryType >= 2 && m_bAuth);
142 GetDlgItem(IDC_STATIC_SMTPPORT)->EnableWindow(m_dwDeliveryType >= 2);
143 GetDlgItem(IDC_STATIC_SMTPSERVER)->EnableWindow(m_dwDeliveryType >= 2);
145 SetModified();
148 BOOL CSettingSMTP::OnApply()
150 CWaitCursor wait;
151 this->UpdateData();
153 m_regDeliveryType = m_dwDeliveryType;
154 m_regServer = m_Server;
155 m_regPort = m_Port;
156 m_regAuthenticate = m_bAuth;
157 m_regEncryption = m_dwSMTPEnrcyption;
158 if (m_User.IsEmpty() && m_Password.IsEmpty())
159 CWindowsCredentialsStore::DeleteCredential(L"TortoiseGit:SMTP-Credentials");
160 else
161 CWindowsCredentialsStore::SaveCredential(L"TortoiseGit:SMTP-Credentials", m_User, m_Password);
163 SetModified(FALSE);
165 return ISettingsPropPage::OnApply();
168 // CSettingSMTP message handlers
169 void CSettingSMTP::OnBnClickedSmtpAuth()
171 UpdateData();
172 GetDlgItem(IDC_SMTP_USER)->EnableWindow(m_bAuth);
173 GetDlgItem(IDC_SMTP_PASSWORD)->EnableWindow(m_bAuth);
174 GetDlgItem(IDC_STATIC_SMTPLOGIN)->EnableWindow(m_bAuth);
175 GetDlgItem(IDC_STATIC_SMTPPASSWORD)->EnableWindow(m_bAuth);
176 SetModified();