OSDN Git Service

fe218303b70a36802d718fbe10a6af4f7ee30b7e
[tortoisegit/TortoiseGitJp.git] / Utils / ShellUpdater.h
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2006 - Stefan Kueng\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 #pragma once\r
20 \r
21 #include "TSVNPath.h"\r
22 \r
23 /**\r
24 * \ingroup Utils\r
25 * This singleton class contains a list of items which require a shell-update notification\r
26 * This update is done lazily at the end of a run of SVN operations\r
27 */\r
28 class CShellUpdater\r
29 {\r
30 private:\r
31         CShellUpdater(void);\r
32         ~CShellUpdater(void);\r
33 public:\r
34         static CShellUpdater& Instance();\r
35 \r
36 public:\r
37         /** \r
38          * Add a single path for updating.\r
39          * The update will happen at some suitable time in the future\r
40          */\r
41         void AddPathForUpdate(const CTSVNPath& path);\r
42         /** \r
43          * Add a list of paths for updating.\r
44          * The update will happen at some suitable time in the future\r
45          */\r
46         void AddPathsForUpdate(const CTSVNPathList& pathList);\r
47         /**\r
48          * Do the update, and clear the list of items waiting\r
49          */\r
50         void Flush();\r
51         \r
52         static bool RebuildIcons();\r
53 \r
54 private:\r
55         void UpdateShell();\r
56 \r
57 private:\r
58         // The list of paths which will need updating\r
59         CTSVNPathList m_pathsForUpdating;\r
60         // A handle to an event which, when set, tells the ShellExtension to purge its status cache\r
61         HANDLE                  m_hInvalidationEvent;\r
62 };\r