@@ -1380,3 +1380,93 @@ VOID PhSaveListViewGroupStatesToSetting(
1380
1380
settingsString = PH_AUTO (PhFinalStringBuilderString (& stringBuilder ));
1381
1381
PhSetStringSetting2 (Name , & settingsString -> sr );
1382
1382
}
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