OpendTect  6.3
i_qtreeview.h
Go to the documentation of this file.
1 #ifndef i_qtreeview_h
2 #define i_qtreeview_h
3 
4 /*+
5 ________________________________________________________________________
6 
7  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
8  Author: A.H. Lammertink
9  Date: 31/01/2002
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "uitreeview.h"
15 
16 #include <QObject>
17 #include <QTreeWidget>
18 
19 
21 
25 QT_BEGIN_NAMESPACE
26 
27 class i_treeVwMessenger : public QObject
28 {
29  Q_OBJECT
30  friend class uiTreeViewBody;
31 
32 protected:
33 
34 i_treeVwMessenger( QTreeWidget& sndr, uiTreeView& receiver )
35  : sender_(sndr)
36  , receiver_(receiver)
37 {
38  connect( &sndr, SIGNAL(itemSelectionChanged()),
39  this, SLOT(itemSelectionChanged()) );
40 
41  connect( &sndr, SIGNAL(itemChanged(QTreeWidgetItem*,int)),
42  this, SLOT(itemChanged(QTreeWidgetItem*,int)) );
43 
44  connect( &sndr,
45  SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
46  this,
47  SLOT(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)) );
48 
49  connect( &sndr, SIGNAL(itemClicked(QTreeWidgetItem*,int)),
50  this, SLOT(itemClicked(QTreeWidgetItem*,int)) );
51 
52  connect( &sndr, SIGNAL(itemPressed(QTreeWidgetItem*,int)),
53  this, SLOT(itemPressed(QTreeWidgetItem*,int)) );
54 
55  connect( &sndr, SIGNAL(customContextMenuRequested(const QPoint &)),
56  this, SLOT(customContextMenuRequested(const QPoint &)) );
57 
58  connect( &sndr, SIGNAL(itemExpanded(QTreeWidgetItem*)),
59  this, SLOT(itemExpanded(QTreeWidgetItem*)) );
60 
61  connect( &sndr, SIGNAL(itemCollapsed(QTreeWidgetItem*)),
62  this, SLOT(itemCollapsed(QTreeWidgetItem*)) );
63 
64  connect( &sndr, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),
65  this, SLOT(itemDoubleClicked(QTreeWidgetItem*,int)) );
66 
67  connect( &sndr, SIGNAL(itemEntered(QTreeWidgetItem*,int)),
68  this, SLOT(itemEntered(QTreeWidgetItem*,int)) );
69 }
70 
71 private:
72 
73 void setNotifiedItem( QTreeWidgetItem* item )
74 { receiver_.setNotifiedItem(item); }
75 
76 void setNotifiedColumn( int col )
77 { receiver_.setNotifiedColumn( col ); }
78 
80 QTreeWidget& sender_;
81 
82 
83 #define mTriggerBody( notifier, triggerstatement1, triggerstatement2 ) \
84 { \
85  BufferString msg = #notifier; \
86  const int refnr = receiver_.beginCmdRecEvent( msg ); \
87  triggerstatement1; \
88  triggerstatement2; \
89  receiver_.endCmdRecEvent( refnr, msg ); \
90 }
91 
92 #define mNoTrigger( notifier ) \
93  mTriggerBody( notifier, , )
94 
95 #define mTrigger( notifier ) \
96  mTriggerBody( notifier, receiver_.notifier.trigger(receiver_), )
97 
98 #define mTriggerExtra( notifier, extranotifier ) \
99  mTriggerBody( notifier, receiver_.notifier.trigger(receiver_), \
100  receiver_.extranotifier.trigger(receiver_) )
101 
102 private slots:
103 
105 {
106  QList<QTreeWidgetItem*> items = sender_.selectedItems();
107  setNotifiedItem( items.size()>0 ? items[0] : 0 );
108  mTrigger( selectionChanged );
109 }
110 
111 void itemChanged( QTreeWidgetItem* item, int column )
112 {
113  setNotifiedItem( item );
114  setNotifiedColumn( column );
116 }
117 
118 void currentItemChanged( QTreeWidgetItem* item, QTreeWidgetItem* )
119 {
120  setNotifiedItem( item );
121  mTrigger( currentChanged );
122 }
123 
124 void itemClicked( QTreeWidgetItem* item, int col )
125 {
126  setNotifiedItem( item );
127  setNotifiedColumn( col );
128  if ( receiver_.buttonstate_ == OD::RightButton )
129  mTriggerExtra( rightButtonClicked, mouseButtonClicked )
130  else if ( receiver_.buttonstate_ == OD::LeftButton )
131  mTriggerExtra( leftButtonClicked, mouseButtonClicked )
132  else
133  mTrigger( mouseButtonClicked );
134 }
135 
136 void itemPressed( QTreeWidgetItem* item, int col )
137 {
138  setNotifiedItem( item );
139  setNotifiedColumn( col );
140  if ( receiver_.buttonstate_ == OD::RightButton )
141  mTriggerExtra( rightButtonPressed, mouseButtonPressed )
142  else if ( receiver_.buttonstate_ == OD::LeftButton )
143  mTriggerExtra( leftButtonPressed, mouseButtonPressed )
144  else
145  mTrigger( mouseButtonPressed );
146 }
147 
148 void customContextMenuRequested( const QPoint& qpoint )
149 {
150  setNotifiedItem( sender_.itemAt(qpoint) );
151  receiver_.setNotifiedColumn( sender_.columnAt(qpoint.x()) );
152  mTrigger( contextMenuRequested );
153 }
154 
155 void itemExpanded( QTreeWidgetItem* item )
156 {
157  setNotifiedItem( item );
158  mTrigger( expanded );
159 }
160 
161 void itemCollapsed( QTreeWidgetItem* item )
162 {
163  setNotifiedItem( item );
164  mTrigger( collapsed );
165 }
166 
167 void itemDoubleClicked( QTreeWidgetItem* item, int col )
168 {
169  setNotifiedItem( item );
170  setNotifiedColumn( col );
171  mTrigger( doubleClicked );
172 }
173 
174 void itemEntered( QTreeWidgetItem* item, int col )
175 {
176  setNotifiedItem( item );
177  setNotifiedColumn( col );
179 }
180 
181 #undef mTriggerBody
182 #undef mNoTrigger
183 #undef mTrigger
184 #undef mTriggerExtra
185 
186 };
187 
188 QT_END_NAMESPACE
189 
190 #endif
void setNotifiedItem(QTreeWidgetItem *item)
Definition: i_qtreeview.h:73
uiTreeView & receiver_
Definition: i_qtreeview.h:79
void itemDoubleClicked(QTreeWidgetItem *item, int col)
Definition: i_qtreeview.h:167
void currentItemChanged(QTreeWidgetItem *item, QTreeWidgetItem *)
Definition: i_qtreeview.h:118
void setNotifiedItem(mQtclass(QTreeWidgetItem *))
QTreeWidget & sender_
Definition: i_qtreeview.h:80
#define mNoTrigger(notifier)
Definition: i_qtreeview.h:92
void itemSelectionChanged()
Definition: i_qtreeview.h:104
i_treeVwMessenger(QTreeWidget &sndr, uiTreeView &receiver)
Definition: i_qtreeview.h:34
Definition: keyenum.h:21
void itemEntered(QTreeWidgetItem *item, int col)
Definition: i_qtreeview.h:174
OD::ButtonState buttonstate_
Definition: uitreeview.h:156
friend class uiTreeViewBody
Definition: i_qtreeview.h:30
#define mTrigger(notifier)
Definition: i_qtreeview.h:95
void itemChanged(QTreeWidgetItem *item, int column)
Definition: i_qtreeview.h:111
void setNotifiedColumn(int col)
Definition: i_qtreeview.h:76
Definition: uitreeview.h:29
void itemCollapsed(QTreeWidgetItem *item)
Definition: i_qtreeview.h:161
void customContextMenuRequested(const QPoint &qpoint)
Definition: i_qtreeview.h:148
#define mTriggerExtra(notifier, extranotifier)
Definition: i_qtreeview.h:98
brief Helper class for uiTreeView to relay Qt&#39;s &#39;activated&#39; messages to uiAction. ...
Definition: i_qtreeview.h:27
void setNotifiedColumn(int col)
Definition: uitreeview.h:131
void itemPressed(QTreeWidgetItem *item, int col)
Definition: i_qtreeview.h:136
void itemExpanded(QTreeWidgetItem *item)
Definition: i_qtreeview.h:155
Definition: odhttp.h:31
Definition: keyenum.h:22
void itemClicked(QTreeWidgetItem *item, int col)
Definition: i_qtreeview.h:124

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017