void WriteSetting(MCONTACT hContact, char* module1, char* setting1, char* module2, char* setting2) { CMStringA newString; char text[MAX_STRING_LENGTH]; int error = 0, status = GetLCStatus(0, 0); if (db_get_static(hContact, module1, setting1, text, _countof(text))) { switch (stringReplacer(text, newString, hContact)) { case ERROR_NO_LINE_AFTER_VAR_F: newString.Format(Translate("%s - ERROR: no line specified or line not found (in %s)"), text, setting1); error = 1; break; case ERROR_LINE_NOT_READ: newString.Format(Translate("%s - ERROR: file couldn't be opened (in %s)"), text, setting1); error = 1; break; case ERROR_NO_FILE: newString.Format(Translate("%s - ERROR: no file specified in settings (in %s)"), text, setting1); error = 1; break; default: error = 0; break; } // strip the tab and new lines from all except the tooltip if (!error && mir_strcmp(setting1, "ToolTip")) newString.TrimRight(); db_set_s(hContact, module2, setting2, newString); } else db_set_s(hContact, module2, setting2, ""); if (!error) { if ((status == ID_STATUS_ONLINE) || (status == ID_STATUS_AWAY) || (status == db_get_w(hContact, MODNAME, "Icon", ID_STATUS_ONLINE)) || db_get_b(hContact, MODNAME, "AlwaysVisible", 0)) db_set_w(hContact, MODNAME, "Status", (WORD)db_get_w(hContact, MODNAME, "Icon", ID_STATUS_ONLINE)); else db_set_w(hContact, MODNAME, "Status", ID_STATUS_OFFLINE); } else db_set_w(hContact, MODNAME, "Status", ID_STATUS_OFFLINE); }
INT_PTR CALLBACK TestWindowDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM) { switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwnd); return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_HELPMSG: CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_HELP), 0, HelpWindowDlgProc); break; case IDCANCEL: DestroyWindow(hwnd); break; case IDC_STRING: if (HIWORD(wParam) == EN_CHANGE) { char tmp[MAX_STRING_LENGTH]; int i = 0, j; if (GetWindowTextLength(GetDlgItem(hwnd, IDC_STRING))) { GetDlgItemTextA(hwnd, IDC_STRING, tmp, _countof(tmp)); if (tmp[mir_strlen(tmp) - 1] == '(') { for (i = 0; i < VARS; i++) { if (!mir_strcmp(braceList[i].var, &tmp[mir_strlen(tmp) - mir_strlen(braceList[i].var)])) { for (j = 0; j < MAX_BRACES; j++) { if (!braceOrder[j]) { braceOrder[j] = i; EnableWindow(GetDlgItem(hwnd, braceList[i].idCtrl), 1); if (j) EnableWindow(GetDlgItem(hwnd, braceList[braceOrder[j - 1]].idCtrl), 0); break; } } break; } } } else if (tmp[mir_strlen(tmp) - 1] == ')') { for (j = 0; j < MAX_BRACES; j++) { if (!braceOrder[j]) { EnableWindow(GetDlgItem(hwnd, braceList[braceOrder[j - 1]].idCtrl), 0); if (j > 1) EnableWindow(GetDlgItem(hwnd, braceList[braceOrder[j - 2]].idCtrl), 1); braceOrder[j - 1] = 0; break; } } } } else { for (j = 0; j < MAX_BRACES; j++) { if (!braceOrder[j]) break; EnableWindow(GetDlgItem(hwnd, braceList[braceOrder[j]].idCtrl), 0); } } } break; case IDOK: CMStringA replacedString; char str2replace[MAX_STRING_LENGTH]; int error; if (GetWindowTextLength(GetDlgItem(hwnd, IDC_STRING))) { GetDlgItemTextA(hwnd, IDC_STRING, str2replace, _countof(str2replace)); switch (stringReplacer(str2replace, replacedString, NULL)) { case ERROR_NO_LINE_AFTER_VAR_F: replacedString.Format("ERROR: no %s", "%line or %wholeline or %lastline after %fn"); error = 1; break; case ERROR_LINE_NOT_READ: replacedString.Format("ERROR: file couldnt be opened "); error = 1; break; case ERROR_NO_FILE: replacedString.Format("ERROR: no file specified in settings"); error = 1; break; default: error = 0; } SetDlgItemTextA(hwnd, IDC_ANSWER, replacedString); } } break; } return FALSE; }