diff options
author | George Hazan <ghazan@miranda.im> | 2019-09-17 20:43:20 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2019-09-17 20:43:20 +0300 |
commit | ac297d39f72433e077396a02c71526d50b157b17 (patch) | |
tree | 18d2fa80b717c9418d3456568e51998dce297e37 /src/mir_app | |
parent | f4ba44ddae2289b44e11e42dc934cb03462793bf (diff) |
Chat: common code moved to mir_app
Diffstat (limited to 'src/mir_app')
-rw-r--r-- | src/mir_app/src/chat.h | 1 | ||||
-rw-r--r-- | src/mir_app/src/chat_svc.cpp | 4 | ||||
-rw-r--r-- | src/mir_app/src/mir_app.def | 3 | ||||
-rw-r--r-- | src/mir_app/src/mir_app64.def | 3 | ||||
-rw-r--r-- | src/mir_app/src/srmm_base.cpp | 53 |
5 files changed, 55 insertions, 9 deletions
diff --git a/src/mir_app/src/chat.h b/src/mir_app/src/chat.h index 1c3a038a94..ee0cecafa6 100644 --- a/src/mir_app/src/chat.h +++ b/src/mir_app/src/chat.h @@ -49,6 +49,7 @@ extern HANDLE hevSendEvent, hevBuildMenuEvent; // log.c
void LoadMsgLogBitmaps(void);
void FreeMsgLogBitmaps(void);
+void RedrawLog2(SESSION_INFO *si);
void ValidateFilename (wchar_t *filename);
wchar_t* MakeTimeStamp(wchar_t *pszStamp, time_t time);
wchar_t* GetChatLogsFilename(SESSION_INFO *si, time_t tTime);
diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index 48231cf7a9..1710a30915 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -405,7 +405,7 @@ static BOOL AddEventToAllMatchingUID(GCEVENT *gce) if (SM_AddEvent(si->ptszID, si->pszModule, gce, FALSE))
si->pDlg->AddLog();
else
- si->pDlg->RedrawLog2();
+ RedrawLog2(si);
}
if (!(gce->dwFlags & GCEF_NOTNOTIFY))
@@ -550,7 +550,7 @@ static INT_PTR CALLBACK sttEventStub(void *_param) if (isOk)
si->pDlg->AddLog();
else
- si->pDlg->RedrawLog2();
+ RedrawLog2(si);
}
if (!(gce.dwFlags & GCEF_NOTNOTIFY))
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index 3522511b97..a59be4a7f1 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -342,14 +342,13 @@ Srmm_LogStreamCallback @412 ?CloseTab@CSrmmBaseDialog@@UAEXXZ @416 NONAME
?UpdateStatusBar@CSrmmBaseDialog@@UAEXXZ @417 NONAME
Chat_UpdateOptions @418 NONAME
-?RedrawLog@CSrmmBaseDialog@@UAEXXZ @419 NONAME
+?RedrawLog@CSrmmBaseDialog@@QAEXXZ @419 NONAME
?UpdateOptions@CSrmmBaseDialog@@UAEXXZ @420 NONAME
?ShowColorChooser@CSrmmBaseDialog@@QAEXH@Z @421 NONAME
?ShowFilterMenu@CSrmmBaseDialog@@UAEXXZ @422 NONAME
?OnInitDialog@CSrmmBaseDialog@@MAE_NXZ @423 NONAME
?StreamInEvents@CSrmmBaseDialog@@UAEXPAULOGINFO@@_N@Z @424 NONAME
?AddLog@CSrmmBaseDialog@@UAEXXZ @425 NONAME
-?RedrawLog2@CSrmmBaseDialog@@QAEXXZ @426 NONAME
?ScrollToBottom@CSrmmBaseDialog@@UAEXXZ @427 NONAME
?UpdateNickList@CSrmmBaseDialog@@UAEXXZ @428 NONAME
?onClick_BIU@CSrmmBaseDialog@@IAEXPAVCCtrlButton@@@Z @430 NONAME
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index e0d0538061..cb548af9e7 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -342,14 +342,13 @@ Srmm_LogStreamCallback @412 ?CloseTab@CSrmmBaseDialog@@UEAAXXZ @416 NONAME
?UpdateStatusBar@CSrmmBaseDialog@@UEAAXXZ @417 NONAME
Chat_UpdateOptions @418 NONAME
-?RedrawLog@CSrmmBaseDialog@@UEAAXXZ @419 NONAME
+?RedrawLog@CSrmmBaseDialog@@QEAAXXZ @419 NONAME
?UpdateOptions@CSrmmBaseDialog@@UEAAXXZ @420 NONAME
?ShowColorChooser@CSrmmBaseDialog@@QEAAXH@Z @421 NONAME
?ShowFilterMenu@CSrmmBaseDialog@@UEAAXXZ @422 NONAME
?OnInitDialog@CSrmmBaseDialog@@MEAA_NXZ @423 NONAME
?StreamInEvents@CSrmmBaseDialog@@UEAAXPEAULOGINFO@@_N@Z @424 NONAME
?AddLog@CSrmmBaseDialog@@UEAAXXZ @425 NONAME
-?RedrawLog2@CSrmmBaseDialog@@QEAAXXZ @426 NONAME
?ScrollToBottom@CSrmmBaseDialog@@UEAAXXZ @427 NONAME
?UpdateNickList@CSrmmBaseDialog@@UEAAXXZ @428 NONAME
?onClick_BIU@CSrmmBaseDialog@@IEAAXPEAVCCtrlButton@@@Z @430 NONAME
diff --git a/src/mir_app/src/srmm_base.cpp b/src/mir_app/src/srmm_base.cpp index 65e2f0e359..cf4685ef6b 100644 --- a/src/mir_app/src/srmm_base.cpp +++ b/src/mir_app/src/srmm_base.cpp @@ -775,11 +775,58 @@ void CSrmmBaseDialog::ClearLog() m_log.SetText(L""); } -void CSrmmBaseDialog::RedrawLog2() +void CSrmmBaseDialog::UpdateOptions() +{ + MODULEINFO *mi = m_si->pMI; + EnableWindow(m_btnBold.GetHwnd(), mi->bBold); + EnableWindow(m_btnItalic.GetHwnd(), mi->bItalics); + EnableWindow(m_btnUnderline.GetHwnd(), mi->bUnderline); + EnableWindow(m_btnColor.GetHwnd(), mi->bColor); + EnableWindow(m_btnBkColor.GetHwnd(), mi->bBkgColor); + if (m_si->iType == GCW_CHATROOM) + EnableWindow(m_btnChannelMgr.GetHwnd(), mi->bChanMgr); + + Resize(); + RedrawLog2(m_si); +} + +///////////////////////////////////////////////////////////////////////////////////////// + +void RedrawLog2(SESSION_INFO *si) +{ + si->LastTime = 0; + if (si->pLog) + si->pDlg->StreamInEvents(si->pLogEnd, TRUE); +} + +static void __cdecl phase2(SESSION_INFO *si) +{ + Sleep(30); + if (si && si->pDlg) + RedrawLog2(si); +} + +void CSrmmBaseDialog::RedrawLog() { m_si->LastTime = 0; - if (m_si->pLog) - StreamInEvents(m_si->pLogEnd, TRUE); + if (m_si->pLog) { + LOGINFO *pLog = m_si->pLog; + if (m_si->iEventCount > 60) { + int index = 0; + while (index < 59) { + if (pLog->next == nullptr) + break; + + pLog = pLog->next; + if (m_si->iType != GCW_CHATROOM || !m_bFilterEnabled || (m_iLogFilterFlags & pLog->iType) != 0) + index++; + } + StreamInEvents(pLog, true); + mir_forkThread<SESSION_INFO>(phase2, m_si); + } + else StreamInEvents(m_si->pLogEnd, true); + } + else ClearLog(); } ///////////////////////////////////////////////////////////////////////////////////////// |