diff options
author | pescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7> | 2010-10-06 00:22:35 +0000 |
---|---|---|
committer | pescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7> | 2010-10-06 00:22:35 +0000 |
commit | 305bcb9a42ed52e864ae69de3b2e4937047edc92 (patch) | |
tree | 77f29f0d4f7f8c2351280e596f86d6479b522ef2 /Plugins/utils/mir_options.cpp | |
parent | e18d7a839140f01249f470ea40c531b7889c608d (diff) |
utils: sync with berliOS
git-svn-id: http://pescuma.googlecode.com/svn/trunk/Miranda@225 c086bb3d-8645-0410-b8da-73a8550f86e7
Diffstat (limited to 'Plugins/utils/mir_options.cpp')
-rw-r--r-- | Plugins/utils/mir_options.cpp | 183 |
1 files changed, 101 insertions, 82 deletions
diff --git a/Plugins/utils/mir_options.cpp b/Plugins/utils/mir_options.cpp index 7f1f267..11af0c6 100644 --- a/Plugins/utils/mir_options.cpp +++ b/Plugins/utils/mir_options.cpp @@ -143,92 +143,95 @@ static void PathToAbsolute(TCHAR *pOut, size_t outSize, const TCHAR *pSrc) }
-void LoadOpts(OptPageControl *controls, int controlsSize, char *module)
+static void LoadOpt(OptPageControl *ctrl, char *module)
{
- for (int i = 0 ; i < controlsSize ; i++)
+ if (ctrl->var == NULL)
+ return;
+
+ switch(ctrl->type)
{
- OptPageControl *ctrl = &controls[i];
-
- if (ctrl->var != NULL)
+ case CONTROL_CHECKBOX:
{
- switch(ctrl->type)
- {
- case CONTROL_CHECKBOX:
- {
- *((BYTE *) ctrl->var) = DBGetContactSettingByte(NULL, module, ctrl->setting, ctrl->dwDefValue);
- break;
- }
- case CONTROL_SPIN:
- {
- *((WORD *) ctrl->var) = DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue);
- break;
- }
- case CONTROL_COLOR:
- {
- *((COLORREF *) ctrl->var) = (COLORREF) DBGetContactSettingDword(NULL, module, ctrl->setting, ctrl->dwDefValue);
- break;
- }
- case CONTROL_RADIO:
- {
- *((WORD *) ctrl->var) = DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue);
- break;
- }
- case CONTROL_COMBO:
- {
- *((WORD *) ctrl->var) = DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue);
- break;
- }
- case CONTROL_PROTOCOL_LIST:
- {
- break;
- }
- case CONTROL_TEXT:
- {
- MyDBGetContactSettingTString(NULL, module, ctrl->setting, ((TCHAR *) ctrl->var), min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), ctrl->tszDefValue == NULL ? NULL : TranslateTS(ctrl->tszDefValue));
- break;
- }
- case CONTROL_PASSWORD:
- {
- char tmp[1024];
- tmp[0]=0;
+ *((BYTE *) ctrl->var) = DBGetContactSettingByte(NULL, module, ctrl->setting, ctrl->dwDefValue);
+ break;
+ }
+ case CONTROL_SPIN:
+ {
+ *((WORD *) ctrl->var) = DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue);
+ break;
+ }
+ case CONTROL_COLOR:
+ {
+ *((COLORREF *) ctrl->var) = (COLORREF) DBGetContactSettingDword(NULL, module, ctrl->setting, ctrl->dwDefValue);
+ break;
+ }
+ case CONTROL_RADIO:
+ {
+ *((WORD *) ctrl->var) = DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue);
+ break;
+ }
+ case CONTROL_COMBO:
+ {
+ *((WORD *) ctrl->var) = DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue);
+ break;
+ }
+ case CONTROL_PROTOCOL_LIST:
+ {
+ break;
+ }
+ case CONTROL_TEXT:
+ {
+ MyDBGetContactSettingTString(NULL, module, ctrl->setting, ((TCHAR *) ctrl->var), min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), ctrl->tszDefValue == NULL ? NULL : TranslateTS(ctrl->tszDefValue));
+ break;
+ }
+ case CONTROL_PASSWORD:
+ {
+ char tmp[1024];
+ tmp[0]=0;
- DBVARIANT dbv = {0};
- if (!DBGetContactSettingString(NULL, module, ctrl->setting, &dbv))
- {
- lstrcpynA(tmp, dbv.pszVal, MAX_REGS(tmp));
- DBFreeVariant(&dbv);
- }
+ DBVARIANT dbv = {0};
+ if (!DBGetContactSettingString(NULL, module, ctrl->setting, &dbv))
+ {
+ lstrcpynA(tmp, dbv.pszVal, MAX_REGS(tmp));
+ DBFreeVariant(&dbv);
+ }
- if (tmp[0] != 0)
- CallService(MS_DB_CRYPT_DECODESTRING, MAX_REGS(tmp), (LPARAM) tmp);
- else if (ctrl->szDefValue != NULL)
- lstrcpynA(tmp, ctrl->szDefValue, MAX_REGS(tmp));
+ if (tmp[0] != 0)
+ CallService(MS_DB_CRYPT_DECODESTRING, MAX_REGS(tmp), (LPARAM) tmp);
+ else if (ctrl->szDefValue != NULL)
+ lstrcpynA(tmp, ctrl->szDefValue, MAX_REGS(tmp));
- char *var = (char *) ctrl->var;
- int size = min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024);
- lstrcpynA(var, tmp, size);
- break;
- }
- case CONTROL_INT:
- {
- *((int *) ctrl->var) = (int) DBGetContactSettingDword(NULL, module, ctrl->setting, ctrl->dwDefValue);
- break;
- }
- case CONTROL_FILE:
- {
- TCHAR tmp[1024];
- MyDBGetContactSettingTString(NULL, module, ctrl->setting, tmp, 1024, ctrl->tszDefValue == NULL ? NULL : ctrl->tszDefValue);
- PathToAbsolute(((TCHAR *) ctrl->var), min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), tmp);
- break;
- }
- case CONTROL_COMBO_TEXT:
- case CONTROL_COMBO_ITEMDATA:
- {
- MyDBGetContactSettingTString(NULL, module, ctrl->setting, ((TCHAR *) ctrl->var), min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), ctrl->tszDefValue == NULL ? NULL : TranslateTS(ctrl->tszDefValue));
- break;
- }
- }
+ char *var = (char *) ctrl->var;
+ int size = min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024);
+ lstrcpynA(var, tmp, size);
+ break;
+ }
+ case CONTROL_INT:
+ {
+ *((int *) ctrl->var) = (int) DBGetContactSettingDword(NULL, module, ctrl->setting, ctrl->dwDefValue);
+ break;
}
+ case CONTROL_FILE:
+ {
+ TCHAR tmp[1024];
+ MyDBGetContactSettingTString(NULL, module, ctrl->setting, tmp, 1024, ctrl->tszDefValue == NULL ? NULL : ctrl->tszDefValue);
+ PathToAbsolute(((TCHAR *) ctrl->var), min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), tmp);
+ break;
+ }
+ case CONTROL_COMBO_TEXT:
+ case CONTROL_COMBO_ITEMDATA:
+ {
+ MyDBGetContactSettingTString(NULL, module, ctrl->setting, ((TCHAR *) ctrl->var), min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), ctrl->tszDefValue == NULL ? NULL : TranslateTS(ctrl->tszDefValue));
+ break;
+ }
+ }
+}
+
+void LoadOpts(OptPageControl *controls, int controlsSize, char *module)
+{
+ for (int i = 0 ; i < controlsSize ; i++)
+ {
+ LoadOpt(&controls[i], module);
}
}
@@ -528,9 +531,25 @@ BOOL CALLBACK SaveOptsDlgProc(OptPageControl *controls, int controlsSize, char * {
char tmp[1024];
GetDlgItemTextA(hwndDlg, ctrl->nID, tmp, MAX_REGS(tmp));
+
+ if (ctrl->var != NULL)
+ {
+ char *var = (char *) ctrl->var;
+ int size = min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024);
+ lstrcpynA(var, tmp, size);
+ }
+
+ if (ctrl->checkboxID != 0 && !IsDlgButtonChecked(hwndDlg, ctrl->checkboxID))
+ {
+ DBDeleteContactSetting(NULL, module, ctrl->setting);
+ continue;
+ }
+
CallService(MS_DB_CRYPT_ENCODESTRING, MAX_REGS(tmp), (LPARAM) tmp);
DBWriteContactSettingString(NULL, module, ctrl->setting, tmp);
- break;
+
+ // Don't load from DB
+ continue;
}
case CONTROL_INT:
{
@@ -568,10 +587,10 @@ BOOL CALLBACK SaveOptsDlgProc(OptPageControl *controls, int controlsSize, char * break;
}
}
+
+ LoadOpt(ctrl, module);
}
- LoadOpts(controls, controlsSize, module);
-
return TRUE;
}
else if (lpnmhdr->idFrom != 0 && lpnmhdr->code == LVN_ITEMCHANGED)
|