summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/m_hotkeys.h4
-rw-r--r--include/m_srmm_int.h8
-rw-r--r--libs/win32/mir_app.libbin225328 -> 225554 bytes
-rw-r--r--libs/win64/mir_app.libbin221068 -> 221278 bytes
-rw-r--r--plugins/Scriver/res/resource.rc2
-rw-r--r--plugins/Scriver/src/chat_main.cpp2
-rw-r--r--plugins/Scriver/src/globals.cpp17
-rw-r--r--plugins/Scriver/src/globals.h17
-rw-r--r--plugins/Scriver/src/input.cpp30
-rw-r--r--plugins/Scriver/src/msgdialog.cpp17
-rw-r--r--plugins/Scriver/src/msgoptions.cpp10
-rw-r--r--plugins/Scriver/src/msgs.h3
-rw-r--r--plugins/Scriver/src/resource.h1
-rw-r--r--plugins/TabSRMM/src/chat_main.cpp2
-rw-r--r--plugins/TabSRMM/src/generic_msghandlers.cpp7
-rw-r--r--plugins/TabSRMM/src/globals.cpp3
-rw-r--r--plugins/TabSRMM/src/globals.h3
-rw-r--r--plugins/TabSRMM/src/hotkeyhandler.cpp1
-rw-r--r--plugins/TabSRMM/src/msgdialog.cpp46
-rw-r--r--plugins/TabSRMM/src/msgoptions.cpp3
-rw-r--r--plugins/TabSRMM/src/msgs.h305
-rwxr-xr-xprotocols/JabberG/src/jabber_thread.cpp5
-rw-r--r--src/core/stdmsg/res/resource.rc4
-rw-r--r--src/core/stdmsg/src/chat_manager.cpp4
-rw-r--r--src/core/stdmsg/src/chat_window.cpp2
-rw-r--r--src/core/stdmsg/src/cmdlist.cpp2
-rw-r--r--src/core/stdmsg/src/globals.cpp53
-rw-r--r--src/core/stdmsg/src/globals.h74
-rw-r--r--src/core/stdmsg/src/msgdialog.cpp110
-rw-r--r--src/core/stdmsg/src/msglog.cpp16
-rw-r--r--src/core/stdmsg/src/msgoptions.cpp124
-rw-r--r--src/core/stdmsg/src/msgs.cpp14
-rw-r--r--src/core/stdmsg/src/msgs.h1
-rw-r--r--src/core/stdmsg/src/resource.h3
-rw-r--r--src/core/stdmsg/src/srmm.cpp42
-rw-r--r--src/core/stdmsg/src/stdafx.h42
-rw-r--r--src/core/stdmsg/src/tabs.cpp10
-rw-r--r--src/core/stdmsg/stdmsg.vcxproj1
-rw-r--r--src/core/stdmsg/stdmsg.vcxproj.filters3
-rw-r--r--src/mir_app/src/chat.h2
-rw-r--r--src/mir_app/src/hotkeys.cpp2
-rw-r--r--src/mir_app/src/miranda.h2
-rw-r--r--src/mir_app/src/srmm_base.cpp12
-rw-r--r--src/mir_app/src/srmm_log.cpp2
-rw-r--r--src/mir_app/src/srmm_util.cpp24
45 files changed, 420 insertions, 615 deletions
diff --git a/include/m_hotkeys.h b/include/m_hotkeys.h
index d1a4adc0cf..61728eca8b 100644
--- a/include/m_hotkeys.h
+++ b/include/m_hotkeys.h
@@ -35,8 +35,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
struct HOTKEYDESC
{
const char *pszName; // name to refer to hotkey when playing and in db
- MAllStrings szDescription; // description for options dialog
- MAllStrings szSection; // section name used to group sounds (NULL is acceptable)
+ MAllCStrings szDescription; // description for options dialog
+ MAllCStrings szSection; // section name used to group sounds (NULL is acceptable)
const char *pszService; // Service to call when HotKey Pressed
uint16_t DefHotKey; // default hot key for action
uint32_t dwFlags; // one of HKD_* constants
diff --git a/include/m_srmm_int.h b/include/m_srmm_int.h
index 24fcadda68..bb7d29f411 100644
--- a/include/m_srmm_int.h
+++ b/include/m_srmm_int.h
@@ -210,7 +210,6 @@ protected:
CCtrlRichEdit m_message;
SESSION_INFO *m_si;
COLORREF m_clrInputBG, m_clrInputFG;
- time_t m_iLastEnterTime;
// user typing support;
uint32_t m_nLastTyping = 0;
@@ -219,7 +218,7 @@ protected:
const USERINFO* m_pUserTyping = nullptr;
CCtrlListBox m_nickList;
- CCtrlButton m_btnColor, m_btnBkColor;
+ CCtrlButton m_btnColor, m_btnBkColor, m_btnOk;
CCtrlButton m_btnBold, m_btnItalic, m_btnUnderline;
CCtrlButton m_btnHistory, m_btnChannelMgr, m_btnNickList, m_btnFilter;
@@ -289,6 +288,11 @@ EXTERN_C MIR_APP_DLL(DWORD) CALLBACK Srmm_LogStreamCallback(DWORD_PTR dwCookie,
EXTERN_C MIR_APP_DLL(void) Srmm_Broadcast(UINT, WPARAM, LPARAM);
/////////////////////////////////////////////////////////////////////////////////////////
+// creates plugin-specific hot key for sending messages
+
+EXTERN_C MIR_APP_DLL(void) Srmm_CreateHotkey(const char *pszSection, const char *pszDescription);
+
+/////////////////////////////////////////////////////////////////////////////////////////
// finds a SRMM window using hContact
EXTERN_C MIR_APP_DLL(HWND) Srmm_FindWindow(MCONTACT hContact);
diff --git a/libs/win32/mir_app.lib b/libs/win32/mir_app.lib
index fa41ea0a59..41f431c6ac 100644
--- a/libs/win32/mir_app.lib
+++ b/libs/win32/mir_app.lib
Binary files differ
diff --git a/libs/win64/mir_app.lib b/libs/win64/mir_app.lib
index b2e3e9b86c..6357328d82 100644
--- a/libs/win64/mir_app.lib
+++ b/libs/win64/mir_app.lib
Binary files differ
diff --git a/plugins/Scriver/res/resource.rc b/plugins/Scriver/res/resource.rc
index 4164a6a1af..24af2de9b0 100644
--- a/plugins/Scriver/res/resource.rc
+++ b/plugins/Scriver/res/resource.rc
@@ -47,8 +47,6 @@ BEGIN
EDITTEXT IDC_SECONDS,213,125,35,12,ES_RIGHT | ES_NUMBER
CONTROL "",IDC_SECONDSSPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK,239,125,11,14
LTEXT "seconds",IDC_STATIC,253,127,44,8
- LTEXT "Send message on:",IDC_STATIC,6,142,192,8
- COMBOBOX IDC_SENDMODE,6,153,84,10,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
END
IDD_OPT_MSGTABS DIALOGEX 2, 0, 304, 230
diff --git a/plugins/Scriver/src/chat_main.cpp b/plugins/Scriver/src/chat_main.cpp
index c3f59fb6e1..d06974eb58 100644
--- a/plugins/Scriver/src/chat_main.cpp
+++ b/plugins/Scriver/src/chat_main.cpp
@@ -159,6 +159,8 @@ int Chat_Load()
g_chatApi.OnFlashHighlight = OnFlashHighlight;
g_chatApi.ShowRoom = ShowRoom;
+ Srmm_CreateHotkey(LPGEN("Messaging"), LPGEN("Action: Send message"));
+
oldDoPopup = g_chatApi.DoPopup; g_chatApi.DoPopup = DoPopup;
oldDoTrayIcon = g_chatApi.DoTrayIcon; g_chatApi.DoTrayIcon = DoTrayIcon;
g_chatApi.ReloadSettings();
diff --git a/plugins/Scriver/src/globals.cpp b/plugins/Scriver/src/globals.cpp
index 03b1fe1cb5..2b735d9d3c 100644
--- a/plugins/Scriver/src/globals.cpp
+++ b/plugins/Scriver/src/globals.cpp
@@ -269,22 +269,6 @@ void InitGlobals()
memset(&g_dat, 0, sizeof(struct GlobalMessageData));
g_dat.hParentWindowList = WindowList_Create();
- if (!db_get_b(0, "Compatibility", "Scriver", 0)) {
- if (g_plugin.getByte("SendOnEnter"))
- g_dat.sendMode = SEND_ON_ENTER;
- else if (g_plugin.getByte("SendOnDblEnter"))
- g_dat.sendMode = SEND_ON_DBL_ENTER;
- else if (g_plugin.getByte("SendOnCtrlEnter"))
- g_dat.sendMode = SEND_ON_CTRL_ENTER;
-
- g_plugin.setByte(SRMSGSET_SENDMODE, g_dat.sendMode);
-
- g_plugin.delSetting("SendOnEnter");
- g_plugin.delSetting("SendOnDblEnter");
- g_plugin.delSetting("SendOnCtrlEnter");
- db_set_b(0, "Compatibility", "Scriver", 1);
- }
-
HookEvent(ME_PROTO_ACK, ackevent);
ReloadGlobals();
g_dat.lastParent = nullptr;
@@ -346,7 +330,6 @@ void ReloadGlobals()
g_dat.flags.bSaveDrafts = g_plugin.bSaveDrafts;
g_dat.flags.bDelTemp = g_plugin.bDelTemp;
- g_dat.sendMode = (SendMode)g_plugin.getByte(SRMSGSET_SENDMODE, SRMSGDEFSET_SENDMODE);
g_dat.openFlags = g_plugin.iPopFlags;
g_dat.indentSize = g_plugin.iIndentSize;
g_dat.logLineColour = g_plugin.getDword(SRMSGSET_LINECOLOUR, SRMSGDEFSET_LINECOLOUR);
diff --git a/plugins/Scriver/src/globals.h b/plugins/Scriver/src/globals.h
index af10248c72..5a125e5039 100644
--- a/plugins/Scriver/src/globals.h
+++ b/plugins/Scriver/src/globals.h
@@ -23,18 +23,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef SRMM_GLOBALS_H
#define SRMM_GLOBALS_H
-typedef struct ImageListUsageEntry_tag
+struct ImageListUsageEntry
{
int index;
int used;
-} ImageListUsageEntry;
-
-enum SendMode
-{
- SEND_ON_ENTER,
- SEND_ON_DBL_ENTER,
- SEND_ON_CTRL_ENTER,
- SEND_ON_SHIFT_ENTER
};
struct WindowFlags
@@ -99,11 +91,10 @@ struct GlobalMessageData
TabFlags flags2;
};
- uint32_t openFlags;
- uint32_t limitNamesLength;
+ uint32_t openFlags;
+ uint32_t limitNamesLength;
int activeAlpha;
int inactiveAlpha;
- SendMode sendMode;
int tabIconListUsageSize;
int smileyAddInstalled;
int limitTabsNum;
@@ -116,7 +107,7 @@ struct GlobalMessageData
HBRUSH hInfobarBrush;
int toolbarPosition;
HWND hFocusWnd;
- uint32_t logLineColour;
+ uint32_t logLineColour;
int logPixelSX;
int logPixelSY;
HICON hMsgIcon;
diff --git a/plugins/Scriver/src/input.cpp b/plugins/Scriver/src/input.cpp
index 9dbb22f1b3..bc6da8d3d9 100644
--- a/plugins/Scriver/src/input.cpp
+++ b/plugins/Scriver/src/input.cpp
@@ -112,36 +112,6 @@ void InputAreaContextMenu(HWND hwnd, WPARAM, LPARAM lParam, MCONTACT hContact)
DestroyMenu(hMenu);
}
-bool CMsgDialog::CheckSend()
-{
- BOOL isShift = GetKeyState(VK_SHIFT) & 0x8000;
- BOOL isCtrl = GetKeyState(VK_CONTROL) & 0x8000;
-
- if (!isShift && !isCtrl && g_dat.sendMode == SEND_ON_ENTER) {
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
- return true;
- }
- if (!isShift && isCtrl && g_dat.sendMode == SEND_ON_CTRL_ENTER) {
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
- return true;
- }
- if (isShift && !isCtrl && g_dat.sendMode == SEND_ON_SHIFT_ENTER) {
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
- return true;
- }
-
- if (g_dat.sendMode == SEND_ON_DBL_ENTER) {
- if (m_iLastEnterTime + 1000 < GetTickCount())
- m_iLastEnterTime = GetTickCount();
- else {
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
- return true;
- }
- }
-
- return false;
-}
-
int CMsgDialog::InputAreaShortcuts(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
BOOL isShift = GetKeyState(VK_SHIFT) & 0x8000;
diff --git a/plugins/Scriver/src/msgdialog.cpp b/plugins/Scriver/src/msgdialog.cpp
index 024c43fe97..6890f3c971 100644
--- a/plugins/Scriver/src/msgdialog.cpp
+++ b/plugins/Scriver/src/msgdialog.cpp
@@ -105,7 +105,6 @@ CMsgDialog::CMsgDialog(MCONTACT hContact, bool bIncoming) :
m_splitterX(this, IDC_SPLITTERX),
m_splitterY(this, IDC_SPLITTERY),
- m_btnOk(this, IDOK),
m_btnAdd(this, IDC_ADD),
m_btnQuote(this, IDC_QUOTE),
m_btnDetails(this, IDC_DETAILS),
@@ -126,7 +125,6 @@ CMsgDialog::CMsgDialog(SESSION_INFO *si) :
m_splitterX(this, IDC_SPLITTERX),
m_splitterY(this, IDC_SPLITTERY),
- m_btnOk(this, IDOK),
m_btnAdd(this, IDC_ADD),
m_btnQuote(this, IDC_QUOTE),
m_btnDetails(this, IDC_DETAILS),
@@ -858,12 +856,6 @@ LRESULT CMsgDialog::WndProc_Message(UINT msg, WPARAM wParam, LPARAM lParam)
switch (msg) {
case WM_KEYDOWN:
- if (wParam == VK_RETURN) {
- if (CheckSend())
- return 0;
- }
- else m_iLastEnterTime = 0;
-
if (isChat()) {
bool isShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0;
bool isCtrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0;
@@ -918,16 +910,7 @@ LRESULT CMsgDialog::WndProc_Message(UINT msg, WPARAM wParam, LPARAM lParam)
SetActiveWindow(m_hwnd);
break;
- case WM_MOUSEWHEEL:
- case WM_LBUTTONDOWN:
- case WM_RBUTTONDOWN:
- case WM_MBUTTONDOWN:
- case WM_KILLFOCUS:
- m_iLastEnterTime = 0;
- break;
-
case WM_SYSCHAR:
- m_iLastEnterTime = 0;
if ((wParam == 's' || wParam == 'S') && (GetKeyState(VK_MENU) & 0x8000)) {
PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
return 0;
diff --git a/plugins/Scriver/src/msgoptions.cpp b/plugins/Scriver/src/msgoptions.cpp
index 9b0f0c8d57..8ddb352a08 100644
--- a/plugins/Scriver/src/msgoptions.cpp
+++ b/plugins/Scriver/src/msgoptions.cpp
@@ -244,7 +244,6 @@ class CMainOptionsDlg : public CBaseOptionDlg
CCtrlSpin spinTimeout;
CCtrlCheck chkAutoMin, chkAutoPopup, chkCascade, chkSavePerContact, chkStayMinimized;
CCtrlCheck chkSaveDrafts, chkDelTemp, chkHideContainer;
- CCtrlCombo cmbSendMode;
CCtrlTreeView m_tree;
public:
@@ -255,7 +254,6 @@ public:
chkAutoMin(this, IDC_AUTOMIN),
chkCascade(this, IDC_CASCADE),
chkDelTemp(this, IDC_DELTEMP),
- cmbSendMode(this, IDC_SENDMODE),
chkAutoPopup(this, IDC_AUTOPOPUP),
chkSaveDrafts(this, IDC_SAVEDRAFTS),
chkHideContainer(this, IDC_HIDECONTAINERS),
@@ -280,20 +278,12 @@ public:
{
SetWindowLongPtr(m_tree.GetHwnd(), GWL_STYLE, (GetWindowLongPtr(m_tree.GetHwnd(), GWL_STYLE) & ~WS_BORDER) | TVS_NOHSCROLL | TVS_CHECKBOXES);
FillCheckBoxTree(statusValues, _countof(statusValues), g_plugin.iPopFlags);
-
- cmbSendMode.AddString(TranslateT("Enter"));
- cmbSendMode.AddString(TranslateT("Double 'Enter'"));
- cmbSendMode.AddString(TranslateT("Ctrl+Enter"));
- cmbSendMode.AddString(TranslateT("Shift+Enter"));
- cmbSendMode.SetCurSel(g_dat.sendMode);
return true;
}
bool OnApply() override
{
g_plugin.iPopFlags = MakeCheckBoxTreeFlags();
-
- g_plugin.setByte(SRMSGSET_SENDMODE, cmbSendMode.GetCurSel());
return true;
}
diff --git a/plugins/Scriver/src/msgs.h b/plugins/Scriver/src/msgs.h
index 7a24047769..98588d167b 100644
--- a/plugins/Scriver/src/msgs.h
+++ b/plugins/Scriver/src/msgs.h
@@ -87,7 +87,6 @@ class CMsgDialog : public CSrmmBaseDialog
friend struct ParentWindowData;
friend INT_PTR CALLBACK InfobarWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
- bool CheckSend(void);
void ClearLog(void);
HICON GetTabIcon(void);
void GetTitlebarIcon(struct TitleBarData *tbd);
@@ -145,7 +144,7 @@ class CMsgDialog : public CSrmmBaseDialog
wchar_t *m_wszSearchQuery, *m_wszSearchResult;
SESSION_INFO *m_pLastSession;
- CCtrlButton m_btnOk, m_btnAdd, m_btnUserMenu, m_btnQuote, m_btnDetails;
+ CCtrlButton m_btnAdd, m_btnUserMenu, m_btnQuote, m_btnDetails;
CSplitter m_splitterX, m_splitterY;
public:
diff --git a/plugins/Scriver/src/resource.h b/plugins/Scriver/src/resource.h
index 4793e60cde..acb675f715 100644
--- a/plugins/Scriver/src/resource.h
+++ b/plugins/Scriver/src/resource.h
@@ -98,7 +98,6 @@
#define IDC_LOADCOUNTSPIN 1040
#define IDC_SHOWSTATUSBAR 1041
#define IDC_SHOWTOOLBAR 1042
-#define IDC_SENDMODE 1043
#define IDC_LOADTIMEN 1045
#define IDC_LOADTIMESPIN 1046
#define IDC_LOADTIME 1047
diff --git a/plugins/TabSRMM/src/chat_main.cpp b/plugins/TabSRMM/src/chat_main.cpp
index 00c4806289..5150712a36 100644
--- a/plugins/TabSRMM/src/chat_main.cpp
+++ b/plugins/TabSRMM/src/chat_main.cpp
@@ -371,6 +371,8 @@ int Chat_Load()
g_chatApi.ShowRoom = stubShowRoom;
g_chatApi.OnLoadSettings = OnLoadSettings;
+ Srmm_CreateHotkey(TABSRMM_HK_SECTION_GENERIC, LPGEN("Send Message"));
+
// this operation is unsafe, that's why we restore the old pci state on exit
g_chatApi.DoSoundsFlashPopupTrayStuff = DoSoundsFlashPopupTrayStuff;
g_chatApi.IsHighlighted = IsHighlighted;
diff --git a/plugins/TabSRMM/src/generic_msghandlers.cpp b/plugins/TabSRMM/src/generic_msghandlers.cpp
index 6e816b548c..33f53404b2 100644
--- a/plugins/TabSRMM/src/generic_msghandlers.cpp
+++ b/plugins/TabSRMM/src/generic_msghandlers.cpp
@@ -135,13 +135,6 @@ bool CMsgDialog::DM_GenericHotkeysCheck(MSG *message)
m_pContainer->OptionsDialog();
return true;
- case TABSRMM_HK_SEND:
- if (!(GetWindowLongPtr(m_message.GetHwnd(), GWL_STYLE) & ES_READONLY)) {
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
- return true;
- }
- break;
-
case TABSRMM_HK_TOGGLEINFOPANEL:
m_pPanel.setActive(!m_pPanel.isActive());
m_pPanel.showHide();
diff --git a/plugins/TabSRMM/src/globals.cpp b/plugins/TabSRMM/src/globals.cpp
index 2e6e269b0f..1e495f0c33 100644
--- a/plugins/TabSRMM/src/globals.cpp
+++ b/plugins/TabSRMM/src/globals.cpp
@@ -120,9 +120,6 @@ void CGlobals::reloadSettings(bool fReloadSkins)
m_ncm.cbSize = sizeof(NONCLIENTMETRICS);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &m_ncm, 0);
- m_bSendOnShiftEnter = M.GetBool("sendonshiftenter", false);
- m_bSendOnEnter = M.GetBool(SRMSGSET_SENDONENTER, SRMSGDEFSET_SENDONENTER);
- m_bSendOnDblEnter = M.GetBool("SendOnDblEnter", false);
m_bAutoSwitchTabs = M.GetBool("autoswitchtabs", true);
m_iTabNameLimit = db_get_w(0, SRMSGMOD_T, "cut_at", 15);
m_bCutContactNameOnTabs = M.GetBool("cuttitle", false);
diff --git a/plugins/TabSRMM/src/globals.h b/plugins/TabSRMM/src/globals.h
index 22fa93b00f..1b68521a53 100644
--- a/plugins/TabSRMM/src/globals.h
+++ b/plugins/TabSRMM/src/globals.h
@@ -79,9 +79,6 @@ public:
// dynamic options, need reload when options change
int m_iTabNameLimit;
bool m_bAllowTab;
- bool m_bSendOnShiftEnter;
- bool m_bSendOnEnter;
- bool m_bSendOnDblEnter;
bool m_bAutoSwitchTabs;
bool m_bCutContactNameOnTabs;
bool m_bHideOnClose;
diff --git a/plugins/TabSRMM/src/hotkeyhandler.cpp b/plugins/TabSRMM/src/hotkeyhandler.cpp
index 8137c49756..63420a6f0c 100644
--- a/plugins/TabSRMM/src/hotkeyhandler.cpp
+++ b/plugins/TabSRMM/src/hotkeyhandler.cpp
@@ -49,7 +49,6 @@ static HOTKEYDESC _hotkeydescs[] = {
{ "tabsrmm_clear", LPGEN("Clear message area"), TABSRMM_HK_SECTION_IM, nullptr, HOTKEYCODE(HOTKEYF_CONTROL, 'K'), 0, TABSRMM_HK_CLEARMSG },
{ "tabsrmm_sendlater", LPGEN("Toggle send later"), TABSRMM_HK_SECTION_IM, nullptr, HOTKEYCODE(HOTKEYF_CONTROL | HOTKEYF_SHIFT, 'S'), 0, TABSRMM_HK_TOGGLESENDLATER },
- { "tabsrmm_send", LPGEN("Send message"), TABSRMM_HK_SECTION_GENERIC, nullptr, 0, 0, TABSRMM_HK_SEND },
{ "tabsrmm_hist", LPGEN("Show message history"), TABSRMM_HK_SECTION_GENERIC, nullptr, HOTKEYCODE(HOTKEYF_ALT, 'H'), 0, TABSRMM_HK_HISTORY },
{ "tabsrmm_sendmenu", LPGEN("Show send menu"), TABSRMM_HK_SECTION_IM, nullptr, HOTKEYCODE(HOTKEYF_CONTROL, 'S'), 0, TABSRMM_HK_SENDMENU },
{ "tabsrmm_protomenu", LPGEN("Show protocol menu"), TABSRMM_HK_SECTION_IM, nullptr, HOTKEYCODE(HOTKEYF_CONTROL, 'P'), 0, TABSRMM_HK_PROTOMENU },
diff --git a/plugins/TabSRMM/src/msgdialog.cpp b/plugins/TabSRMM/src/msgdialog.cpp
index d008b50f8d..f10b41b967 100644
--- a/plugins/TabSRMM/src/msgdialog.cpp
+++ b/plugins/TabSRMM/src/msgdialog.cpp
@@ -313,7 +313,6 @@ CMsgDialog::CMsgDialog(int iDlgId, MCONTACT hContact) :
CSuper(g_plugin, iDlgId),
m_pPanel(this),
timerAwayMsg(this, 4),
- m_btnOk(this, IDOK),
m_btnAdd(this, IDC_ADD),
m_btnQuote(this, IDC_QUOTE),
m_btnCancelAdd(this, IDC_CANCELADD)
@@ -331,7 +330,6 @@ CMsgDialog::CMsgDialog(SESSION_INFO *si) :
CSuper(g_plugin, IDD_CHANNEL, si),
m_pPanel(this),
timerAwayMsg(this, 4),
- m_btnOk(this, IDOK),
m_btnAdd(this, IDC_ADD),
m_btnQuote(this, IDC_QUOTE),
m_btnCancelAdd(this, IDC_CANCELADD)
@@ -1505,6 +1503,7 @@ int CMsgDialog::OnFilter(MSGFILTER *pFilter)
RedrawWindow(m_hwnd, nullptr, nullptr, RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW | RDW_ALLCHILDREN);
return _dlgReturn(m_hwnd, 1);
}
+
if (DM_GenericHotkeysCheck(&message)) {
m_bkeyProcessed = true;
return _dlgReturn(m_hwnd, 1);
@@ -1786,8 +1785,6 @@ LRESULT CMsgDialog::WndProc_Message(UINT msg, WPARAM wParam, LPARAM lParam)
case WM_MOUSEWHEEL:
if (DM_MouseWheelHandler(wParam, lParam) == 0)
return 0;
-
- m_iLastEnterTime = 0;
break;
case EM_PASTESPECIAL:
@@ -1857,47 +1854,11 @@ LRESULT CMsgDialog::WndProc_Message(UINT msg, WPARAM wParam, LPARAM lParam)
replaceStrW(m_wszSearchResult, nullptr);
}
- if (wParam == VK_RETURN) {
- if (m_bEditNotesActive)
- break;
-
- if (isShift) {
- if (PluginConfig.m_bSendOnShiftEnter) {
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
- return 0;
- }
- else break;
- }
- if ((isCtrl && !isShift) ^ (0 != PluginConfig.m_bSendOnEnter)) {
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
- return 0;
- }
- if (PluginConfig.m_bSendOnEnter || PluginConfig.m_bSendOnDblEnter) {
- if (isCtrl)
- break;
-
- if (PluginConfig.m_bSendOnDblEnter) {
- if (m_iLastEnterTime + 2 < time(0)) {
- m_iLastEnterTime = time(0);
- break;
- }
- else {
- m_message.SendMsg(WM_KEYDOWN, VK_BACK, 0);
- m_message.SendMsg(WM_KEYUP, VK_BACK, 0);
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
- return 0;
- }
- }
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
- return 0;
- }
- else break;
- }
- else m_iLastEnterTime = 0;
+ if (wParam == VK_RETURN && m_bEditNotesActive)
+ break;
if (isCtrl && !isAlt && !isShift) {
if (wParam == VK_UP || wParam == VK_DOWN) { // input history scrolling (ctrl-up / down)
- m_iLastEnterTime = 0;
m_cache->inputHistoryEvent(wParam);
return 0;
}
@@ -1912,7 +1873,6 @@ LRESULT CMsgDialog::WndProc_Message(UINT msg, WPARAM wParam, LPARAM lParam)
case VK_END:
WPARAM wp = 0;
- m_iLastEnterTime = 0;
if (wParam == VK_UP)
wp = MAKEWPARAM(SB_LINEUP, 0);
else if (wParam == VK_PRIOR)
diff --git a/plugins/TabSRMM/src/msgoptions.cpp b/plugins/TabSRMM/src/msgoptions.cpp
index 98199536a6..fce1efd134 100644
--- a/plugins/TabSRMM/src/msgoptions.cpp
+++ b/plugins/TabSRMM/src/msgoptions.cpp
@@ -476,9 +476,6 @@ static TOptionListGroup lvGroupsMsg[] =
static TOptionListItem lvItemsMsg[] =
{
- { 0, LPGENW("Send on Shift+Enter"), 0, LOI_TYPE_SETTING, (UINT_PTR)"sendonshiftenter", 1 },
- { 0, LPGENW("Send message on 'Enter'"), SRMSGDEFSET_SENDONENTER, LOI_TYPE_SETTING, (UINT_PTR)SRMSGSET_SENDONENTER, 1 },
- { 0, LPGENW("Send message on double 'Enter'"), 0, LOI_TYPE_SETTING, (UINT_PTR)"SendOnDblEnter", 1 },
{ 0, LPGENW("Minimize the message window on send"), SRMSGDEFSET_AUTOMIN, LOI_TYPE_SETTING, (UINT_PTR)SRMSGSET_AUTOMIN, 1 },
{ 0, LPGENW("Close the message window on send"), 0, LOI_TYPE_SETTING, (UINT_PTR)"AutoClose", 1 },
{ 0, LPGENW("Always flash contact list and tray icon for new messages"), 0, LOI_TYPE_SETTING, (UINT_PTR)"flashcl", 0 },
diff --git a/plugins/TabSRMM/src/msgs.h b/plugins/TabSRMM/src/msgs.h
index 1df4c26ae1..671fd02512 100644
--- a/plugins/TabSRMM/src/msgs.h
+++ b/plugins/TabSRMM/src/msgs.h
@@ -415,11 +415,6 @@ class CMsgDialog : public CSrmmBaseDialog
friend class CLogWindow;
friend class CProxyWindow;
- void BB_InitDlgButtons(void);
- void BB_RefreshTheme(void);
- BOOL BB_SetButtonsPos(void);
- void BB_RedrawButtons(void);
-
std::map<CustomButtonData *, bool> mapHidden;
__forceinline bool BB_IsDisplayed(CustomButtonData *cbd) const
@@ -427,160 +422,165 @@ class CMsgDialog : public CSrmmBaseDialog
return (!isChat() && cbd->m_bIMButton) || (isChat() && cbd->m_bChatButton);
}
- void CB_DestroyAllButtons(void);
- void CB_DestroyButton(uint32_t dwButtonCID, uint32_t dwFlags);
- void CB_ChangeButton(CustomButtonData *cbd);
-
- void DM_AddDivider(void);
- HWND DM_CreateClist(void);
- void DM_DismissTip(const POINT& pt);
- void DM_ErrorDetected(int type, int flag);
- void DM_EventAdded(WPARAM wParam, LPARAM lParam);
- void DM_FreeTheme(void);
- bool DM_GenericHotkeysCheck(MSG *message);
- void DM_HandleAutoSizeRequest(REQRESIZE *rr);
- void DM_InitRichEdit(void);
- void DM_InitTip(void);
- LRESULT DM_MouseWheelHandler(WPARAM wParam, LPARAM lParam);
- LRESULT DM_MsgWindowCmdHandler(UINT cmd, WPARAM wParam, LPARAM lParam);
- void DM_NotifyTyping(int mode);
- void DM_SetDBButtonStates();
- int DM_SplitterGlobalEvent(WPARAM wParam, LPARAM lParam);
- void DM_ThemeChanged(void);
- void DM_Typing(bool fForceOff);
- void DM_UpdateLastMessage(void) const;
-
- void AdjustBottomAvatarDisplay(void);
- void CalcDynamicAvatarSize(BITMAP *bminfo);
- void DetermineMinHeight(void);
- BOOL DoRtfToTags(CMStringW &pszText) const;
- void FindFirstEvent(void);
- int FindRTLLocale(void);
- void FlashOnClist(MEVENT hEvent, DBEVENTINFO *dbei);
- void FlashTab(bool bInvertMode);
- LRESULT GetSendButtonState();
- void GetSendFormat(void);
- HICON GetXStatusIcon() const;
- void HandlePasteAndSend(void);
- void Init(void);
- void LoadContactAvatar(void);
- void LoadOwnAvatar(void);
- void LoadSplitter(void);
- void PlayIncomingSound(void) const;
- LRESULT ProcessHotkeysByMsgFilter(const CCtrlBase &pCtrl, UINT msg, WPARAM wParam, LPARAM lParam);
- void SaveAvatarToFile(HBITMAP hbm, int isOwnPic);
- void SendHBitmapAsFile(HBITMAP hbmp) const;
- void ShowPopupMenu(const CCtrlBase&, POINT pt);
- void StreamEvents(MEVENT, int, bool);
- void UpdateWindowIcon(void);
- void UpdateWindowState(UINT msg);
- void VerifyProxy(void);
- LRESULT WMCopyHandler(UINT uMsg, WPARAM wParam, LPARAM lParam);
-
- uint16_t m_wStatus, m_wOldStatus;
- size_t m_iSendBufferSize;
- int m_iSendLength; // message length in utf-8 octets
- HICON m_hSmileyIcon;
- HWND m_hwndContactPic, m_hwndPanelPic, m_hwndPanelPicParent;
- UINT m_bbLSideWidth, m_bbRSideWidth;
- uint8_t kstate[256];
+ void BB_InitDlgButtons(void);
+ void BB_RefreshTheme(void);
+ BOOL BB_SetButtonsPos(void);
+ void BB_RedrawButtons(void);
+
+ void CB_DestroyAllButtons(void);
+ void CB_DestroyButton(uint32_t dwButtonCID, uint32_t dwFlags);
+ void CB_ChangeButton(CustomButtonData *cbd);
+
+ void DM_AddDivider(void);
+ HWND DM_CreateClist(void);
+ void DM_DismissTip(const POINT& pt);
+ void DM_ErrorDetected(int type, int flag);
+ void DM_EventAdded(WPARAM wParam, LPARAM lParam);
+ void DM_FreeTheme(void);
+ bool DM_GenericHotkeysCheck(MSG *message);
+ void DM_HandleAutoSizeRequest(REQRESIZE *rr);
+ void DM_InitRichEdit(void);
+ void DM_InitTip(void);
+ LRESULT DM_MouseWheelHandler(WPARAM wParam, LPARAM lParam);
+ LRESULT DM_MsgWindowCmdHandler(UINT cmd, WPARAM wParam, LPARAM lParam);
+ void DM_NotifyTyping(int mode);
+ void DM_SetDBButtonStates();
+ int DM_SplitterGlobalEvent(WPARAM wParam, LPARAM lParam);
+ void DM_ThemeChanged(void);
+ void DM_Typing(bool fForceOff);
+ void DM_UpdateLastMessage(void) const;
+
+ void AdjustBottomAvatarDisplay(void);
+ void CalcDynamicAvatarSize(BITMAP *bminfo);
+ void DetermineMinHeight(void);
+ BOOL DoRtfToTags(CMStringW &pszText) const;
+ void FindFirstEvent(void);
+ int FindRTLLocale(void);
+ void FlashOnClist(MEVENT hEvent, DBEVENTINFO *dbei);
+ void FlashTab(bool bInvertMode);
+ LRESULT GetSendButtonState();
+ void GetSendFormat(void);
+ HICON GetXStatusIcon() const;
+ void HandlePasteAndSend(void);
+ void Init(void);
+ void LoadContactAvatar(void);
+ void LoadOwnAvatar(void);
+ void LoadSplitter(void);
+ void PlayIncomingSound(void) const;
+ LRESULT ProcessHotkeysByMsgFilter(const CCtrlBase &pCtrl, UINT msg, WPARAM wParam, LPARAM lParam);
+ void SaveAvatarToFile(HBITMAP hbm, int isOwnPic);
+ void SendHBitmapAsFile(HBITMAP hbmp) const;
+ void ShowPopupMenu(const CCtrlBase&, POINT pt);
+ void StreamEvents(MEVENT, int, bool);
+ void UpdateWindowIcon(void);
+ void UpdateWindowState(UINT msg);
+ void VerifyProxy(void);
+ LRESULT WMCopyHandler(UINT uMsg, WPARAM wParam, LPARAM lParam);
+
+ uint16_t m_wStatus, m_wOldStatus;
+ size_t m_iSendBufferSize;
+ int m_iSendLength; // message length in utf-8 octets
+ HICON m_hSmileyIcon;
+ HWND m_hwndContactPic, m_hwndPanelPic, m_hwndPanelPicParent;
+ UINT m_bbLSideWidth, m_bbRSideWidth;
+ uint8_t kstate[256];
- RECT m_rcNick, m_rcUIN, m_rcStatus, m_rcPic;
- int m_originalSplitterY;
- SIZE m_minEditBoxSize;
- uint32_t m_lastMessage;
- uint32_t m_dwTickLastEvent;
- HBITMAP m_hOwnPic;
- SIZE m_pic;
+ RECT m_rcNick, m_rcUIN, m_rcStatus, m_rcPic;
+ int m_originalSplitterY;
+ SIZE m_minEditBoxSize;
+ uint32_t m_lastMessage;
+ uint32_t m_dwTickLastEvent;
+ HBITMAP m_hOwnPic;
+ SIZE m_pic;
CMStringW m_szStatusText;
- HICON m_szStatusIcon;
- bool m_bStatusSet;
+ HICON m_szStatusIcon;
+ bool m_bStatusSet;
- bool m_bShowInfoAvatar, m_bShowUIElements;
- bool m_bFlashClist, m_bScrollingDisabled, m_bAwayMsgTimer;
- bool m_bDelayedSplitter, m_bWarnClose;
- bool m_bUseOffset;
- bool m_bkeyProcessed;
- bool m_fLimitedUpdate;
- bool m_bClrAdded;
- bool m_bInsertMode, m_bInitMode = true;
- bool m_bDeferredScroll, m_bDeferredRemakeLog;
- bool m_bWasBackgroundCreate;
-
- int m_iRealAvatarHeight;
- int m_iButtonBarReallyNeeds;
- uint32_t m_dwLastActivity;
- MEVENT m_hFlashingEvent;
- int m_SendFormat;
- LCID m_lcid;
- wchar_t m_lcID[10];
- int m_iPanelAvatarX, m_iPanelAvatarY;
- HWND m_hwndTip;
- uint32_t m_panelStatusCX;
- int m_textLen; // current text len
- LONG m_ipFieldHeight;
- WPARAM m_wParam; // used for "delayed" actions like moved splitters in minimized windows
- LPARAM m_lParam;
- int m_iHaveRTLLang;
+ bool m_bShowInfoAvatar, m_bShowUIElements;
+ bool m_bFlashClist, m_bScrollingDisabled, m_bAwayMsgTimer;
+ bool m_bDelayedSplitter, m_bWarnClose;
+ bool m_bUseOffset;
+ bool m_bkeyProcessed;
+ bool m_fLimitedUpdate;
+ bool m_bClrAdded;
+ bool m_bInsertMode, m_bInitMode = true;
+ bool m_bDeferredScroll, m_bDeferredRemakeLog;
+ bool m_bWasBackgroundCreate;
+
+ int m_iRealAvatarHeight;
+ int m_iButtonBarReallyNeeds;
+ uint32_t m_dwLastActivity;
+ MEVENT m_hFlashingEvent;
+ int m_SendFormat;
+ LCID m_lcid;
+ wchar_t m_lcID[10];
+ int m_iPanelAvatarX, m_iPanelAvatarY;
+ HWND m_hwndTip;
+ uint32_t m_panelStatusCX;
+ int m_textLen; // current text len
+ LONG m_ipFieldHeight;
+ WPARAM m_wParam; // used for "delayed" actions like moved splitters in minimized windows
+ LPARAM m_lParam;
+ int m_iHaveRTLLang;
- uint32_t m_iSplitterSaved;
- POINT m_ptTipActivation;
+ uint32_t m_iSplitterSaved;
+ POINT m_ptTipActivation;
protected:
- void GetMYUIN();
+ void GetMYUIN();
public:
- char *m_szProto;
- int m_iTabID;
- int m_iLogMode;
-
- bool m_bIsHistory, m_bNotOnList, m_bIsIdle;
- bool m_bActualHistory;
- bool m_bIsAutosizingInput;
- bool m_bCanFlashTab, m_bTabFlash;
- bool m_bEditNotesActive;
- bool m_bShowAvatar;
- bool m_bSaveBtn, m_bNeedCheckSize;
- bool m_bForcedClose;
- bool m_bErrorState;
- bool m_bDividerWanted, m_bDividerSet;
- bool m_bSplitterOverride;
- bool m_bRtlText;
- bool m_bLastParaDeleted;
-
- int m_sendMode;
- HKL m_hkl; // keyboard layout identifier
- uint32_t m_idle;
- uint32_t m_dwFlags;
- uint32_t m_dwUnread;
- HANDLE m_hTheme, m_hThemeIP, m_hThemeToolbar;
- HICON m_hXStatusIcon, m_hTabStatusIcon, m_hTabIcon, m_iFlashIcon, m_hTaskbarIcon, m_hClientIcon;
- MEVENT m_hDbEventFirst, m_hDbEventLast;
- HANDLE m_hTimeZone;
- MEVENT *m_hHistoryEvents;
- time_t m_lastEventTime;
- int m_iLastEventType;
- int m_iOpenJobs;
- int m_iInputAreaHeight = -1;
- int m_maxHistory, m_curHistory;
- int m_iCurrentQueueError;
- int m_iSplitterY, m_dynaSplitter;
- int m_savedSplitterY, m_savedDynaSplit;
- char *m_sendBuffer;
-
- wchar_t m_wszMyNickname[130];
- wchar_t m_wszStatus[50];
- wchar_t m_wszTitle[130]; // tab title...
- wchar_t m_myUin[80];
- wchar_t m_wszStatusBar[100];
- char m_szMicroLf[128];
-
- int m_iMultiSplit;
- int msgTop, rcLogBottom;
- bool m_bActivate, m_bWantPopup, m_bIsMeta;
-
- wchar_t *wszInitialText;
+ char* m_szProto;
+ int m_iTabID;
+ int m_iLogMode;
+
+ bool m_bIsHistory, m_bNotOnList, m_bIsIdle;
+ bool m_bActualHistory;
+ bool m_bIsAutosizingInput;
+ bool m_bCanFlashTab, m_bTabFlash;
+ bool m_bEditNotesActive;
+ bool m_bShowAvatar;
+ bool m_bSaveBtn, m_bNeedCheckSize;
+ bool m_bForcedClose;
+ bool m_bErrorState;
+ bool m_bDividerWanted, m_bDividerSet;
+ bool m_bSplitterOverride;
+ bool m_bRtlText;
+ bool m_bLastParaDeleted;
+
+ int m_sendMode;
+ HKL m_hkl; // keyboard layout identifier
+ uint32_t m_idle;
+ uint32_t m_dwFlags;
+ uint32_t m_dwUnread;
+ HANDLE m_hTheme, m_hThemeIP, m_hThemeToolbar;
+ HICON m_hXStatusIcon, m_hTabStatusIcon, m_hTabIcon, m_iFlashIcon, m_hTaskbarIcon, m_hClientIcon;
+ MEVENT m_hDbEventFirst, m_hDbEventLast;
+ HANDLE m_hTimeZone;
+ MEVENT* m_hHistoryEvents;
+ time_t m_lastEventTime;
+ int m_iLastEventType;
+ int m_iOpenJobs;
+ int m_iInputAreaHeight = -1;
+ int m_maxHistory, m_curHistory;
+ int m_iCurrentQueueError;
+ int m_iSplitterY, m_dynaSplitter;
+ int m_savedSplitterY, m_savedDynaSplit;
+ char* m_sendBuffer;
+
+ wchar_t m_wszMyNickname[130];
+ wchar_t m_wszStatus[50];
+ wchar_t m_wszTitle[130]; // tab title...
+ wchar_t m_myUin[80];
+ wchar_t m_wszStatusBar[100];
+ char m_szMicroLf[128];
+
+ int m_iMultiSplit;
+ int msgTop, rcLogBottom;
+ bool m_bActivate, m_bWantPopup, m_bIsMeta;
+
+ wchar_t* wszInitialText;
TOOLINFO ti;
CInfoPanel m_pPanel;
CProxyWindow *m_pWnd; // proxy window object (win7+, for taskbar support).
@@ -599,7 +599,7 @@ public:
SESSION_INFO *m_pLastSession;
CTimer timerAwayMsg;
- CCtrlButton m_btnOk, m_btnAdd, m_btnQuote, m_btnCancelAdd;
+ CCtrlButton m_btnAdd, m_btnQuote, m_btnCancelAdd;
public:
CMsgDialog(int dlgId, MCONTACT hContact);
@@ -817,8 +817,6 @@ struct TIconDescW
#define SRMSGDEFSET_AUTOPOPUP false
#define SRMSGSET_AUTOMIN "AutoMin"
#define SRMSGDEFSET_AUTOMIN 0
-#define SRMSGSET_SENDONENTER "SendOnEnter"
-#define SRMSGDEFSET_SENDONENTER true
#define SRMSGSET_MSGTIMEOUT "MessageTimeout"
#define SRMSGDEFSET_MSGTIMEOUT 30000
#define SRMSGSET_MSGTIMEOUT_MIN 5000 // minimum value (5 seconds)
@@ -1018,7 +1016,6 @@ struct SIDEBARITEM
#define TABSRMM_HK_CONTAINEROPTIONS 10
#define TABSRMM_HK_SENDFILE 12
#define TABSRMM_HK_QUOTEMSG 13
-#define TABSRMM_HK_SEND 14
#define TABSRMM_HK_CLEARMSG 15
#define TABARMM_HK_TOGGLEINFOPANEL 16
#define TABSRMM_HK_HISTORY 17
diff --git a/protocols/JabberG/src/jabber_thread.cpp b/protocols/JabberG/src/jabber_thread.cpp
index 8a9d408fc6..78d696d6f4 100755
--- a/protocols/JabberG/src/jabber_thread.cpp
+++ b/protocols/JabberG/src/jabber_thread.cpp
@@ -1570,9 +1570,8 @@ void CJabberProto::OnProcessPresence(const TiXmlElement *node, ThreadData *info)
}
hContact = DBCreateContact(from, nick, true, true);
}
- if (hContact && m_bUseOMEMO)
- {
- char szBareJid[JABBER_MAX_JID_LEN];
+
+ if (hContact && m_bUseOMEMO) {
XmlNodeIq iq("get", SerialNext());
iq << XATTR("from", m_ThreadInfo->fullJID);
iq << XATTR("to", from);
diff --git a/src/core/stdmsg/res/resource.rc b/src/core/stdmsg/res/resource.rc
index 752f5c20a8..44b399894c 100644
--- a/src/core/stdmsg/res/resource.rc
+++ b/src/core/stdmsg/res/resource.rc
@@ -60,10 +60,6 @@ BEGIN
CONTROL "Show character count",IDC_CHARCOUNT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,179,135,10
CONTROL "Show toolbar buttons on top row",IDC_SHOWBUTTONLINE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,192,139,10
- CONTROL "Send message on double 'Enter'",IDC_SENDONDBLENTER,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,150,166,150,10
- CONTROL "Send message on 'Enter'",IDC_SENDONENTER,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,150,179,150,10
- CONTROL "Send message on 'Ctrl+Enter'",IDC_SENDONCTRLENTER, "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,150,192,150,10
-
LTEXT "Show warning when message has not been received after",IDC_STATIC,8,208,211,8
EDITTEXT IDC_SECONDS,223,206,25,12,ES_AUTOHSCROLL
LTEXT "seconds",IDC_STATIC,253,208,44,8
diff --git a/src/core/stdmsg/src/chat_manager.cpp b/src/core/stdmsg/src/chat_manager.cpp
index 3bcb8a3296..4ee8d5be72 100644
--- a/src/core/stdmsg/src/chat_manager.cpp
+++ b/src/core/stdmsg/src/chat_manager.cpp
@@ -205,7 +205,7 @@ static void ShowRoom(SESSION_INFO *si)
int OnCheckPlugins(WPARAM, LPARAM)
{
- g_dat.bSmileyInstalled = ServiceExists(MS_SMILEYADD_REPLACESMILEYS);
+ g_plugin.bSmileyInstalled = ServiceExists(MS_SMILEYADD_REPLACESMILEYS);
return 0;
}
@@ -225,6 +225,8 @@ void Load_ChatModule()
g_chatApi.OnFlashHighlight = OnFlashHighlight;
g_chatApi.ShowRoom = ShowRoom;
+ Srmm_CreateHotkey(LPGEN("Messaging"), LPGEN("Send message"));
+
oldDoPopup = g_chatApi.DoPopup; g_chatApi.DoPopup = DoPopup;
oldDoTrayIcon = g_chatApi.DoTrayIcon; g_chatApi.DoTrayIcon = DoTrayIcon;
g_chatApi.ReloadSettings();
diff --git a/src/core/stdmsg/src/chat_window.cpp b/src/core/stdmsg/src/chat_window.cpp
index 39dce9b2a4..39edc37781 100644
--- a/src/core/stdmsg/src/chat_window.cpp
+++ b/src/core/stdmsg/src/chat_window.cpp
@@ -174,7 +174,7 @@ void CLogWindow::LogEvents(LOGINFO *lin, bool bRedraw)
m_rtf.SendMsg(EM_STREAMIN, wp, (LPARAM)&stream);
// do smileys
- if (g_dat.bSmileyInstalled && (bRedraw || (lin->ptszText && lin->iType != GC_EVENT_JOIN && lin->iType != GC_EVENT_NICK && lin->iType != GC_EVENT_ADDSTATUS && lin->iType != GC_EVENT_REMOVESTATUS))) {
+ if (g_plugin.bSmileyInstalled && (bRedraw || (lin->ptszText && lin->iType != GC_EVENT_JOIN && lin->iType != GC_EVENT_NICK && lin->iType != GC_EVENT_ADDSTATUS && lin->iType != GC_EVENT_REMOVESTATUS))) {
CHARRANGE newsel;
newsel.cpMax = -1;
newsel.cpMin = sel.cpMin;
diff --git a/src/core/stdmsg/src/cmdlist.cpp b/src/core/stdmsg/src/cmdlist.cpp
index a82acfa495..7f8a420cbe 100644
--- a/src/core/stdmsg/src/cmdlist.cpp
+++ b/src/core/stdmsg/src/cmdlist.cpp
@@ -34,7 +34,7 @@ static VOID CALLBACK MsgTimer(HWND, UINT, UINT_PTR, DWORD dwTime)
mir_cslock lck(csMsgQueue);
for (auto &it : msgQueue.rev_iter())
- if (dwTime - it->ts > g_dat.msgTimeout) {
+ if (dwTime - it->ts > g_plugin.msgTimeout) {
arTimedOut.insert(it);
msgQueue.removeItem(&it);
}
diff --git a/src/core/stdmsg/src/globals.cpp b/src/core/stdmsg/src/globals.cpp
index a2d6e175fe..de2ca11c6d 100644
--- a/src/core/stdmsg/src/globals.cpp
+++ b/src/core/stdmsg/src/globals.cpp
@@ -97,65 +97,14 @@ static int AvatarChanged(WPARAM hContact, LPARAM lParam)
/////////////////////////////////////////////////////////////////////////////////////////
-GlobalMessageData g_dat;
-
-GlobalMessageData::GlobalMessageData() :
- bShowDate(SRMMMOD, "ShowDate", false),
- bShowTime(SRMMMOD, "ShowTime", true),
- bShowSecs(SRMMMOD, "ShowSeconds", true),
- bShowIcons(SRMMMOD, "ShowLogIcon", true),
- bShowAvatar(SRMMMOD, "AvatarEnable", true),
- bShowButtons(SRMMMOD, "ShowButtonLine", true),
-
- bTypingNew(SRMMMOD, "DefaultTyping", true),
- bTypingUnknown(SRMMMOD, "UnknownTyping", false),
-
- bShowTyping(SRMMMOD, "ShowTyping", true),
- bShowTypingWin(SRMMMOD, "ShowTypingWin", true),
- bShowTypingTray(SRMMMOD, "ShowTypingTray", false),
- bShowTypingClist(SRMMMOD, "ShowTypingClist", true),
-
- bCascade(SRMMMOD, "Cascade", true),
- bAutoMin(SRMMMOD, "AutoMin", false),
- bAutoClose(SRMMMOD, "AutoClose", false),
- bShowNames(SRMMMOD, "ShowNames", false),
- bShowFormat(SRMMMOD, "ShowFormatting", true),
- bSendButton(SRMMMOD, "UseSendButton", false),
- bSendOnEnter(SRMMMOD, "SendOnEnter", true),
- bCtrlSupport(SRMMMOD, "SupportCtrlUpDn", true),
- bShowReadChar(SRMMMOD, "ShowCharCount", false),
- bSendOnDblEnter(SRMMMOD, "SendOnDblEnter", false),
- bSendOnCtrlEnter(SRMMMOD, "SendOnCtrlEnter", false),
- bDeleteTempCont(SRMMMOD, "DeleteTempCont", false),
- bSavePerContact(SRMMMOD, "SavePerContact", false),
- bDoNotStealFocus(SRMMMOD, "DoNotStealFocus", false),
- bUseStatusWinIcon(SRMMMOD, "UseStatusWinIcon", true),
-
- bLimitAvatarHeight(SRMMMOD, "AvatarLimitHeight", true),
- iAvatarHeight(SRMMMOD, "AvatarHeight", 60),
-
- popupFlags(SRMMMOD, "PopupFlags", 0),
- nFlashMax(SRMMMOD, "FlashMax", 5),
-
- msgTimeout(SRMMMOD, "MessageTimeout", 65000),
-
- iLoadHistory(SRMMMOD, "LoadHistory", LOADHISTORY_UNREAD),
- nLoadCount(SRMMMOD, "LoadCount", 10),
- nLoadTime(SRMMMOD, "LoadTime", 10)
-{
-}
-
void InitGlobals()
{
int iOldValue = g_plugin.getByte("HideNames", -1);
if (iOldValue != -1) {
- g_dat.bShowNames = !iOldValue;
+ g_plugin.bShowNames = !iOldValue;
g_plugin.delSetting("HideNames");
}
- if (!g_dat.bSendOnEnter && !g_dat.bSendOnDblEnter)
- g_dat.bSendOnCtrlEnter = true;
-
HookEvent(ME_DB_EVENT_ADDED, dbaddedevent);
HookEvent(ME_DB_EVENT_EDITED, dbaddedevent);
HookEvent(ME_PROTO_ACK, ackevent);
diff --git a/src/core/stdmsg/src/globals.h b/src/core/stdmsg/src/globals.h
deleted file mode 100644
index 031357356b..0000000000
--- a/src/core/stdmsg/src/globals.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-
-Copyright 2000-12 Miranda IM, 2012-22 Miranda NG team,
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-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.
-*/
-
-#ifndef SRMM_GLOBALS_H
-#define SRMM_GLOBALS_H
-
-struct GlobalMessageData
-{
- GlobalMessageData();
-
- CMOption<bool> bShowButtons;
- CMOption<bool> bSendButton;
- CMOption<bool> bShowTyping;
- CMOption<bool> bShowTypingWin;
- CMOption<bool> bShowTypingTray;
- CMOption<bool> bShowTypingClist;
- CMOption<bool> bShowIcons;
- CMOption<bool> bShowTime;
- CMOption<bool> bShowDate;
- CMOption<bool> bShowAvatar;
- CMOption<bool> bShowNames;
- CMOption<bool> bShowSecs;
- CMOption<bool> bShowReadChar;
- CMOption<bool> bSendOnEnter;
- CMOption<bool> bSendOnDblEnter;
- CMOption<bool> bSendOnCtrlEnter;
- CMOption<bool> bAutoClose;
- CMOption<bool> bAutoMin;
- CMOption<bool> bTypingNew;
- CMOption<bool> bTypingUnknown;
- CMOption<bool> bCtrlSupport;
- CMOption<bool> bShowFormat;
- CMOption<bool> bSavePerContact;
- CMOption<bool> bDoNotStealFocus;
- CMOption<bool> bCascade;
- CMOption<bool> bDeleteTempCont;
- CMOption<bool> bUseStatusWinIcon;
-
- CMOption<bool> bLimitAvatarHeight;
- CMOption<uint16_t> iAvatarHeight;
-
- CMOption<uint32_t> popupFlags;
- CMOption<uint32_t> msgTimeout;
- CMOption<uint32_t> nFlashMax;
-
- CMOption<uint8_t> iLoadHistory;
- CMOption<uint16_t> nLoadCount, nLoadTime;
-
- bool bSmileyInstalled = false;
-};
-
-void InitGlobals();
-
-extern GlobalMessageData g_dat;
-
-#endif
diff --git a/src/core/stdmsg/src/msgdialog.cpp b/src/core/stdmsg/src/msgdialog.cpp
index 24472cf153..a01dee62e3 100644
--- a/src/core/stdmsg/src/msgdialog.cpp
+++ b/src/core/stdmsg/src/msgdialog.cpp
@@ -37,7 +37,6 @@ LIST<CMsgDialog> g_arDialogs(10, PtrKeySortT);
CMsgDialog::CMsgDialog(CTabbedWindow *pOwner, MCONTACT hContact) :
CSuper(g_plugin, IDD_MSG),
- m_btnOk(this, IDOK),
m_avatar(this, IDC_AVATAR),
m_splitterX(this, IDC_SPLITTERX),
m_splitterY(this, IDC_SPLITTERY),
@@ -50,7 +49,6 @@ CMsgDialog::CMsgDialog(CTabbedWindow *pOwner, MCONTACT hContact) :
CMsgDialog::CMsgDialog(CTabbedWindow *pOwner, SESSION_INFO *si) :
CSuper(g_plugin, IDD_MSG, si),
- m_btnOk(this, IDOK),
m_avatar(this, IDC_AVATAR),
m_splitterX(this, IDC_SPLITTERX),
m_splitterY(this, IDC_SPLITTERY),
@@ -77,7 +75,7 @@ void CMsgDialog::Init()
m_szTabSave[0] = 0;
m_autoClose = 0;
m_forceResizable = true;
- m_bNoActivate = g_dat.bDoNotStealFocus;
+ m_bNoActivate = g_plugin.bDoNotStealFocus;
g_arDialogs.insert(this);
@@ -112,7 +110,7 @@ bool CMsgDialog::OnInitDialog()
}
// avatar stuff
- m_limitAvatarH = g_dat.bLimitAvatarHeight ? g_dat.iAvatarHeight : 0;
+ m_limitAvatarH = g_plugin.bLimitAvatarHeight ? g_plugin.iAvatarHeight : 0;
if (m_hContact && m_szProto != nullptr) {
m_wStatus = db_get_w(m_hContact, m_szProto, "Status", ID_STATUS_OFFLINE);
@@ -128,7 +126,7 @@ bool CMsgDialog::OnInitDialog()
timerType.Start(1000);
GetWindowRect(m_message.GetHwnd(), &m_minEditInit);
- m_iSplitterY = g_plugin.getDword(g_dat.bSavePerContact ? m_hContact : 0, "splitterPos", m_minEditInit.bottom - m_minEditInit.top);
+ m_iSplitterY = g_plugin.getDword(g_plugin.bSavePerContact ? m_hContact : 0, "splitterPos", m_minEditInit.bottom - m_minEditInit.top);
UpdateSizeBar();
m_message.SendMsg(EM_SETEVENTMASK, 0, ENM_MOUSEEVENTS | ENM_CHANGE);
@@ -154,9 +152,9 @@ bool CMsgDialog::OnInitDialog()
{
DB::ECPTR pCursor(DB::EventsRev(m_hContact, m_hDbEventFirst));
- switch (g_dat.iLoadHistory) {
+ switch (g_plugin.iLoadHistory) {
case LOADHISTORY_COUNT:
- for (int i = g_dat.nLoadCount; i--;) {
+ for (int i = g_plugin.nLoadCount; i--;) {
MEVENT hPrevEvent = pCursor.FetchNext();
if (hPrevEvent == 0)
break;
@@ -176,7 +174,7 @@ bool CMsgDialog::OnInitDialog()
else
db_event_get(m_hDbEventFirst, &dbei);
- uint32_t firstTime = dbei.timestamp - 60 * g_dat.nLoadTime;
+ uint32_t firstTime = dbei.timestamp - 60 * g_plugin.nLoadTime;
while (MEVENT hPrevEvent = pCursor.FetchNext()) {
dbei.cbBlob = 0;
db_event_get(hPrevEvent, &dbei);
@@ -258,7 +256,7 @@ void CMsgDialog::OnDestroy()
mir_free(it);
m_cmdList.destroy();
- MCONTACT hContact = (g_dat.bSavePerContact) ? m_hContact : 0;
+ MCONTACT hContact = (g_plugin.bSavePerContact) ? m_hContact : 0;
g_plugin.setDword(hContact ? m_hContact : 0, "splitterPos", m_iSplitterY);
if (m_hFont) {
@@ -287,7 +285,7 @@ void CMsgDialog::OnDestroy()
CSuper::OnDestroy();
// a temporary contact should be destroyed after removing window from the window list to prevent recursion
- if (m_hContact && g_dat.bDeleteTempCont)
+ if (m_hContact && g_plugin.bDeleteTempCont)
if (!Contact_OnList(m_hContact))
db_delete_contact(m_hContact);
}
@@ -385,9 +383,9 @@ void CMsgDialog::onClick_Ok(CCtrlButton *pButton)
m_message.SetText(L"");
if (!g_Settings.bTabsEnable) {
- if (g_dat.bAutoClose)
+ if (g_plugin.bAutoClose)
::PostMessage(m_hwndParent, WM_CLOSE, 0, 0);
- else if (g_dat.bAutoMin)
+ else if (g_plugin.bAutoMin)
::ShowWindow(m_hwndParent, SW_MINIMIZE);
}
}
@@ -416,7 +414,7 @@ void CMsgDialog::onChange_Text(CCtrlEdit*)
void CMsgDialog::OnFlash(CTimer *)
{
FixTabIcons();
- if (!g_dat.nFlashMax || m_nFlash < 2 * g_dat.nFlashMax)
+ if (!g_plugin.nFlashMax || m_nFlash < 2 * g_plugin.nFlashMax)
FlashWindow(m_pOwner->GetHwnd(), TRUE);
m_nFlash++;
}
@@ -435,7 +433,7 @@ void CMsgDialog::OnType(CTimer*)
}
else {
UpdateLastMessage();
- if (g_dat.bShowTypingWin)
+ if (g_plugin.bShowTypingWin)
FixTabIcons();
m_bShowTyping = false;
}
@@ -451,7 +449,7 @@ void CMsgDialog::OnType(CTimer*)
SendMessage(m_pOwner->m_hwndStatus, SB_SETTEXT, 0, (LPARAM)szBuf);
SendMessage(m_pOwner->m_hwndStatus, SB_SETICON, 0, (LPARAM)hTyping);
- if (g_dat.bShowTypingWin && GetForegroundWindow() != m_pOwner->GetHwnd()) {
+ if (g_plugin.bShowTypingWin && GetForegroundWindow() != m_pOwner->GetHwnd()) {
HICON hIcon = (HICON)SendMessage(m_hwnd, WM_GETICON, ICON_SMALL, 0);
SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hTyping);
IcoLib_ReleaseIcon(hIcon);
@@ -466,8 +464,8 @@ void CMsgDialog::OnType(CTimer*)
int CMsgDialog::Resizer(UTILRESIZECONTROL *urc)
{
if (isChat()) {
- bool bToolbar = g_dat.bShowButtons;
- bool bSend = g_dat.bSendButton;
+ bool bToolbar = g_plugin.bShowButtons;
+ bool bSend = g_plugin.bSendButton;
bool bNick = m_si->iType != GCW_SERVER && m_bNicklistEnabled;
switch (urc->wId) {
@@ -520,7 +518,7 @@ LBL_CalcBottom:
else {
switch (urc->wId) {
case IDC_SRMM_LOG:
- if (!g_dat.bShowButtons)
+ if (!g_plugin.bShowButtons)
urc->rcItem.top = 2;
urc->rcItem.bottom = urc->dlgNewSize.cy - m_iSplitterY;
m_rcLog = urc->rcItem;
@@ -532,8 +530,8 @@ LBL_CalcBottom:
return RD_ANCHORX_WIDTH | RD_ANCHORY_CUSTOM;
case IDC_SRMM_MESSAGE:
- urc->rcItem.right = (g_dat.bSendButton) ? urc->dlgNewSize.cx - 64 : urc->dlgNewSize.cx;
- if (g_dat.bShowAvatar && m_avatarPic)
+ urc->rcItem.right = (g_plugin.bSendButton) ? urc->dlgNewSize.cx - 64 : urc->dlgNewSize.cx;
+ if (g_plugin.bShowAvatar && m_avatarPic)
urc->rcItem.left = m_avatarWidth + 4;
urc->rcItem.top = urc->dlgNewSize.cy - m_iSplitterY + 3;
@@ -614,7 +612,7 @@ INT_PTR CMsgDialog::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
if (!IsIconic(m_hwnd)) {
if (isChat()) {
- bool bSend = g_dat.bSendButton;
+ bool bSend = g_plugin.bSendButton;
bool bNick = m_si->iType != GCW_SERVER && m_bNicklistEnabled;
m_btnOk.Show(bSend);
@@ -647,7 +645,7 @@ INT_PTR CMsgDialog::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
InvalidateRect(m_pOwner->m_hwndStatus, nullptr, true);
RedrawWindow(m_message.GetHwnd(), nullptr, nullptr, RDW_INVALIDATE);
RedrawWindow(m_btnOk.GetHwnd(), nullptr, nullptr, RDW_INVALIDATE);
- if (g_dat.bShowAvatar && m_avatarPic)
+ if (g_plugin.bShowAvatar && m_avatarPic)
RedrawWindow(m_avatar.GetHwnd(), nullptr, nullptr, RDW_INVALIDATE);
}
return TRUE;
@@ -722,7 +720,7 @@ INT_PTR CMsgDialog::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
if (dis->CtlType == ODT_MENU)
return Menu_DrawItem(lParam);
- if (dis->CtlID == IDC_AVATAR && m_avatarPic && g_dat.bShowAvatar) {
+ if (dis->CtlID == IDC_AVATAR && m_avatarPic && g_plugin.bShowAvatar) {
HPEN hPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
HPEN hOldPen = (HPEN)SelectObject(dis->hDC, hPen);
Rectangle(dis->hDC, 0, 0, m_avatarWidth, m_avatarHeight);
@@ -949,16 +947,7 @@ LRESULT CMsgDialog::WndProc_Message(UINT msg, WPARAM wParam, LPARAM lParam)
ProcessFileDrop((HDROP)wParam, m_hContact);
return FALSE;
- case WM_MOUSEWHEEL:
- case WM_LBUTTONDOWN:
- case WM_RBUTTONDOWN:
- case WM_MBUTTONDOWN:
- case WM_KILLFOCUS:
- m_iLastEnterTime = 0;
- break;
-
case WM_SYSCHAR:
- m_iLastEnterTime = 0;
if ((wParam == 's' || wParam == 'S') && GetKeyState(VK_MENU) & 0x8000) {
m_btnOk.Click();
return 0;
@@ -1080,28 +1069,6 @@ LRESULT CMsgDialog::WndProc_Message(UINT msg, WPARAM wParam, LPARAM lParam)
bool isCtrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0;
bool isAlt = (GetKeyState(VK_MENU) & 0x8000) != 0;
- if (wParam == VK_RETURN) {
- if (!isShift && !isCtrl && g_dat.bSendOnEnter) {
- m_btnOk.Click();
- return 0;
- }
- if (!isShift && isCtrl && g_dat.bSendOnCtrlEnter) {
- m_btnOk.Click();
- return 0;
- }
- if (g_dat.bSendOnDblEnter) {
- if (m_iLastEnterTime + ENTERCLICKTIME < GetTickCount())
- m_iLastEnterTime = GetTickCount();
- else {
- m_message.SendMsg(WM_KEYDOWN, VK_BACK, 0);
- m_message.SendMsg(WM_KEYUP, VK_BACK, 0);
- m_btnOk.Click();
- return 0;
- }
- }
- }
- else m_iLastEnterTime = 0;
-
if (g_Settings.bTabsEnable) {
if (wParam <= '9' && wParam >= '1' && isCtrl && !isAlt) { // CTRL + 1 -> 9 (switch tab)
m_pOwner->SwitchTab(wParam - '1');
@@ -1164,12 +1131,11 @@ LRESULT CMsgDialog::WndProc_Message(UINT msg, WPARAM wParam, LPARAM lParam)
if (wParam == VK_NEXT || wParam == VK_PRIOR) {
((CLogWindow *)m_pLog)->WndProc(msg, wParam, lParam);
- m_iLastEnterTime = 0;
return TRUE;
}
}
- if (isCtrl && g_dat.bCtrlSupport && m_cmdList.getCount()) {
+ if (isCtrl && g_plugin.bCtrlSupport && m_cmdList.getCount()) {
if (wParam == VK_UP && m_cmdListInd != 0) {
if (m_cmdListInd < 0)
m_cmdListInd = m_cmdList.getCount() - 1;
@@ -1311,7 +1277,7 @@ void CMsgDialog::OnOptionsApplied(bool bUpdateAvatar)
continue;
bool bShow = false;
- if (m_hContact && g_dat.bShowButtons) {
+ if (m_hContact && g_plugin.bShowButtons) {
if (cbd->m_dwButtonCID == IDC_ADD) {
bShow = !Contact_OnList(m_hContact);
cbd->m_bHidden = !bShow;
@@ -1324,10 +1290,10 @@ void CMsgDialog::OnOptionsApplied(bool bUpdateAvatar)
ShowWindow(GetDlgItem(m_hwnd, IDCANCEL), SW_HIDE);
m_splitterY.Show();
- m_btnOk.Show(g_dat.bSendButton);
+ m_btnOk.Show(g_plugin.bSendButton);
m_btnOk.Enable(GetWindowTextLength(m_message.GetHwnd()) != 0);
- if (m_avatarPic == nullptr || !g_dat.bShowAvatar)
+ if (m_avatarPic == nullptr || !g_plugin.bShowAvatar)
m_avatar.Hide();
UpdateIcon(0);
@@ -1341,7 +1307,7 @@ void CMsgDialog::OnOptionsApplied(bool bUpdateAvatar)
m_avatarPic = nullptr;
m_limitAvatarH = 0;
if (CallProtoService(m_szProto, PS_GETCAPS, PFLAGNUM_4, 0) & PF4_AVATARS)
- m_limitAvatarH = g_dat.bLimitAvatarHeight ? g_dat.iAvatarHeight : 0;
+ m_limitAvatarH = g_plugin.bLimitAvatarHeight ? g_plugin.iAvatarHeight : 0;
if (bUpdateAvatar)
UpdateAvatar();
@@ -1390,7 +1356,7 @@ void CMsgDialog::onSplitterY(CSplitter *pSplitter)
m_iSplitterY = rc.bottom - pSplitter->GetPos() + 1;
int toplimit = 63;
- if (!g_dat.bShowButtons)
+ if (!g_plugin.bShowButtons)
toplimit += 22;
if (m_iSplitterY < m_minEditBoxSize.cy)
@@ -1421,7 +1387,7 @@ void CMsgDialog::NotifyTyping(int mode)
// Don't send to protocols that are offline
// Don't send to users who are not visible and
// Don't send to users who are not on the visible list when you are in invisible mode.
- if (!g_plugin.getByte(m_hContact, SRMSGSET_TYPING, g_dat.bTypingNew))
+ if (!g_plugin.getByte(m_hContact, SRMSGSET_TYPING, g_plugin.bTypingNew))
return;
if (!m_szProto)
@@ -1447,7 +1413,7 @@ void CMsgDialog::NotifyTyping(int mode)
if (protoCaps & PF1_INVISLIST && protoStatus == ID_STATUS_INVISIBLE && db_get_w(m_hContact, m_szProto, "ApparentMode", 0) != ID_STATUS_ONLINE)
return;
- if (!g_dat.bTypingUnknown && !Contact_OnList(m_hContact))
+ if (!g_plugin.bTypingUnknown && !Contact_OnList(m_hContact))
return;
// End user check
@@ -1463,7 +1429,7 @@ void CMsgDialog::RemakeLog()
void CMsgDialog::ShowAvatar()
{
- if (g_dat.bShowAvatar) {
+ if (g_plugin.bShowAvatar) {
AVATARCACHEENTRY *ace = (AVATARCACHEENTRY *)CallService(MS_AV_GETAVATARBITMAP, getActiveContact(), 0);
if (ace && (INT_PTR)ace != CALLSERVICE_NOTFOUND && (ace->dwFlags & AVS_BITMAP_VALID) && !(ace->dwFlags & AVS_HIDEONCLIST))
m_avatarPic = ace->hbmPic;
@@ -1486,7 +1452,7 @@ void CMsgDialog::ShowTime(bool bForce)
if (m_wMinute != st.wMinute || bForce) {
if (m_pOwner->m_tab.GetActivePage() == this) {
wchar_t buf[32];
- unsigned i = g_dat.bShowReadChar ? 2 : 1;
+ unsigned i = g_plugin.bShowReadChar ? 2 : 1;
TimeZone_PrintDateTime(m_hTimeZone, L"t", buf, _countof(buf), 0);
SendMessage(m_pOwner->m_hwndStatus, SB_SETTEXT, i, (LPARAM)buf);
@@ -1505,11 +1471,11 @@ void CMsgDialog::SetupStatusBar()
int cx = rc.right - rc.left;
if (m_hTimeZone) {
- if (g_dat.bShowReadChar)
+ if (g_plugin.bShowReadChar)
statwidths[i++] = cx - SB_TIME_WIDTH - SB_CHAR_WIDTH - icons_width;
statwidths[i++] = cx - SB_TIME_WIDTH - icons_width;
}
- else if (g_dat.bShowReadChar)
+ else if (g_plugin.bShowReadChar)
statwidths[i++] = cx - SB_CHAR_WIDTH - icons_width;
statwidths[i++] = cx - icons_width;
@@ -1550,7 +1516,7 @@ void CMsgDialog::UpdateIcon(WPARAM wParam)
}
if (!cws || bIsStatus)
- if (g_dat.bUseStatusWinIcon)
+ if (g_plugin.bUseStatusWinIcon)
FixTabIcons();
}
@@ -1571,7 +1537,7 @@ void CMsgDialog::UpdateLastMessage()
void CMsgDialog::UpdateReadChars()
{
- if (g_dat.bShowReadChar) {
+ if (g_plugin.bShowReadChar) {
wchar_t buf[32];
int len = GetWindowTextLength(m_message.GetHwnd());
@@ -1584,8 +1550,8 @@ void CMsgDialog::UpdateSizeBar()
{
m_minEditBoxSize.cx = m_minEditInit.right - m_minEditInit.left;
m_minEditBoxSize.cy = m_minEditInit.bottom - m_minEditInit.top;
- if (g_dat.bShowAvatar) {
- if (m_avatarPic == nullptr || !g_dat.bShowAvatar) {
+ if (g_plugin.bShowAvatar) {
+ if (m_avatarPic == nullptr || !g_plugin.bShowAvatar) {
m_avatarWidth = 50;
m_avatarHeight = 50;
m_avatar.Hide();
@@ -1640,7 +1606,7 @@ void CMsgDialog::UpdateTitle()
m_wStatus = db_get_w(m_hContact, m_szProto, "Status", ID_STATUS_OFFLINE);
wchar_t *contactName = Clist_GetContactDisplayName(m_hContact);
- if (g_dat.bUseStatusWinIcon)
+ if (g_plugin.bUseStatusWinIcon)
mir_snwprintf(newtitle, L"%s - %s", contactName, TranslateT("Message session"));
else {
wchar_t *szStatus = Clist_GetStatusModeDescription(m_szProto == nullptr ? ID_STATUS_OFFLINE : db_get_w(m_hContact, m_szProto, "Status", ID_STATUS_OFFLINE), 0);
diff --git a/src/core/stdmsg/src/msglog.cpp b/src/core/stdmsg/src/msglog.cpp
index 0524859361..228ec4ea53 100644
--- a/src/core/stdmsg/src/msglog.cpp
+++ b/src/core/stdmsg/src/msglog.cpp
@@ -83,7 +83,7 @@ static void AppendToBufferWithRTF(CMStringA &buf, const wchar_t *line)
buf.AppendChar('\\');
buf.AppendChar(*line);
}
- else if (*line == '[' && (g_dat.bShowFormat)) {
+ else if (*line == '[' && (g_plugin.bShowFormat)) {
int i, found = 0;
for (i = 0; i < _countof(bbcodes); ++i) {
if (line[1] == bbcodes[i][1]) {
@@ -237,7 +237,7 @@ static bool CreateRTFFromDbEvent(LogStreamData *dat)
buf.Append("\\rtlch\\ltrch");
}
- if (g_dat.bShowIcons) {
+ if (g_plugin.bShowIcons) {
int i = ((dbei.eventType == EVENTTYPE_MESSAGE) ? ((dbei.flags & DBEF_SENT) ? LOGICON_MSG_OUT : LOGICON_MSG_IN): LOGICON_MSG_NOTICE);
buf.Append("\\f0\\fs14");
@@ -245,14 +245,14 @@ static bool CreateRTFFromDbEvent(LogStreamData *dat)
}
int showColon = 0;
- if (g_dat.bShowTime) {
+ if (g_plugin.bShowTime) {
const wchar_t* szFormat;
wchar_t str[64];
- if (g_dat.bShowSecs)
- szFormat = g_dat.bShowDate ? L"d s" : L"s";
+ if (g_plugin.bShowSecs)
+ szFormat = g_plugin.bShowDate ? L"d s" : L"s";
else
- szFormat = g_dat.bShowDate ? L"d t" : L"t";
+ szFormat = g_plugin.bShowDate ? L"d t" : L"t";
TimeZone_PrintTimeStamp(nullptr, dbei.timestamp, szFormat, str, _countof(str), 0);
@@ -261,7 +261,7 @@ static bool CreateRTFFromDbEvent(LogStreamData *dat)
showColon = 1;
}
- if (g_dat.bShowNames && dbei.eventType != EVENTTYPE_JABBER_CHATSTATES && dbei.eventType != EVENTTYPE_JABBER_PRESENCE) {
+ if (g_plugin.bShowNames && dbei.eventType != EVENTTYPE_JABBER_CHATSTATES && dbei.eventType != EVENTTYPE_JABBER_PRESENCE) {
wchar_t *szName;
if (dbei.flags & DBEF_SENT) {
@@ -516,7 +516,7 @@ void CLogWindow::LogEvents(MEVENT hDbEventFirst, int count, bool bAppend)
m_rtf.SendMsg(EM_SETSCROLLPOS, 0, (LPARAM)&scrollPos);
}
- if (g_dat.bSmileyInstalled) {
+ if (g_plugin.bSmileyInstalled) {
SMADD_RICHEDIT3 smre;
smre.cbSize = sizeof(SMADD_RICHEDIT3);
smre.hwndRichEditControl = m_rtf.GetHwnd();
diff --git a/src/core/stdmsg/src/msgoptions.cpp b/src/core/stdmsg/src/msgoptions.cpp
index 3f5759b434..60a798bd72 100644
--- a/src/core/stdmsg/src/msgoptions.cpp
+++ b/src/core/stdmsg/src/msgoptions.cpp
@@ -25,15 +25,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
int ChatOptionsInitialize(WPARAM);
-struct FontOptionsList
+struct
{
- const wchar_t* szDescr;
- COLORREF defColour;
- const wchar_t* szDefFace;
- uint8_t defStyle;
- char defSize;
+ wchar_t* szDescr;
+ COLORREF defColour;
+ wchar_t* szDefFace;
+ uint8_t defStyle;
+ char defSize;
}
-static const fontOptionsList[] =
+static fontOptionsList[] =
{
{ LPGENW("Outgoing messages"), RGB(106, 106, 106), L"Arial", 0, -12},
{ LPGENW("Incoming messages"), RGB(0, 0, 0), L"Arial", 0, -12},
@@ -126,20 +126,20 @@ void RegisterSRMMFonts(void)
/////////////////////////////////////////////////////////////////////////////////////////
-struct CheckBoxValues_t
+struct
{
- uint32_t style;
+ uint32_t style;
wchar_t* szDescr;
}
-statusValues[] =
+static statusValues[] =
{
{ MODEF_OFFLINE, LPGENW("Offline") },
- { PF2_ONLINE, LPGENW("Online") },
+ { PF2_ONLINE, LPGENW("Online") },
{ PF2_SHORTAWAY, LPGENW("Away") },
- { PF2_LONGAWAY, LPGENW("Not available") },
- { PF2_LIGHTDND, LPGENW("Occupied") },
- { PF2_HEAVYDND, LPGENW("Do not disturb") },
- { PF2_FREECHAT, LPGENW("Free for chat") },
+ { PF2_LONGAWAY, LPGENW("Not available") },
+ { PF2_LIGHTDND, LPGENW("Occupied") },
+ { PF2_HEAVYDND, LPGENW("Do not disturb") },
+ { PF2_FREECHAT, LPGENW("Free for chat") },
{ PF2_INVISIBLE, LPGENW("Invisible") }
};
@@ -149,7 +149,7 @@ class COptionMainDlg : public CDlgBase
CCtrlCheck chkAutoMin, chkAutoClose, chkSavePerContact, chkDoNotStealFocus, chkStatusWin;
CCtrlCheck chkDelTemp, chkCascade, chkCharCount, chkCtrlSupport;
CCtrlCheck chkAvatar, chkLimitAvatar;
- CCtrlCheck chkSendOnEnter, chkSendOnDblEnter, chkSendOnCtrlEnter, chkShowSend, chkShowButtons;
+ CCtrlCheck chkShowSend, chkShowButtons;
CCtrlTreeView tree;
@@ -202,9 +202,6 @@ public:
chkLimitAvatar(this, IDC_LIMITAVATARH),
chkShowButtons(this, IDC_SHOWBUTTONLINE),
chkCtrlSupport(this, IDC_CTRLSUPPORT),
- chkSendOnEnter(this, IDC_SENDONENTER),
- chkSendOnDblEnter(this, IDC_SENDONDBLENTER),
- chkSendOnCtrlEnter(this, IDC_SENDONCTRLENTER),
chkSavePerContact(this, IDC_SAVEPERCONTACT),
chkDoNotStealFocus(this, IDC_DONOTSTEALFOCUS)
{
@@ -216,48 +213,45 @@ public:
chkLimitAvatar.OnChange = Callback(this, &COptionMainDlg::onChange_LimitAvatar);
chkSavePerContact.OnChange = Callback(this, &COptionMainDlg::onChange_SavePerContact);
- CreateLink(edtNFlash, g_dat.nFlashMax);
- CreateLink(edtAvatarH, g_dat.iAvatarHeight);
+ CreateLink(edtNFlash, g_plugin.nFlashMax);
+ CreateLink(edtAvatarH, g_plugin.iAvatarHeight);
- CreateLink(chkAvatar, g_dat.bShowAvatar);
- CreateLink(chkLimitAvatar, g_dat.bLimitAvatarHeight);
+ CreateLink(chkAvatar, g_plugin.bShowAvatar);
+ CreateLink(chkLimitAvatar, g_plugin.bLimitAvatarHeight);
- CreateLink(chkDelTemp, g_dat.bDeleteTempCont);
- CreateLink(chkCascade, g_dat.bCascade);
- CreateLink(chkAutoMin, g_dat.bAutoMin);
- CreateLink(chkAutoClose, g_dat.bAutoClose);
- CreateLink(chkShowSend, g_dat.bSendButton);
- CreateLink(chkCharCount, g_dat.bShowReadChar);
- CreateLink(chkStatusWin, g_dat.bUseStatusWinIcon);
- CreateLink(chkShowButtons, g_dat.bShowButtons);
- CreateLink(chkCtrlSupport, g_dat.bCtrlSupport);
- CreateLink(chkSendOnEnter, g_dat.bSendOnEnter);
- CreateLink(chkSendOnDblEnter, g_dat.bSendOnDblEnter);
- CreateLink(chkSendOnCtrlEnter, g_dat.bSendOnCtrlEnter);
- CreateLink(chkSavePerContact, g_dat.bSavePerContact);
- CreateLink(chkDoNotStealFocus, g_dat.bDoNotStealFocus);
+ CreateLink(chkDelTemp, g_plugin.bDeleteTempCont);
+ CreateLink(chkCascade, g_plugin.bCascade);
+ CreateLink(chkAutoMin, g_plugin.bAutoMin);
+ CreateLink(chkAutoClose, g_plugin.bAutoClose);
+ CreateLink(chkShowSend, g_plugin.bSendButton);
+ CreateLink(chkCharCount, g_plugin.bShowReadChar);
+ CreateLink(chkStatusWin, g_plugin.bUseStatusWinIcon);
+ CreateLink(chkShowButtons, g_plugin.bShowButtons);
+ CreateLink(chkCtrlSupport, g_plugin.bCtrlSupport);
+ CreateLink(chkSavePerContact, g_plugin.bSavePerContact);
+ CreateLink(chkDoNotStealFocus, g_plugin.bDoNotStealFocus);
}
bool OnInitDialog() override
{
- FillCheckBoxTree(g_dat.popupFlags);
+ FillCheckBoxTree(g_plugin.popupFlags);
- uint32_t msgTimeout = g_dat.msgTimeout;
+ uint32_t msgTimeout = g_plugin.msgTimeout;
edtSecs.SetInt((msgTimeout >= 5000) ? msgTimeout / 1000 : 5);
- chkCascade.Enable(!g_dat.bSavePerContact);
- chkCtrlSupport.Enable(!g_dat.bAutoClose);
+ chkCascade.Enable(!g_plugin.bSavePerContact);
+ chkCtrlSupport.Enable(!g_plugin.bAutoClose);
return true;
}
bool OnApply() override
{
- g_dat.popupFlags = MakeCheckBoxTreeFlags();
+ g_plugin.popupFlags = MakeCheckBoxTreeFlags();
uint32_t msgTimeout = edtSecs.GetInt() * 1000;
if (msgTimeout < 5000)
msgTimeout = 5000;
- g_dat.msgTimeout = msgTimeout;
+ g_plugin.msgTimeout = msgTimeout;
Srmm_Broadcast(DM_OPTIONSAPPLIED, TRUE, 0);
return true;
@@ -327,17 +321,17 @@ public:
chkTime.OnChange = Callback(this, &COptionLogDlg::onChange_Time);
chkLoadUnread.OnChange = chkLoadCount.OnChange = chkLoadTime.OnChange = Callback(this, &COptionLogDlg::onChange_Load);
- CreateLink(chkSecs, g_dat.bShowSecs);
- CreateLink(chkDate, g_dat.bShowDate);
- CreateLink(chkTime, g_dat.bShowTime);
- CreateLink(chkIcons, g_dat.bShowIcons);
- CreateLink(chkFormat, g_dat.bShowFormat);
- CreateLink(chkShowNames, g_dat.bShowNames);
+ CreateLink(chkSecs, g_plugin.bShowSecs);
+ CreateLink(chkDate, g_plugin.bShowDate);
+ CreateLink(chkTime, g_plugin.bShowTime);
+ CreateLink(chkIcons, g_plugin.bShowIcons);
+ CreateLink(chkFormat, g_plugin.bShowFormat);
+ CreateLink(chkShowNames, g_plugin.bShowNames);
}
bool OnInitDialog() override
{
- switch (g_dat.iLoadHistory) {
+ switch (g_plugin.iLoadHistory) {
case LOADHISTORY_UNREAD:
chkLoadUnread.SetState(true);
break;
@@ -354,21 +348,21 @@ public:
break;
}
- spinCount.SetPosition(g_dat.nLoadCount);
- spinTime.SetPosition(g_dat.nLoadTime);
+ spinCount.SetPosition(g_plugin.nLoadCount);
+ spinTime.SetPosition(g_plugin.nLoadTime);
return true;
}
bool OnApply() override
{
if (chkLoadCount.GetState())
- g_dat.iLoadHistory = LOADHISTORY_COUNT;
+ g_plugin.iLoadHistory = LOADHISTORY_COUNT;
else if (chkLoadTime.GetState())
- g_dat.iLoadHistory = LOADHISTORY_TIME;
+ g_plugin.iLoadHistory = LOADHISTORY_TIME;
else
- g_dat.iLoadHistory = LOADHISTORY_UNREAD;
- g_dat.nLoadCount = spinCount.GetPosition();
- g_dat.nLoadTime = spinTime.GetPosition();
+ g_plugin.iLoadHistory = LOADHISTORY_UNREAD;
+ g_plugin.nLoadCount = spinCount.GetPosition();
+ g_plugin.nLoadTime = spinTime.GetPosition();
FreeMsgLogIcons();
LoadMsgLogIcons();
@@ -423,10 +417,10 @@ public:
chkType.OnChange = Callback(this, &COptionTypingDlg::onChange_ShowNotify);
chkTypeTray.OnChange = Callback(this, &COptionTypingDlg::onChange_Tray);
- CreateLink(chkType, g_dat.bShowTyping);
- CreateLink(chkTypeWin, g_dat.bShowTypingWin);
- CreateLink(chkTypeTray, g_dat.bShowTypingTray);
- CreateLink(chkTypeClist, g_dat.bShowTypingClist);
+ CreateLink(chkType, g_plugin.bShowTyping);
+ CreateLink(chkTypeWin, g_plugin.bShowTypingWin);
+ CreateLink(chkTypeTray, g_plugin.bShowTypingTray);
+ CreateLink(chkTypeClist, g_plugin.bShowTypingClist);
}
void ResetCList(CCtrlClc::TEventInfo* = nullptr)
@@ -437,11 +431,11 @@ public:
void RebuildList(CCtrlClc::TEventInfo* = nullptr)
{
- uint8_t defType = g_dat.bTypingNew;
+ uint8_t defType = g_plugin.bTypingNew;
if (hItemNew && defType)
clist.SetCheck(hItemNew, 1);
- if (hItemUnknown && g_dat.bTypingUnknown)
+ if (hItemUnknown && g_plugin.bTypingUnknown)
clist.SetCheck(hItemUnknown, 1);
for (auto &hContact : Contacts()) {
@@ -454,10 +448,10 @@ public:
void SaveList()
{
if (hItemNew)
- g_dat.bTypingNew = clist.GetCheck(hItemNew);
+ g_plugin.bTypingNew = clist.GetCheck(hItemNew);
if (hItemUnknown)
- g_dat.bTypingUnknown = clist.GetCheck(hItemUnknown);
+ g_plugin.bTypingUnknown = clist.GetCheck(hItemUnknown);
for (auto &hContact : Contacts()) {
HANDLE hItem = clist.FindContact(hContact);
diff --git a/src/core/stdmsg/src/msgs.cpp b/src/core/stdmsg/src/msgs.cpp
index 23f9bf5702..a8bc6ca8db 100644
--- a/src/core/stdmsg/src/msgs.cpp
+++ b/src/core/stdmsg/src/msgs.cpp
@@ -77,7 +77,7 @@ static int MessageEventAdded(WPARAM hContact, LPARAM lParam)
/* does a window for the contact exist? */
HWND hwnd = Srmm_FindWindow(hContact);
if (hwnd) {
- if (!g_dat.bDoNotStealFocus) {
+ if (!g_plugin.bDoNotStealFocus) {
ShowWindow(hwnd, SW_RESTORE);
SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
SetForegroundWindow(hwnd);
@@ -94,9 +94,9 @@ static int MessageEventAdded(WPARAM hContact, LPARAM lParam)
/* new message */
Skin_PlaySound("AlertMsg");
- if (!g_dat.bDoNotStealFocus) {
+ if (!g_plugin.bDoNotStealFocus) {
char *szProto = Proto_GetBaseAccountName(hContact);
- if (szProto && (g_dat.popupFlags & SRMMStatusToPf2(Proto_GetStatus(szProto)))) {
+ if (szProto && (g_plugin.popupFlags & SRMMStatusToPf2(Proto_GetStatus(szProto)))) {
GetContainer()->AddPage(hContact);
return 0;
}
@@ -170,7 +170,7 @@ static INT_PTR ReadMessageCommand(WPARAM, LPARAM lParam)
static int TypingMessage(WPARAM hContact, LPARAM lParam)
{
- if (!g_dat.bShowTyping)
+ if (!g_plugin.bShowTyping)
return 0;
hContact = db_mc_tryMeta(hContact);
@@ -180,11 +180,11 @@ static int TypingMessage(WPARAM hContact, LPARAM lParam)
auto *pDlg = Srmm_FindDialog(hContact);
if (pDlg)
pDlg->UserTyping(lParam);
- else if (lParam && g_dat.bShowTypingTray) {
+ else if (lParam && g_plugin.bShowTypingTray) {
wchar_t szTip[256];
mir_snwprintf(szTip, TranslateT("%s is typing a message"), Clist_GetContactDisplayName(hContact));
- if (g_dat.bShowTypingClist) {
+ if (g_plugin.bShowTypingClist) {
g_clistApi.pfnRemoveEvent(hContact, 1);
CLISTEVENT cle = {};
@@ -269,7 +269,7 @@ static void RestoreUnreadMessageAlerts(void)
if (szProto == nullptr)
continue;
- if (g_dat.popupFlags & SRMMStatusToPf2(Proto_GetStatus(szProto)))
+ if (g_plugin.popupFlags & SRMMStatusToPf2(Proto_GetStatus(szProto)))
autoPopup = true;
if (autoPopup && !windowAlreadyExists)
diff --git a/src/core/stdmsg/src/msgs.h b/src/core/stdmsg/src/msgs.h
index 82558a86e2..8438f529c1 100644
--- a/src/core/stdmsg/src/msgs.h
+++ b/src/core/stdmsg/src/msgs.h
@@ -67,7 +67,6 @@ class CMsgDialog : public CSrmmBaseDialog
static INT_PTR CALLBACK FilterWndProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
CCtrlBase m_avatar;
- CCtrlButton m_btnOk;
void OnFlash(CTimer *);
void OnType(CTimer *);
diff --git a/src/core/stdmsg/src/resource.h b/src/core/stdmsg/src/resource.h
index d3e1b94b91..dd65d2d386 100644
--- a/src/core/stdmsg/src/resource.h
+++ b/src/core/stdmsg/src/resource.h
@@ -75,12 +75,9 @@
#define IDC_LOADCOUNTSPIN 1040
#define IDC_SHOWBUTTONLINE 1042
#define IDC_LOADUNREAD 1043
-#define IDC_SENDONENTER 1043
#define IDC_LOADCOUNT 1044
-#define IDC_SENDONDBLENTER 1044
#define IDC_LOADTIMEN 1045
#define IDC_LOADTIMESPIN 1046
-#define IDC_SENDONCTRLENTER 1046
#define IDC_LOADTIME 1047
#define IDC_STMINSOLD 1048
#define IDC_SPIN1 1049
diff --git a/src/core/stdmsg/src/srmm.cpp b/src/core/stdmsg/src/srmm.cpp
index c1be7a2113..69c350aad7 100644
--- a/src/core/stdmsg/src/srmm.cpp
+++ b/src/core/stdmsg/src/srmm.cpp
@@ -41,7 +41,47 @@ PLUGININFOEX pluginInfoEx = {
};
CMPlugin::CMPlugin() :
- PLUGIN<CMPlugin>(SRMMMOD, pluginInfoEx)
+ PLUGIN<CMPlugin>(SRMMMOD, pluginInfoEx),
+
+ bShowDate(SRMMMOD, "ShowDate", false),
+ bShowTime(SRMMMOD, "ShowTime", true),
+ bShowSecs(SRMMMOD, "ShowSeconds", true),
+ bShowIcons(SRMMMOD, "ShowLogIcon", true),
+ bShowAvatar(SRMMMOD, "AvatarEnable", true),
+ bShowButtons(SRMMMOD, "ShowButtonLine", true),
+
+ bTypingNew(SRMMMOD, "DefaultTyping", true),
+ bTypingUnknown(SRMMMOD, "UnknownTyping", false),
+
+ bShowTyping(SRMMMOD, "ShowTyping", true),
+ bShowTypingWin(SRMMMOD, "ShowTypingWin", true),
+ bShowTypingTray(SRMMMOD, "ShowTypingTray", false),
+ bShowTypingClist(SRMMMOD, "ShowTypingClist", true),
+
+ bCascade(SRMMMOD, "Cascade", true),
+ bAutoMin(SRMMMOD, "AutoMin", false),
+ bAutoClose(SRMMMOD, "AutoClose", false),
+ bShowNames(SRMMMOD, "ShowNames", false),
+ bShowFormat(SRMMMOD, "ShowFormatting", true),
+ bSendButton(SRMMMOD, "UseSendButton", false),
+ bCtrlSupport(SRMMMOD, "SupportCtrlUpDn", true),
+ bShowReadChar(SRMMMOD, "ShowCharCount", false),
+ bDeleteTempCont(SRMMMOD, "DeleteTempCont", false),
+ bSavePerContact(SRMMMOD, "SavePerContact", false),
+ bDoNotStealFocus(SRMMMOD, "DoNotStealFocus", false),
+ bUseStatusWinIcon(SRMMMOD, "UseStatusWinIcon", true),
+
+ bLimitAvatarHeight(SRMMMOD, "AvatarLimitHeight", true),
+ iAvatarHeight(SRMMMOD, "AvatarHeight", 60),
+
+ popupFlags(SRMMMOD, "PopupFlags", 0),
+ nFlashMax(SRMMMOD, "FlashMax", 5),
+
+ msgTimeout(SRMMMOD, "MessageTimeout", 65000),
+
+ iLoadHistory(SRMMMOD, "LoadHistory", LOADHISTORY_UNREAD),
+ nLoadCount(SRMMMOD, "LoadCount", 10),
+ nLoadTime(SRMMMOD, "LoadTime", 10)
{}
/////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/stdmsg/src/stdafx.h b/src/core/stdmsg/src/stdafx.h
index ca5b8ebd96..ef484f4f68 100644
--- a/src/core/stdmsg/src/stdafx.h
+++ b/src/core/stdmsg/src/stdafx.h
@@ -56,6 +56,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include <m_contacts.h>
#include <m_userinfo.h>
#include <m_history.h>
+#include <m_hotkeys.h>
#include <m_chat_int.h>
#include <m_message.h>
#include <m_file.h>
@@ -131,7 +132,6 @@ struct LOGSTREAMDATA : public GCLogStreamDataBase {};
#include "cmdlist.h"
#include "msgs.h"
-#include "globals.h"
#include "version.h"
#define EM_ACTIVATE (WM_USER+0x102)
@@ -156,6 +156,43 @@ struct CMPlugin : public PLUGIN<CMPlugin>
HANDLE hLogger;
+ CMOption<bool> bShowButtons;
+ CMOption<bool> bSendButton;
+ CMOption<bool> bShowTyping;
+ CMOption<bool> bShowTypingWin;
+ CMOption<bool> bShowTypingTray;
+ CMOption<bool> bShowTypingClist;
+ CMOption<bool> bShowIcons;
+ CMOption<bool> bShowTime;
+ CMOption<bool> bShowDate;
+ CMOption<bool> bShowAvatar;
+ CMOption<bool> bShowNames;
+ CMOption<bool> bShowSecs;
+ CMOption<bool> bShowReadChar;
+ CMOption<bool> bAutoClose;
+ CMOption<bool> bAutoMin;
+ CMOption<bool> bTypingNew;
+ CMOption<bool> bTypingUnknown;
+ CMOption<bool> bCtrlSupport;
+ CMOption<bool> bShowFormat;
+ CMOption<bool> bSavePerContact;
+ CMOption<bool> bDoNotStealFocus;
+ CMOption<bool> bCascade;
+ CMOption<bool> bDeleteTempCont;
+ CMOption<bool> bUseStatusWinIcon;
+
+ CMOption<bool> bLimitAvatarHeight;
+ CMOption<uint16_t> iAvatarHeight;
+
+ CMOption<uint32_t> popupFlags;
+ CMOption<uint32_t> msgTimeout;
+ CMOption<uint32_t> nFlashMax;
+
+ CMOption<uint8_t> iLoadHistory;
+ CMOption<uint16_t> nLoadCount, nLoadTime;
+
+ bool bSmileyInstalled = false;
+
int Load() override;
int Unload() override;
};
@@ -170,6 +207,9 @@ void LoadIcons(void);
void Unload_ChatModule(void);
void Load_ChatModule(void);
+// globals.cpp
+void InitGlobals(void);
+
// log.cpp
char* Log_CreateRtfHeader(void);
CSrmmLogWindow *logBuilder(CMsgDialog &pDlg);
diff --git a/src/core/stdmsg/src/tabs.cpp b/src/core/stdmsg/src/tabs.cpp
index a1f2a40181..ad11e2afa9 100644
--- a/src/core/stdmsg/src/tabs.cpp
+++ b/src/core/stdmsg/src/tabs.cpp
@@ -182,7 +182,7 @@ void CTabbedWindow::OnDestroy()
SaveWindowPosition(true);
- Utils_SaveWindowPosition(m_hwnd, g_dat.bSavePerContact ? ((m_pEmbed == nullptr) ? 0 : m_pEmbed->m_hContact) : 0, CHAT_MODULE, "room");
+ Utils_SaveWindowPosition(m_hwnd, g_plugin.bSavePerContact ? ((m_pEmbed == nullptr) ? 0 : m_pEmbed->m_hContact) : 0, CHAT_MODULE, "room");
if (m_pEmbed == nullptr)
g_pTabDialog = nullptr;
@@ -305,7 +305,7 @@ void CTabbedWindow::FixTabIcons(CMsgDialog *pDlg)
// set the container's icon only if we're processing the current page
if (pDlg == CurrPage()) {
Window_FreeIcon_IcoLib(m_hwnd);
- if (g_dat.bUseStatusWinIcon)
+ if (g_plugin.bUseStatusWinIcon)
Window_SetProtoIcon_IcoLib(m_hwnd, pDlg->m_szProto, pDlg->m_wStatus);
else if (pDlg->isChat())
Window_SetIcon_IcoLib(m_hwnd, g_plugin.getIconHandle(IDI_CHANMGR));
@@ -392,15 +392,15 @@ void CTabbedWindow::SetWindowPosition()
}
int flag = m_pEmbed->m_bNoActivate ? RWPF_HIDDEN : 0;
- if (Utils_RestoreWindowPosition(m_hwnd, g_dat.bSavePerContact ? m_pEmbed->m_hContact : 0, CHAT_MODULE, "room", flag)) {
- if (g_dat.bSavePerContact) {
+ if (Utils_RestoreWindowPosition(m_hwnd, g_plugin.bSavePerContact ? m_pEmbed->m_hContact : 0, CHAT_MODULE, "room", flag)) {
+ if (g_plugin.bSavePerContact) {
if (Utils_RestoreWindowPosition(m_hwnd, 0, CHAT_MODULE, "room", flag | RWPF_NOMOVE))
SetWindowPos(m_hwnd, nullptr, 0, 0, 550, 400, SWP_NOZORDER | SWP_NOMOVE | SWP_SHOWWINDOW);
}
else SetWindowPos(m_hwnd, nullptr, 0, 0, 550, 400, SWP_NOZORDER | SWP_NOMOVE | SWP_SHOWWINDOW);
}
- if (!g_dat.bSavePerContact && g_dat.bCascade) {
+ if (!g_plugin.bSavePerContact && g_plugin.bCascade) {
RECT rc, rcMax = {};
CTabbedWindow *pMaxTab = nullptr;
diff --git a/src/core/stdmsg/stdmsg.vcxproj b/src/core/stdmsg/stdmsg.vcxproj
index c3b3d3353c..c083c48a66 100644
--- a/src/core/stdmsg/stdmsg.vcxproj
+++ b/src/core/stdmsg/stdmsg.vcxproj
@@ -43,7 +43,6 @@
</ClCompile>
<ClCompile Include="src\tabs.cpp" />
<ClInclude Include="src\cmdlist.h" />
- <ClInclude Include="src\globals.h" />
<ClInclude Include="src\msgs.h" />
<ClInclude Include="src\resource.h" />
<ClInclude Include="src\statusicon.h" />
diff --git a/src/core/stdmsg/stdmsg.vcxproj.filters b/src/core/stdmsg/stdmsg.vcxproj.filters
index 99782c4c1f..1996b04a19 100644
--- a/src/core/stdmsg/stdmsg.vcxproj.filters
+++ b/src/core/stdmsg/stdmsg.vcxproj.filters
@@ -49,9 +49,6 @@
<ClInclude Include="src\cmdlist.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="src\globals.h">
- <Filter>Header Files</Filter>
- </ClInclude>
<ClInclude Include="src\msgs.h">
<Filter>Header Files</Filter>
</ClInclude>
diff --git a/src/mir_app/src/chat.h b/src/mir_app/src/chat.h
index 5020adcb92..8be9224d3d 100644
--- a/src/mir_app/src/chat.h
+++ b/src/mir_app/src/chat.h
@@ -47,6 +47,8 @@ extern GlobalLogSettingsBase *g_Settings;
extern CMOption<bool> g_bChatTrayInactive, g_bChatPopupInactive;
+extern const char *g_pszHotkeySection;
+
// log.c
void LoadMsgLogBitmaps(void);
void FreeMsgLogBitmaps(void);
diff --git a/src/mir_app/src/hotkeys.cpp b/src/mir_app/src/hotkeys.cpp
index 8400697910..da631b75ae 100644
--- a/src/mir_app/src/hotkeys.cpp
+++ b/src/mir_app/src/hotkeys.cpp
@@ -154,7 +154,7 @@ MIR_APP_DLL(int) Hotkey_Register(const HOTKEYDESC *desc, HPLUGIN pPlugin)
p->Enabled = !db_get_b(0, DBMODULENAME "Off", p->pszName, 0);
}
- p->pszService = desc->pszService ? mir_strdup(desc->pszService) : nullptr;
+ p->pszService = mir_strdup(desc->pszService);
p->DefHotkey = desc->DefHotKey & ~HKF_MIRANDA_LOCAL;
p->Hotkey = db_get_w(0, DBMODULENAME, p->pszName, p->DefHotkey);
p->type = p->pszService ?
diff --git a/src/mir_app/src/miranda.h b/src/mir_app/src/miranda.h
index e9ae1c1d2c..aadf1a35b6 100644
--- a/src/mir_app/src/miranda.h
+++ b/src/mir_app/src/miranda.h
@@ -65,6 +65,8 @@ void KillModulePopups(HPLUGIN);
/**** srmm.cpp *************************************************************************/
+#define SRMM_MODULE "SRMsg"
+
void KillModuleSrmmIcons(HPLUGIN);
void KillModuleToolbarIcons(HPLUGIN);
diff --git a/src/mir_app/src/srmm_base.cpp b/src/mir_app/src/srmm_base.cpp
index f93d075edc..b470676d1a 100644
--- a/src/mir_app/src/srmm_base.cpp
+++ b/src/mir_app/src/srmm_base.cpp
@@ -36,6 +36,7 @@ CSrmmBaseDialog::CSrmmBaseDialog(CMPluginBase &pPlugin, int idDialog, SESSION_IN
m_message(this, IDC_SRMM_MESSAGE),
m_nickList(this, IDC_SRMM_NICKLIST),
+ m_btnOk(this, IDOK),
m_btnFilter(this, IDC_SRMM_FILTER),
m_btnHistory(this, IDC_SRMM_HISTORY),
m_btnNickList(this, IDC_SRMM_SHOWNICKLIST),
@@ -202,6 +203,17 @@ LRESULT CSrmmBaseDialog::WndProc_Message(UINT msg, WPARAM wParam, LPARAM lParam)
return 0;
}
}
+
+ {
+ MSG tmp = { m_hwnd, msg, wParam, lParam };
+ if (Hotkey_Check(&tmp, g_pszHotkeySection) == 100) {
+ if (!(GetWindowLongPtr(m_message.GetHwnd(), GWL_STYLE) & ES_READONLY)) {
+ m_btnOk.Click();
+ return true;
+ }
+ }
+ }
+
__fallthrough;
case WM_SYSKEYDOWN:
diff --git a/src/mir_app/src/srmm_log.cpp b/src/mir_app/src/srmm_log.cpp
index fe2770cd4e..bc97e37023 100644
--- a/src/mir_app/src/srmm_log.cpp
+++ b/src/mir_app/src/srmm_log.cpp
@@ -82,7 +82,7 @@ static bool sttEnableCustomLogs(CMsgDialog *pDlg)
CSrmmLogWindow* Srmm_GetLogWindow(CMsgDialog *pDlg)
{
if (sttEnableCustomLogs(pDlg)) {
- CMStringA szViewerName(db_get_sm(pDlg->m_hContact, "SRMsg", "Logger"));
+ CMStringA szViewerName(db_get_sm(pDlg->m_hContact, SRMM_MODULE, "Logger"));
if (szViewerName.IsEmpty())
szViewerName = db_get_sm(0, "SRMM", "Logger", "built-in");
diff --git a/src/mir_app/src/srmm_util.cpp b/src/mir_app/src/srmm_util.cpp
index 6281d0c024..7ca37c9eb9 100644
--- a/src/mir_app/src/srmm_util.cpp
+++ b/src/mir_app/src/srmm_util.cpp
@@ -24,6 +24,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "stdafx.h"
#include "chat.h"
+const char *g_pszHotkeySection;
+
/////////////////////////////////////////////////////////////////////////////////////////
MIR_APP_DLL(DWORD) CALLBACK Srmm_LogStreamCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb)
@@ -84,6 +86,28 @@ MIR_APP_DLL(void) Srmm_Broadcast(UINT msg, WPARAM wParam, LPARAM lParam)
/////////////////////////////////////////////////////////////////////////////////////////
+MIR_APP_DLL(void) Srmm_CreateHotkey(const char *pszSection, const char *pszDescription)
+{
+ g_pszHotkeySection = pszSection;
+
+ uint16_t wHotKey = HOTKEYCODE(0, VK_RETURN);
+ if (db_get_b(0, SRMM_MODULE, "SendOnCtrlEnter")) {
+ db_unset(0, SRMM_MODULE, "SendOnCtrlEnter");
+ wHotKey = HOTKEYCODE(HOTKEYF_CONTROL, VK_RETURN);
+ }
+
+ if (db_get_b(0, SRMM_MODULE, "SendOnEnter"))
+ db_unset(0, SRMM_MODULE, "SendOnEnter");
+
+ if (db_get_b(0, SRMM_MODULE, "SendOnDblEnter"))
+ db_unset(0, SRMM_MODULE, "SendOnDblEnter");
+
+ HOTKEYDESC hd = { "tabsrmm_send", pszDescription, pszSection, 0, wHotKey, 0, 100 };
+ Hotkey_Register(&hd, g_pChatPlugin);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
MIR_APP_DLL(HWND) Srmm_FindWindow(MCONTACT hContact)
{
return WindowList_Find(g_hWindowList, hContact);