1 // TortoiseSVN - a Windows shell extension for easy version control
\r
3 // Copyright (C) 2007-2008 - TortoiseSVN
\r
5 // This program is free software; you can redistribute it and/or
\r
6 // modify it under the terms of the GNU General Public License
\r
7 // as published by the Free Software Foundation; either version 2
\r
8 // of the License, or (at your option) any later version.
\r
10 // This program is distributed in the hope that it will be useful,
\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
13 // GNU General Public License for more details.
\r
15 // You should have received a copy of the GNU General Public License
\r
16 // along with this program; if not, write to the Free Software Foundation,
\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\r
20 #include "TortoiseProc.h"
\r
21 #include "SetLogCache.h"
\r
22 #include "MessageBox.h"
\r
24 #include "SVNError.h"
\r
25 #include "LogCacheSettings.h"
\r
26 #include "LogCachePool.h"
\r
27 #include "LogCacheStatistics.h"
\r
28 #include "LogCacheStatisticsDlg.h"
\r
29 #include "ProgressDlg.h"
\r
30 #include "SVNLogQuery.h"
\r
31 #include "CacheLogQuery.h"
\r
32 #include "CSVWriter.h"
\r
33 #include "XPTheme.h"
\r
35 using namespace LogCache;
\r
37 IMPLEMENT_DYNAMIC(CSetLogCache, ISettingsPropPage)
\r
39 CSetLogCache::CSetLogCache()
\r
40 : ISettingsPropPage (CSetLogCache::IDD)
\r
41 , m_bEnableLogCaching (CSettings::GetEnabled())
\r
42 , m_bSupportAmbiguousURL (CSettings::GetAllowAmbiguousURL())
\r
43 , m_bSupportAmbiguousUUID (CSettings::GetAllowAmbiguousUUID())
\r
44 , m_dwMaxHeadAge (CSettings::GetMaxHeadAge())
\r
45 , m_dwCacheDropAge (CSettings::GetCacheDropAge())
\r
46 , m_dwCacheDropMaxSize (CSettings::GetCacheDropMaxSize())
\r
47 , m_dwMaxFailuresUntilDrop (CSettings::GetMaxFailuresUntilDrop())
\r
51 CSetLogCache::~CSetLogCache()
\r
55 void CSetLogCache::DoDataExchange(CDataExchange* pDX)
\r
57 ISettingsPropPage::DoDataExchange(pDX);
\r
58 DDX_Check(pDX, IDC_ENABLELOGCACHING, m_bEnableLogCaching);
\r
59 DDX_Check(pDX, IDC_SUPPORTAMBIGUOUSURL, m_bSupportAmbiguousURL);
\r
60 DDX_Check(pDX, IDC_SUPPORTAMBIGUOUSUUID, m_bSupportAmbiguousUUID);
\r
62 DDX_Control(pDX, IDC_GOOFFLINESETTING, m_cDefaultConnectionState);
\r
64 DDX_Text(pDX, IDC_MAXIMINHEADAGE, m_dwMaxHeadAge);
\r
65 DDX_Text(pDX, IDC_CACHEDROPAGE, m_dwCacheDropAge);
\r
66 DDX_Text(pDX, IDC_CACHEDROPMAXSIZE, m_dwCacheDropMaxSize);
\r
68 DDX_Text(pDX, IDC_MAXFAILUESUNTILDROP, m_dwMaxFailuresUntilDrop);
\r
72 BEGIN_MESSAGE_MAP(CSetLogCache, ISettingsPropPage)
\r
73 ON_BN_CLICKED(IDC_ENABLELOGCACHING, OnChanged)
\r
74 ON_BN_CLICKED(IDC_SUPPORTAMBIGUOUSURL, OnChanged)
\r
75 ON_BN_CLICKED(IDC_SUPPORTAMBIGUOUSUUID, OnChanged)
\r
76 ON_CBN_SELCHANGE(IDC_GOOFFLINESETTING, OnChanged)
\r
77 ON_EN_CHANGE(IDC_MAXIMINHEADAGE, OnChanged)
\r
78 ON_EN_CHANGE(IDC_CACHEDROPAGE, OnChanged)
\r
79 ON_EN_CHANGE(IDC_CACHEDROPMAXSIZE, OnChanged)
\r
80 ON_EN_CHANGE(IDC_MAXFAILUESUNTILDROP, OnChanged)
\r
81 ON_BN_CLICKED(IDC_CACHESTDDEFAULTS, OnStandardDefaults)
\r
82 ON_BN_CLICKED(IDC_CACHEPOWERDEFAULTS, OnPowerDefaults)
\r
85 void CSetLogCache::OnChanged()
\r
90 void CSetLogCache::OnStandardDefaults()
\r
92 m_bEnableLogCaching = TRUE;
\r
93 m_bSupportAmbiguousURL = TRUE;
\r
94 m_bSupportAmbiguousUUID = TRUE;
\r
96 m_cDefaultConnectionState.SetCurSel(0);
\r
99 m_dwCacheDropAge = 10;
\r
100 m_dwCacheDropMaxSize = 200;
\r
102 m_dwMaxFailuresUntilDrop = 0;
\r
105 UpdateData (FALSE);
\r
108 void CSetLogCache::OnPowerDefaults()
\r
110 m_bEnableLogCaching = TRUE;
\r
111 m_bSupportAmbiguousURL = FALSE;
\r
112 m_bSupportAmbiguousUUID = FALSE;
\r
114 m_cDefaultConnectionState.SetCurSel(1);
\r
116 m_dwMaxHeadAge = 300;
\r
117 m_dwCacheDropAge = 10;
\r
118 m_dwCacheDropMaxSize = 0;
\r
120 m_dwMaxFailuresUntilDrop = 20;
\r
123 UpdateData (FALSE);
\r
126 BOOL CSetLogCache::OnApply()
\r
130 CSettings::SetEnabled (m_bEnableLogCaching != FALSE);
\r
131 CSettings::SetAllowAmbiguousURL (m_bSupportAmbiguousURL != FALSE);
\r
132 CSettings::SetAllowAmbiguousUUID (m_bSupportAmbiguousUUID != FALSE);
\r
134 CRepositoryInfo::ConnectionState state
\r
135 = static_cast<CRepositoryInfo::ConnectionState>
\r
136 (m_cDefaultConnectionState.GetCurSel());
\r
137 CSettings::SetDefaultConnectionState (state);
\r
139 CSettings::SetMaxHeadAge (m_dwMaxHeadAge);
\r
140 CSettings::SetCacheDropAge (m_dwCacheDropAge);
\r
141 CSettings::SetCacheDropMaxSize (m_dwCacheDropMaxSize);
\r
143 CSettings::SetMaxFailuresUntilDrop (m_dwMaxFailuresUntilDrop);
\r
145 SetModified(FALSE);
\r
146 return ISettingsPropPage::OnApply();
\r
149 BOOL CSetLogCache::OnInitDialog()
\r
151 ISettingsPropPage::OnInitDialog();
\r
153 // connectivity combobox
\r
155 while (m_cDefaultConnectionState.GetCount() > 0)
\r
156 m_cDefaultConnectionState.DeleteItem(0);
\r
159 temp.LoadString(IDS_SETTINGS_CONNECTIVITY_ASKUSER);
\r
160 m_cDefaultConnectionState.AddString (temp);
\r
161 temp.LoadString(IDS_SETTINGS_CONNECTIVITY_OFFLINENOW);
\r
162 m_cDefaultConnectionState.AddString (temp);
\r
163 temp.LoadString(IDS_SETTINGS_CONNECTIVITY_OFFLINEFOREVER);
\r
164 m_cDefaultConnectionState.AddString (temp);
\r
166 m_cDefaultConnectionState.SetCurSel (CSettings::GetDefaultConnectionState());
\r
170 m_tooltips.Create(this);
\r
172 m_tooltips.AddTool(IDC_ENABLELOGCACHING, IDS_SETTINGS_LOGCACHE_ENABLE);
\r
173 m_tooltips.AddTool(IDC_SUPPORTAMBIGUOUSURL, IDS_SETTINGS_LOGCACHE_AMBIGUOUSURL);
\r
174 m_tooltips.AddTool(IDC_SUPPORTAMBIGUOUSUUID, IDS_SETTINGS_LOGCACHE_AMBIGUOUSUUID);
\r
176 m_tooltips.AddTool(IDC_GOOFFLINESETTING, IDS_SETTINGS_LOGCACHE_GOOFFLINE);
\r
178 m_tooltips.AddTool(IDC_MAXIMINHEADAGE, IDS_SETTINGS_LOGCACHE_HEADAGE);
\r
179 m_tooltips.AddTool(IDC_CACHEDROPAGE, IDS_SETTINGS_LOGCACHE_DROPAGE);
\r
180 m_tooltips.AddTool(IDC_CACHEDROPMAXSIZE, IDS_SETTINGS_LOGCACHE_DROPMAXSIZE);
\r
182 m_tooltips.AddTool(IDC_MAXFAILUESUNTILDROP, IDS_SETTINGS_LOGCACHE_FAILURELIMIT);
\r
184 m_tooltips.AddTool(IDC_CACHESTDDEFAULTS, IDS_SETTINGS_LOGCACHE_STDDEFAULT);
\r
185 m_tooltips.AddTool(IDC_CACHEPOWERDEFAULTS, IDS_SETTINGS_LOGCACHE_POWERDEFAULT);
\r
190 BOOL CSetLogCache::PreTranslateMessage(MSG* pMsg)
\r
192 m_tooltips.RelayEvent(pMsg);
\r
193 return ISettingsPropPage::PreTranslateMessage(pMsg);
\r