Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 1 | // ListViewControl.cxx: implementation of the ListViewControl class. |
| 2 | // |
| 3 | ////////////////////////////////////////////////////////////////////// |
| 4 | #include <tchar.h> |
| 5 | #include "ListViewControl.h" |
| 6 | #include "commctrl.h" |
| 7 | ////////////////////////////////////////////////////////////////////// |
| 8 | // Construction/Destruction |
| 9 | ////////////////////////////////////////////////////////////////////// |
| 10 | using namespace rfb; |
| 11 | using namespace rfb::win32; |
| 12 | |
| 13 | ListViewControl::ListViewControl() |
| 14 | { |
| 15 | } |
| 16 | |
Oleg Sheikin | ff43bfd | 2005-12-07 08:02:52 +0000 | [diff] [blame] | 17 | bool ListViewControl::IsSelectedLVItem(DWORD idListView, |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 18 | HWND hDlg, int numberItem) |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 19 | { |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 20 | return (ListView_GetItemState(GetDlgItem(hDlg, idListView), |
| 21 | numberItem, LVIS_SELECTED) == LVIS_SELECTED); |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 22 | } |
| 23 | |
Oleg Sheikin | ff43bfd | 2005-12-07 08:02:52 +0000 | [diff] [blame] | 24 | void ListViewControl::SelectLVItem(DWORD idListView, HWND hDlg, int numberItem) |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 25 | { |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 26 | ListView_SetItemState(GetDlgItem(hDlg, idListView), |
| 27 | numberItem, LVIS_SELECTED, LVIS_SELECTED); |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 28 | } |
| 29 | |
| 30 | BOOL ListViewControl::InitLVColumns(DWORD idListView, HWND hDlg, int width, int columns, |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 31 | TCHAR *title[], DWORD mask, DWORD LVStyle, DWORD format) |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 32 | { |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 33 | ListView_SetExtendedListViewStyle(GetDlgItem(hDlg, idListView), LVStyle); |
| 34 | TCHAR szText[256]; |
| 35 | LVCOLUMN lvc; |
| 36 | int iCol; |
| 37 | |
| 38 | lvc.mask = mask; |
| 39 | |
| 40 | for (iCol = 0; iCol < columns; iCol++) { |
| 41 | lvc.iSubItem = iCol; |
| 42 | lvc.pszText = szText; |
| 43 | lvc.cx = width; |
| 44 | lvc.fmt = format; |
| 45 | |
| 46 | _tcscpy(szText, title[iCol]); |
| 47 | if (ListView_InsertColumn(GetDlgItem(hDlg, idListView), iCol, &lvc) == -1) |
| 48 | return FALSE; |
| 49 | } |
| 50 | return TRUE; |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 51 | } |
| 52 | |
| 53 | BOOL ListViewControl::InsertLVItem(DWORD idListView, HWND hDlg, int number, TCHAR * texts[], |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 54 | int columns) |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 55 | { |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 56 | int i; |
| 57 | LVITEM lvI; |
| 58 | lvI.mask = LVIF_TEXT| LVIF_STATE; |
| 59 | lvI.state = 0; |
| 60 | lvI.stateMask = 0; |
| 61 | lvI.iItem = number; |
| 62 | lvI.iSubItem = 0; |
| 63 | lvI.pszText = texts[0]; |
| 64 | |
| 65 | if(ListView_InsertItem(GetDlgItem(hDlg, idListView), &lvI) == -1) |
| 66 | return NULL; |
| 67 | |
| 68 | for (i =1; i < columns; i++) { |
| 69 | SetLVItemText( |
| 70 | idListView, hDlg, |
| 71 | number, i, texts[i]); |
| 72 | } |
| 73 | return TRUE; |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 74 | } |
| 75 | |
| 76 | void ListViewControl::SetLVItemText(DWORD idListView, HWND hDlg, int numberItem, |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 77 | int namberColumn, TCHAR * text) |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 78 | { |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 79 | ListView_SetItemText( |
| 80 | GetDlgItem(hDlg, idListView), |
| 81 | numberItem, namberColumn, text); |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 82 | } |
| 83 | |
| 84 | void ListViewControl::GetLVItemText(DWORD idListView, HWND hDlg, int numberItem, |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 85 | int namberColumn, TCHAR * text) |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 86 | { |
| 87 | ListView_GetItemText(GetDlgItem(hDlg, idListView), numberItem, |
| 88 | namberColumn, text, 256); |
| 89 | } |
| 90 | |
| 91 | void ListViewControl::DeleteLVItem(DWORD idListView, HWND hDlg, int number) |
| 92 | { |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 93 | ListView_DeleteItem(GetDlgItem(hDlg, idListView), number); |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 94 | } |
| 95 | |
| 96 | void ListViewControl::DeleteAllLVItem(DWORD idListView, HWND hDlg) |
| 97 | { |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 98 | ListView_DeleteAllItems(GetDlgItem(hDlg, idListView)); |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 99 | } |
Oleg Sheikin | 1475737 | 2005-07-01 13:31:14 +0000 | [diff] [blame] | 100 | |
Oleg Sheikin | f5049ad | 2005-07-01 12:41:15 +0000 | [diff] [blame] | 101 | ListViewControl::~ListViewControl() |
| 102 | { |
| 103 | } |