BOOL ResaveSettings(char* szName,int iFirst,int iLimit,TCHAR* szBuffer) { BYTE marked,marked_t; char szNameBuf[256]={0}; for (int i = iFirst; i < iLimit; i++) { if (szBuffer == NULL) break; mir_snprintf(szNameBuf, SIZEOF(szNameBuf), "%s_%u", szName, i); DBVARIANT dbv_temp; int res = db_get_ts(NULL, MODNAME, szNameBuf, &dbv_temp); db_set_ts(NULL, MODNAME, szNameBuf, szBuffer); mir_free(szBuffer); marked = IsMarkedUserDefSession(i); MarkUserDefSession(i,(BYTE)((i == iFirst)?IsMarkedUserDefSession(iFirst-1):marked_t)); marked_t = marked; if (res) // read failed return 0; szBuffer = mir_tstrdup(dbv_temp.ptszVal); db_free(&dbv_temp); } mir_free(szBuffer); return 1; }
BOOL ResaveSettings(char* szName,int iFirst,int iLimit,TCHAR* szBuffer) { BYTE marked,marked_t; char szNameBuf[256]={0}; for (int i = iFirst; i < iLimit; i++) { if (szBuffer) { DBVARIANT dbv_temp = {0}; mir_snprintf(szNameBuf, SIZEOF(szNameBuf), "%s_%u", szName, i); DBGetContactSettingTString(NULL, __INTERNAL_NAME, szNameBuf, &dbv_temp); DBWriteContactSettingTString(NULL, __INTERNAL_NAME, szNameBuf, szBuffer); marked=IsMarkedUserDefSession(i); MarkUserDefSession(i,(BYTE)((i==iFirst)?IsMarkedUserDefSession(iFirst-1):marked_t)); marked_t=marked; mir_free(szBuffer); if (dbv_temp.ptszVal) { szBuffer = mir_tstrdup(dbv_temp.ptszVal); DBFreeVariant(&dbv_temp); } else return 0; } else break; } return 1; }
int DelUserDefSession(int ses_count) { for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { RemoveSessionMark(hContact, 1, ses_count); SetInSessionOrder(hContact, 1, ses_count, 0); } char szSessionName[256]; mir_snprintf(szSessionName, "%s_%u", "UserSessionDsc", ses_count); db_unset(NULL, MODNAME, szSessionName); mir_snprintf(szSessionName, "%s_%u", "FavUserSession", ses_count); db_unset(NULL, MODNAME, szSessionName); for (int i = ses_count + 1;; i++) { mir_snprintf(szSessionName, "%s_%u", "UserSessionDsc", i); ptrT szSessionNameBuf(db_get_tsa(NULL, MODNAME, szSessionName)); mir_snprintf(szSessionName, "%s_%u", "UserSessionDsc", i - 1); if (szSessionNameBuf) { MarkUserDefSession(i - 1, IsMarkedUserDefSession(i)); db_set_ts(NULL, MODNAME, szSessionName, szSessionNameBuf); } else { db_unset(NULL, MODNAME, szSessionName); mir_snprintf(szSessionName, "%s_%u", "FavUserSession", i - 1); db_unset(NULL, MODNAME, szSessionName); break; } } g_ses_count--; db_set_b(0, MODNAME, "UserSessionsCount", (BYTE)g_ses_count); return 0; }
BOOL ResaveSettings(char *szName, int iFirst, int iLimit, TCHAR *szBuffer) { for (int i = iFirst; i < iLimit; i++) { if (szBuffer == NULL) break; char szNameBuf[256]; mir_snprintf(szNameBuf, "%s_%u", szName, i); TCHAR *ptszTemp = db_get_tsa(NULL, MODNAME, szNameBuf); db_set_ts(NULL, MODNAME, szNameBuf, szBuffer); mir_free(szBuffer); BYTE marked = IsMarkedUserDefSession(i); MarkUserDefSession(i, (BYTE)((i == iFirst) ? IsMarkedUserDefSession(iFirst - 1) : marked)); if (ptszTemp == NULL) // read failed return 0; szBuffer = ptszTemp; } mir_free(szBuffer); return 1; }
int DelUserDefSession(int ses_count) { int i=0; HANDLE hContact; char szSessionName[256]={0}; TCHAR *szSessionNameBuf=NULL; for (hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { RemoveSessionMark(hContact,1,ses_count); SetInSessionOrder(hContact,1,ses_count,0); } mir_snprintf(szSessionName, SIZEOF(szSessionName), "%s_%u", "UserSessionDsc", ses_count); db_unset(NULL, MODNAME, szSessionName); mir_snprintf(szSessionName, SIZEOF(szSessionName), "%s_%u", "FavUserSession", ses_count); db_unset(NULL, MODNAME, szSessionName); for (i=(ses_count+1);;i++) { mir_snprintf(szSessionName, SIZEOF(szSessionName), "%s_%u", "UserSessionDsc", i); if (szSessionNameBuf = db_get_tsa(NULL, MODNAME, szSessionName)) { MarkUserDefSession(i-1,IsMarkedUserDefSession(i)); mir_snprintf(szSessionName, SIZEOF(szSessionName), "%s_%u", "UserSessionDsc", i-1); db_set_ts(NULL, MODNAME, szSessionName, szSessionNameBuf); mir_free(szSessionNameBuf); } else { mir_snprintf(szSessionName, SIZEOF(szSessionName), "%s_%u", "UserSessionDsc", i-1); db_unset(NULL, MODNAME, szSessionName); mir_snprintf(szSessionName, SIZEOF(szSessionName), "%s_%u", "FavUserSession", i-1); db_unset(NULL, MODNAME, szSessionName); break; } } g_ses_count--; db_set_b(0, MODNAME, "UserSessionsCount", (BYTE)g_ses_count); return 0; }
static LRESULT CALLBACK ComboBoxSubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_ERASEBKGND: return TRUE; case EM_SETSEL: if (!hOpClistControl) return HideCaret(hwnd); break; case WM_GETDLGCODE: if (!hOpClistControl) return DLGC_WANTARROWS; break; case WM_SETCURSOR: if (!hOpClistControl) { SetCursor(LoadCursor(NULL, IDC_ARROW)); return TRUE; } break; case WM_LBUTTONDOWN: if (hOpClistControl) break; HideCaret(hwnd); case WM_LBUTTONDBLCLK: case WM_MBUTTONDOWN: case WM_MBUTTONDBLCLK: SendMessage(hComboBox,CB_SHOWDROPDOWN,1,0); return TRUE; case WM_NCLBUTTONDBLCLK: case WM_NCLBUTTONDOWN: if (!bChecked) { MarkUserDefSession(opses_count,1); hIcon = hMarked; bChecked = TRUE; RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW|RDW_FRAME); } else { MarkUserDefSession(opses_count,0); hIcon = hNotMarked; bChecked = FALSE; RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW|RDW_FRAME); } break; case WM_MOUSEMOVE: if (hOpClistControl) break; case WM_NCMOUSEMOVE: return TRUE; case WM_NCPAINT: hdc = GetDC(hwnd); GetClientRect(hwnd, &rc); rc.left=rc.right; rc.right=rc.left+16; FillRect(hdc, &rc, (HBRUSH)GetSysColor(COLOR_WINDOW)); DrawIconEx(hdc, rc.left, 0, hIcon, 16, 16, 0, NULL, DI_NORMAL); ReleaseDC(hwnd, hdc); break; case WM_NCCALCSIZE: { NCCALCSIZE_PARAMS *ncsParam = (NCCALCSIZE_PARAMS*)lParam; ncsParam->rgrc[ 0 ].right -= 16; } break; case WM_NCHITTEST: { LRESULT lr = mir_callNextSubclass(hwnd, ComboBoxSubclassProc, msg, wParam, lParam ); if (lr == HTNOWHERE ) lr = HTOBJECT; return lr; } } return mir_callNextSubclass(hwnd, ComboBoxSubclassProc, msg, wParam, lParam); }