From 55a267a171bac0b1fa415c38b6e5ecec2e2eb004 Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Sun, 16 Aug 2015 17:36:36 +0200 Subject: Windows: Solve UI language change not taken into account for new install unless a preference is changed. Code refactoring. --- src/Common/Dlgcode.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/Common/Dlgcode.c') diff --git a/src/Common/Dlgcode.c b/src/Common/Dlgcode.c index 74a2c831..abad5e70 100644 --- a/src/Common/Dlgcode.c +++ b/src/Common/Dlgcode.c @@ -8713,9 +8713,50 @@ char *ConfigReadString (char *configKey, char *defaultValue, char *str, int maxL if (ConfigRead (configKey, str, maxLen)) return str; else + { + StringCbCopyA (str, maxLen, defaultValue); return defaultValue; + } } +void ConfigReadCompareInt(char *configKey, int defaultValue, int* pOutputValue, BOOL bOnlyCheckModified, BOOL* pbModified) +{ + int intValue = ConfigReadInt (configKey, defaultValue); + if (pOutputValue) + { + if (pbModified && (*pOutputValue != intValue)) + *pbModified = TRUE; + if (!bOnlyCheckModified) + *pOutputValue = intValue; + } +} + +void ConfigReadCompareString (char *configKey, char *defaultValue, char *str, int maxLen, BOOL bOnlyCheckModified, BOOL *pbModified) +{ + char *strValue = (char*) malloc (maxLen); + if (strValue) + { + memcpy (strValue, str, maxLen); + + ConfigReadString (configKey, defaultValue, strValue, maxLen); + + if (pbModified && strcmp (str, strValue)) + *pbModified = TRUE; + if (!bOnlyCheckModified) + memcpy(str, strValue, maxLen); + + free (strValue); + } + else + { + /* allocation failed. Suppose that value changed */ + if (pbModified) + *pbModified = TRUE; + if (!bOnlyCheckModified) + ConfigReadString (configKey, defaultValue, str, maxLen); + + } +} void OpenPageHelp (HWND hwndDlg, int nPage) { -- cgit v1.2.3