From bd8a04455d9c991c15df2287e091abe4ba054efb Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 25 Nov 2012 12:54:45 +0000 Subject: typed stub for MS_PROTO_GETCONTACTBASEPROTO git-svn-id: http://svn.miranda-ng.org/main/trunk@2480 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/WhenWasIt/src/services.cpp | 326 +++++++++++++++---------------------- 1 file changed, 135 insertions(+), 191 deletions(-) (limited to 'plugins/WhenWasIt/src/services.cpp') diff --git a/plugins/WhenWasIt/src/services.cpp b/plugins/WhenWasIt/src/services.cpp index 76e9b36518..32241b33b9 100644 --- a/plugins/WhenWasIt/src/services.cpp +++ b/plugins/WhenWasIt/src/services.cpp @@ -37,26 +37,26 @@ int InitServices() { Log("%s", "Entering function " __FUNCTION__); - commonData.foreground = DBGetContactSettingDword(NULL, ModuleName, "Foreground", FOREGROUND_COLOR); - commonData.background = DBGetContactSettingDword(NULL, ModuleName, "Background", BACKGROUND_COLOR); - commonData.checkInterval = DBGetContactSettingWord(NULL, ModuleName, "CheckInterval", CHECK_INTERVAL); - commonData.daysInAdvance = DBGetContactSettingWord(NULL, ModuleName, "DaysInAdvance", DAYS_TO_NOTIFY); - commonData.daysAfter = DBGetContactSettingWord(NULL, ModuleName, "DaysAfter", DAYS_TO_NOTIFY_AFTER); - commonData.popupTimeout = DBGetContactSettingWord(NULL, ModuleName, "PopupTimeout", POPUP_TIMEOUT); - commonData.popupTimeoutToday = DBGetContactSettingWord(NULL, ModuleName, "PopupTimeoutToday", commonData.popupTimeout); - commonData.bUsePopups = DBGetContactSettingByte(NULL, ModuleName, "UsePopups", TRUE); - commonData.bUseDialog = DBGetContactSettingByte(NULL, ModuleName, "UseDialog", TRUE); - commonData.bIgnoreSubcontacts = DBGetContactSettingByte(NULL, ModuleName, "IgnoreSubcontacts", FALSE); - commonData.cShowAgeMode = DBGetContactSettingByte(NULL, ModuleName, "ShowCurrentAge", FALSE); - commonData.bNoBirthdaysPopup = DBGetContactSettingByte(NULL, ModuleName, "NoBirthdaysPopup", FALSE); - commonData.bOpenInBackground = DBGetContactSettingByte(NULL, ModuleName, "OpenInBackground", FALSE); - commonData.cSoundNearDays = DBGetContactSettingByte(NULL, ModuleName, "SoundNearDays", BIRTHDAY_NEAR_DEFAULT_DAYS); - commonData.cDefaultModule = DBGetContactSettingByte(NULL, ModuleName, "DefaultModule", 0); - commonData.lPopupClick = DBGetContactSettingByte(NULL, ModuleName, "PopupLeftClick", 2); - commonData.rPopupClick = DBGetContactSettingByte(NULL, ModuleName, "PopupRightClick", 1); - commonData.bOncePerDay = DBGetContactSettingByte(NULL, ModuleName, "OncePerDay", 0); - commonData.cDlgTimeout = DBGetContactSettingWord(NULL, ModuleName, "DlgTimeout", POPUP_TIMEOUT); - commonData.notifyFor = DBGetContactSettingByte(NULL, ModuleName, "NotifyFor", 0); + commonData.foreground = db_get_dw(NULL, ModuleName, "Foreground", FOREGROUND_COLOR); + commonData.background = db_get_dw(NULL, ModuleName, "Background", BACKGROUND_COLOR); + commonData.checkInterval = db_get_w(NULL, ModuleName, "CheckInterval", CHECK_INTERVAL); + commonData.daysInAdvance = db_get_w(NULL, ModuleName, "DaysInAdvance", DAYS_TO_NOTIFY); + commonData.daysAfter = db_get_w(NULL, ModuleName, "DaysAfter", DAYS_TO_NOTIFY_AFTER); + commonData.popupTimeout = db_get_w(NULL, ModuleName, "PopupTimeout", POPUP_TIMEOUT); + commonData.popupTimeoutToday = db_get_w(NULL, ModuleName, "PopupTimeoutToday", commonData.popupTimeout); + commonData.bUsePopups = db_get_b(NULL, ModuleName, "UsePopups", TRUE); + commonData.bUseDialog = db_get_b(NULL, ModuleName, "UseDialog", TRUE); + commonData.bIgnoreSubcontacts = db_get_b(NULL, ModuleName, "IgnoreSubcontacts", FALSE); + commonData.cShowAgeMode = db_get_b(NULL, ModuleName, "ShowCurrentAge", FALSE); + commonData.bNoBirthdaysPopup = db_get_b(NULL, ModuleName, "NoBirthdaysPopup", FALSE); + commonData.bOpenInBackground = db_get_b(NULL, ModuleName, "OpenInBackground", FALSE); + commonData.cSoundNearDays = db_get_b(NULL, ModuleName, "SoundNearDays", BIRTHDAY_NEAR_DEFAULT_DAYS); + commonData.cDefaultModule = db_get_b(NULL, ModuleName, "DefaultModule", 0); + commonData.lPopupClick = db_get_b(NULL, ModuleName, "PopupLeftClick", 2); + commonData.rPopupClick = db_get_b(NULL, ModuleName, "PopupRightClick", 1); + commonData.bOncePerDay = db_get_b(NULL, ModuleName, "OncePerDay", 0); + commonData.cDlgTimeout = db_get_w(NULL, ModuleName, "DlgTimeout", POPUP_TIMEOUT); + commonData.notifyFor = db_get_b(NULL, ModuleName, "NotifyFor", 0); hsCheckBirthdays = CreateServiceFunction(MS_WWI_CHECK_BIRTHDAYS, CheckBirthdaysService); hsShowList = CreateServiceFunction(MS_WWI_LIST_SHOW, ShowListService); @@ -94,9 +94,8 @@ int NotifyContactBirthday(HANDLE hContact, time_t now, int daysInAdvance) GetContactDOB(hContact, year, month, day); int daysToBirthday = DaysToBirthday(now, year, month, day); if (daysInAdvance >= daysToBirthday) - { - return daysToBirthday; - } + return daysToBirthday; + return -1; } @@ -120,15 +119,15 @@ int NotifyMissedContactBirthday(HANDLE hContact, time_t now, int daysAfter) //the timer functions call this service with lParam = 1 //lParam = 0 - force check, lParam - 1 do not force it. + INT_PTR CheckBirthdaysService(WPARAM wParam, LPARAM lParam) { bBirthdayFound = 0; //no birthdays have been found in the given interval - //int bNoBirthdaysPopup = DBGetContactSettingByte(NULL, ModuleName, "NoBirthdaysPopup", FALSE); SYSTEMTIME today; GetLocalTime(&today); - DWORD lastChecked = DBGetContactSettingDword(NULL, ModuleName, "LastChecked", 0); //get last checked date + DWORD lastChecked = db_get_dw(NULL, ModuleName, "LastChecked", 0); //get last checked date int lcDay = LOBYTE(LOWORD(lastChecked)); int lcMonth = HIBYTE(LOWORD(lastChecked)); int lcYear = HIWORD(lastChecked); @@ -139,42 +138,32 @@ INT_PTR CheckBirthdaysService(WPARAM wParam, LPARAM lParam) savedDaysAfter = commonData.daysAfter; //save value if ((daysAfter > commonData.daysAfter) && (commonData.daysAfter > 0))//check for passed birthdays - { commonData.daysAfter = daysAfter; //bigger values of the two - } if ((lParam) && (commonData.bOncePerDay)) //if force check then we don't take OncePerDay into account - { - if ((lcDay == today.wDay) && (lcMonth == today.wMonth) && (lcYear == today.wYear)) - { + if (lcDay == today.wDay && lcMonth == today.wMonth && lcYear == today.wYear) return 0; //already checked today - } - } bShouldCheckBirthdays = 1; RefreshAllContactListIcons(); if ((!bBirthdayFound) && (commonData.bNoBirthdaysPopup)) - { PopupNotifyNoBirthdays(); - } + bShouldCheckBirthdays = 0; - + commonData.daysAfter = savedDaysAfter; //restore previous value if (lParam) //if not forced - i.e. timer check - { db_set_dw(NULL, ModuleName, "LastChecked", MAKELONG(MAKEWORD(today.wDay, today.wMonth), today.wYear)); //write the value in DB so we don't check again today - } return 0; } INT_PTR ShowListService(WPARAM wParam, LPARAM lParam) { - if (!hBirthdaysDlg) - { - hBirthdaysDlg = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_BIRTHDAYS), NULL, DlgProcBirthdays); - } + if ( !hBirthdaysDlg) + hBirthdaysDlg = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_BIRTHDAYS), NULL, DlgProcBirthdays); + ShowWindow(hBirthdaysDlg, SW_SHOW); return 0; } @@ -182,18 +171,16 @@ INT_PTR ShowListService(WPARAM wParam, LPARAM lParam) INT_PTR AddBirthdayService(WPARAM wParam, LPARAM lParam) { HWND hWnd = WindowList_Find(hAddBirthdayWndsList, (HANDLE) wParam); - if (!hWnd) - { - hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_ADD_BIRTHDAY), NULL, DlgProcAddBirthday); - if (hWnd == NULL) - { - TCHAR buffer[1024]; - _stprintf(buffer, _T("Error #%d while trying to create add birthday dialog"), GetLastError()); - MessageBox(0, buffer, _T("Error"), MB_OK); - } - WindowList_Add(hAddBirthdayWndsList, hWnd, (HANDLE) wParam); - SetWindowLongPtr(hWnd, GWLP_USERDATA, wParam); + if ( !hWnd) { + hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_ADD_BIRTHDAY), NULL, DlgProcAddBirthday); + if (hWnd == NULL) { + TCHAR buffer[1024]; + _stprintf(buffer, _T("Error #%d while trying to create add birthday dialog"), GetLastError()); + MessageBox(0, buffer, _T("Error"), MB_OK); } + WindowList_Add(hAddBirthdayWndsList, hWnd, (HANDLE) wParam); + SetWindowLongPtr(hWnd, GWLP_USERDATA, wParam); + } return ShowWindow(hWnd, SW_SHOW); } @@ -205,55 +192,39 @@ void ShowPopupMessage(TCHAR *title, TCHAR *message, HICON icon) _tcscpy(pd.lptzText, message); pd.colorText = commonData.foreground; pd.colorBack = commonData.background; - PUAddPopUpT(&pd); } DWORD WINAPI RefreshUserDetailsWorkerThread(LPVOID param) { - //MessageBox(0, "Inside worker thread", "Info", MB_OK); - //POPUPDATA pd = {0}; - //pd.lchIcon = hiRefreshUserDetails; - //strcpy(pd.lpzContactName, Translate("WhenWasIt")); - //strcpy(pd.lpzText, Translate("Starting to refresh user details")); - //PUAddPopUp(&pd); ShowPopupMessage(TranslateT("WhenWasIt"), TranslateT("Starting to refresh user details"), hiRefreshUserDetails); - int delay = DBGetContactSettingWord(NULL, ModuleName, "UpdateDelay", REFRESH_DETAILS_DELAY); - HANDLE hContact = db_find_first(); + int delay = db_get_w(NULL, ModuleName, "UpdateDelay", REFRESH_DETAILS_DELAY); int res; - while (hContact != NULL) - { - res = CallContactService(hContact, PSS_GETINFO, 0, 0); - hContact = db_find_next(hContact); - if (hContact) - { - Sleep(delay); //sleep for a few seconds between requests - } - } - //strcpy(pd.lpzText, Translate("Done refreshing user details")); - //PUAddPopUp(&pd); + + HANDLE hContact = db_find_first(); + while (hContact != NULL) { + res = CallContactService(hContact, PSS_GETINFO, 0, 0); + hContact = db_find_next(hContact); + if (hContact) + Sleep(delay); //sleep for a few seconds between requests + } ShowPopupMessage(TranslateT("WhenWasIt"), TranslateT("Done refreshing user details"), hiRefreshUserDetails); - //MessageBox(0, "Leaving worker thread", "Info", MB_OK); return 0; } INT_PTR RefreshUserDetailsService(WPARAM wParam, LPARAM lParam) { DWORD threadID; - //MessageBox(0, "Before CreateThread()", "Info", MB_OK); HANDLE result = CreateThread(NULL, 0, RefreshUserDetailsWorkerThread, NULL, 0, &threadID); - //MessageBox(0, "After CreateThread()", "Info", MB_OK); - if (!result) - { - TCHAR buffer[1024]; - _stprintf(buffer, _T("Could not create worker thread. Error#%d - threadID %d"), GetLastError(), threadID); - MessageBox(0, buffer, _T("Error"), MB_OK | MB_ICONERROR); + if ( !result) { + TCHAR buffer[1024]; + _stprintf(buffer, _T("Could not create worker thread. Error#%d - threadID %d"), GetLastError(), threadID); + MessageBox(0, buffer, _T("Error"), MB_OK | MB_ICONERROR); } + if ((result != NULL) && (result != INVALID_HANDLE_VALUE)) - { CloseHandle(result); - } - + return 0; } @@ -270,16 +241,15 @@ INT_PTR ImportBirthdaysService(WPARAM wParam, LPARAM lParam) of.nMaxFile = 1024; of.lpstrTitle = TranslateT("Please select a file to import birthdays from ..."); of.Flags = OFN_FILEMUSTEXIST; - - if (GetOpenFileName(&of)) - { - TCHAR buffer[2048]; - mir_sntprintf(buffer, SIZEOF(buffer), TranslateT("Importing birthdays from file: %s"), fileName); - ShowPopupMessage(TranslateT("WhenWasIt"), buffer, hiImportBirthdays); - DoImport(fileName); - ShowPopupMessage(TranslateT("WhenWasIt"), TranslateT("Done importing birthdays"), hiImportBirthdays); - } - + + if ( GetOpenFileName(&of)) { + TCHAR buffer[2048]; + mir_sntprintf(buffer, SIZEOF(buffer), TranslateT("Importing birthdays from file: %s"), fileName); + ShowPopupMessage(TranslateT("WhenWasIt"), buffer, hiImportBirthdays); + DoImport(fileName); + ShowPopupMessage(TranslateT("WhenWasIt"), TranslateT("Done importing birthdays"), hiImportBirthdays); + } + return 0; } @@ -295,126 +265,100 @@ INT_PTR ExportBirthdaysService(WPARAM wParam, LPARAM lParam) of.lpstrFile = fileName; of.nMaxFile = 1024; of.lpstrTitle = TranslateT("Please select a file to export birthdays to ..."); - //of.Flags = OFN_ENABLESIZING | OFN_EXPLORER; - - if (GetSaveFileName(&of)) - { - TCHAR buffer[2048]; - TCHAR *fn = _tcsrchr(fileName, _T('\\')) + 1; - if (!_tcschr(fn, _T('.'))) - { - _tcscat(fileName, _T(BIRTHDAY_EXTENSION)); - } - _stprintf(buffer, TranslateT("Exporting birthdays to file: %s"), fileName); - ShowPopupMessage(TranslateT("WhenWasIt"), buffer, hiExportBirthdays); - DoExport(fileName); - ShowPopupMessage(TranslateT("WhenWasIt"), TranslateT("Done exporting birthdays"), hiExportBirthdays); - } - + + if ( GetSaveFileName(&of)) { + TCHAR buffer[2048]; + TCHAR *fn = _tcsrchr(fileName, _T('\\')) + 1; + if ( !_tcschr(fn, _T('.'))) + _tcscat(fileName, _T(BIRTHDAY_EXTENSION)); + + _stprintf(buffer, TranslateT("Exporting birthdays to file: %s"), fileName); + ShowPopupMessage(TranslateT("WhenWasIt"), buffer, hiExportBirthdays); + DoExport(fileName); + ShowPopupMessage(TranslateT("WhenWasIt"), TranslateT("Done exporting birthdays"), hiExportBirthdays); + } + return 0; } int DoImport(TCHAR *fileName) { FILE *fin = _tfopen(fileName, _T("rt")); - if (!fin) - { - MessageBox(0, _T("Could not open file to import birthdays"), _T("Error"), MB_OK | MB_ICONERROR); - return 1; - } + if ( !fin) { + MessageBox(0, _T("Could not open file to import birthdays"), _T("Error"), MB_OK | MB_ICONERROR); + return 1; + } - HANDLE hContact; - int year, month, day; - TCHAR *szHandle; - TCHAR *szProto; - const int maxSize = 4096; - TCHAR buffer[maxSize]; - int tmp, tmp2; - int mode = commonData.cDefaultModule; //DBGetContactSettingByte(NULL, ModuleName, "DefaultModule", 0); - TCHAR *delAccount, *delProto; + int mode = commonData.cDefaultModule; - while (!feof(fin)) - { - _fgetts(buffer, maxSize, fin); - if (buffer[0] == _T(COMMENT_CHAR)) - { - continue; - } + while (!feof(fin)) { + TCHAR buffer[4096]; + _fgetts(buffer, SIZEOF(buffer), fin); + if (buffer[0] == _T(COMMENT_CHAR)) + continue; + + TCHAR *delAccount = _tcsstr(buffer, _T(" : ")); + if (delAccount) { + int tmp = delAccount[0]; + delAccount[0] = _T('\0'); + TCHAR *delProto = _tcsrchr(buffer, _T('@')); + if (delProto) { + int tmp2 = delProto[0]; + delProto[0] = _T('\0'); + + TCHAR *szHandle = buffer; + TCHAR *szProto = delProto + 1; + HANDLE hContact = GetContactFromID(szHandle, szProto); + if (hContact) { + delProto[0] = tmp; + delAccount[0] = tmp; - delAccount = _tcsstr(buffer, _T(" : ")); - if (delAccount) - { - tmp = delAccount[0]; - delAccount[0] = _T('\0'); - delProto = _tcsrchr(buffer, _T('@')); - if (delProto) - { - tmp2 = delProto[0]; - delProto[0] = _T('\0'); - - szHandle = buffer; - szProto = delProto + 1; - hContact = GetContactFromID(szHandle, szProto); - if (hContact) - { - delProto[0] = tmp; - delAccount[0] = tmp; - _stscanf(delAccount, _T(" : %02d/%02d/%04d"), &day, &month, &year); - SaveBirthday(hContact, year, month, day, mode); - } - else{ - TCHAR tmp[2048]; - _stprintf(tmp, TranslateT(NOTFOUND_FORMAT), szHandle, szProto); - ShowPopupMessage(TranslateT("Warning"), tmp, hiImportBirthdays); - } - } + int year, month, day; + _stscanf(delAccount, _T(" : %02d/%02d/%04d"), &day, &month, &year); + SaveBirthday(hContact, year, month, day, mode); + } + else { + TCHAR tmp[2048]; + _stprintf(tmp, TranslateT(NOTFOUND_FORMAT), szHandle, szProto); + ShowPopupMessage(TranslateT("Warning"), tmp, hiImportBirthdays); } + } } - - fclose(fin); + } + fclose(fin); return 0; } int DoExport(TCHAR *fileName) { FILE *fout = _tfopen(fileName, _T("wt")); - if (!fout) - { - MessageBox(0, _T("Could not open file to export birthdays"), _T("Error"), MB_OK | MB_ICONERROR); - return 1; - } + if ( !fout) { + MessageBox(0, _T("Could not open file to export birthdays"), _T("Error"), MB_OK | MB_ICONERROR); + return 1; + } _ftprintf(fout, _T("%c%s"), _T(COMMENT_CHAR), _T("Please do not edit this file by hand. Use the export function of WhenWasIt plugin.\n")); _ftprintf(fout, _T("%c%s"), _T(COMMENT_CHAR), _T("Warning! Please do not mix Unicode and Ansi exported birthday files. You should use the same version (Ansi/Unicode) of WhenWasIt that was used to export the info.\n")); - _ftprintf(fout, _T("%c%s"), _T(COMMENT_CHAR), _T("This file was exported with a Unicode version of WhenWasIt. Please only use a Unicode version of the plugin to import the birthdays.\n")); - + HANDLE hContact = db_find_first(); - int year, month, day; - TCHAR *szHandle; - char szProto[256]; - - while (hContact) - { - GetContactDOB(hContact, year, month, day); - if (IsDOBValid(year, month, day)) - { - szProto[0] = '\0'; - GetContactProtocol(hContact, szProto, sizeof(szProto)); - szHandle = GetContactID(hContact, szProto); - - if ((szHandle) && (strlen(szProto) > 0)) - { - _ftprintf(fout, _T(BIRTHDAYS_EXPORT_FORMAT), szHandle, szProto, day, month, year); - } - - if (szHandle) free(szHandle); - } - - hContact = db_find_next(hContact); + while (hContact) { + int year, month, day; + GetContactDOB(hContact, year, month, day); + if ( IsDOBValid(year, month, day)) { + char *szProto = GetContactProto(hContact); + TCHAR *szHandle = GetContactID(hContact, szProto); + + if ((szHandle) && (strlen(szProto) > 0)) + _ftprintf(fout, _T(BIRTHDAYS_EXPORT_FORMAT), szHandle, szProto, day, month, year); + + if (szHandle) + free(szHandle); } - + + hContact = db_find_next(hContact); + } + fclose(fout); - return 0; -} \ No newline at end of file +} -- cgit v1.2.3