// Copyright © 2010 sss // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "commonheaders.h" TCHAR* __stdcall UniGetContactSettingUtf(HANDLE hContact, const char *szModule,const char* szSetting, TCHAR* szDef) { DBVARIANT dbv = {DBVT_DELETED}; TCHAR* szRes; if (DBGetContactSettingTString(hContact, szModule, szSetting, &dbv)) return _tcsdup(szDef); if(dbv.pszVal) szRes = _tcsdup(dbv.ptszVal); DBFreeVariant(&dbv); return szRes; } char *date() { static char d[11]; char *tmp = __DATE__, m[4], mn[3] = "01"; m[0]=tmp[0]; m[1]=tmp[1]; m[2]=tmp[2]; if(strstr(m,"Jan")) strcpy(mn,"01"); else if(strstr(m,"Feb")) strcpy(mn,"02"); else if(strstr(m,"Mar")) strcpy(mn,"03"); else if(strstr(m,"Apr")) strcpy(mn,"04"); else if(strstr(m,"May")) strcpy(mn,"05"); else if(strstr(m,"Jun")) strcpy(mn,"06"); else if(strstr(m,"Jul")) strcpy(mn,"07"); else if(strstr(m,"Aug")) strcpy(mn,"08"); else if(strstr(m,"Sep")) strcpy(mn,"09"); else if(strstr(m,"Oct")) strcpy(mn,"10"); else if(strstr(m,"Nov")) strcpy(mn,"11"); else if(strstr(m,"Dec")) strcpy(mn,"12"); d[0]=tmp[7]; d[1]=tmp[8]; d[2]=tmp[9]; d[3]=tmp[10]; d[4]='.'; d[5]=mn[0]; d[6]=mn[1]; d[7]='.'; if (tmp[4] == ' ') d[8] = '0'; else d[8]=tmp[4]; d[9]=tmp[5]; return d; } void GetFilePath(TCHAR *WindowTittle, char *szSetting, TCHAR *szExt, TCHAR *szExtDesc) { TCHAR str[MAX_PATH+2] = {0}; OPENFILENAME ofn={0}; TCHAR filter[512], *pfilter; ofn.lStructSize=CDSIZEOF_STRUCT(OPENFILENAME,lpTemplateName); ofn.Flags=OFN_EXPLORER; ofn.lpstrTitle=TranslateW(WindowTittle); _tcscpy(filter,TranslateW(szExtDesc)); pfilter=filter+_tcslen(filter)+1; _tcscpy(pfilter, szExt); pfilter[_tcslen(pfilter)+1] = '\0'; pfilter[_tcslen(pfilter)+2] = '\0'; ofn.lpstrFilter=filter; _tcscpy(str, UniGetContactSettingUtf(0, szModuleName, szSetting, _T(""))); if(_tcslen(str)< 2) str[0] = '\0'; ofn.lpstrFile=str; ofn.nMaxFile=_MAX_PATH; ofn.nMaxFileTitle=MAX_PATH; if(!GetOpenFileName(&ofn)) return; DBWriteContactSettingTString(0, szModuleName, szSetting, str); } TCHAR *GetFilePath(TCHAR *WindowTittle, TCHAR *szExt, TCHAR *szExtDesc) { TCHAR *str = new TCHAR [MAX_PATH+2]; OPENFILENAME ofn={0}; TCHAR filter[512], *pfilter; ofn.lStructSize=CDSIZEOF_STRUCT(OPENFILENAME,lpTemplateName); ofn.Flags=OFN_EXPLORER; ofn.lpstrTitle=TranslateW(WindowTittle); _tcscpy(filter,TranslateW(szExtDesc)); pfilter=filter+_tcslen(filter)+1; _tcscpy(pfilter, szExt); pfilter[_tcslen(pfilter)+1] = '\0'; pfilter[_tcslen(pfilter)+2] = '\0'; ofn.lpstrFilter=filter; _tcscpy(str, _T("")); if(_tcslen(str)< 2) str[0] = '\0'; ofn.lpstrFile=str; ofn.nMaxFile=_MAX_PATH; ofn.nMaxFileTitle=MAX_PATH; if(!GetOpenFileName(&ofn)) return _T(""); return str; } void GetFolderPath(TCHAR *WindowTittle, char *szSetting) { BROWSEINFO pbi = {0}; pbi.lpszTitle = WindowTittle; pbi.ulFlags = BIF_EDITBOX|BIF_NEWDIALOGSTYLE|BIF_SHAREABLE; LPITEMIDLIST pidl = SHBrowseForFolder(&pbi); if (pidl != 0) { TCHAR path[MAX_PATH]; if (SHGetPathFromIDList(pidl, path)) { DBWriteContactSettingTString(NULL, szModuleName, "szHomePath", path); } IMalloc * imalloc = 0; if (SUCCEEDED(SHGetMalloc(&imalloc))) { imalloc->Free(pidl); imalloc->Release(); } } } int LoadKey(WPARAM w, LPARAM l) { void ShowLoadPublicKeyDialog(); extern map user_data; extern int item_num; item_num = 0; //black magic here user_data[1] = (HANDLE)w; ShowLoadPublicKeyDialog(); return 0; } extern HANDLE hLoadPublicKey, hToggleEncryption; int ToggleEncryption(WPARAM w, LPARAM l) { HANDLE hContact = (HANDLE)w; BYTE enc = DBGetContactSettingByte(hContact, szModuleName, "GPGEncryption", 0); enc?DBWriteContactSettingByte(hContact, szModuleName, "GPGEncryption", 0):DBWriteContactSettingByte(hContact, szModuleName, "GPGEncryption", 1); enc?enc = 0:enc = 1; CLISTMENUITEM mi = {0}; mi.cbSize=sizeof(mi); mi.flags = CMIM_NAME; enc?mi.pszName="Turn off GPG encryption":mi.pszName="Turn on GPG encryption"; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hToggleEncryption, (LPARAM)&mi); return 0; } int OnPreBuildContactMenu(WPARAM w, LPARAM l) { HANDLE hContact = (HANDLE)w; CLISTMENUITEM mi = {0}; mi.cbSize=sizeof(mi); mi.flags = CMIM_NAME; DBGetContactSettingByte(hContact, szModuleName, "GPGEncryption", 0)?mi.pszName="Turn on GPG encryption":mi.pszName="Turn off GPG encryption"; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hToggleEncryption, (LPARAM)&mi); return 0; }