void saveSettingsConnections(struct CONNECTION *connHead) { char buff[128]; int i=0; struct CONNECTION *tmp=connHead; while(tmp!=NULL) { mir_snprintf(buff,sizeof(buff), "%dFilterIntIp", i); db_set_ts(NULL, PLUGINNAME, buff, tmp->strIntIp); mir_snprintf(buff,sizeof(buff), "%dFilterExtIp", i); db_set_ts(NULL, PLUGINNAME, buff, tmp->strExtIp); mir_snprintf(buff,sizeof(buff), "%dFilterPName", i); db_set_ws(NULL, PLUGINNAME, buff, tmp->PName); mir_snprintf(buff,sizeof(buff), "%dFilterIntPort", i); db_set_dw(NULL, PLUGINNAME, buff, tmp->intIntPort); mir_snprintf(buff,sizeof(buff), "%dFilterExtPort", i); db_set_dw(NULL, PLUGINNAME, buff, tmp->intExtPort); mir_snprintf(buff,sizeof(buff), "%dFilterAction", i); db_set_dw(NULL, PLUGINNAME, buff, tmp->Pid); i++; tmp=tmp->next; } settingFiltersCount=i; db_set_dw(NULL, PLUGINNAME, "FiltersCount", settingFiltersCount ); }
void write_ping_address(PINGADDRESS &i) { char buff[16]; mir_snprintf(buff, "PING_DEST_%d", i.index); if (i.item_id == 0) { i.item_id = NextID++; db_set_dw(0, PLUG, "NextID", NextID); } db_set_dw(0, buff, "Id", i.item_id); db_set_ts(0, buff, "Address", i.pszName); db_set_ts(0, buff, "Label", i.pszLabel); db_set_w(0, buff, "Status", i.status); db_set_dw(0, buff, "Port", i.port); db_set_s(0, buff, "Proto", i.pszProto); if (mir_tstrlen(i.pszCommand)) db_set_ts(0, buff, "Command", i.pszCommand); else db_unset(0, buff, "Command"); if (mir_tstrlen(i.pszParams)) db_set_ts(0, buff, "CommandParams", i.pszParams); else db_unset(0, buff, "CommandParams"); db_set_w(0, buff, "SetStatus", i.set_status); db_set_w(0, buff, "GetStatus", i.get_status); db_set_w(0, buff, "Index", i.index); }
extern "C" int __declspec(dllexport) Load(void) { mir_getLP(&pluginInfo); mir_getCLI(); HookEvent(ME_SYSTEM_MODULESLOADED, MirandaLoaded); Icon_Register(g_hInstance, MOD_NAME, iconList, _countof(iconList), "nas"); InitCommonControls(); InitOptions(); // must be called before we hook CallService if (db_get_b(NULL, MOD_NAME, DB_SETTINGSVER, 0) < 1) { // change all %nas_message% variables to %extratext% if it wasn't done before TCString Str = db_get_s(NULL, MOD_NAME, "PopupsFormat", _T("")); if (Str.GetLen()) db_set_ts(NULL, MOD_NAME, "PopupsFormat", Str.Replace(_T("nas_message"), _T("extratext"))); Str = db_get_s(NULL, MOD_NAME, "ReplyPrefix", _T("")); if (Str.GetLen()) db_set_ts(NULL, MOD_NAME, "ReplyPrefix", Str.Replace(_T("nas_message"), _T("extratext"))); } if (db_get_b(NULL, MOD_NAME, DB_SETTINGSVER, 0) < 2) { // disable autoreply for not-on-list contacts, as such contact may be a spam bot db_set_b(NULL, MOD_NAME, ContactStatusToDBSetting(0, DB_ENABLEREPLY, 0, INVALID_CONTACT_ID), 0); db_set_b(NULL, MOD_NAME, DB_SETTINGSVER, 2); } return 0; }
bool CQuotesProviderGoogle::WatchForRate(const CRateInfo& ri, bool bWatch) { TContracts::const_iterator i = std::find_if(m_aContacts.begin(), m_aContacts.end(), boost::bind(is_rate_watched, _1, ri.m_from, ri.m_to)); if ((true == bWatch) && (i == m_aContacts.end())) { tstring sName = make_contact_name(ri.m_from.GetSymbol(), ri.m_to.GetSymbol()); MCONTACT hContact = CreateNewContact(sName); if (hContact) { db_set_ts(hContact, QUOTES_PROTOCOL_NAME, DB_STR_FROM_ID, ri.m_from.GetID().c_str()); db_set_ts(hContact, QUOTES_PROTOCOL_NAME, DB_STR_TO_ID, ri.m_to.GetID().c_str()); if (false == ri.m_from.GetName().empty()) { db_set_ts(hContact, QUOTES_PROTOCOL_NAME, DB_STR_FROM_DESCRIPTION, ri.m_from.GetName().c_str()); } if (false == ri.m_to.GetName().empty()) { db_set_ts(hContact, QUOTES_PROTOCOL_NAME, DB_STR_TO_DESCRIPTION, ri.m_to.GetName().c_str()); } return true; } } else if ((false == bWatch) && (i != m_aContacts.end())) { MCONTACT hContact = *i; {// for CCritSection mir_cslock lck(m_cs); m_aContacts.erase(i); } CallService(MS_DB_CONTACT_DELETE, WPARAM(hContact), 0); return true; } return false; }
int CreateGroup(const TCHAR *group, MCONTACT hContact) { if (group == NULL) return 0; size_t cbName = mir_tstrlen(group); TCHAR *tszGrpName = (TCHAR*)_alloca((cbName + 2)*sizeof(TCHAR)); tszGrpName[0] = 1 | GROUPF_EXPANDED; mir_tstrcpy(tszGrpName + 1, group); // Check for duplicate & find unused id char groupIdStr[11]; for (int groupId = 0;; groupId++) { itoa(groupId, groupIdStr, 10); ptrT tszDbGroup(db_get_tsa(NULL, "CListGroups", groupIdStr)); if (tszDbGroup == NULL) break; if (!mir_tstrcmp((TCHAR*)tszDbGroup+1, tszGrpName+1)) { if (hContact) db_set_ts(hContact, "CList", "Group", tszGrpName + 1); else AddMessage(LPGENT("Skipping duplicate group %s."), tszGrpName + 1); return 0; } } db_set_ts(NULL, "CListGroups", groupIdStr, tszGrpName); if (hContact) db_set_ts(hContact, "CList", "Group", tszGrpName + 1); return 1; }
int SaveOptions(void) { TCHAR prof_dir[MAX_PATH]; db_set_b(0, "AutoBackups", "BackupType", (BYTE)options.backup_types); if (options.period < 1) options.period = 1; db_set_w(0, "AutoBackups", "Period", (WORD)options.period); db_set_b(0, "AutoBackups", "PeriodType", (BYTE)options.period_type); mir_sntprintf(prof_dir, _countof(prof_dir), _T("%s\\"), profilePath); size_t prof_len = mir_tstrlen(prof_dir); size_t opt_len = mir_tstrlen(options.folder); if (opt_len > prof_len && _tcsncmp(options.folder, prof_dir, prof_len) == 0) { db_set_ts(0, "AutoBackups", "Folder", (options.folder + prof_len)); } else db_set_ts(0, "AutoBackups", "Folder", options.folder); TCHAR *tmp = Utils_ReplaceVarsT(options.folder); if (mir_tstrlen(tmp) < 2 || tmp[1] != ':') { _tcsncpy_s(prof_dir, options.folder, _TRUNCATE); mir_sntprintf(options.folder, _countof(options.folder), _T("%s\\%s"), profilePath, prof_dir); } mir_free(tmp); db_set_w(0, "AutoBackups", "NumBackups", options.num_backups); db_set_b(0, "AutoBackups", "NoProgress", (BYTE)options.disable_progress); db_set_b(0, "AutoBackups", "NoPopups", (BYTE)options.disable_popups); db_set_b(0, "AutoBackups", "UseZip", (BYTE)options.use_zip); SetBackupTimer(); return 0; }
void CNudgeElement::Save(void) { char SectionName[512]; mir_snprintf(SectionName, _countof(SectionName), "%s-openMessageWindow", ProtocolName); db_set_b(NULL, MODULENAME, SectionName, this->openMessageWindow); mir_snprintf(SectionName, _countof(SectionName), "%s-openContactList", ProtocolName); db_set_b(NULL, MODULENAME, SectionName, this->openContactList); mir_snprintf(SectionName, _countof(SectionName), "%s-useIgnore", ProtocolName); db_set_b(NULL, MODULENAME, SectionName, this->useIgnoreSettings); mir_snprintf(SectionName, _countof(SectionName), "%s-showStatus", ProtocolName); db_set_b(NULL, MODULENAME, SectionName, this->showStatus); mir_snprintf(SectionName, _countof(SectionName), "%s-showPopup", ProtocolName); db_set_b(NULL, MODULENAME, SectionName, this->showPopup); mir_snprintf(SectionName, _countof(SectionName), "%s-shakeClist", ProtocolName); db_set_b(NULL, MODULENAME, SectionName, this->shakeClist); mir_snprintf(SectionName, _countof(SectionName), "%s-shakeChat", ProtocolName); db_set_b(NULL, MODULENAME, SectionName, this->shakeChat); mir_snprintf(SectionName, _countof(SectionName), "%s-enabled", ProtocolName); db_set_b(NULL, MODULENAME, SectionName, this->enabled); mir_snprintf(SectionName, _countof(SectionName), "%s-autoResend", ProtocolName); db_set_b(NULL, MODULENAME, SectionName, this->autoResend); mir_snprintf(SectionName, _countof(SectionName), "%s-statusFlags", ProtocolName); db_set_dw(NULL, MODULENAME, SectionName, this->statusFlags); mir_snprintf(SectionName, _countof(SectionName), "%s-recText", ProtocolName); db_set_ts(NULL, MODULENAME, SectionName, this->recText); mir_snprintf(SectionName, _countof(SectionName), "%s-senText", ProtocolName); db_set_ts(NULL, MODULENAME, SectionName, this->senText); }
static INT_PTR avSetAvatar(MCONTACT hContact, TCHAR *tszPath) { TCHAR FileName[MAX_PATH]; TCHAR *szFinalName; BYTE locking_request; if (hContact == NULL || fei == NULL) return 0; int is_locked = db_get_b(hContact, "ContactPhoto", "Locked", 0); if (tszPath == NULL) { OPENFILENAME ofn = { 0 }; TCHAR filter[256]; filter[0] = '\0'; CallService(MS_UTILS_GETBITMAPFILTERSTRINGST, SIZEOF(filter), (LPARAM)filter); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = 0; ofn.lpstrFile = FileName; ofn.lpstrFilter = filter; ofn.nMaxFile = MAX_PATH; ofn.nMaxFileTitle = MAX_PATH; ofn.Flags = OFN_FILEMUSTEXIST | OFN_ENABLETEMPLATE | OFN_EXPLORER | OFN_ENABLESIZING | OFN_ENABLEHOOK; ofn.lpstrInitialDir = _T("."); *FileName = '\0'; ofn.lpstrDefExt = _T(""); ofn.hInstance = g_hInst; ofn.lpTemplateName = MAKEINTRESOURCE(IDD_OPENSUBCLASS); ofn.lpfnHook = OpenFileSubclass; locking_request = is_locked; ofn.lCustData = (LPARAM)&locking_request; if (!GetOpenFileName(&ofn)) return 0; szFinalName = FileName; is_locked = locking_request ? 1 : is_locked; } else szFinalName = tszPath; // filename is now set, check it and perform all needed action if (_taccess(szFinalName, 4) == -1) return 0; // file exists... TCHAR szBackupName[MAX_PATH]; PathToRelativeT(szFinalName, szBackupName, g_szDataPath); db_set_ts(hContact, "ContactPhoto", "Backup", szBackupName); db_set_b(hContact, "ContactPhoto", "Locked", is_locked); db_set_ts(hContact, "ContactPhoto", "File", szFinalName); MakePathRelative(hContact, szFinalName); // Fix cache ChangeAvatar(hContact, true); return 0; }
HANDLE AddToListByName(const CString& sName, WPARAM flags, LPCTSTR about, bool bInteractive, bool bGroup) { ip addr = INADDR_NONE; CString sShortName( sName ); if ( ! bGroup ) { // Попытка получить IP из имени if ( addr == INADDR_NONE ) addr = ResolveToIP( sShortName ); // Поиск NetBIOS-имени if ( addr == INADDR_NONE ) addr = pluginNetBIOS.FindNameIP( sName ); // Неизвестный контакт if ( addr == INADDR_NONE && bInteractive ) { if ( MessageBox( NULL, TranslateT("Cannot resolve contacts IP-address. Add it anyway?"), modname_t, MB_YESNO | MB_ICONQUESTION ) != IDYES ) { return NULL; } } } // Поиск существующего контакта HANDLE hContact = GetContact( sShortName ); if ( ! hContact ) { // Добавление контакта hContact = (HANDLE)CallService( MS_DB_CONTACT_ADD, 0, 0 ); if ( hContact ) { CallService( MS_PROTO_ADDTOCONTACT, (WPARAM)hContact, (LPARAM)modname ); SetNick( hContact, sShortName ); SetGroup( hContact, bGroup ); db_set_ts( hContact, "CList", "MyHandle", sShortName ); db_set_b( hContact, "CList", "NotOnList", 1 ); db_set_b( hContact, "CList", "Hidden", 1 ); SetContactIP( hContact, addr ); SetElapsed( hContact, "IPTime" ); if ( about ) db_set_ts( hContact, modname, "About", about ); contact_scanner::ScanContact( hContact ); } } if ( hContact && ! ( flags & PALF_TEMPORARY ) && db_get_b( hContact, "CList", "NotOnList", 1 ) ) { // Оставляем контакт db_unset( hContact, "CList", "NotOnList" ); db_unset( hContact, "CList", "Hidden" ); } return hContact; }
/** * name: CtrlContactWriteMyItemsToDB * desc: write a list of custom items from combobox to database * param: none * return: always 0 **/ int CtrlContactWriteMyItemsToDB( HWND hCtrl, int iFirstItem, MCONTACT hContact, LPCSTR pszModule, LPCSTR pszProto, LPCSTR szFormatCat, LPCSTR szFormatVal) { CHAR pszSetting[MAXSETTING]; TCHAR szCat[MAX_CAT]; TCHAR szVal[MAXDATASIZE]; LPTSTR pszOther; CBEXITEM cbi; INT_PTR ccOther; int i = 0; if (!CtrlContactWndProc(hCtrl, CBEXM_ISCHANGED, NULL, NULL)) return 1; if (!hContact && !(pszModule = pszProto)) return 1; pszOther = TranslateT("Other"); ccOther = mir_tstrlen(pszOther); cbi.wMask = CBEXIM_CAT|CBEXIM_VAL|CBEXIM_FLAGS; cbi.pszCat = szCat; cbi.ccCat = MAX_CAT; cbi.pszVal = szVal; cbi.ccVal = MAXDATASIZE - 4; cbi.iItem = iFirstItem; cbi.dwID = 0; while (CtrlContactWndProc(hCtrl, CBEXM_GETITEM, NULL, (LPARAM)&cbi) && cbi.iItem < 50) { if (!(cbi.wFlags & CBEXIF_DELETED) && *szVal) { if (cbi.wFlags & CBEXIF_SMS) { mir_tstrncat(szVal, _T(" SMS"), _countof(szVal) - mir_tstrlen(szVal)); } mir_snprintf(pszSetting, szFormatCat, i); if (*szCat && _tcsncmp(szCat, pszOther, ccOther)) { if (db_set_ts(hContact, pszModule, pszSetting, szCat)) return 1; } else db_unset(hContact, pszModule, pszSetting); mir_snprintf(pszSetting, szFormatVal, i); if (db_set_ts(hContact, pszModule, pszSetting, szVal)) return 1; cbi.wFlags &= ~CTRLF_CHANGED; cbi.wMask = CBEXIM_FLAGS; CtrlContactWndProc(hCtrl, CBEXM_SETITEM, NULL, (LPARAM)&cbi); cbi.wMask = CBEXIM_CAT|CBEXIM_VAL|CBEXIM_FLAGS; i++; } cbi.iItem++; } DB::Setting::DeleteArray(hContact, pszModule, szFormatCat, i); DB::Setting::DeleteArray(hContact, pszModule, szFormatVal, i); InvalidateRect(GetDlgItem(hCtrl, EDIT_VALUE), NULL, TRUE); return 0; }
void CDropbox::RequestAccountInfo() { MCONTACT hContact = CDropbox::GetDefaultContact(); ptrA token(db_get_sa(NULL, MODULE, "TokenSecret")); GetAccountInfoRequest request(token); NLHR_PTR response(request.Send(hNetlibConnection)); HandleHttpResponseError(response); JSONNode root = JSONNode::parse(response->pData); if (root.empty()) return; JSONNode referral_link = root.at("referral_link"); if (!referral_link.empty()) db_set_s(hContact, MODULE, "Homepage", referral_link.as_string().c_str()); JSONNode display_name = root.at("display_name"); if (!display_name.empty()) { ptrT display_name(mir_utf8decodeT(display_name.as_string().c_str())); TCHAR *sep = _tcsrchr(display_name, _T(' ')); if (sep) { db_set_ts(hContact, MODULE, "LastName", sep + 1); display_name[mir_tstrlen(display_name) - mir_tstrlen(sep)] = '\0'; db_set_ts(hContact, MODULE, "FirstName", display_name); } else { db_set_ts(hContact, MODULE, "FirstName", display_name); db_unset(hContact, MODULE, "LastName"); } } JSONNode country = root.at("country"); if (!country.empty()) { std::string isocode = country.as_string(); if (isocode.empty()) db_unset(hContact, MODULE, "Country"); else { char *country = (char *)CallService(MS_UTILS_GETCOUNTRYBYISOCODE, (WPARAM)isocode.c_str(), 0); db_set_s(hContact, MODULE, "Country", country); } } JSONNode quota_info = root.at("quota_info"); if (!quota_info.empty()) { db_set_dw(hContact, MODULE, "SharedQuota", quota_info.at("shared").as_int()); db_set_dw(hContact, MODULE, "NormalQuota", quota_info.at("normal").as_int()); db_set_dw(hContact, MODULE, "TotalQuota", quota_info.at("quota").as_int()); } }
void CDropbox::RequestAccountInfo() { MCONTACT hContact = CDropbox::GetDefaultContact(); ptrA token(db_get_sa(NULL, MODULE, "TokenSecret")); GetAccountInfoRequest request(token); NLHR_PTR response(request.Send(hNetlibConnection)); HandleHttpResponseError(response); JSONNode root = JSONNode::parse(response->pData); if (root.empty()) return; JSONNode referral_link = root.at("referral_link"); if (!referral_link.empty()) db_set_s(hContact, MODULE, "Homepage", referral_link.as_string().c_str()); JSONNode display_name = root.at("display_name"); if (!display_name.empty()) { CMString tszDisplayName(display_name.as_mstring()); int pos = tszDisplayName.ReverseFind(' '); if (pos != -1) { db_set_ts(hContact, MODULE, "LastName", tszDisplayName.Mid(pos+1)); db_set_ts(hContact, MODULE, "FirstName", tszDisplayName.Left(pos)); } else { db_set_ts(hContact, MODULE, "FirstName", tszDisplayName); db_unset(hContact, MODULE, "LastName"); } } JSONNode country = root.at("country"); if (!country.empty()) { std::string isocode = country.as_string(); if (isocode.empty()) db_unset(hContact, MODULE, "Country"); else { char *szCountry = (char *)CallService(MS_UTILS_GETCOUNTRYBYISOCODE, (WPARAM)isocode.c_str(), 0); db_set_s(hContact, MODULE, "Country", szCountry); } } JSONNode quota_info = root.at("quota_info"); if (!quota_info.empty()) { db_set_dw(hContact, MODULE, "SharedQuota", quota_info.at("shared").as_int()); db_set_dw(hContact, MODULE, "NormalQuota", quota_info.at("normal").as_int()); db_set_dw(hContact, MODULE, "TotalQuota", quota_info.at("quota").as_int()); } }
void ChangeProtoMessages(char* szProto, int iMode, TCString &Msg) { TCString CurMsg(Msg); if (szProto) { if (Msg == NULL) CurMsg = GetDynamicStatMsg(INVALID_CONTACT_ID, szProto); CallAllowedPS_SETAWAYMSG(szProto, iMode, (char*)_T2A(CurMsg)); g_ProtoStates[szProto].CurStatusMsg = CurMsg; } else { // change message of all protocols int numAccs; PROTOACCOUNT **accs; ProtoEnumAccounts(&numAccs, &accs); for (int i = 0; i < numAccs; i++) { PROTOACCOUNT *p = accs[i]; if (!db_get_b(NULL, p->szModuleName, "LockMainStatus", 0)) { if (Msg == NULL) CurMsg = GetDynamicStatMsg(INVALID_CONTACT_ID, p->szModuleName); CallAllowedPS_SETAWAYMSG(p->szModuleName, iMode, (char*)_T2A(CurMsg)); g_ProtoStates[p->szModuleName].CurStatusMsg = CurMsg; } } } static struct { int Status; char *Setting; } StatusSettings[] = { ID_STATUS_OFFLINE, "Off", ID_STATUS_ONLINE, "On", ID_STATUS_AWAY, "Away", ID_STATUS_NA, "Na", ID_STATUS_DND, "Dnd", ID_STATUS_OCCUPIED, "Occupied", ID_STATUS_FREECHAT, "FreeChat", ID_STATUS_INVISIBLE, "Inv", ID_STATUS_ONTHEPHONE, "Otp", ID_STATUS_OUTTOLUNCH, "Otl", ID_STATUS_IDLE, "Idl" }; for (int i = 0; i < SIZEOF(StatusSettings); i++) { if (iMode == StatusSettings[i].Status) { db_set_ts(NULL, "SRAway", CString(StatusSettings[i].Setting) + "Msg", CurMsg); db_set_ts(NULL, "SRAway", CString(StatusSettings[i].Setting) + "Default", CurMsg); // TODO: make it more accurate, and change not only here, but when changing status messages through UpdateMsgsTimerFunc too; and when changing messages through AutoAway() ? break; } } // InitUpdateMsgs(); }
void ProtocolArray::SetStatusMsgs(int status, const TCHAR *message) { db_set_ts(NULL, "SRAway", StatusModeToDbSetting(status, "Msg"), message); // Save default also if (!db_get_b(NULL, "SRAway", StatusModeToDbSetting(status, "UsePrev"), 0)) db_set_ts(NULL, "SRAway", StatusModeToDbSetting(status, "Default"), message); for (int i = 0; i < buffer_len; i++) if (buffer[i]->status == status) buffer[i]->SetStatusMsg(status, message); }
void MakePathRelative(MCONTACT hContact, TCHAR *path) { TCHAR szFinalPath[MAX_PATH]; szFinalPath[0] = '\0'; size_t result = PathToRelativeT(path, szFinalPath, g_szDataPath); if (result && szFinalPath[0] != '\0') { db_set_ts(hContact, "ContactPhoto", "RFile", szFinalPath); if (!db_get_b(hContact, "ContactPhoto", "Locked", 0)) db_set_ts(hContact, "ContactPhoto", "Backup", szFinalPath); } }
void save_settings() { db_set_b(NULL, PlugName, "local_only", g_settings.local_only); db_set_b(NULL, PlugName, "debug_messages", g_settings.debug_messages); db_set_b(NULL, PlugName, "log_to_file", g_settings.log_to_file); db_set_b(NULL, PlugName, "beep", g_settings.sound); db_set_b(NULL, PlugName, "use_pcspeaker", g_settings.use_pcspeaker); db_set_b(NULL, PlugName, "allow_execute", g_settings.allow_execute); db_set_dw(NULL, PlugName, "port", g_settings.port); db_set_ts(NULL, PlugName, "password", g_settings.password.c_str()); db_set_ts(NULL, PlugName, "log_filename", g_settings.log_filename.c_str()); }
void saveDBSettings(plgsettings *ps) { logmsg("saveDBSettings"); db_set_b(NULL,THIS_MODULE,"showShadow", ps->showShadow); db_set_b(NULL,THIS_MODULE,"altShadow",ps->altShadow); db_set_b(NULL,THIS_MODULE,"distance",ps->distance); db_set_dw(NULL,THIS_MODULE,"winx",ps->winx); db_set_dw(NULL,THIS_MODULE,"winy",ps->winy); db_set_dw(NULL,THIS_MODULE,"winxpos", ps->winxpos); db_set_dw(NULL,THIS_MODULE,"winypos", ps->winypos); db_set_b(NULL,THIS_MODULE,"alpha",ps->alpha); db_set_dw(NULL,THIS_MODULE,"timeout", ps->timeout); db_set_b(NULL,THIS_MODULE,"transparent",ps->transparent); db_set_b(NULL,THIS_MODULE,"messages",ps->messages); db_set_b(NULL,THIS_MODULE,"a_user",ps->a_user); db_set_ts(NULL,THIS_MODULE, "message_format", ps->msgformat); db_set_b(NULL,THIS_MODULE,"align",ps->align); db_set_b(NULL,THIS_MODULE,"salign",ps->salign); db_set_b(NULL,THIS_MODULE,"showMyStatus",ps->showmystatus); db_set_dw(NULL,THIS_MODULE,"clr_msg", ps->clr_msg); db_set_dw(NULL,THIS_MODULE,"clr_shadow", ps->clr_shadow); db_set_dw(NULL,THIS_MODULE,"clr_status", ps->clr_status); db_set_dw(NULL,THIS_MODULE,"bkclr", ps->bkclr); db_set_dw(NULL,THIS_MODULE, "fntHeight", ps->lf.lfHeight); db_set_dw(NULL,THIS_MODULE, "fntWidth", ps->lf.lfWidth); db_set_dw(NULL,THIS_MODULE, "fntEscapement", ps->lf.lfEscapement); db_set_dw(NULL,THIS_MODULE, "fntOrientation", ps->lf.lfOrientation); db_set_dw(NULL,THIS_MODULE, "fntWeight", ps->lf.lfWeight); db_set_b(NULL,THIS_MODULE, "fntItalic", ps->lf.lfItalic); db_set_b(NULL,THIS_MODULE, "fntUnderline", ps->lf.lfUnderline); db_set_b(NULL,THIS_MODULE, "fntStrikeout", ps->lf.lfStrikeOut); db_set_b(NULL,THIS_MODULE, "fntCharSet", ps->lf.lfCharSet); db_set_b(NULL,THIS_MODULE, "fntOutPrecision", ps->lf.lfOutPrecision); db_set_b(NULL,THIS_MODULE, "fntClipPrecision", ps->lf.lfClipPrecision); db_set_b(NULL,THIS_MODULE, "fntQuality", ps->lf.lfQuality); db_set_b(NULL,THIS_MODULE, "fntPitchAndFamily", ps->lf.lfPitchAndFamily); db_set_ts(NULL,THIS_MODULE, "fntFaceName", ps->lf.lfFaceName); db_set_dw(NULL,THIS_MODULE,"announce", ps->announce); db_set_b(NULL,THIS_MODULE, "showMessageWindow", ps->showMsgWindow); db_set_dw(NULL,THIS_MODULE,"showWhen", ps->showWhen); }
static INT_PTR CALLBACK DlgProcWaMpdOpts(HWND hwndDlg, UINT msg, WPARAM, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { TranslateDialogDefault(hwndDlg); SetDlgItemInt(hwndDlg, IDC_PORT, db_get_w(NULL, szModuleName, "Port", 6600), FALSE); TCHAR *tmp = UniGetContactSettingUtf(NULL, szModuleName, "Server", _T("127.0.0.1")); SetDlgItemText(hwndDlg, IDC_SERVER, tmp); mir_free(tmp); tmp = UniGetContactSettingUtf(NULL, szModuleName, "Password", _T("")); SetDlgItemText(hwndDlg, IDC_PASSWORD, tmp); mir_free(tmp); return TRUE; } case WM_COMMAND: { SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; } case WM_NOTIFY: { switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: { TCHAR szText[256]; db_set_w(NULL, szModuleName, "Port", (WORD)GetDlgItemInt(hwndDlg, IDC_PORT, NULL, FALSE)); gbPort = (WORD)GetDlgItemInt(hwndDlg, IDC_PORT, NULL, FALSE); GetDlgItemText(hwndDlg, IDC_SERVER, szText, _countof(szText)); db_set_ts(NULL, szModuleName, "Server", szText); mir_tstrcpy(gbHost, szText); GetDlgItemText(hwndDlg, IDC_PASSWORD, szText, _countof(szText)); db_set_ts(NULL, szModuleName, "Password", szText); mir_tstrcpy(gbPassword, szText); return TRUE; } } } break; } return FALSE; }
int DeleteAutoSession(int ses_count) { for (MCONTACT hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { RemoveSessionMark(hContact, 0, ses_count); SetInSessionOrder(hContact, 0, ses_count, 0); } char szSessionName[256]; mir_snprintf(szSessionName, "%s_%u", "SessionDate", ses_count); db_unset(NULL, MODNAME, szSessionName); for (int i = ses_count + 1;; i++) { mir_snprintf(szSessionName, "%s_%u", "SessionDate", i); ptrT szSessionNameBuf(db_get_tsa(NULL, MODNAME, szSessionName)); mir_snprintf(szSessionName, "%s_%u", "SessionDate", i - 1); if (szSessionNameBuf) db_set_ts(NULL, MODNAME, szSessionName, szSessionNameBuf); else { db_unset(NULL, MODNAME, szSessionName); break; } } return 0; }
/** * name: CtrlContactWriteItemToDB * desc: write a item from combobox to database * param: none * return: always 0 **/ int CtrlContactWriteItemToDB( HWND hCtrl, MCONTACT hContact, LPCSTR pszModule, LPCSTR pszProto, LPCSTR pszSetting) { TCHAR szVal[MAXDATASIZE]; CBEXITEM cbi; if (!CtrlContactWndProc(hCtrl, CBEXM_ISCHANGED, NULL, NULL)) return 1; cbi.wMask = CBEXIM_ID|CBEXIM_VAL|CBEXIM_FLAGS; cbi.pszVal = szVal; cbi.ccVal = MAXDATASIZE - 4; cbi.iItem = 0; cbi.dwID = hashSetting(pszSetting); if (!CtrlContactWndProc(hCtrl, CBEXM_GETITEM, NULL, (LPARAM)&cbi)) return 1; if (!(cbi.wFlags & CTRLF_CHANGED)) return 0; if (!hContact && !(pszModule = pszProto)) return 1; if (!*szVal) db_unset(hContact, pszModule, pszSetting); else { if (cbi.wFlags & CBEXIF_SMS) mir_tstrncat(szVal, _T(" SMS"), _countof(szVal) - mir_tstrlen(szVal)); if (db_set_ts(hContact, pszModule, pszSetting, szVal)) return 1; } cbi.wFlags &= ~CTRLF_CHANGED; cbi.wMask = CBEXIM_FLAGS; CtrlContactWndProc(hCtrl, CBEXM_SETITEM, NULL, (LPARAM)&cbi); InvalidateRect(GetDlgItem(hCtrl, EDIT_VALUE), NULL, TRUE); return 0; }
MCONTACT TwitterProto::AddToClientList(const char *name, const char *status) { // First, check if this contact exists MCONTACT hContact = UsernameToHContact(name); if (hContact) return hContact; if (in_chat_) AddChatContact(name); // If not, make a new contact! hContact = (MCONTACT)CallService(MS_DB_CONTACT_ADD, 0, 0); if (hContact) { if (Proto_AddToContact(hContact, m_szModuleName) == 0) { setString(hContact, TWITTER_KEY_UN, name); setWord(hContact, "Status", ID_STATUS_ONLINE); db_set_utf(hContact, "CList", "StatusMsg", status); std::string url = profile_base_url(twit_.get_base_url()) + http::url_encode(name); setString(hContact, "Homepage", url.c_str()); DBVARIANT dbv; if (!getTString(TWITTER_KEY_GROUP, &dbv)) { db_set_ts(hContact, "CList", "Group", dbv.ptszVal); db_free(&dbv); } return hContact; } CallService(MS_DB_CONTACT_DELETE, hContact, 0); } return 0; }
MCONTACT CSkypeProto::AddContact(const char *skypename, bool isTemporary) { MCONTACT hContact = FindContact(skypename); if (!hContact) { hContact = (MCONTACT)CallService(MS_DB_CONTACT_ADD, 0, 0); Proto_AddToContact(hContact, m_szModuleName); setString(hContact, SKYPE_SETTINGS_ID, skypename); DBVARIANT dbv; if (!getTString(SKYPE_SETTINGS_GROUP, &dbv)) { db_set_ts(hContact, "CList", "Group", dbv.ptszVal); db_free(&dbv); } setByte(hContact, "Auth", 1); setByte(hContact, "Grant", 1); if (isTemporary) db_set_b(hContact, "CList", "NotOnList", 1); } return hContact; }
int DeleteAutoSession(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,0,ses_count); SetInSessionOrder(hContact,0,ses_count,0); } mir_snprintf(szSessionName, SIZEOF(szSessionName), "%s_%u", "SessionDate", ses_count); db_unset(NULL, MODNAME, szSessionName); for (i=(ses_count+1);;i++) { mir_snprintf(szSessionName, SIZEOF(szSessionName), "%s_%u", "SessionDate", i); if (szSessionNameBuf = db_get_tsa(NULL, MODNAME, szSessionName)) { mir_snprintf(szSessionName, SIZEOF(szSessionName), "%s_%u", "SessionDate", i-1); db_set_ts(NULL, MODNAME, szSessionName, szSessionNameBuf); mir_free(szSessionNameBuf); } else { mir_snprintf(szSessionName, SIZEOF(szSessionName), "%s_%u", "SessionDate", i-1); db_unset(NULL, MODNAME, szSessionName); break; } } return 0; }
int SaveUserSessionName(TCHAR *szUSessionName) { int i=0; DBVARIANT dbv={0}; char szUserSessionNameBuf[256]={0}; TCHAR *szUserSessionNameBuf_1=NULL; TCHAR *szUserSessionName=NULL; TCHAR *ptr=NULL; if (session_list[0]!=0) { szUserSessionName = mir_tstrdup(szUSessionName); mir_snprintf(szUserSessionNameBuf, SIZEOF(szUserSessionNameBuf), "%s_%u", "UserSessionDsc", 0); if (!db_get_ts(NULL, MODNAME, szUserSessionNameBuf, &dbv)) { szUserSessionNameBuf_1 = mir_tstrdup(dbv.ptszVal); db_free(&dbv); ResaveSettings("UserSessionDsc",1,255,szUserSessionNameBuf_1); } db_set_ts(NULL, MODNAME, szUserSessionNameBuf, szUserSessionName); //free(szUserSessionNameBuf_1); mir_free(szUserSessionName); return 0; } return 1; }
MCONTACT CToxProto::AddChatRoom(int groupNumber) { MCONTACT hContact = GetChatRoom(groupNumber); if (!hContact) { hContact = (MCONTACT)CallService(MS_DB_CONTACT_ADD, 0, 0); Proto_AddToContact(hContact, m_szModuleName); setWord(hContact, TOX_SETTINGS_CHAT_ID, groupNumber); TCHAR title[MAX_PATH]; mir_sntprintf(title, _T("%s #%d"), TranslateT("Group chat"), groupNumber); setTString(hContact, "Nick", title); DBVARIANT dbv; if (!db_get_s(NULL, "Chat", "AddToGroup", &dbv, DBVT_TCHAR)) { db_set_ts(hContact, "CList", "Group", dbv.ptszVal); db_free(&dbv); } setByte(hContact, "ChatRoom", 1); } return hContact; }
void HistoryWrite(MCONTACT hContact) { int historyMax = db_get_w(NULL, S_MOD, "HistoryMax", 10); if (historyMax < 0) historyMax = 0; else if (historyMax > 99) historyMax = 99; if (historyMax == 0) return; int historyFirst = db_get_w(hContact, S_MOD, "HistoryFirst", 0); if (historyFirst >= historyMax) historyFirst = 0; int historyLast = db_get_w(hContact, S_MOD, "HistoryLast", 0); if (historyLast >= historyMax) historyLast = historyMax - 1; TCHAR *ptszString; DBVARIANT dbv; if (!db_get_ts(NULL, S_MOD, "HistoryStamp", &dbv)) { ptszString = ParseString(dbv.ptszVal, hContact); db_free(&dbv); } else ptszString = ParseString(DEFAULT_HISTORYSTAMP, hContact); db_set_ts(hContact, S_MOD, BuildSetting(historyLast), ptszString); historyLast = (historyLast + 1) % historyMax; db_set_w(hContact, S_MOD, "HistoryLast", historyLast); if (historyLast == historyFirst) db_set_w(hContact, S_MOD, "HistoryFirst", (historyFirst + 1) % historyMax); }
INT_PTR CALLBACK MraAvatarsQueueDlgProcOpts(HWND hWndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { CMraProto *ppro = (CMraProto*)GetWindowLongPtr(hWndDlg, GWLP_USERDATA); switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hWndDlg); SetWindowLongPtr(hWndDlg, GWLP_USERDATA, lParam); ppro = (CMraProto*)lParam; { CheckDlgButton(hWndDlg, IDC_ENABLE, db_get_b(NULL, MRA_AVT_SECT_NAME, "Enable", MRA_AVT_DEFAULT_ENABLE)); CMStringW szServer; if (DB_GetStringW(NULL, MRA_AVT_SECT_NAME, "Server", szServer)) SetDlgItemText(hWndDlg, IDC_SERVER, szServer.c_str()); else SetDlgItemTextA(hWndDlg, IDC_SERVER, MRA_AVT_DEFAULT_SERVER); SetDlgItemInt(hWndDlg, IDC_SERVERPORT, db_get_dw(NULL, MRA_AVT_SECT_NAME, "ServerPort", MRA_AVT_DEFAULT_SERVER_PORT), FALSE); CheckDlgButton(hWndDlg, IDC_USE_KEEPALIVE_CONN, db_get_b(NULL, MRA_AVT_SECT_NAME, "UseKeepAliveConn", MRA_AVT_DEFAULT_USE_KEEPALIVE_CONN)); SetDlgItemInt(hWndDlg, IDC_UPD_CHECK_INTERVAL, db_get_dw(NULL, MRA_AVT_SECT_NAME, "CheckInterval", MRA_AVT_DEFAULT_CHK_INTERVAL), FALSE); CheckDlgButton(hWndDlg, IDC_RETURN_ABC_PATH, db_get_b(NULL, MRA_AVT_SECT_NAME, "ReturnAbsolutePath", MRA_AVT_DEFAULT_RET_ABC_PATH)); CheckDlgButton(hWndDlg, IDC_DELETE_AVT_ON_CONTACT_DELETE, db_get_b(NULL, MRA_AVT_SECT_NAME, "DeleteAvtOnContactDelete", MRA_DELETE_AVT_ON_CONTACT_DELETE)); EnableControlsArray(hWndDlg, (WORD*)&wMraAvatarsControlsList, SIZEOF(wMraAvatarsControlsList), IsDlgButtonChecked(hWndDlg, IDC_ENABLE)); } return TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDC_ENABLE) EnableControlsArray(hWndDlg, (WORD*)&wMraAvatarsControlsList, SIZEOF(wMraAvatarsControlsList), IsDlgButtonChecked(hWndDlg, IDC_ENABLE)); if (LOWORD(wParam) == IDC_BUTTON_DEFAULT) { SetDlgItemTextA(hWndDlg, IDC_SERVER, MRA_AVT_DEFAULT_SERVER); SetDlgItemInt(hWndDlg, IDC_SERVERPORT, MRA_AVT_DEFAULT_SERVER_PORT, FALSE); } if ((LOWORD(wParam) == IDC_SERVER || LOWORD(wParam) == IDC_SERVERPORT || LOWORD(wParam) == IDC_UPD_CHECK_INTERVAL) && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) return FALSE; SendMessage(GetParent(hWndDlg), PSM_CHANGED, 0, 0); break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: db_set_b(NULL, MRA_AVT_SECT_NAME, "Enable", IsDlgButtonChecked(hWndDlg, IDC_ENABLE)); db_set_b(NULL, MRA_AVT_SECT_NAME, "DeleteAvtOnContactDelete", IsDlgButtonChecked(hWndDlg, IDC_DELETE_AVT_ON_CONTACT_DELETE)); db_set_b(NULL, MRA_AVT_SECT_NAME, "ReturnAbsolutePath", IsDlgButtonChecked(hWndDlg, IDC_RETURN_ABC_PATH)); db_set_dw(NULL, MRA_AVT_SECT_NAME, "CheckInterval", GetDlgItemInt(hWndDlg, IDC_UPD_CHECK_INTERVAL, NULL, FALSE)); db_set_b(NULL, MRA_AVT_SECT_NAME, "UseKeepAliveConn", IsDlgButtonChecked(hWndDlg, IDC_USE_KEEPALIVE_CONN)); db_set_dw(NULL, MRA_AVT_SECT_NAME, "ServerPort", GetDlgItemInt(hWndDlg, IDC_SERVERPORT, NULL, FALSE)); TCHAR szServer[MAX_PATH]; GetDlgItemText(hWndDlg, IDC_SERVER, szServer, SIZEOF(szServer)); db_set_ts(NULL, MRA_AVT_SECT_NAME, "Server", szServer); return TRUE; } break; } return FALSE; }
/* Prepares the log file: - calculates the absolute path (and store it in the db) - creates the directory */ int InitFileOutput(void) { TCHAR szfpath[MAX_PATH], szmpath[MAX_PATH]; GetModuleFileName(NULL, szmpath, MAX_PATH); DBVARIANT dbv; if(!db_get_ts(NULL, S_MOD, "FileName", &dbv)) { _tcsncpy(szfpath, dbv.ptszVal, MAX_PATH); db_free(&dbv); } else _tcsncpy(szfpath, DEFAULT_FILENAME, MAX_PATH); if (szfpath[0] == '\\') _tcsncpy(szfpath, szfpath+1, MAX_PATH); TCHAR *str = _tcsrchr(szmpath, '\\'); if (str != NULL) *++str=0; _tcsncat(szmpath, szfpath, MAX_PATH); _tcsncpy(szfpath, szmpath, MAX_PATH); str = _tcsrchr(szmpath, '\\'); if (str != NULL) *++str=0; db_set_ts(NULL, S_MOD, "PathToFile", szfpath); return 0; }
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; }
void GetDefaultLang() { // calculate the langpacks' root PathToAbsoluteT(_T("\\Languages"), g_tszRoot); if (_taccess(g_tszRoot, 0) != 0) // directory Languages exists PathToAbsoluteT(_T("."), g_tszRoot); // look into mirandaboot.ini TCHAR tszPath[MAX_PATH], tszLangName[256]; PathToAbsoluteT(_T("\\mirandaboot.ini"), tszPath); GetPrivateProfileString(_T("Language"), _T("DefaultLanguage"), _T(""), tszLangName, _countof(tszLangName), tszPath); if (tszLangName[0]) { if (!mir_tstrcmpi(tszLangName, _T("default"))) { db_set_ts(NULL, "Langpack", "Current", _T("default")); return; } if (!LoadLangPack(tszLangName)) { db_set_ts(NULL, "Langpack", "Current", tszLangName); return; } } // try to load langpack that matches UserDefaultUILanguage if (GetLocaleInfo(MAKELCID(GetUserDefaultUILanguage(), SORT_DEFAULT), LOCALE_SENGLANGUAGE, tszLangName, _countof(tszLangName))) { mir_sntprintf(tszPath, _T("langpack_%s.txt"), _tcslwr(tszLangName)); if (!LoadLangPack(tszPath)) { db_set_ts(NULL, "Langpack", "Current", tszPath); return; } } // finally try to load first file mir_sntprintf(tszPath, _T("%s\\langpack_*.txt"), g_tszRoot); WIN32_FIND_DATA fd; HANDLE hFind = FindFirstFile(tszPath, &fd); if (hFind != INVALID_HANDLE_VALUE) { do { /* search first langpack that could be loaded */ if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) continue; if (!LoadLangPack(fd.cFileName)) { db_set_ts(NULL, "Langpack", "Current", fd.cFileName); break; } } while (FindNextFile(hFind, &fd)); FindClose(hFind); } else db_set_ts(NULL, "Langpack", "Current", _T("default")); }