Skip to content

Commit 28f1282

Browse files
author
fishjam
committed
1.add selected information on status bar;
2.add delete selected items function in context menu; 3.adjust UI
1 parent 92655e5 commit 28f1282

File tree

9 files changed

+121
-15
lines changed

9 files changed

+121
-15
lines changed

LogViewer/LogFilterView.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ CLogFilterView::CLogFilterView()
1313
: CFormView(CLogFilterView::IDD)
1414
{
1515
m_nStartSeqNumber = 0;
16-
m_nEndSeqNumber = -1;
16+
m_nEndSeqNumber = INT_MAX;
1717
m_lastFilterStringChangeTick = 0;
1818
m_bFilterStringChanged = FALSE;
1919
m_UpdateFilterStringTimerID = 0;
@@ -162,7 +162,7 @@ void CLogFilterView::OnTimer(UINT_PTR nIDEvent)
162162
CLogViewerDoc* pDoc = GetDocument();
163163
pDoc->m_FTLogManager.SetFilterSeqNumber(m_nStartSeqNumber, m_nEndSeqNumber);
164164
pDoc->m_FTLogManager.SetLogInfoFilterString(m_strFilterString,
165-
(FilterType)m_comboBoxFilter.GetCurSel());
165+
(FilterType)m_comboBoxFilter.GetCurSel());
166166
pDoc->UpdateAllViews(this);
167167
}
168168
}

LogViewer/LogItemView.cpp

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,11 @@ BEGIN_MESSAGE_MAP(CLogItemView, CListView)
6363
ON_COMMAND(ID_DETAILS_COPY_ITEM_TEXT, &CLogItemView::OnDetailsCopyItemText)
6464
ON_COMMAND(ID_DETAILS_COPY_LINE_TEXT, &CLogItemView::OnDetailsCopyLineText)
6565
ON_COMMAND(ID_DETAILS_COPY_FULL_LOG, &CLogItemView::OnDetailsCopyFullLog)
66+
ON_COMMAND(ID_DETAILS_DELETE_SELECT_ITEMS, &CLogItemView::OnDetailDeleteSelectItems)
6667
ON_WM_CONTEXTMENU()
6768
ON_WM_ERASEBKGND()
6869
ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, &CLogItemView::OnLvnItemchanged)
70+
ON_UPDATE_COMMAND_UI(ID_INDICATOR_SELECTED_LOGITEM, &CLogItemView::OnUpdateIndicatorSelectedLogItem)
6971
END_MESSAGE_MAP()
7072

7173

@@ -615,6 +617,55 @@ void CLogItemView::OnDetailsCopyFullLog()
615617
}
616618
}
617619

620+
void CLogItemView::OnDetailDeleteSelectItems() {
621+
CLogManager& logManager = GetDocument()->m_FTLogManager;
622+
CListCtrl& ListCtrl = GetListCtrl();
623+
624+
int nSelectedCount = ListCtrl.GetSelectedCount();
625+
if (nSelectedCount <= 0)
626+
{
627+
return;
628+
}
629+
630+
if (nSelectedCount > 1)
631+
{
632+
if (FTL::FormatMessageBox(m_hWnd, TEXT("Confirm"), MB_OKCANCEL
633+
, TEXT("Do you want delete %d log items"), nSelectedCount) != IDOK)
634+
{
635+
return;
636+
}
637+
}
638+
639+
int nSelectItem = -1;
640+
std::set<LONG> delItemsSeqNum;
641+
std::list<INT> delItemsIndex;
642+
POSITION pos = ListCtrl.GetFirstSelectedItemPosition();
643+
while (pos != NULL)
644+
{
645+
nSelectItem = ListCtrl.GetNextSelectedItem(pos);
646+
LogItemPointer pLogItem = logManager.GetDisplayLogItem(nSelectItem);
647+
if (pLogItem)
648+
{
649+
delItemsSeqNum.insert(pLogItem->seqNum);
650+
delItemsIndex.push_back(nSelectItem);
651+
//TRACE("will delete seq: %ld\n", pLogItem->seqNum);
652+
}
653+
}
654+
if (!delItemsSeqNum.empty())
655+
{
656+
logManager.DeleteItems(delItemsSeqNum);
657+
658+
//clear select(is there better way?)
659+
std::list<INT>::iterator iter = delItemsIndex.begin();
660+
for ( iter++; //skip the first select
661+
iter != delItemsIndex.end(); ++iter)
662+
{
663+
ListCtrl.SetItemState(*iter, 0, LVIS_SELECTED | LVIS_FOCUSED);
664+
}
665+
GetDocument()->UpdateAllViews(NULL);
666+
}
667+
}
668+
618669
void CLogItemView::_HighlightSameThread(LogItemPointer pCompareLogItem)
619670
{
620671
CLogManager& logManager = GetDocument()->m_FTLogManager;
@@ -684,3 +735,27 @@ void CLogItemView::OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult)
684735
GetDocument()->UpdateAllViews(this);
685736
}
686737
}
738+
739+
void CLogItemView::OnUpdateIndicatorSelectedLogItem(CCmdUI *pCmdUI)
740+
{
741+
CLogManager& logManager = GetDocument()->m_FTLogManager;
742+
CListCtrl& ListCtrl = GetListCtrl();
743+
744+
int nFirstSeqNum = 0;
745+
int nSelectedCount = 0;
746+
POSITION pos = ListCtrl.GetFirstSelectedItemPosition();
747+
if (pos != NULL)
748+
{
749+
int nItem = ListCtrl.GetNextSelectedItem(pos);
750+
LogItemPointer pLogItem = logManager.GetDisplayLogItem(nItem);
751+
if (pLogItem)
752+
{
753+
nFirstSeqNum = pLogItem->seqNum;
754+
}
755+
}
756+
nSelectedCount = ListCtrl.GetSelectedCount();
757+
758+
CString strFormat;
759+
strFormat.Format(ID_INDICATOR_SELECTED_LOGITEM, nFirstSeqNum, nSelectedCount);
760+
pCmdUI->SetText(strFormat);
761+
}

LogViewer/LogItemView.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,11 @@ class CLogItemView : public CListView
5555
afx_msg void OnDetailsCopyItemText();
5656
afx_msg void OnDetailsCopyLineText();
5757
afx_msg void OnDetailsCopyFullLog();
58+
afx_msg void OnDetailDeleteSelectItems();
5859
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
5960

6061
afx_msg void OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult);
62+
afx_msg void OnUpdateIndicatorSelectedLogItem(CCmdUI *pCmdUI);
6163
};
6264

6365

LogViewer/LogManager.cpp

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,6 @@ BOOL CLogManager::ClearAllLogItems()
197197
CFAutoLock<CFLockObject> locker(&m_CsLockObj);
198198
m_activeItemIndex = -1;
199199
m_threadExecuteTimes.clear();
200-
m_allInitLogItems.clear();
201200
m_AllLogItems.clear();
202201
m_allInitLogItems.clear();
203202
m_DisplayLogItems.clear();
@@ -401,6 +400,30 @@ void CLogManager::setActiveItemIndex(LONG index){
401400
m_activeItemIndex = index;
402401
}
403402

403+
BOOL CLogManager::DeleteItems(std::set<LONG> delItems) {
404+
//std::sort(items.begin(), items.end());
405+
BOOL bDeleted = FALSE;
406+
for (LogItemArrayType::iterator iter = m_AllLogItems.begin();
407+
iter != m_AllLogItems.end(); )
408+
{
409+
if (delItems.find((*iter)->seqNum) != delItems.end())
410+
{
411+
iter = m_AllLogItems.erase(iter);
412+
bDeleted = TRUE;
413+
}
414+
else
415+
{
416+
++iter;
417+
}
418+
}
419+
420+
if (bDeleted)
421+
{
422+
DoFilterLogItems();
423+
}
424+
return bDeleted;
425+
}
426+
404427
CString CLogManager::getActiveItemTraceInfo(){
405428
if (m_activeItemIndex >= 0 && m_activeItemIndex < (LONG)m_DisplayLogItems.size()){
406429
return m_DisplayLogItems.at(m_activeItemIndex)->pszTraceInfo;

LogViewer/LogManager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class CLogManager
5757

5858
LONG GetDisplayLogItemCount() const;
5959
const LogItemPointer GetDisplayLogItem(LONG index) const;
60+
BOOL DeleteItems(std::set<LONG> delItems);
6061
void setActiveItemIndex(LONG index);
6162
CString getActiveItemTraceInfo();
6263

LogViewer/LogViewer.rc

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ BEGIN
155155
MENUITEM "Copy Full Log", ID_DETAILS_COPY_FULL_LOG
156156
MENUITEM SEPARATOR
157157
MENUITEM "Highlight Same Thread", ID_DETAILS_HIGHLIGHT_SAME_THREAD
158+
MENUITEM "Delete Select Items", ID_DETAILS_DELETE_SELECT_ITEMS
158159
END
159160
END
160161

@@ -203,19 +204,19 @@ IDD_LOG_FILTER_VIEW DIALOGEX 0, 0, 537, 108
203204
STYLE DS_SETFONT | WS_CHILD
204205
FONT 9, "Microsoft Sans Serif", 400, 0, 0x0
205206
BEGIN
206-
GROUPBOX "LogLevel",IDC_STATIC,84,7,159,27
207-
CONTROL "Detail",IDC_CHECK_DETAIL,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,89,19,28,10
208-
CONTROL "Info",IDC_CHECK_INFO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,19,22,10
209-
CONTROL "Trace",IDC_CHECK_TRACE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,149,19,27,10
210-
CONTROL "Warn",IDC_CHECK_WARN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,181,19,27,10
211-
CONTROL "Error",IDC_CHECK_ERROR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,213,19,24,10
207+
GROUPBOX "LogLevel",IDC_STATIC,111,7,159,27
208+
CONTROL "Detail",IDC_CHECK_DETAIL,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,116,19,28,10
209+
CONTROL "Info",IDC_CHECK_INFO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,149,19,22,10
210+
CONTROL "Trace",IDC_CHECK_TRACE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,176,19,27,10
211+
CONTROL "Warn",IDC_CHECK_WARN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,208,19,27,10
212+
CONTROL "Error",IDC_CHECK_ERROR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,240,19,24,10
212213
EDITTEXT IDC_EDIT_FULL_TRACEINFO,7,35,525,69,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL
213214
EDITTEXT IDC_EDIT_FILTER_STRING,305,16,211,15,ES_AUTOHSCROLL
214-
COMBOBOX IDC_COMBO_FILTER,250,17,50,12,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
215-
GROUPBOX "Seq Number",IDC_STATIC,9,7,70,27
216-
EDITTEXT IDC_EDIT_START_SEQ_NUMBER,14,17,22,14,ES_AUTOHSCROLL
217-
EDITTEXT IDC_EDIT_END_SEQ_NUMBER,50,17,22,14,ES_AUTOHSCROLL
218-
LTEXT "~",IDC_STATIC,41,21,8,8
215+
COMBOBOX IDC_COMBO_FILTER,274,17,26,12,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
216+
GROUPBOX "Seq Number",IDC_STATIC,9,7,98,27
217+
EDITTEXT IDC_EDIT_START_SEQ_NUMBER,14,17,31,14,ES_AUTOHSCROLL
218+
EDITTEXT IDC_EDIT_END_SEQ_NUMBER,59,17,46,14,ES_AUTOHSCROLL
219+
LTEXT "~",IDC_STATIC,49,21,8,8
219220
END
220221

221222
IDD_DIALOG_STUDIO_LIST DIALOGEX 0, 0, 408, 111
@@ -353,6 +354,7 @@ BEGIN
353354
ID_INDICATOR_PROCESS_COUNT "Process:%d"
354355
ID_INDICATOR_THREAD_COUNT "Thread:%d"
355356
ID_INDICATOR_LOGITEM_COUNT "LogItem:%d "
357+
ID_INDICATOR_SELECTED_LOGITEM "Selected:%d/%d"
356358
END
357359

358360
STRINGTABLE

LogViewer/MainFrm.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ static UINT indicators[] =
3838
ID_INDICATOR_PROCESS_COUNT,
3939
ID_INDICATOR_THREAD_COUNT,
4040
ID_INDICATOR_LOGITEM_COUNT,
41+
ID_INDICATOR_SELECTED_LOGITEM,
4142
//ID_INDICATOR_CAPS,
4243
//ID_INDICATOR_NUM,
4344
//ID_INDICATOR_SCRL,

LogViewer/Resource.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#define ID_DETAILS_COPY_LINE_TEXT 32784
3030
#define ID_DETAILS_COPY_ITEM_TEXT 32785
3131
#define ID_DETAILS_COPY_FULL_LOG 32786
32+
#define ID_DETAILS_DELETE_SELECT_ITEMS 32787
3233
#define ID_CODE_PAGE_UTF8 32790
3334
#define ID_CODE_PAGE_GB2312 32791
3435
#define ID_CODE_PAGE_JAPANESE 32792
@@ -38,13 +39,14 @@
3839
#define ID_INDICATOR_PROCESS_COUNT 59143
3940
#define ID_INDICATOR_THREAD_COUNT 59144
4041
#define ID_INDICATOR_LOGITEM_COUNT 59145
42+
#define ID_INDICATOR_SELECTED_LOGITEM 59146
4143

4244
// Next default values for new objects
4345
//
4446
#ifdef APSTUDIO_INVOKED
4547
#ifndef APSTUDIO_READONLY_SYMBOLS
4648
#define _APS_NEXT_RESOURCE_VALUE 133
47-
#define _APS_NEXT_COMMAND_VALUE 32797
49+
#define _APS_NEXT_COMMAND_VALUE 32799
4850
#define _APS_NEXT_CONTROL_VALUE 1013
4951
#define _APS_NEXT_SYMED_VALUE 104
5052
#endif

x64/Release/LogViewer.exe

24 KB
Binary file not shown.

0 commit comments

Comments
 (0)