OSDN Git Service

Show Ignore Sub Menu
[tortoisegit/TortoiseGitJp.git] / TortoiseProc / Settings / SetLogCache.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2007-2008 - TortoiseSVN\r
4 \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
9 \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
14 \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
18 //\r
19 #include "stdafx.h"\r
20 #include "TortoiseProc.h"\r
21 #include "SetLogCache.h"\r
22 #include "MessageBox.h"\r
23 #include "SVN.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
34 \r
35 using namespace LogCache;\r
36 \r
37 IMPLEMENT_DYNAMIC(CSetLogCache, ISettingsPropPage)\r
38 \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
48 {\r
49 }\r
50 \r
51 CSetLogCache::~CSetLogCache()\r
52 {\r
53 }\r
54 \r
55 void CSetLogCache::DoDataExchange(CDataExchange* pDX)\r
56 {\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
61 \r
62     DDX_Control(pDX, IDC_GOOFFLINESETTING, m_cDefaultConnectionState);\r
63 \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
67 \r
68     DDX_Text(pDX, IDC_MAXFAILUESUNTILDROP, m_dwMaxFailuresUntilDrop);\r
69 }\r
70 \r
71 \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
83 END_MESSAGE_MAP()\r
84 \r
85 void CSetLogCache::OnChanged()\r
86 {\r
87         SetModified();\r
88 }\r
89 \r
90 void CSetLogCache::OnStandardDefaults()\r
91 {\r
92         m_bEnableLogCaching = TRUE;\r
93     m_bSupportAmbiguousURL = TRUE;\r
94     m_bSupportAmbiguousUUID = TRUE;\r
95 \r
96     m_cDefaultConnectionState.SetCurSel(0);\r
97 \r
98     m_dwMaxHeadAge = 0;\r
99     m_dwCacheDropAge = 10;\r
100     m_dwCacheDropMaxSize = 200;\r
101 \r
102     m_dwMaxFailuresUntilDrop = 0;\r
103 \r
104     SetModified();\r
105     UpdateData (FALSE);\r
106 }\r
107 \r
108 void CSetLogCache::OnPowerDefaults()\r
109 {\r
110         m_bEnableLogCaching = TRUE;\r
111     m_bSupportAmbiguousURL = FALSE;\r
112     m_bSupportAmbiguousUUID = FALSE;\r
113 \r
114     m_cDefaultConnectionState.SetCurSel(1);\r
115 \r
116     m_dwMaxHeadAge = 300;\r
117     m_dwCacheDropAge = 10;\r
118     m_dwCacheDropMaxSize = 0;\r
119 \r
120     m_dwMaxFailuresUntilDrop = 20;\r
121 \r
122     SetModified();\r
123     UpdateData (FALSE);\r
124 }\r
125 \r
126 BOOL CSetLogCache::OnApply()\r
127 {\r
128         UpdateData();\r
129 \r
130         CSettings::SetEnabled (m_bEnableLogCaching != FALSE);\r
131     CSettings::SetAllowAmbiguousURL (m_bSupportAmbiguousURL != FALSE);\r
132     CSettings::SetAllowAmbiguousUUID (m_bSupportAmbiguousUUID != FALSE);\r
133 \r
134     CRepositoryInfo::ConnectionState state \r
135         = static_cast<CRepositoryInfo::ConnectionState>\r
136             (m_cDefaultConnectionState.GetCurSel());\r
137         CSettings::SetDefaultConnectionState (state);\r
138 \r
139     CSettings::SetMaxHeadAge (m_dwMaxHeadAge);\r
140     CSettings::SetCacheDropAge (m_dwCacheDropAge);\r
141     CSettings::SetCacheDropMaxSize (m_dwCacheDropMaxSize);\r
142 \r
143     CSettings::SetMaxFailuresUntilDrop (m_dwMaxFailuresUntilDrop);\r
144 \r
145     SetModified(FALSE);\r
146         return ISettingsPropPage::OnApply();\r
147 }\r
148 \r
149 BOOL CSetLogCache::OnInitDialog()\r
150 {\r
151         ISettingsPropPage::OnInitDialog();\r
152 \r
153     // connectivity combobox\r
154 \r
155     while (m_cDefaultConnectionState.GetCount() > 0)\r
156         m_cDefaultConnectionState.DeleteItem(0);\r
157 \r
158         CString temp;\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
165 \r
166     m_cDefaultConnectionState.SetCurSel (CSettings::GetDefaultConnectionState());\r
167 \r
168     // tooltips\r
169 \r
170         m_tooltips.Create(this);\r
171 \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
175 \r
176     m_tooltips.AddTool(IDC_GOOFFLINESETTING, IDS_SETTINGS_LOGCACHE_GOOFFLINE);\r
177 \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
181 \r
182     m_tooltips.AddTool(IDC_MAXFAILUESUNTILDROP, IDS_SETTINGS_LOGCACHE_FAILURELIMIT);\r
183 \r
184     m_tooltips.AddTool(IDC_CACHESTDDEFAULTS, IDS_SETTINGS_LOGCACHE_STDDEFAULT);\r
185     m_tooltips.AddTool(IDC_CACHEPOWERDEFAULTS, IDS_SETTINGS_LOGCACHE_POWERDEFAULT);\r
186 \r
187     return TRUE;\r
188 }\r
189 \r
190 BOOL CSetLogCache::PreTranslateMessage(MSG* pMsg)\r
191 {\r
192         m_tooltips.RelayEvent(pMsg);\r
193         return ISettingsPropPage::PreTranslateMessage(pMsg);\r
194 }\r