OpendTect  6.6
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  RCS: $Id$
11 ________________________________________________________________________
12 
13 -*/
14 
15 #include "uilistbox.h"
16 
17 #include <QListWidget>
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 {
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 {
110 }
111 
112 #undef mTrigger
113 
114 };
115 
116 QT_END_NAMESPACE
117 
118 #endif
OD::RightButton
@ RightButton
Definition: keyenum.h:23
i_listMessenger::receiver_
uiListBox * receiver_
Definition: i_qlistbox.h:63
uiListBox::box
uiListBoxObj * box()
Definition: uilistbox.h:109
i_listMessenger::itemClicked
void itemClicked(QListWidgetItem *itm)
Definition: i_qlistbox.h:86
i_listMessenger::~i_listMessenger
virtual ~i_listMessenger()
Definition: i_qlistbox.h:59
i_listMessenger::itemDoubleClicked
void itemDoubleClicked(QListWidgetItem *itm)
Definition: i_qlistbox.h:82
uilistbox.h
OD::LeftButton
@ LeftButton
Definition: keyenum.h:22
i_listMessenger
Helper class for uiListBox to relay Qt's messages.
Definition: i_qlistbox.h:27
uiListBox
List Box.
Definition: uilistbox.h:75
i_listMessenger::itemSelectionChanged
void itemSelectionChanged()
Definition: i_qlistbox.h:94
i_listMessenger::i_listMessenger
i_listMessenger(QListWidget *sndr, uiListBox *receiver)
Definition: i_qlistbox.h:32
i_listMessenger::itemEntered
void itemEntered(QListWidgetItem *itm)
Definition: i_qlistbox.h:100
mTrigger
#define mTrigger(notifier, itm)
Definition: i_qlistbox.h:67
i_listMessenger::itemChanged
void itemChanged(QListWidgetItem *itm)
Definition: i_qlistbox.h:107
i_listMessenger::sender_
QListWidget * sender_
Definition: i_qlistbox.h:64
i_listMessenger::uiListBoxBody
friend class uiListBoxBody
Definition: i_qlistbox.h:29
uiListBox::handleCheckChange
void handleCheckChange(mQtclass(QListWidgetItem *))
uiListBox::buttonstate_
OD::ButtonState buttonstate_
Definition: uilistbox.h:232

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