OpendTect  6.3
i_qlistbox.h
Go to the documentation of this file.
1 #ifndef i_qlistbox_h
2 #define i_qlistbox_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: 16/05/2000
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "uilistbox.h"
15 
16 #include <QListWidget>
17 #include <QObject>
18 
20 
24 QT_BEGIN_NAMESPACE
25 
26 class i_listMessenger : public QObject
27 {
28  Q_OBJECT
29  friend class uiListBoxBody;
30 
31 protected:
32  i_listMessenger( QListWidget* sndr,
33  uiListBox* receiver )
34  : sender_( sndr )
35  , receiver_( receiver )
36  {
37  connect( sndr,
38  SIGNAL(itemDoubleClicked(QListWidgetItem*)),
39  this,
40  SLOT(itemDoubleClicked(QListWidgetItem*)) );
41 
42  connect( sndr,
43  SIGNAL(itemClicked(QListWidgetItem*)),
44  this,
45  SLOT(itemClicked(QListWidgetItem*)) );
46 
47  connect( sndr, SIGNAL(itemSelectionChanged()),
48  this, SLOT(itemSelectionChanged()) );
49 
50  connect( sndr,
51  SIGNAL(itemEntered(QListWidgetItem*)),
52  this, SLOT(itemEntered(QListWidgetItem*)) );
53 
54  connect( sndr,
55  SIGNAL(itemChanged(QListWidgetItem*)),
56  this, SLOT(itemChanged(QListWidgetItem*)) );
57  }
58 
59  virtual ~i_listMessenger() {}
60 
61 private:
62 
64  QListWidget* sender_;
65 
66 
67 #define mTrigger( notifier, itm ) \
68 { \
69  BufferString msg = #notifier; \
70  if ( itm ) \
71  { \
72  QListWidgetItem* qlwi = itm; \
73  msg += " "; msg += qlwi->listWidget()->row( qlwi ); \
74  } \
75  const int refnr = receiver_->box()->beginCmdRecEvent( msg ); \
76  receiver_->notifier.trigger( *receiver_ ); \
77  receiver_->box()->endCmdRecEvent( refnr, msg ); \
78 }
79 
80 private slots:
81 
82 void itemDoubleClicked( QListWidgetItem* itm )
83 { mTrigger( doubleClicked, itm ); }
84 
85 
86 void itemClicked( QListWidgetItem* itm )
87 {
88  if ( receiver_->buttonstate_ == OD::RightButton )
89  mTrigger( rightButtonClicked, itm )
90  else if ( receiver_->buttonstate_ == OD::LeftButton )
91  mTrigger( leftButtonClicked, itm );
92 }
93 
95 {
96  mTrigger( selectionChanged, 0 );
97 }
98 
99 
100 void itemEntered( QListWidgetItem* itm )
101 {
102  const int refnr = receiver_->box()->beginCmdRecEvent( "itemEntered" );
103  receiver_->box()->endCmdRecEvent( refnr, "itemEntered" );
104 }
105 
106 
107 void itemChanged( QListWidgetItem* itm )
108 {
109  receiver_->handleCheckChange( itm );
110 }
111 
112 #undef mTrigger
113 
114 };
115 
116 QT_END_NAMESPACE
117 
118 #endif
void itemSelectionChanged()
Definition: i_qlistbox.h:94
i_listMessenger(QListWidget *sndr, uiListBox *receiver)
Definition: i_qlistbox.h:32
void itemChanged(QListWidgetItem *itm)
Definition: i_qlistbox.h:107
friend class uiListBoxBody
Definition: i_qlistbox.h:29
void itemEntered(QListWidgetItem *itm)
Definition: i_qlistbox.h:100
QListWidget * sender_
Definition: i_qlistbox.h:64
Definition: keyenum.h:21
List Box.
Definition: uilistbox.h:73
uiListBoxObj * box()
Definition: uilistbox.h:108
uiListBox * receiver_
Definition: i_qlistbox.h:63
OD::ButtonState buttonstate_
Definition: uilistbox.h:232
void itemClicked(QListWidgetItem *itm)
Definition: i_qlistbox.h:86
void itemDoubleClicked(QListWidgetItem *itm)
Definition: i_qlistbox.h:82
#define mTrigger(notifier, itm)
Definition: i_qlistbox.h:67
void handleCheckChange(mQtclass(QListWidgetItem *))
virtual ~i_listMessenger()
Definition: i_qlistbox.h:59
Helper class for uiListBox to relay Qt&#39;s messages.
Definition: i_qlistbox.h:26
Definition: keyenum.h:22

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