source: trunk/src/WTLx/GenericAddListView.hpp @ 418

Revision 418, 1.7 KB checked in by Eoin, 12 years ago (diff)

Factored out base code for adding and editing items in ListViews?. Made the NewTorrent? Tracker ListView? editable.

Line 
1
2//         Copyright Eóin O'Callaghan 2006 - 2007.
3// Distributed under the Boost Software License, Version 1.0.
4//    (See accompanying file LICENSE_1_0.txt or copy at
5//          http://www.boost.org/LICENSE_1_0.txt)
6
7#pragma once
8
9#include <boost/signals.hpp>
10#include <boost/function.hpp>
11
12#include "stdAfx.hpp"
13
14namespace WTLx
15{
16
17template<class ListClass, int listID_NEW, int listID_EDIT, int listID_DELETE>
18class GenericAddListView
19{
20        friend class ListClass;
21       
22public:
23        BEGIN_MSG_MAP_EX(TrackerListViewCtrl)
24                COMMAND_ID_HANDLER(listID_NEW, OnNew)
25                COMMAND_ID_HANDLER(listID_EDIT, OnEdit)
26                COMMAND_ID_HANDLER(listID_DELETE, OnDelete)
27
28                REFLECTED_NOTIFY_CODE_HANDLER(NM_DBLCLK, OnDoubleClick)
29        END_MSG_MAP()
30
31        LRESULT OnDoubleClick(int i, LPNMHDR pnmh, BOOL&)
32        {               
33                ListClass* pT = static_cast<ListClass*>(this);
34
35                LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE)pnmh;
36                LVHITTESTINFO hit;
37
38                hit.pt = lpnmitem->ptAction;
39                pT->SubItemHitTest(&hit);
40
41                if (hit.iItem == -1)                   
42                        pT->newItem();
43                else
44                        pT->editItem(hit.iItem);
45
46                return 0;
47        }
48
49        LRESULT OnNew(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
50        {
51                ListClass* pT = static_cast<ListClass*>(this);
52                pT->newItem();
53
54                return 0;
55        }
56
57        LRESULT OnEdit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
58        {
59                ListClass* pT = static_cast<ListClass*>(this);
60                pT->editItem(pT->manager().selectedIndex());
61
62                return 0;
63        }
64
65        LRESULT OnDelete(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
66        {
67                ListClass* pT = static_cast<ListClass*>(this);         
68                pT->deleteItem(pT->manager().selectedIndex());
69
70                return 0;
71        }
72};
73
74} // namespace WTLx
Note: See TracBrowser for help on using the repository browser.