Salome HOME
SMH: Add again in binary mode
[modules/gui.git] / src / SUIT / SUIT_PopupClient.cxx
1 #include "SUIT_PopupClient.h"
2
3 #include <qevent.h>
4
5 /*
6   Class: SUIT_PopupClient [public]
7   Descr: Base class for instances which creates popup menu on QContextMenuEvent
8 */
9
10 SUIT_PopupClient::SUIT_PopupClient()
11 : mySignal( 0 )
12 {
13 }
14
15 SUIT_PopupClient::~SUIT_PopupClient()
16 {
17   delete mySignal;
18 }
19
20 bool SUIT_PopupClient::connectPopupRequest( QObject* reciever, const char* slot )
21 {
22   if ( !reciever || !slot )
23     return false;
24   if ( !mySignal )
25     mySignal = new Signal();
26   return QObject::connect( mySignal, SIGNAL( contextMenuRequest( SUIT_PopupClient*, QContextMenuEvent* ) ),
27                            reciever, slot );
28 }
29
30 bool SUIT_PopupClient::disconnectPopupRequest( QObject* reciever, const char* slot )
31 {
32   if ( !reciever || !slot || !mySignal )
33     return false;
34   return QObject::disconnect( mySignal, SIGNAL( contextMenuRequest( SUIT_PopupClient*, QContextMenuEvent* ) ),
35                               reciever, slot );
36 }
37
38 void SUIT_PopupClient::contextMenuRequest( QContextMenuEvent* e )
39 {
40   if ( mySignal )
41     mySignal->sendSignal( this, e );
42 }
43
44 /*
45   Class: SUIT_PopupClient::Signal [internal]
46   Descr: invoke signal which is connected to reciever in SUIT_PopupClient
47 */
48
49 SUIT_PopupClient::Signal::Signal()
50 : QObject( 0 )
51 {
52 }
53
54 SUIT_PopupClient::Signal::~Signal()
55 {}
56
57 void SUIT_PopupClient::Signal::sendSignal( SUIT_PopupClient* client, QContextMenuEvent* e )
58 {
59   emit contextMenuRequest( client, e );
60 }