ReactOS
0.4.16-dev-338-g34e76ad
settings.cpp
Go to the documentation of this file.
1
/*
2
* ReactOS Explorer
3
*
4
* Copyright 2013 - Edijs Kolesnikovics
5
*
6
* This library is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* This library is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with this library; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#include "
precomp.h
"
22
23
TaskbarSettings
g_TaskbarSettings
;
24
25
BOOL
TaskbarSettings::Save
()
26
{
27
SHSetValueW
(
hkExplorer
,
NULL
,
L
"EnableAutotray"
,
REG_DWORD
, &
bHideInactiveIcons
,
sizeof
(
bHideInactiveIcons
));
28
SHSetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"PreferDateOverWeekday"
,
REG_DWORD
, &
bPreferDate
,
sizeof
(
bPreferDate
));
29
SHSetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"ShowSeconds"
,
REG_DWORD
, &
bShowSeconds
,
sizeof
(
bShowSeconds
));
30
SHSetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"TaskbarGlomming"
,
REG_DWORD
, &
bGroupButtons
,
sizeof
(
bGroupButtons
));
31
BOOL
bAllowSizeMove = !
bLock
;
32
SHSetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"TaskbarSizeMove"
,
REG_DWORD
, &bAllowSizeMove,
sizeof
(bAllowSizeMove));
33
sr
.
cbSize
=
sizeof
(
sr
);
34
SHSetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"TaskbarSmallIcons"
,
REG_DWORD
, &
bSmallIcons
,
sizeof
(
bSmallIcons
));
35
SHSetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"TaskbarSd"
,
REG_DWORD
, &
bShowDesktopButton
,
sizeof
(
bShowDesktopButton
));
36
SHSetValueW
(
hkExplorer
,
L
"StuckRects2"
,
L
"Settings"
,
REG_BINARY
, &
sr
,
sizeof
(
sr
));
37
38
/* TODO: AutoHide writes something to HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Desktop\Components\0 figure out what and why */
39
return
TRUE
;
40
}
41
42
BOOL
TaskbarSettings::Load
()
43
{
44
DWORD
dwRet, cbSize, dwValue =
NULL
;
45
46
cbSize =
sizeof
(dwValue);
47
dwRet =
SHGetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"TaskbarSizeMove"
,
NULL
, &dwValue, &cbSize);
48
bLock
= (dwRet ==
ERROR_SUCCESS
) ? (dwValue == 0) :
TRUE
;
49
50
dwRet =
SHGetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"PreferDateOverWeekday"
,
NULL
, &dwValue, &cbSize);
51
bPreferDate
= (dwRet ==
ERROR_SUCCESS
) ? (dwValue != 0) :
FALSE
;
/* This is opt-in setting */
52
53
dwRet =
SHGetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"ShowSeconds"
,
NULL
, &dwValue, &cbSize);
54
bShowSeconds
= (dwRet ==
ERROR_SUCCESS
) ? (dwValue != 0) :
FALSE
;
55
56
dwRet =
SHGetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"TaskbarGlomming"
,
NULL
, &dwValue, &cbSize);
57
bGroupButtons
= (dwRet ==
ERROR_SUCCESS
) ? (dwValue != 0) :
FALSE
;
58
59
dwRet =
SHGetValueW
(
hkExplorer
,
NULL
,
L
"EnableAutotray"
,
NULL
, &dwValue, &cbSize);
60
bHideInactiveIcons
= (dwRet ==
ERROR_SUCCESS
) ? (dwValue != 0) :
FALSE
;
61
62
dwRet =
SHGetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"TaskbarSmallIcons"
,
NULL
, &dwValue, &cbSize);
63
bSmallIcons
= (dwRet ==
ERROR_SUCCESS
) ? (dwValue != 0) :
TRUE
;
64
65
dwRet =
SHGetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"CompactTrayIcons"
,
NULL
, &dwValue, &cbSize);
66
if
(dwRet ==
ERROR_SUCCESS
&& dwValue <=
TIM_Max
)
67
eCompactTrayIcons
=
static_cast<
TrayIconsMode
>
(dwValue);
68
else
69
eCompactTrayIcons
=
TIM_Default
;
70
71
dwRet =
SHGetValueW
(
hkExplorer
,
L
"Advanced"
,
L
"TaskbarSd"
,
NULL
, &dwValue, &cbSize);
72
bShowDesktopButton
= (dwRet ==
ERROR_SUCCESS
) ? (dwValue != 0) :
TRUE
;
73
74
cbSize =
sizeof
(
sr
);
75
dwRet =
SHGetValueW
(
hkExplorer
,
L
"StuckRects2"
,
L
"Settings"
,
NULL
, &
sr
, &cbSize);
76
77
/* Make sure we have correct values here */
78
if
(dwRet !=
ERROR_SUCCESS
||
sr
.
cbSize
!=
sizeof
(
sr
) || cbSize !=
sizeof
(
sr
))
79
{
80
sr
.
Position
=
ABE_BOTTOM
;
81
sr
.
AutoHide
=
FALSE
;
82
sr
.
AlwaysOnTop
=
TRUE
;
83
sr
.
SmSmallIcons
=
FALSE
;
84
sr
.
HideClock
=
FALSE
;
85
sr
.
Rect
.
left
=
sr
.
Rect
.
top
= 0;
86
sr
.
Rect
.
bottom
=
sr
.
Rect
.
right
= 1;
87
sr
.
Size
.
cx
=
sr
.
Size
.
cy
= 0;
88
}
89
else
90
{
91
if
(
sr
.
Position
>
ABE_BOTTOM
)
92
sr
.
Position
=
ABE_BOTTOM
;
93
}
94
95
return
TRUE
;
96
}
97
98
/* EOF */
TrayIconsMode
TrayIconsMode
Definition:
precomp.h:188
TIM_Max
@ TIM_Max
Definition:
precomp.h:192
TIM_Default
@ TIM_Default
Definition:
precomp.h:189
hkExplorer
HKEY hkExplorer
Definition:
explorer.cpp:26
g_TaskbarSettings
TaskbarSettings g_TaskbarSettings
Definition:
settings.cpp:23
ERROR_SUCCESS
#define ERROR_SUCCESS
Definition:
deptool.c:10
NULL
#define NULL
Definition:
types.h:112
TRUE
#define TRUE
Definition:
types.h:120
FALSE
#define FALSE
Definition:
types.h:117
SHGetValueW
DWORD WINAPI SHGetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
Definition:
reg.c:1236
SHSetValueW
DWORD WINAPI SHSetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, DWORD dwType, LPCVOID pvData, DWORD cbData)
Definition:
reg.c:1306
BOOL
unsigned int BOOL
Definition:
ntddk_ex.h:94
DWORD
unsigned long DWORD
Definition:
ntddk_ex.h:95
REG_BINARY
#define REG_BINARY
Definition:
nt_native.h:1496
L
#define L(x)
Definition:
ntvdm.h:50
REG_DWORD
#define REG_DWORD
Definition:
sdbapi.c:596
ABE_BOTTOM
#define ABE_BOTTOM
Definition:
shellapi.h:20
TaskbarSettings
Definition:
precomp.h:216
TaskbarSettings::bGroupButtons
BOOL bGroupButtons
Definition:
precomp.h:218
TaskbarSettings::bShowDesktopButton
BOOL bShowDesktopButton
Definition:
precomp.h:224
TaskbarSettings::bHideInactiveIcons
BOOL bHideInactiveIcons
Definition:
precomp.h:221
TaskbarSettings::bLock
BOOL bLock
Definition:
precomp.h:217
TaskbarSettings::sr
TW_STRUCKRECTS2 sr
Definition:
precomp.h:225
TaskbarSettings::bShowSeconds
BOOL bShowSeconds
Definition:
precomp.h:219
TaskbarSettings::eCompactTrayIcons
TrayIconsMode eCompactTrayIcons
Definition:
precomp.h:223
TaskbarSettings::Load
BOOL Load()
Definition:
settings.cpp:42
TaskbarSettings::bPreferDate
BOOL bPreferDate
Definition:
precomp.h:220
TaskbarSettings::bSmallIcons
BOOL bSmallIcons
Definition:
precomp.h:222
TaskbarSettings::Save
BOOL Save()
Definition:
settings.cpp:25
_SIZE::cx
LONG cx
Definition:
kdterminal.h:27
_SIZE::cy
LONG cy
Definition:
kdterminal.h:28
_TW_STUCKRECTS2::AutoHide
DWORD AutoHide
Definition:
precomp.h:204
_TW_STUCKRECTS2::HideClock
DWORD HideClock
Definition:
precomp.h:207
_TW_STUCKRECTS2::AlwaysOnTop
DWORD AlwaysOnTop
Definition:
precomp.h:205
_TW_STUCKRECTS2::Size
SIZE Size
Definition:
precomp.h:211
_TW_STUCKRECTS2::SmSmallIcons
DWORD SmSmallIcons
Definition:
precomp.h:206
_TW_STUCKRECTS2::Position
DWORD Position
Definition:
precomp.h:210
_TW_STUCKRECTS2::Rect
RECT Rect
Definition:
precomp.h:212
_TW_STUCKRECTS2::cbSize
DWORD cbSize
Definition:
precomp.h:197
tagRECT::right
LONG right
Definition:
windef.h:308
tagRECT::bottom
LONG bottom
Definition:
windef.h:309
tagRECT::top
LONG top
Definition:
windef.h:307
tagRECT::left
LONG left
Definition:
windef.h:306
precomp.h
base
shell
explorer
settings.cpp
Generated on Wed Dec 11 2024 06:06:13 for ReactOS by
1.9.6