int CheckBayes() { char bayesdb_fullpath[MAX_PATH]; char bayesdb_tmp[MAX_PATH]; char* tmp = Utils_ReplaceVars("%miranda_userdata%"); if (tmp[mir_strlen(tmp)-1] == '\\') tmp[mir_strlen(tmp)-1] = 0; mir_snprintf(bayesdb_tmp, "%s\\%s", tmp, BAYESDB_PATH); mir_free(tmp); if (ServiceExists(MS_FOLDERS_REGISTER_PATH)) { hBayesFolder = FoldersRegisterCustomPath(PLUGIN_NAME, Translate("Bayes database path"), bayesdb_tmp); } else hBayesFolder = 0; if (hBayesFolder) FoldersGetCustomPath(hBayesFolder, bayesdb_fullpath, MAX_PATH, bayesdb_tmp); else strncpy_s(bayesdb_fullpath, bayesdb_tmp, _TRUNCATE); mir_strcat(bayesdb_fullpath, "\\" BAYESDB_FILENAME); if (_access(bayesdb_fullpath,0) == 0) return 1; return 0; }
// Avatars support void gg_getavatarfilename(GGPROTO *gg, HANDLE hContact, char *pszDest, int cbLen) { int tPathLen; char *path = (char *)_malloca(cbLen); char *avatartype = NULL; if (gg->hAvatarsFolder == NULL || FoldersGetCustomPath(gg->hAvatarsFolder, path, cbLen, "")) { char *tmpPath = Utils_ReplaceVars("%miranda_avatarcache%"); tPathLen = mir_snprintf(pszDest, cbLen, "%s\\%s", tmpPath, GG_PROTO); mir_free(tmpPath); } else { strcpy(pszDest, path); tPathLen = (int)strlen(pszDest); } if (_access(pszDest, 0)) CallService(MS_UTILS_CREATEDIRTREE, 0, (LPARAM)pszDest); switch (DBGetContactSettingByte(hContact, GG_PROTO, GG_KEY_AVATARTYPE, GG_KEYDEF_AVATARTYPE)) { case PA_FORMAT_JPEG: avatartype = "jpg"; break; case PA_FORMAT_GIF: avatartype = "gif"; break; case PA_FORMAT_PNG: avatartype = "png"; break; } if (hContact != NULL) { DBVARIANT dbv; if (!DBGetContactSettingString(hContact, GG_PROTO, GG_KEY_AVATARHASH, &dbv)) { mir_snprintf(pszDest + tPathLen, cbLen - tPathLen, "\\%s.%s", dbv.pszVal, avatartype); DBFreeVariant(&dbv); } } else mir_snprintf(pszDest + tPathLen, cbLen - tPathLen, "\\%s avatar.%s", GG_PROTO, avatartype); }
int OpenBayes() { char bayesdb_fullpath[MAX_PATH]; char *bayesdb_fullpath_utf8; char *errmsg, *tmp; sqlite3_stmt *stmt; if (hBayesFolder) { FoldersGetCustomPath(hBayesFolder, bayesdb_fullpath, MAX_PATH, ""); } else { tmp = Utils_ReplaceVars("%miranda_userdata%"); if (tmp[mir_strlen(tmp)-1] == '\\') tmp[mir_strlen(tmp)-1] = 0; mir_strcpy(bayesdb_fullpath, tmp); mir_strcat(bayesdb_fullpath, "\\" BAYESDB_PATH); mir_free(tmp); } CreateDirectoryTree(bayesdb_fullpath); mir_strcat(bayesdb_fullpath, "\\" BAYESDB_FILENAME); bayesdb_fullpath_utf8 = mir_utf8encode(bayesdb_fullpath); if (sqlite3_open(bayesdb_fullpath_utf8, &bayesdb) == SQLITE_OK) { sqlite3_exec(bayesdb, "CREATE TABLE IF NOT EXISTS spam (token blob(16), num int)", NULL, NULL, &errmsg); sqlite3_exec(bayesdb, "CREATE TABLE IF NOT EXISTS ham (token blob(16), num int)", NULL, NULL, &errmsg); sqlite3_exec(bayesdb, "CREATE TABLE IF NOT EXISTS stats (key varchar(32), value int)", NULL, NULL, &errmsg); sqlite3_exec(bayesdb, "CREATE TABLE IF NOT EXISTS queue (contact int, msgtime int, message text)", NULL, NULL, &errmsg); sqlite3_prepare_v2(bayesdb, "SELECT count(1) FROM stats WHERE key='spam_msgcount' OR key='ham_msgcount'", -1, &stmt, NULL); if (sqlite3_step(stmt) == SQLITE_ROW) if (sqlite3_column_int(stmt, 0) != 2) { sqlite3_exec(bayesdb, "INSERT INTO stats VALUES ('spam_msgcount', 0)", NULL, NULL, NULL); sqlite3_exec(bayesdb, "INSERT INTO stats VALUES ('ham_msgcount', 0)", NULL, NULL, NULL); } } else { MessageBoxA(NULL, bayesdb_fullpath_utf8, "Can't open database", MB_OK); } mir_free(bayesdb_fullpath_utf8); #ifdef _DEBUG tmp = Utils_ReplaceVars("%miranda_userdata%"); if (tmp[mir_strlen(tmp)-1] == '\\') tmp[mir_strlen(tmp)-1] = 0; mir_snprintf(bayesdb_fullpath, "%s\\%s\\%s", tmp, BAYESDB_PATH, BAYESDBG_FILENAME); mir_free(tmp); bayesdb_fullpath_utf8 = mir_utf8encode(bayesdb_fullpath); if (sqlite3_open(bayesdb_fullpath_utf8, &bayesdbg) == SQLITE_OK) { sqlite3_exec(bayesdbg, "CREATE TABLE spam (token varchar(50), num int)", NULL, NULL, &errmsg); sqlite3_exec(bayesdbg, "CREATE TABLE ham (token varchar(50), num int)", NULL, NULL, &errmsg); } mir_free(bayesdb_fullpath_utf8); #endif return 0; }
INT_PTR TestPlugin(WPARAM wParam, LPARAM lParam) { char temp[MAX_PATH]; const int MAX = 20; int i; HANDLE handles[MAX][2]; /* FOLDERSDATA caca; caca.cbSize = sizeof(caca); caca.szFormat = FOLDER_LOGS;*/ char *section; for (i = 0; i < MAX; i++) { switch (i % 4) { case 0: section = "Section 1"; break; case 1: section = "Section 2"; break; case 2: section = "Yet another section"; break; case 3: section = "Section no 4"; break; default: section = "Uhh ohh"; break; } //strcpy(caca.szSection, section); _itoa(i, temp, 10); //strcpy(caca.szName, temp); handles[i][0] = FoldersRegisterCustomPath(section, temp, FOLDER_LOGS); //CallService(MS_FOLDERS_REGISTER_PATH, 0, (LPARAM) &caca); } //caca.szFormatW = L"%profile_path%\\%current_profile%\\Ø"; //caca.flags = FF_UNICODE; FoldersRegisterCustomPath("Unicode stuff", "non unicode", " %profile_path%\\%current_profile%\\Ø\\\\\\"); for (i = 0; i < MAX; i++) { //strcpy(caca.szSection, "Unicode stuff"); sprintf(temp, "Value %d", i); //strcpy(caca.szName, temp); handles[i][1] = FoldersRegisterCustomPathW("Unicode stuff", temp, L"%profile_path%\\%current_profile%\\\u1FA6"); //CallService(MS_FOLDERS_REGISTER_PATH, 0, (LPARAM) &caca); } /* FOLDERSAPPENDDATA data; data.hRegisteredPath = handles[0]; data.szAppendData = "just an appended string"; char *cacat; CallService(MS_FOLDERS_GET_PATH_ALLOC_APPEND, (WPARAM) &data, (LPARAM) &cacat); Log("Append function returned : %s", cacat); */ /*FOLDERSGETDATA data = {0}; data.cbSize = sizeof(data); data.nMaxPathSize = sizeof(temp); data.szPath = temp; */ for (i = 0; i < MAX; i++) { //CallService(MS_FOLDERS_GET_PATH, handles[i][0], (LPARAM) &data); FoldersGetCustomPath((HANDLE) handles[i][0], temp, sizeof(temp), "<not found>"); Log("Path function[%d] returned : %s", i, temp); } wchar_t buffer[MAX_PATH]; //data.szPathW = buffer; for (i = 0; i < MAX; i++) { //CallService(MS_FOLDERS_GET_PATH, handles[i][0], (LPARAM) &data); FoldersGetCustomPathW((HANDLE) handles[i][1], buffer, MAX_PATH, L"<not found>"); Log("Unicode path function[%d] returned: %S", i, buffer); } // GetPathService(CONFIGURATION_PATH, (LPARAM) temp); // GetPathAllocService(AVATARS_PATH, (LPARAM) &caca); for (i = 0; i < MAX; i++) { FoldersGetCustomPathEx((HANDLE) handles[i][0], temp, sizeof(temp), "<not found>", "test"); Log("Path function Ex (test) [%d] returned : %s", i, temp); FoldersGetCustomPathEx((HANDLE) handles[i][0], temp, sizeof(temp), "<not found>", ""); Log("Path function Ex () [%d] returned : %s", i, temp); FoldersGetCustomPathEx((HANDLE) handles[i][0], temp, sizeof(temp), "<not found>", NULL); Log("Path function Ex (NULL) [%d] returned : %s", i, temp); } for (i = 0; i < MAX; i++) { FoldersGetCustomPathExW((HANDLE) handles[i][1], buffer, MAX_PATH, L"<not found>", L"test"); Log("Unicode path function Ex (test) [%d] returned : %S", i, buffer); FoldersGetCustomPathExW((HANDLE) handles[i][1], buffer, MAX_PATH, L"<not found>", L""); Log("Unicode path function Ex () [%d] returned : %S", i, buffer); FoldersGetCustomPathExW((HANDLE) handles[i][1], buffer, MAX_PATH, L"<not found>", NULL); Log("Unicode path function Ex (NULL) [%d] returned : %S", i, buffer); } return 0; }
static BOOL CALLBACK QQDetailsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); SetWindowLong(hwndDlg,GWL_USERDATA,lParam); FillCBList(hwndDlg,IDC_INFO_SEX,sex_names); FillCBList(hwndDlg,IDC_INFO_AREA,country_names); FillCBList(hwndDlg,IDC_INFO_PROVINCE,province_names); //FillCBList(IDC_INFO_CITY,city_names); FillCBList(hwndDlg,IDC_INFO_ANIMAL,zodiac_names); FillCBList(hwndDlg,IDC_INFO_HOROSCOPE,horoscope_names); FillCBList(hwndDlg,IDC_INFO_BLOOD,blood_types); return TRUE; case WM_DESTROY: if (LocalDetails_t* ldt=networkmap[hwndDlg]) { delete ldt; networkmap.erase(hwndDlg); } break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->idFrom) { case 0: switch (((LPNMHDR)lParam)->code) { case PSN_INFOCHANGED: if (LocalDetails_t* ldt=networkmap[(HANDLE)((LPPSHNOTIFY)lParam)->lParam]) { TCHAR szTemp[MAX_PATH]; HANDLE hContact = (HANDLE)((LPPSHNOTIFY)lParam)->lParam; LPSTR m_szModuleName=ldt->network->m_szModuleName; DBVARIANT dbv; HBITMAP hBMP; HINSTANCE hInst; char szPluginPath[MAX_PATH]={0}; // Contact int nTemp; // Overview // QQ ID _ultow(READC_D2(UNIQUEIDSETTING),szTemp,10); SetDlgItemText(hwndDlg,IDC_INFO_UID,szTemp); #define DETAILS_READTS(key,ctl) if (!READC_TS2(key,&dbv)) { SetDlgItemText(hwndDlg,ctl,dbv.ptszVal); DBFreeVariant(&dbv); } // Nickname DETAILS_READTS("Nick",IDC_INFO_NICKNAME); // Age _ultow(READC_W2("Age"),szTemp,10); SetDlgItemText(hwndDlg,IDC_INFO_AGE,szTemp); // Sex *szTemp=READC_B2("Gender"); SendDlgItemMessage(hwndDlg,IDC_INFO_SEX,CB_SETCURSEL,(WPARAM)(*szTemp=='M'?0:*szTemp=='F'?1:2),0); DETAILS_READTS("Country",IDC_INFO_AREA); DETAILS_READTS("Province",IDC_INFO_PROVINCE); DETAILS_READTS("City",IDC_INFO_CITY); // Contact DETAILS_READTS("Email",IDC_INFO_EMAIL); DETAILS_READTS("Address",IDC_INFO_ADDRESS); DETAILS_READTS("ZIP",IDC_INFO_ZIPCODE); DETAILS_READTS("Telephone",IDC_INFO_PHONE); DETAILS_READTS("Mobile",IDC_INFO_MOBILE); DETAILS_READTS("PersonalSignature",IDC_INFO_SIGNATURE); // Details DETAILS_READTS("FirstName",IDC_INFO_REALNAME); DETAILS_READTS("College",IDC_INFO_COLLEGE); DETAILS_READTS("Homepage",IDC_INFO_HOMEPAGE); DETAILS_READTS("About",IDC_INFO_DESCRIPTION); // Face nTemp=DBGetContactSettingWord(hContact,m_szModuleName,"Face",0); if (!nTemp) nTemp=101; else nTemp=nTemp/3 + 1; hBMP=NULL; if (!DBGetContactSetting(hContact,m_szModuleName,"UserHeadMD5",&dbv)) { // CallService(MS_UTILS_PATHTOABSOLUTE,(WPARAM)"QQ\\",(LPARAM)szPluginPath); FoldersGetCustomPath(ldt->network->m_avatarFolder,szPluginPath,MAX_PATH,"QQ"); strcat(szPluginPath,"\\"); strcat(szPluginPath,dbv.pszVal); strcat(szPluginPath,".bmp"); hBMP=(HBITMAP)CallService(MS_UTILS_LOADBITMAP,0,(LPARAM)szPluginPath); DBFreeVariant(&dbv); } CallService(MS_UTILS_PATHTOABSOLUTE,(WPARAM)"Plugins\\QQHeadImg.dll",(LPARAM)szPluginPath); if (!hBMP) { hInst=LoadLibraryA(szPluginPath); if (hInst) { hBMP=LoadBitmap(hInst,MAKEINTRESOURCE(100+nTemp)); SendDlgItemMessage(hwndDlg,IDC_INFO_FACE,STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)hBMP); } FreeLibrary(hInst); } if (hBMP) SendDlgItemMessage(hwndDlg,IDC_INFO_FACE,STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)hBMP); *strrchr(szPluginPath,'\\')=0; DETAILS_READTS("MirVer",IDC_INFO_CLIENTVER); DETAILS_READTS("Location",IDC_INFO_IP); #define DETAILS_READB(key,ctl) SendDlgItemMessage(hwndDlg,ctl,CB_SETCURSEL,(WPARAM)READC_B2(key),0); DETAILS_READB("Zodiac",IDC_INFO_ANIMAL); DETAILS_READB("Blood",IDC_INFO_BLOOD); DETAILS_READB("Horoscope",IDC_INFO_HOROSCOPE); // Level int suns, moons, stars; EvaUtil::calcSuns(READC_W2("Level"),&suns,&moons,&stars); swprintf(szTemp,TranslateT("%d (%d-%d-%d)"),READC_W2("Level"), suns,moons,stars); SetDlgItemText(hwndDlg,IDC_LEVEL,szTemp); swprintf(szTemp,TranslateT("%d Hours (%d Hours to Next Level)"),READC_D2("OnlineMins")/3600,READC_W2("HoursToLevelUp")); SetDlgItemText(hwndDlg,IDC_ONLINE,szTemp); //SetWindowLong(hwndDlg,GWL_USERDATA,(LONG)hContact); } break; } break; } break; #if 0 case WM_COMMAND: /*switch(LOWORD(wParam)) { case IDC_CHANGEDETAILS: { CallService(MS_UTILS_OPENURL, 1, (LPARAM)"http://www.icq.com/whitepages/user_details.php"); } break; case IDCANCEL: SendMessage(GetParent(hwndDlg),msg,wParam,lParam); break; }*/ break; #endif } return FALSE; }