Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in tip

fogcreek shellext: simplified CSysInfo class

Changeset 6d4f438cf832

Parent 969f02582917

by David Golub

Changes to 4 files · Browse files at 6d4f438cf832 Showing diff from parent 969f02582917 Diff from another changeset...

 
25
26
27
28
 
29
30
31
 
25
26
27
 
28
29
30
31
@@ -25,7 +25,7 @@
 CIconBitmapUtils::CIconBitmapUtils() :   m_hUxTheme(NULL)  { - if (CSysInfo::Instance().IsVistaOrLater()) + if (CSysInfo::IsVistaOrLater())   {   m_hUxTheme = ::LoadLibrary(_T("UXTHEME.DLL"));  
 
19
20
21
 
 
22
23
24
25
26
 
 
 
 
 
27
28
29
30
31
32
33
34
 
19
20
21
22
23
24
25
 
 
 
26
27
28
29
30
31
 
 
 
 
 
 
 
@@ -19,16 +19,13 @@
   #include "SysInfo.h"   +CSysInfo CSysInfo::m_inst; +  CSysInfo::CSysInfo(void)  { - ::SecureZeroMemory(&inf, sizeof(OSVERSIONINFOEX)); - inf.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); - ::GetVersionEx((OSVERSIONINFO *)&inf); + OSVERSIONINFO osvi; + memset(&osvi, 0, sizeof(OSVERSIONINFO)); + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + ::GetVersionEx(&osvi); + m_dwFullVersion = (DWORD)MAKEWORD(osvi.dwMinorVersion, osvi.dwMajorVersion);  } - -const CSysInfo& CSysInfo::Instance() -{ - static CSysInfo instance; - return instance; -} -
 
17
18
19
20
21
22
23
24
 
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
 
 
 
 
 
39
40
41
 
 
42
 
17
18
19
 
 
 
 
 
20
21
22
23
24
25
26
 
 
 
 
 
 
 
 
27
28
29
30
31
32
33
34
 
35
36
37
@@ -17,26 +17,21 @@
   #pragma once   - -/** - * \ingroup Utils - * This singleton class handles system information - */ +// This class handles system information.  class CSysInfo  {  private:   CSysInfo();    public: - static const CSysInfo& Instance(); - - DWORD GetFullVersion() const { return MAKEWORD(inf.dwMinorVersion, inf.dwMajorVersion); } - bool IsXP() const { return (GetFullVersion() < 0x0600); } // cover Win5.1 and 5.2 alike - bool IsVista() const { return (GetFullVersion() == 0x0600); } - bool IsVistaOrLater() const { return (GetFullVersion() >= 0x0600); } - bool IsWin7() const { return (GetFullVersion() == 0x0601); } - bool IsWin7OrLater() const { return (GetFullVersion() >= 0x0601); } + static DWORD GetFullVersion() { return m_inst.m_dwFullVersion; } + static bool IsXP() { return (GetFullVersion() < 0x0600); } // cover Win5.1 and 5.2 alike + static bool IsVista() { return (GetFullVersion() == 0x0600); } + static bool IsVistaOrLater() { return (GetFullVersion() >= 0x0600); } + static bool IsWin7() { return (GetFullVersion() == 0x0601); } + static bool IsWin7OrLater() { return (GetFullVersion() >= 0x0601); }    private: - OSVERSIONINFOEX inf; + static CSysInfo m_inst; + DWORD m_dwFullVersion;  };
 
215
216
217
218
 
219
220
221
 
264
265
266
267
 
268
269
270
 
383
384
385
386
 
387
388
389
 
215
216
217
 
218
219
220
221
 
264
265
266
 
267
268
269
270
 
383
384
385
 
386
387
388
389
@@ -215,7 +215,7 @@
  mii.cch = strMenuText.GetLength();   mii.wID = idCmd;   - if (CSysInfo::Instance().IsVistaOrLater()) + if (CSysInfo::IsVistaOrLater())   {   HBITMAP hBitmap = GetTortoiseIconBitmap(strIconName);   if (hBitmap) @@ -264,7 +264,7 @@
  mii.wID = idCmd;   mii.hSubMenu = hSubMenu;   - if (CSysInfo::Instance().IsVistaOrLater()) + if (CSysInfo::IsVistaOrLater())   {   HBITMAP hBitmap = GetTortoiseIconBitmap(strIconName);   if (hBitmap) @@ -383,7 +383,7 @@
   void CTortoiseHgCmenuBase::TweakMenuForVista(HMENU hMenu)  { - if (!CSysInfo::Instance().IsVistaOrLater()) + if (!CSysInfo::IsVistaOrLater())   return;     MENUINFO mi;