xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/FileManager/RegistryUtils.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // RegistryUtils.cpp
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #include "StdAfx.h"
4*f6dc9357SAndroid Build Coastguard Worker 
5*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/IntToString.h"
6*f6dc9357SAndroid Build Coastguard Worker 
7*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/Registry.h"
8*f6dc9357SAndroid Build Coastguard Worker 
9*f6dc9357SAndroid Build Coastguard Worker #include "RegistryUtils.h"
10*f6dc9357SAndroid Build Coastguard Worker 
11*f6dc9357SAndroid Build Coastguard Worker using namespace NWindows;
12*f6dc9357SAndroid Build Coastguard Worker using namespace NRegistry;
13*f6dc9357SAndroid Build Coastguard Worker 
14*f6dc9357SAndroid Build Coastguard Worker #define REG_PATH_7Z TEXT("Software") TEXT(STRING_PATH_SEPARATOR) TEXT("7-Zip")
15*f6dc9357SAndroid Build Coastguard Worker 
16*f6dc9357SAndroid Build Coastguard Worker static LPCTSTR const kCUBasePath = REG_PATH_7Z;
17*f6dc9357SAndroid Build Coastguard Worker static LPCTSTR const kCU_FMPath = REG_PATH_7Z TEXT(STRING_PATH_SEPARATOR) TEXT("FM");
18*f6dc9357SAndroid Build Coastguard Worker // static LPCTSTR const kLM_Path = REG_PATH_7Z TEXT(STRING_PATH_SEPARATOR) TEXT("FM");
19*f6dc9357SAndroid Build Coastguard Worker 
20*f6dc9357SAndroid Build Coastguard Worker static LPCWSTR const kLangValueName = L"Lang";
21*f6dc9357SAndroid Build Coastguard Worker 
22*f6dc9357SAndroid Build Coastguard Worker static LPCWSTR const kViewer = L"Viewer";
23*f6dc9357SAndroid Build Coastguard Worker static LPCWSTR const kEditor = L"Editor";
24*f6dc9357SAndroid Build Coastguard Worker static LPCWSTR const kDiff = L"Diff";
25*f6dc9357SAndroid Build Coastguard Worker static LPCWSTR const kVerCtrlPath = L"7vc";
26*f6dc9357SAndroid Build Coastguard Worker 
27*f6dc9357SAndroid Build Coastguard Worker static LPCTSTR const kShowDots = TEXT("ShowDots");
28*f6dc9357SAndroid Build Coastguard Worker static LPCTSTR const kShowRealFileIcons = TEXT("ShowRealFileIcons");
29*f6dc9357SAndroid Build Coastguard Worker static LPCTSTR const kFullRow = TEXT("FullRow");
30*f6dc9357SAndroid Build Coastguard Worker static LPCTSTR const kShowGrid = TEXT("ShowGrid");
31*f6dc9357SAndroid Build Coastguard Worker static LPCTSTR const kSingleClick = TEXT("SingleClick");
32*f6dc9357SAndroid Build Coastguard Worker static LPCTSTR const kAlternativeSelection = TEXT("AlternativeSelection");
33*f6dc9357SAndroid Build Coastguard Worker // static LPCTSTR const kUnderline = TEXT("Underline");
34*f6dc9357SAndroid Build Coastguard Worker 
35*f6dc9357SAndroid Build Coastguard Worker static LPCTSTR const kShowSystemMenu = TEXT("ShowSystemMenu");
36*f6dc9357SAndroid Build Coastguard Worker 
37*f6dc9357SAndroid Build Coastguard Worker // static LPCTSTR const kLockMemoryAdd = TEXT("LockMemoryAdd");
38*f6dc9357SAndroid Build Coastguard Worker static LPCTSTR const kLargePages = TEXT("LargePages");
39*f6dc9357SAndroid Build Coastguard Worker 
40*f6dc9357SAndroid Build Coastguard Worker static LPCTSTR const kFlatViewName = TEXT("FlatViewArc");
41*f6dc9357SAndroid Build Coastguard Worker // static LPCTSTR const kShowDeletedFiles = TEXT("ShowDeleted");
42*f6dc9357SAndroid Build Coastguard Worker 
SaveCuString(LPCTSTR keyPath,LPCWSTR valuePath,LPCWSTR value)43*f6dc9357SAndroid Build Coastguard Worker static void SaveCuString(LPCTSTR keyPath, LPCWSTR valuePath, LPCWSTR value)
44*f6dc9357SAndroid Build Coastguard Worker {
45*f6dc9357SAndroid Build Coastguard Worker   CKey key;
46*f6dc9357SAndroid Build Coastguard Worker   key.Create(HKEY_CURRENT_USER, keyPath);
47*f6dc9357SAndroid Build Coastguard Worker   key.SetValue(valuePath, value);
48*f6dc9357SAndroid Build Coastguard Worker }
49*f6dc9357SAndroid Build Coastguard Worker 
ReadCuString(LPCTSTR keyPath,LPCWSTR valuePath,UString & res)50*f6dc9357SAndroid Build Coastguard Worker static void ReadCuString(LPCTSTR keyPath, LPCWSTR valuePath, UString &res)
51*f6dc9357SAndroid Build Coastguard Worker {
52*f6dc9357SAndroid Build Coastguard Worker   res.Empty();
53*f6dc9357SAndroid Build Coastguard Worker   CKey key;
54*f6dc9357SAndroid Build Coastguard Worker   if (key.Open(HKEY_CURRENT_USER, keyPath, KEY_READ) == ERROR_SUCCESS)
55*f6dc9357SAndroid Build Coastguard Worker     key.QueryValue(valuePath, res);
56*f6dc9357SAndroid Build Coastguard Worker }
57*f6dc9357SAndroid Build Coastguard Worker 
SaveRegLang(const UString & path)58*f6dc9357SAndroid Build Coastguard Worker void SaveRegLang(const UString &path) { SaveCuString(kCUBasePath, kLangValueName, path); }
ReadRegLang(UString & path)59*f6dc9357SAndroid Build Coastguard Worker void ReadRegLang(UString &path) { ReadCuString(kCUBasePath, kLangValueName, path); }
60*f6dc9357SAndroid Build Coastguard Worker 
SaveRegEditor(bool useEditor,const UString & path)61*f6dc9357SAndroid Build Coastguard Worker void SaveRegEditor(bool useEditor, const UString &path) { SaveCuString(kCU_FMPath, useEditor ? kEditor : kViewer, path); }
ReadRegEditor(bool useEditor,UString & path)62*f6dc9357SAndroid Build Coastguard Worker void ReadRegEditor(bool useEditor, UString &path) { ReadCuString(kCU_FMPath, useEditor ? kEditor : kViewer, path); }
63*f6dc9357SAndroid Build Coastguard Worker 
SaveRegDiff(const UString & path)64*f6dc9357SAndroid Build Coastguard Worker void SaveRegDiff(const UString &path) { SaveCuString(kCU_FMPath, kDiff, path); }
ReadRegDiff(UString & path)65*f6dc9357SAndroid Build Coastguard Worker void ReadRegDiff(UString &path) { ReadCuString(kCU_FMPath, kDiff, path); }
66*f6dc9357SAndroid Build Coastguard Worker 
ReadReg_VerCtrlPath(UString & path)67*f6dc9357SAndroid Build Coastguard Worker void ReadReg_VerCtrlPath(UString &path) { ReadCuString(kCU_FMPath, kVerCtrlPath, path); }
68*f6dc9357SAndroid Build Coastguard Worker 
Save7ZipOption(LPCTSTR value,bool enabled)69*f6dc9357SAndroid Build Coastguard Worker static void Save7ZipOption(LPCTSTR value, bool enabled)
70*f6dc9357SAndroid Build Coastguard Worker {
71*f6dc9357SAndroid Build Coastguard Worker   CKey key;
72*f6dc9357SAndroid Build Coastguard Worker   key.Create(HKEY_CURRENT_USER, kCUBasePath);
73*f6dc9357SAndroid Build Coastguard Worker   key.SetValue(value, enabled);
74*f6dc9357SAndroid Build Coastguard Worker }
75*f6dc9357SAndroid Build Coastguard Worker 
SaveOption(LPCTSTR value,bool enabled)76*f6dc9357SAndroid Build Coastguard Worker static void SaveOption(LPCTSTR value, bool enabled)
77*f6dc9357SAndroid Build Coastguard Worker {
78*f6dc9357SAndroid Build Coastguard Worker   CKey key;
79*f6dc9357SAndroid Build Coastguard Worker   key.Create(HKEY_CURRENT_USER, kCU_FMPath);
80*f6dc9357SAndroid Build Coastguard Worker   key.SetValue(value, enabled);
81*f6dc9357SAndroid Build Coastguard Worker }
82*f6dc9357SAndroid Build Coastguard Worker 
Read7ZipOption(LPCTSTR value,bool defaultValue)83*f6dc9357SAndroid Build Coastguard Worker static bool Read7ZipOption(LPCTSTR value, bool defaultValue)
84*f6dc9357SAndroid Build Coastguard Worker {
85*f6dc9357SAndroid Build Coastguard Worker   CKey key;
86*f6dc9357SAndroid Build Coastguard Worker   if (key.Open(HKEY_CURRENT_USER, kCUBasePath, KEY_READ) == ERROR_SUCCESS)
87*f6dc9357SAndroid Build Coastguard Worker   {
88*f6dc9357SAndroid Build Coastguard Worker     bool enabled;
89*f6dc9357SAndroid Build Coastguard Worker     if (key.GetValue_bool_IfOk(value, enabled) == ERROR_SUCCESS)
90*f6dc9357SAndroid Build Coastguard Worker       return enabled;
91*f6dc9357SAndroid Build Coastguard Worker   }
92*f6dc9357SAndroid Build Coastguard Worker   return defaultValue;
93*f6dc9357SAndroid Build Coastguard Worker }
94*f6dc9357SAndroid Build Coastguard Worker 
ReadOption(CKey & key,LPCTSTR name,bool & dest)95*f6dc9357SAndroid Build Coastguard Worker static void ReadOption(CKey &key, LPCTSTR name, bool &dest)
96*f6dc9357SAndroid Build Coastguard Worker {
97*f6dc9357SAndroid Build Coastguard Worker   key.GetValue_bool_IfOk(name, dest);
98*f6dc9357SAndroid Build Coastguard Worker }
99*f6dc9357SAndroid Build Coastguard Worker 
100*f6dc9357SAndroid Build Coastguard Worker /*
101*f6dc9357SAndroid Build Coastguard Worker static void SaveLmOption(LPCTSTR value, bool enabled)
102*f6dc9357SAndroid Build Coastguard Worker {
103*f6dc9357SAndroid Build Coastguard Worker   CKey key;
104*f6dc9357SAndroid Build Coastguard Worker   key.Create(HKEY_LOCAL_MACHINE, kLM_Path);
105*f6dc9357SAndroid Build Coastguard Worker   key.SetValue(value, enabled);
106*f6dc9357SAndroid Build Coastguard Worker }
107*f6dc9357SAndroid Build Coastguard Worker 
108*f6dc9357SAndroid Build Coastguard Worker static bool ReadLmOption(LPCTSTR value, bool defaultValue)
109*f6dc9357SAndroid Build Coastguard Worker {
110*f6dc9357SAndroid Build Coastguard Worker   CKey key;
111*f6dc9357SAndroid Build Coastguard Worker   if (key.Open(HKEY_LOCAL_MACHINE, kLM_Path, KEY_READ) == ERROR_SUCCESS)
112*f6dc9357SAndroid Build Coastguard Worker   {
113*f6dc9357SAndroid Build Coastguard Worker     bool enabled;
114*f6dc9357SAndroid Build Coastguard Worker     if (key.QueryValue(value, enabled) == ERROR_SUCCESS)
115*f6dc9357SAndroid Build Coastguard Worker       return enabled;
116*f6dc9357SAndroid Build Coastguard Worker   }
117*f6dc9357SAndroid Build Coastguard Worker   return defaultValue;
118*f6dc9357SAndroid Build Coastguard Worker }
119*f6dc9357SAndroid Build Coastguard Worker */
120*f6dc9357SAndroid Build Coastguard Worker 
Save() const121*f6dc9357SAndroid Build Coastguard Worker void CFmSettings::Save() const
122*f6dc9357SAndroid Build Coastguard Worker {
123*f6dc9357SAndroid Build Coastguard Worker   SaveOption(kShowDots, ShowDots);
124*f6dc9357SAndroid Build Coastguard Worker   SaveOption(kShowRealFileIcons, ShowRealFileIcons);
125*f6dc9357SAndroid Build Coastguard Worker   SaveOption(kFullRow, FullRow);
126*f6dc9357SAndroid Build Coastguard Worker   SaveOption(kShowGrid, ShowGrid);
127*f6dc9357SAndroid Build Coastguard Worker   SaveOption(kSingleClick, SingleClick);
128*f6dc9357SAndroid Build Coastguard Worker   SaveOption(kAlternativeSelection, AlternativeSelection);
129*f6dc9357SAndroid Build Coastguard Worker   // SaveOption(kUnderline, Underline);
130*f6dc9357SAndroid Build Coastguard Worker 
131*f6dc9357SAndroid Build Coastguard Worker   SaveOption(kShowSystemMenu, ShowSystemMenu);
132*f6dc9357SAndroid Build Coastguard Worker }
133*f6dc9357SAndroid Build Coastguard Worker 
Load()134*f6dc9357SAndroid Build Coastguard Worker void CFmSettings::Load()
135*f6dc9357SAndroid Build Coastguard Worker {
136*f6dc9357SAndroid Build Coastguard Worker   ShowDots = false;
137*f6dc9357SAndroid Build Coastguard Worker   ShowRealFileIcons = false;
138*f6dc9357SAndroid Build Coastguard Worker   /* if (FullRow == false), we can use mouse click on another columns
139*f6dc9357SAndroid Build Coastguard Worker      to select group of files. We need to implement additional
140*f6dc9357SAndroid Build Coastguard Worker      way to select files in any column as in Explorer.
141*f6dc9357SAndroid Build Coastguard Worker      Then we can enable (FullRow == true) default mode. */
142*f6dc9357SAndroid Build Coastguard Worker   // FullRow = true;
143*f6dc9357SAndroid Build Coastguard Worker   FullRow = false;
144*f6dc9357SAndroid Build Coastguard Worker   ShowGrid = false;
145*f6dc9357SAndroid Build Coastguard Worker   SingleClick = false;
146*f6dc9357SAndroid Build Coastguard Worker   AlternativeSelection = false;
147*f6dc9357SAndroid Build Coastguard Worker   // Underline = false;
148*f6dc9357SAndroid Build Coastguard Worker 
149*f6dc9357SAndroid Build Coastguard Worker   ShowSystemMenu = false;
150*f6dc9357SAndroid Build Coastguard Worker 
151*f6dc9357SAndroid Build Coastguard Worker   CKey key;
152*f6dc9357SAndroid Build Coastguard Worker   if (key.Open(HKEY_CURRENT_USER, kCU_FMPath, KEY_READ) == ERROR_SUCCESS)
153*f6dc9357SAndroid Build Coastguard Worker   {
154*f6dc9357SAndroid Build Coastguard Worker     ReadOption(key, kShowDots, ShowDots);
155*f6dc9357SAndroid Build Coastguard Worker     ReadOption(key, kShowRealFileIcons, ShowRealFileIcons);
156*f6dc9357SAndroid Build Coastguard Worker     ReadOption(key, kFullRow, FullRow);
157*f6dc9357SAndroid Build Coastguard Worker     ReadOption(key, kShowGrid, ShowGrid);
158*f6dc9357SAndroid Build Coastguard Worker     ReadOption(key, kSingleClick, SingleClick);
159*f6dc9357SAndroid Build Coastguard Worker     ReadOption(key, kAlternativeSelection, AlternativeSelection);
160*f6dc9357SAndroid Build Coastguard Worker     // ReadOption(key, kUnderline, Underline);
161*f6dc9357SAndroid Build Coastguard Worker 
162*f6dc9357SAndroid Build Coastguard Worker     ReadOption(key, kShowSystemMenu, ShowSystemMenu );
163*f6dc9357SAndroid Build Coastguard Worker   }
164*f6dc9357SAndroid Build Coastguard Worker }
165*f6dc9357SAndroid Build Coastguard Worker 
166*f6dc9357SAndroid Build Coastguard Worker 
167*f6dc9357SAndroid Build Coastguard Worker // void SaveLockMemoryAdd(bool enable) { SaveLmOption(kLockMemoryAdd, enable); }
168*f6dc9357SAndroid Build Coastguard Worker // bool ReadLockMemoryAdd() { return ReadLmOption(kLockMemoryAdd, true); }
169*f6dc9357SAndroid Build Coastguard Worker 
SaveLockMemoryEnable(bool enable)170*f6dc9357SAndroid Build Coastguard Worker void SaveLockMemoryEnable(bool enable) { Save7ZipOption(kLargePages, enable); }
ReadLockMemoryEnable()171*f6dc9357SAndroid Build Coastguard Worker bool ReadLockMemoryEnable() { return Read7ZipOption(kLargePages, false); }
172*f6dc9357SAndroid Build Coastguard Worker 
GetFlatViewName(UInt32 panelIndex)173*f6dc9357SAndroid Build Coastguard Worker static CSysString GetFlatViewName(UInt32 panelIndex)
174*f6dc9357SAndroid Build Coastguard Worker {
175*f6dc9357SAndroid Build Coastguard Worker   TCHAR panelString[16];
176*f6dc9357SAndroid Build Coastguard Worker   ConvertUInt32ToString(panelIndex, panelString);
177*f6dc9357SAndroid Build Coastguard Worker   return (CSysString)kFlatViewName + panelString;
178*f6dc9357SAndroid Build Coastguard Worker }
179*f6dc9357SAndroid Build Coastguard Worker 
SaveFlatView(UInt32 panelIndex,bool enable)180*f6dc9357SAndroid Build Coastguard Worker void SaveFlatView(UInt32 panelIndex, bool enable) { SaveOption(GetFlatViewName(panelIndex), enable); }
181*f6dc9357SAndroid Build Coastguard Worker 
ReadFlatView(UInt32 panelIndex)182*f6dc9357SAndroid Build Coastguard Worker bool ReadFlatView(UInt32 panelIndex)
183*f6dc9357SAndroid Build Coastguard Worker {
184*f6dc9357SAndroid Build Coastguard Worker   bool enabled = false;
185*f6dc9357SAndroid Build Coastguard Worker   CKey key;
186*f6dc9357SAndroid Build Coastguard Worker   if (key.Open(HKEY_CURRENT_USER, kCU_FMPath, KEY_READ) == ERROR_SUCCESS)
187*f6dc9357SAndroid Build Coastguard Worker     ReadOption(key, GetFlatViewName(panelIndex), enabled);
188*f6dc9357SAndroid Build Coastguard Worker   return enabled;
189*f6dc9357SAndroid Build Coastguard Worker }
190*f6dc9357SAndroid Build Coastguard Worker 
191*f6dc9357SAndroid Build Coastguard Worker /*
192*f6dc9357SAndroid Build Coastguard Worker void Save_ShowDeleted(bool enable) { SaveOption(kShowDeletedFiles, enable); }
193*f6dc9357SAndroid Build Coastguard Worker bool Read_ShowDeleted() { return ReadOption(kShowDeletedFiles, false); }
194*f6dc9357SAndroid Build Coastguard Worker */
195