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

Revision 420, 2.0 KB checked in by Eoin, 12 years ago (diff)

Framework for Web seeds and DHT nodes in torrent creation in place.

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#define HAL_GENERIC_ALV_BEGIN           20000
10#define HAL_GENERIC_ALV_NEW             HAL_GENERIC_ALV_BEGIN + 1
11#define HAL_GENERIC_ALV_EDIT            HAL_GENERIC_ALV_BEGIN + 2
12#define HAL_GENERIC_ALV_DELETE          HAL_GENERIC_ALV_BEGIN + 3
13
14#ifndef RC_INVOKED
15
16#include <boost/signals.hpp>
17#include <boost/function.hpp>
18
19#include "stdAfx.hpp"
20
21namespace WTLx
22{
23
24template<class ListClass, int listID_NEW=HAL_GENERIC_ALV_NEW, 
25        int listID_EDIT=HAL_GENERIC_ALV_EDIT, int listID_DELETE=HAL_GENERIC_ALV_DELETE
26        >
27class GenericAddListView
28{
29        friend class ListClass;
30       
31public:
32        BEGIN_MSG_MAP_EX(TrackerListViewCtrl)
33                COMMAND_ID_HANDLER(listID_NEW, OnNew)
34                COMMAND_ID_HANDLER(listID_EDIT, OnEdit)
35                COMMAND_ID_HANDLER(listID_DELETE, OnDelete)
36
37                REFLECTED_NOTIFY_CODE_HANDLER(NM_DBLCLK, OnDoubleClick)
38        END_MSG_MAP()
39
40        LRESULT OnDoubleClick(int i, LPNMHDR pnmh, BOOL&)
41        {               
42                ListClass* pT = static_cast<ListClass*>(this);
43
44                LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE)pnmh;
45                LVHITTESTINFO hit;
46
47                hit.pt = lpnmitem->ptAction;
48                pT->SubItemHitTest(&hit);
49
50                if (hit.iItem == -1)                   
51                        pT->newItem();
52                else
53                        pT->editItem(hit.iItem);
54
55                return 0;
56        }
57
58        LRESULT OnNew(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
59        {
60                ListClass* pT = static_cast<ListClass*>(this);
61                pT->newItem();
62
63                return 0;
64        }
65
66        LRESULT OnEdit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
67        {
68                ListClass* pT = static_cast<ListClass*>(this);
69                pT->editItem(pT->manager().selectedIndex());
70
71                return 0;
72        }
73
74        LRESULT OnDelete(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
75        {
76                ListClass* pT = static_cast<ListClass*>(this);         
77                pT->deleteItem(pT->manager().selectedIndex());
78
79                return 0;
80        }
81};
82
83} // namespace WTLx
84
85#endif // RC_INVOKED
Note: See TracBrowser for help on using the repository browser.