ATLAS Offline Software
Loading...
Searching...
No Matches
VP1IncomingMessageDialog.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
6// //
7// Implementation of class VP1IncomingMessageDialog //
8// //
9// Author: Thomas Kittelmann <Thomas.Kittelmann@cern.ch> //
10// //
11// Initial version: April 2007 //
12// //
14
15#include "ui_vp1incomingmessagedialog.h"
19
20#include <QList>
21#include <QMessageBox>
22
23#include <cassert>
24
25//____________________________________________________________________
49
50//____________________________________________________________________
52 QQueue<VP1ExternalRequest>* rq,
53 bool *blockallmessages,
54 QList<QString>* messages_blockedsenders,
55 QList<VP1ExternalRequest>* messages_blockedexactmessages,
56 VP1TabManager* tm,
58 QWidget *parent)
59 : QDialog(parent), m_d(new Imp(r))
60{
61 m_d->tabmanager= tm;
62 m_d->channelmanager= cm;
63 m_d->requestqueue = rq;
64 m_d->blockallmessages=blockallmessages;
65 m_d->messages_blockedsenders=messages_blockedsenders;
66 m_d->messages_blockedexactmessages=messages_blockedexactmessages;
67 Ui::VP1IncomingMessageForm ui;
68 ui.setupUi(this);
69
70 m_d->pushButton_allclear = ui.pushButton_allclear;
71 m_d->pushButton_senderclear = ui.pushButton_senderclear;
72 m_d->pushButton_messageclear = ui.pushButton_messageclear;
73
74 m_d->lcdNumber_pending = ui.lcdNumber_pending;
75 m_d->lcdNumber_pendingsender = ui.lcdNumber_pendingsender;
76 m_d->lcdNumber_pendingexactsame = ui.lcdNumber_pendingexactsame;
78
79 connect(ui.pushButton_allclear,SIGNAL(clicked()),this,SLOT(request_allclear()));
80 connect(ui.pushButton_allblock,SIGNAL(clicked()),this,SLOT(request_allblock()));
81 connect(ui.pushButton_senderclear,SIGNAL(clicked()),this,SLOT(request_senderclear()));
82 connect(ui.pushButton_senderblock,SIGNAL(clicked()),this,SLOT(request_senderblock()));
83 connect(ui.pushButton_messageblock,SIGNAL(clicked()),this,SLOT(request_messageblock()));
84 connect(ui.pushButton_messageclear,SIGNAL(clicked()),this,SLOT(request_messageclear()));
85
86 connect(ui.pushButton_showtab_gothere,SIGNAL(clicked()),this,SLOT(request_gothere()));
87
88 ui.textBrowser_message->setText(m_d->request.message());
89 ui.label_header->setText(ui.label_header->text().replace("SENDERPLACEHOLDER",m_d->request.sender()));
90 if (m_d->request.action()==VP1ExternalRequest::SHOWMESSAGE) {
91 ui.widget_showtab->hide();
92 } else if (m_d->request.action()==VP1ExternalRequest::SHOWTAB) {
93 ui.label_showtab->setText(ui.label_showtab->text().replace("DUMMYTABNAME",m_d->request.actioninfo()));
94 if (m_d->tabmanager->hasTab(m_d->request.actioninfo())) {
95 ui.label_showtaberror->hide();
96 } else {
97 ui.pushButton_showtab_gothere->hide();
98 }
99 } else if (m_d->request.action()==VP1ExternalRequest::SHOWCHANNEL) {
100 ui.label_showtab->setText(ui.label_showtab->text().replace("tab","channel"));
101 ui.label_showtab->setText(ui.label_showtab->text().replace("DUMMYTABNAME",m_d->request.actioninfo()));
102
103 if (m_d->channelmanager->channelWithBasenameIsLoaded(m_d->request.actioninfo())) {
104 ui.label_showtaberror->hide();
105 } else {
106 ui.label_showtaberror->setText(ui.label_showtaberror->text().replace("tab","channel"));
107 ui.pushButton_showtab_gothere->hide();
108 }
109
110 } else {
111 assert(0&&"This should never happen unless you did not hardcode all action types!");
112 }
113}
114
115//____________________________________________________________________
120
121//____________________________________________________________________
123{
124 if (m_d->request.action()==VP1ExternalRequest::SHOWTAB) {
125 m_d->tabmanager->showTab(m_d->request.actioninfo());
126 } else if (m_d->request.action()==VP1ExternalRequest::SHOWCHANNEL) {
127 m_d->tabmanager->showFirstChannelWithGivenBasename(m_d->request.actioninfo());
128 }
129}
130
131//____________________________________________________________________
133{
134 m_d->lcdNumber_pending->display(m_d->requestqueue->count());
135 int nsender(0);
136 for (const VP1ExternalRequest& er : *(m_d->requestqueue)) {
137 if (er.sender()==m_d->request.sender())
138 ++nsender;
139 }
140 m_d->lcdNumber_pendingsender->display(nsender);
141 int nequal(0);
142 for (const VP1ExternalRequest& er : *(m_d->requestqueue)) {
143 if (m_d->request==er)
144 ++nequal;
145 }
146 m_d->lcdNumber_pendingexactsame->display(nequal);
147
148
149 m_d->pushButton_allclear->setEnabled(m_d->requestqueue->count()>0);
150 m_d->pushButton_senderclear->setEnabled(nsender>0);
151 m_d->pushButton_messageclear->setEnabled(nequal>0);
152}
153
154//____________________________________________________________________
156{
157 m_d->requestqueue->clear();
159}
160
161//____________________________________________________________________
163{
164 int ret = QMessageBox::question(this, "VP1 - Block all incoming messages?",
165 "This will block all incoming messages to the application.\nProceed?",
166 QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Cancel );
167 if (ret!=QMessageBox::Ok)
168 return;
169 *(m_d->blockallmessages)=true;
171}
172
173//____________________________________________________________________
175{
176 QList<VP1ExternalRequest> tmp;
177 for (const VP1ExternalRequest& er : *(m_d->requestqueue)) {
178 if (!tmp.contains(er)&&er.sender()==m_d->request.sender())
179 tmp<<er;
180 }
181 for (const VP1ExternalRequest& er : tmp) {
182 m_d->requestqueue->removeAll (er);
183 }
185}
186
187//____________________________________________________________________
189{
190 *(m_d->messages_blockedsenders)<<m_d->request.sender();
192}
193
194//____________________________________________________________________
196{
197 QList<VP1ExternalRequest> tmp;
198 for (const VP1ExternalRequest& er : *(m_d->requestqueue)) {
199 if (!tmp.contains(er)&&er==m_d->request)
200 tmp<<er;
201 }
202 for (const VP1ExternalRequest& er : tmp) {
203 m_d->requestqueue->removeAll(er);
204 }
206}
207
208//____________________________________________________________________
210{
211 *(m_d->messages_blockedexactmessages)<<m_d->request;
213}
QList< VP1ExternalRequest > * messages_blockedexactmessages
QQueue< VP1ExternalRequest > * requestqueue
VP1IncomingMessageDialog(const VP1ExternalRequest &, QQueue< VP1ExternalRequest > *, bool *blockallmessages, QList< QString > *messages_blockedsenders, QList< VP1ExternalRequest > *_messages_blockedexactmessages, VP1TabManager *, VP1ChannelManager *, QWidget *parent=0)
int r
Definition globals.cxx:22