FLASHING_SEQUENCE *getCustomSeq(void) { ptrT tszSeq( db_get_wsa(NULL, KEYBDMODULE, fmtDBSettingName("custom%d", wCustomTheme))); static FLASHING_SEQUENCE Custom = {0}; Custom = str2FS((tszSeq != 0) ? tszSeq : L""); return &Custom; }
///////////////////////////////////////////////////////////////////////////////////////// // Getting Status message(Away message) // returns -1 for XStatus, 1 for Status // int GetStatusMessage(wchar_t *text, int text_size, ClcCacheEntry *pdnce, BOOL xstatus_has_priority) { BOOL noAwayMsg = FALSE; WORD wStatus = pdnce->getStatus(); *text = '\0'; // Hide status text if Offline /// no offline if (wStatus == ID_STATUS_OFFLINE || wStatus == 0) noAwayMsg = TRUE; // Get XStatusMsg if (!noAwayMsg && xstatus_has_priority && pdnce->hContact && pdnce->szProto) { ptrW tszXStatusMsg(db_get_wsa(pdnce->hContact, pdnce->szProto, "XStatusMsg")); if (tszXStatusMsg != nullptr) { CopySkipUnprintableChars(text, tszXStatusMsg, text_size - 1); if (text[0] != '\0') return -1; } } // Get StatusMsg if (pdnce->hContact && text[0] == '\0') { ptrW tszStatusMsg(db_get_wsa(pdnce->hContact, "CList", "StatusMsg")); if (tszStatusMsg != nullptr) { CopySkipUnprintableChars(text, tszStatusMsg, text_size - 1); if (text[0] != '\0') return 1; } } // Get XStatusMsg if (!noAwayMsg && !xstatus_has_priority && pdnce->hContact && pdnce->szProto && text[0] == '\0') { // Try to get XStatusMsg ptrW tszXStatusMsg(db_get_wsa(pdnce->hContact, pdnce->szProto, "XStatusMsg")); if (tszXStatusMsg != nullptr) { CopySkipUnprintableChars(text, tszXStatusMsg, text_size - 1); if (text[0] != '\0') return -1; } } return 1; }
///////////////////////////////////////////////////////////////////////////////////////// // Get Listening to information // void GetListeningTo(wchar_t *text, int text_size, ClcCacheEntry *pdnce) { *text = '\0'; if (pdnce->m_iStatus == ID_STATUS_OFFLINE || pdnce->m_iStatus == 0) return; ptrW tszValue(db_get_wsa(pdnce->hContact, pdnce->szProto, "ListeningTo")); if (tszValue != nullptr) CopySkipUnprintableChars(text, tszValue, text_size - 1); }
std::wstring Quotes_DBGetStringW(MCONTACT hContact, const char* szModule, const char* szSetting, const wchar_t* pszDefValue/* = NULL*/) { std::wstring sResult; wchar_t* pszSymbol = db_get_wsa(hContact, szModule, szSetting); if (NULL != pszSymbol) { sResult = pszSymbol; mir_free(pszSymbol); } else if (NULL != pszDefValue) sResult = pszDefValue; return sResult; }
static int ehhEventAreaBackgroundSettingsChanged(WPARAM, LPARAM) { if (event_area.hBmpBackground) { DeleteObject(event_area.hBmpBackground); event_area.hBmpBackground = nullptr; } if (g_CluiData.fDisableSkinEngine) { event_area.bkColour = cliGetColor("EventArea", "BkColour", CLCDEFAULT_BKCOLOUR); if (db_get_b(0, "EventArea", "UseBitmap", CLCDEFAULT_USEBITMAP)) { ptrW tszBitmap(db_get_wsa(0, "EventArea", "BkBitmap")); if (tszBitmap != nullptr) event_area.hBmpBackground = Bitmap_Load(tszBitmap); } event_area.useWinColors = db_get_b(0, "EventArea", "UseWinColours", CLCDEFAULT_USEWINDOWSCOLOURS); event_area.backgroundBmpUse = db_get_w(0, "EventArea", "BkBmpUse", CLCDEFAULT_BKBMPUSE); } PostMessage(g_clistApi.hwndContactList, WM_SIZE, 0, 0); return 0; }
INT_PTR CopyLinkToClipboard(WPARAM, LPARAM) { ptrT tmp(db_get_wsa(NULL, PluginName, "Username")); if (tmp != NULL) { TCHAR buffer[MAX_PATH]; mir_sntprintf(buffer, _T("http://vi.miranda-ng.org/detail/%s"), tmp); int bufLen = (sizeof(buffer) + 1) * sizeof(TCHAR); HANDLE hData = GlobalAlloc(GMEM_MOVEABLE, bufLen); LPSTR buf = (LPSTR)GlobalLock(hData); memcpy(buf, buffer, bufLen); OpenClipboard(NULL); EmptyClipboard(); if (SetClipboardData(CF_UNICODETEXT, hData) == NULL) GlobalFree(hData); CloseClipboard(); } return 0; }
INT_PTR CALLBACK CSkypeProto::SkypeMainOptionsProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { CSkypeProto *proto = (CSkypeProto *)::GetWindowLongPtr(hwnd, GWLP_USERDATA); switch (message) { case WM_INITDIALOG: { ::TranslateDialogDefault(hwnd); proto = (CSkypeProto *)lParam; ::SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam); { ptrW sid( ::db_get_wsa(NULL, proto->m_szModuleName, SKYPE_SETTINGS_SID)); SetDlgItemText(hwnd, IDC_SL, sid); } { ptrA pwd( ::db_get_sa(NULL, proto->m_szModuleName, SKYPE_SETTINGS_PASSWORD)); SetDlgItemTextA(hwnd, IDC_PW, pwd); } { int port = rand() % 10000 + 10000; SetDlgItemInt(hwnd, IDC_PORT, ::db_get_w(NULL, proto->m_szModuleName, "Port", port), FALSE); SendMessage(GetDlgItem(hwnd, IDC_PORT), EM_SETLIMITTEXT, 5, 0); } CheckDlgButton(hwnd, IDC_USE_ALT_PORTS, ::db_get_b(NULL, proto->m_szModuleName, "UseAlternativePorts", 1)); if (proto->IsOnline()) { SendMessage(GetDlgItem(hwnd, IDC_SL), EM_SETREADONLY, 1, 0); SendMessage(GetDlgItem(hwnd, IDC_PW), EM_SETREADONLY, 1, 0); SendMessage(GetDlgItem(hwnd, IDC_PORT), EM_SETREADONLY, 1, 0); EnableWindow(GetDlgItem(hwnd, IDC_USE_ALT_PORTS), FALSE); EnableWindow(GetDlgItem(hwnd, IDC_REGISTER), FALSE); EnableWindow(GetDlgItem(hwnd, IDC_CHANGE_PWD), TRUE); EnableWindow(GetDlgItem(hwnd, IDC_GROUP), FALSE); } else if (::db_get_w(NULL, proto->m_szModuleName, "Status", ID_STATUS_OFFLINE) > ID_STATUS_OFFLINE) { EnableWindow(GetDlgItem(hwnd, IDC_REGISTER), FALSE); } SendDlgItemMessage(hwnd, IDC_GROUP, EM_LIMITTEXT, SKYPE_GROUP_NAME_LIMIT, 0); ptrW defgroup( db_get_wsa(NULL, proto->m_szModuleName, SKYPE_SETTINGS_DEF_GROUP)); SetDlgItemText(hwnd, IDC_GROUP, defgroup); } return TRUE; case WM_COMMAND: { switch(LOWORD(wParam)) { case IDC_SL: { if ((HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) return 0; if (!proto->IsOnline() && ::db_get_w(NULL, proto->m_szModuleName, "Status", ID_STATUS_OFFLINE) <= ID_STATUS_OFFLINE) { wchar_t sid[128]; GetDlgItemText(hwnd, IDC_SL, sid, SIZEOF(sid)); EnableWindow(GetDlgItem(hwnd, IDC_REGISTER), ::wcslen(sid) != 0); } SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); } break; case IDC_PW: { if ((HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) return 0; if (proto->IsOnline()) { char pwd[128]; GetDlgItemTextA(hwnd, IDC_SL, pwd, SIZEOF(pwd)); EnableWindow(GetDlgItem(hwnd, IDC_CHANGE_PWD), ::strlen(pwd) != 0); } SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); } break; case IDC_GROUP: { if ((HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) return 0; SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); } break; case IDC_PORT: { if ((HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) return 0; SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); } break; case IDC_USE_ALT_PORTS: SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); break; case IDC_REGISTER: { char sid[128], pwd[128]; GetDlgItemTextA(hwnd, IDC_SL, sid, SIZEOF(sid)); GetDlgItemTextA(hwnd, IDC_PW, pwd, SIZEOF(pwd)); Skype::VALIDATERESULT reason; proto->ValidatePassword(sid, pwd, reason); if (reason == Skype::VALIDATED_OK) { CAccount::Ref account; proto->GetAccount(sid, proto->account); proto->account->SetStrProperty(CAccount::P_FULLNAME, sid); proto->account->Register(pwd, false, false); } else { proto->ShowNotification(CSkypeProto::ValidationReasons[reason]); } } return FALSE; case IDC_CHANGE_PWD: { char sid[128], pwd[128]; GetDlgItemTextA(hwnd, IDC_SL, sid, SIZEOF(sid)); GetDlgItemTextA(hwnd, IDC_PW, pwd, SIZEOF(pwd)); PasswordChangeBoxParam param; param.password = ::mir_strdup(pwd); if (proto->ChangePassword(param)) { proto->account->ChangePassword(param.password, param.password2); } } break; } } break; case WM_NOTIFY: if (reinterpret_cast<NMHDR*>(lParam)->code == PSN_APPLY && !proto->IsOnline()) { wchar_t sid[128]; GetDlgItemText(hwnd, IDC_SL, sid, SIZEOF(sid)); ::db_set_ws(NULL, proto->m_szModuleName, SKYPE_SETTINGS_SID, sid); ::mir_free(proto->login); proto->login = ::mir_wstrdup(sid); char pwd[128]; GetDlgItemTextA(hwnd, IDC_PW, pwd, SIZEOF(pwd)); ::db_set_s(NULL, proto->m_szModuleName, SKYPE_SETTINGS_PASSWORD, pwd); HWND item = GetDlgItem(hwnd, IDC_PORT); if (item) { BOOL error; int port = GetDlgItemInt(hwnd, IDC_PORT, &error, FALSE); ::db_set_w(NULL, proto->m_szModuleName, "Port", port); ::db_set_b(NULL, proto->m_szModuleName, "UseAlternativePorts", (BYTE)IsDlgButtonChecked(hwnd, IDC_USE_ALT_PORTS)); } wchar_t tstr[128]; GetDlgItemText(hwnd, IDC_GROUP, tstr, SIZEOF(tstr)); if (lstrlen(tstr) > 0) { ::db_set_ts(NULL, proto->m_szModuleName, SKYPE_SETTINGS_DEF_GROUP, tstr); ::Clist_CreateGroup(0, tstr); } else ::db_unset(NULL, proto->m_szModuleName, SKYPE_SETTINGS_DEF_GROUP); return TRUE; } break; } return FALSE; }
INT_PTR CALLBACK DlgProcOptionsPage(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_INITDIALOG: { char key[64]; int count = 0; CMString replies; TranslateDialogDefault(hwndDlg); variables_skin_helpbutton(hwndDlg, IDC_VARIABLES); ShowWindow(GetDlgItem(hwndDlg, IDC_VARIABLES_HINT), ServiceExists(MS_VARS_FORMATSTRING)); mir_subclassWindow(GetDlgItem(hwndDlg, IDC_REPLIES), MessageEditSubclassProc); mir_snprintf(key, _countof(key), "ImmediatelySend_%x", iNumber); CheckDlgButton(hwndDlg, IDC_IMMEDIATELY, db_get_w(NULL, MODULE, key, 1) ? BST_CHECKED : BST_UNCHECKED); mir_snprintf(key, _countof(key), "RepliesCount_%x", iNumber); count = db_get_w(NULL, MODULE, key, 0); for (int i = 0; i < count; i++) { mir_snprintf(key, _countof(key), "Reply_%x_%x", iNumber, i); wchar_t *value = db_get_wsa(NULL, MODULE, key); if (value) { replies.Append(value); replies.Append(_T("\r\n")); } mir_free(value); } SetDlgItemText(hwndDlg, IDC_REPLIES, replies.GetBuffer()); } return TRUE; case WM_COMMAND: if (HIWORD(wParam) == BN_CLICKED) { switch(LOWORD(wParam)) { case IDC_VARIABLES: variables_showhelp(hwndDlg, IDC_REPLIES, VHF_SIMPLEDLG, NULL, NULL); break; case IDC_IMMEDIATELY: SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; } } break; case WM_NOTIFY: { NMHDR *p = ((LPNMHDR)lParam); switch (p->code) { case PSN_APPLY: { char key[64]; int count = 0; wchar_t *tszReplies; mir_snprintf(key, _countof(key), "RepliesCount_%x", iNumber); count = db_get_b(NULL, MODULE, key, 0); for (int i = 0; i < count; i++) { mir_snprintf(key, _countof(key), "Reply_%x_%x", iNumber, i); db_unset(NULL, MODULE, key); } int length = SendDlgItemMessage(hwndDlg, IDC_REPLIES, WM_GETTEXTLENGTH, 0, 0); tszReplies = (wchar_t*)mir_alloc(sizeof(wchar_t)* (length + 1)); GetDlgItemText(hwndDlg, IDC_REPLIES, tszReplies, length + 1); tszReplies[length] = '\0'; { CMString replies = tszReplies; if (replies.Right(2) != _T("\r\n")) replies.Append(_T("\r\n")); count = 0; int pos = -1, prev = 0; while ((pos = replies.Find(_T("\r\n"), prev)) != -1) { mir_snprintf(key, _countof(key), "Reply_%x_%x", iNumber, count++); db_set_ws(NULL, MODULE, key, replies.Mid(prev, pos - prev).GetBuffer()); prev = pos + 2; } } mir_free(tszReplies); mir_snprintf(key, _countof(key), "RepliesCount_%x", iNumber); db_set_w(NULL, MODULE, key, count); mir_snprintf(key, _countof(key), "ImmediatelySend_%x", iNumber); db_set_b(NULL, MODULE, key, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_IMMEDIATELY)); return TRUE; } break; } } break; } if (HIWORD(wParam) == EN_CHANGE && GetFocus() == (HWND)lParam) SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); return FALSE; }
int Cache_GetLineText(ClcCacheEntry *pdnce, int type, LPTSTR text, int text_size, ClcLineInfo &line) { if (text == nullptr) return TEXT_EMPTY; text[0] = '\0'; switch (type) { case TEXT_STATUS: LBL_Status: if (GetStatusName(text, text_size, pdnce, line.xstatus_has_priority) == -1 && line.use_name_and_message_for_xstatus) { // Try to get XStatusMsg ptrW tszXStatusMsg(db_get_wsa(pdnce->hContact, pdnce->szProto, "XStatusMsg")); if (tszXStatusMsg != nullptr && tszXStatusMsg[0] != 0) { wchar_t *tmp = NEWWSTR_ALLOCA(text); mir_snwprintf(text, text_size, L"%s: %s", tmp, tszXStatusMsg); CopySkipUnprintableChars(text, text, text_size - 1); } } return TEXT_STATUS; case TEXT_NICKNAME: if (pdnce->hContact && pdnce->szProto) { ptrW tszNick(db_get_wsa(pdnce->hContact, pdnce->szProto, "Nick")); if (tszNick != nullptr) { mir_wstrncpy(text, tszNick, text_size); CopySkipUnprintableChars(text, text, text_size - 1); } } return TEXT_NICKNAME; case TEXT_STATUS_MESSAGE: if (GetStatusMessage(text, text_size, pdnce, line.xstatus_has_priority) == -1 && line.use_name_and_message_for_xstatus) { // Try to get XStatusName ptrW tszXStatusName(db_get_wsa(pdnce->hContact, pdnce->szProto, "XStatusName")); if (tszXStatusName != nullptr && tszXStatusName[0] != 0) { wchar_t *tmp = NEWWSTR_ALLOCA(text); mir_snwprintf(text, text_size, L"%s: %s", tszXStatusName, tmp); CopySkipUnprintableChars(text, text, text_size - 1); } } else if (line.use_name_and_message_for_xstatus && line.xstatus_has_priority) { // Try to get XStatusName ptrW tszXStatusName(db_get_wsa(pdnce->hContact, pdnce->szProto, "XStatusName")); if (tszXStatusName != nullptr && tszXStatusName[0] != 0) { mir_wstrncpy(text, tszXStatusName, text_size); CopySkipUnprintableChars(text, text, text_size - 1); } } if (text[0] == '\0') { if (line.show_listening_if_no_away) { GetListeningTo(text, text_size, pdnce); if (text[0] != '\0') return TEXT_LISTENING_TO; } if (line.show_status_if_no_away) // re-request status if no away goto LBL_Status; } return TEXT_STATUS_MESSAGE; case TEXT_LISTENING_TO: GetListeningTo(text, text_size, pdnce); return TEXT_LISTENING_TO; case TEXT_TEXT: { ptrW tmp(variables_parsedup(line.text, pdnce->tszName, pdnce->hContact)); mir_wstrncpy(text, tmp, text_size); CopySkipUnprintableChars(text, text, text_size - 1); } return TEXT_TEXT; case TEXT_CONTACT_TIME: if (pdnce->hTimeZone) { // Get pdnce time text[0] = 0; TimeZone_PrintDateTime(pdnce->hTimeZone, L"t", text, text_size, 0); } return TEXT_CONTACT_TIME; } return TEXT_EMPTY; }