Skip to content

Commit 44ba8c6

Browse files
committed
Add PhLoadCustomColorList, PhSaveCustomColorList
1 parent 77ef616 commit 44ba8c6

File tree

2 files changed

+92
-0
lines changed

2 files changed

+92
-0
lines changed

ProcessHacker/ProcessHacker.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -638,12 +638,14 @@ EXPORTS
638638
PhGetScalableIntegerPairSetting
639639
PhGetStringSetting
640640
PhLoadSettings
641+
PhLoadCustomColorList
641642
PhLoadListViewColumnSettings
642643
PhLoadListViewColumnsFromSetting
643644
PhLoadListViewSortColumnsFromSetting
644645
PhLoadListViewGroupStatesFromSetting
645646
PhLoadWindowPlacementFromSetting
646647
PhResetSettings
648+
PhSaveCustomColorList
647649
PhSaveListViewColumnSettings
648650
PhSaveListViewColumnsToSetting
649651
PhSaveListViewSortColumnsToSetting

phlib/settings.c

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1380,3 +1380,93 @@ VOID PhSaveListViewGroupStatesToSetting(
13801380
settingsString = PH_AUTO(PhFinalStringBuilderString(&stringBuilder));
13811381
PhSetStringSetting2(Name, &settingsString->sr);
13821382
}
1383+
1384+
VOID PhLoadCustomColorList(
1385+
_In_ PWSTR Name,
1386+
_In_ PULONG CustomColorList,
1387+
_In_ ULONG CustomColorCount
1388+
)
1389+
{
1390+
PPH_STRING settingsString;
1391+
PH_STRINGREF remaining;
1392+
PH_STRINGREF part;
1393+
1394+
if (CustomColorCount != 16)
1395+
return;
1396+
1397+
settingsString = PhGetStringSetting(Name);
1398+
1399+
if (PhIsNullOrEmptyString(settingsString))
1400+
goto CleanupExit;
1401+
1402+
remaining = PhGetStringRef(settingsString);
1403+
1404+
for (ULONG i = 0; i < CustomColorCount; i++)
1405+
{
1406+
ULONG64 integer = 0;
1407+
1408+
if (remaining.Length == 0)
1409+
break;
1410+
1411+
PhSplitStringRefAtChar(&remaining, L',', &part, &remaining);
1412+
1413+
if (PhStringToInteger64(&part, 10, &integer))
1414+
{
1415+
CustomColorList[i] = (COLORREF)integer;
1416+
}
1417+
}
1418+
1419+
CleanupExit:
1420+
PhClearReference(&settingsString);
1421+
}
1422+
1423+
VOID PhSaveCustomColorList(
1424+
_In_ PWSTR Name,
1425+
_In_ PULONG CustomColorList,
1426+
_In_ ULONG CustomColorCount
1427+
)
1428+
{
1429+
PH_STRING_BUILDER stringBuilder;
1430+
1431+
if (CustomColorCount != 16)
1432+
return;
1433+
1434+
PhInitializeStringBuilder(&stringBuilder, 100);
1435+
1436+
for (ULONG i = 0; i < CustomColorCount; i++)
1437+
{
1438+
PH_FORMAT format[2];
1439+
SIZE_T returnLength;
1440+
WCHAR formatBuffer[0x100];
1441+
1442+
PhInitFormatU(&format[0], CustomColorList[i]);
1443+
PhInitFormatC(&format[1], L',');
1444+
1445+
if (PhFormatToBuffer(
1446+
format,
1447+
RTL_NUMBER_OF(format),
1448+
formatBuffer,
1449+
sizeof(formatBuffer),
1450+
&returnLength
1451+
))
1452+
{
1453+
PH_STRINGREF string;
1454+
1455+
string.Buffer = formatBuffer;
1456+
string.Length = returnLength - sizeof(UNICODE_NULL);
1457+
1458+
PhAppendStringBuilder(&stringBuilder, &string);
1459+
}
1460+
else
1461+
{
1462+
PhAppendFormatStringBuilder(&stringBuilder, L"%lu,", CustomColorList[i]);
1463+
}
1464+
}
1465+
1466+
if (stringBuilder.String->Length != 0)
1467+
PhRemoveEndStringBuilder(&stringBuilder, 1);
1468+
1469+
PhSetStringSetting2(Name, &stringBuilder.String->sr);
1470+
1471+
PhDeleteStringBuilder(&stringBuilder);
1472+
}

0 commit comments

Comments
 (0)