23 #include "gui/commongui.h"
24 #include "gui/irc/ircdocktabcontents.h"
25 #include "gui/irc/ircnetworkselectionbox.h"
26 #include "gui/irc/ircsounds.h"
27 #include "irc/configuration/chatnetworkscfg.h"
28 #include "irc/configuration/ircconfig.h"
29 #include "irc/ircnetworkadapter.h"
31 #include "ui_ircdock.h"
33 #include <QInputDialog>
34 #include <QMessageBox>
38 DClass<IRCDock> :
public Ui::IRCDock
42 QAction *toolBarConnect;
43 QAction *toolBarOpenChatWindow;
52 toggleViewAction()->setIcon(QIcon(
":/icons/chat.png"));
54 d->pSounds.loadFromConfig();
58 connect(d->tabWidget, SIGNAL(currentChanged(
int)),
59 SLOT(tabCurrentChanged(
int)));
61 connect(d->tabWidget, SIGNAL(tabCloseRequested(
int)),
62 SLOT(tabCloseRequestedSlot(
int)));
76 connect(pNewAdapterWidget, SIGNAL(newMessagePrinted()),
77 SLOT(titleChangeWithColorOfSenderIfNotFocused()));
78 connect(pNewAdapterWidget, SIGNAL(titleBlinkRequested()),
79 SLOT(titleChangeWithColorOfSenderIfNotFocused()));
81 pNewAdapterWidget->setIRCAdapter(pIRCAdapter);
82 d->tabWidget->addTab(pNewAdapterWidget, pNewAdapterWidget->icon(), pNewAdapterWidget->title());
83 this->titleChange(pNewAdapterWidget);
85 return pNewAdapterWidget;
90 for (
int i = 0; i < d->tabWidget->count(); ++i)
93 pWidget->applyAppearanceSettings();
99 int tabIndex = d->tabWidget->indexOf(pCaller);
101 tabCloseRequestedSlot(tabIndex);
115 pIRCNetworkAdapter->connect();
118 tabFocusRequest(pTab);
123 return this->d->tabWidget->currentWidget() == pTab;
129 if (pWidget ==
nullptr)
132 return pWidget->ircAdapter()->network();
135 void IRCDock::performNetworkAutojoins()
138 connectionInfo.
alternateNick = gIRCConfig.personal.alternativeNickname;
139 connectionInfo.
nick = gIRCConfig.personal.nickname;
140 connectionInfo.
realName = gIRCConfig.personal.fullName;
141 connectionInfo.
userName = gIRCConfig.personal.userName;
143 QList<IRCNetworkEntity> autojoinNetworks =
ChatNetworksCfg().autoJoinNetworks();
148 connectToNewNetwork(connectionInfo.
autoFilled(),
false);
154 if (pMessageSender !=
nullptr)
157 if (pTargetNetwork != pMessageSender)
158 return QString(
"%1: %2").arg(pMessageSender->
title(), message);
164 void IRCDock::setupToolbar()
166 auto pToolBar =
new QToolBar(
this);
167 pToolBar->setMovable(
false);
168 pToolBar->setOrientation(Qt::Vertical);
170 d->toolBarConnect =
new QAction(QIcon(
":/icons/network-connect-3.png"), tr(
"Connect"), pToolBar);
171 d->toolBarOpenChatWindow =
new QAction(QIcon(
":/icons/irc_channel.png"), tr(
"Open chat window"), pToolBar);
173 pToolBar->addAction(d->toolBarConnect);
174 pToolBar->addAction(d->toolBarOpenChatWindow);
176 d->toolBarLayout->addWidget(pToolBar);
177 connect(pToolBar, SIGNAL(actionTriggered(QAction*)),
this, SLOT(toolBarAction(QAction*)));
185 void IRCDock::tabCloseRequestedSlot(
int index)
187 QWidget *pPageWidget = d->tabWidget->widget(index);
188 d->tabWidget->removeTab(index);
193 void IRCDock::tabCurrentChanged(
int index)
197 d->tabWidget->tabBarPublic()->setTabTextColor(index,
"");
205 d->tabWidget->setCurrentWidget(pCaller);
210 if (d->tabWidget->currentWidget() !=
nullptr)
211 return static_cast<IRCDockTabContents *>(d->tabWidget->currentWidget());
217 int tabIndex = d->tabWidget->indexOf(caller);
219 d->tabWidget->setTabText(tabIndex, caller->title());
222 void IRCDock::titleChangeWithColorOfSenderIfNotFocused()
225 int tabIndex = d->tabWidget->indexOf(caller);
228 d->tabWidget->setTabText(tabIndex, caller->title());
229 d->tabWidget->tabBarPublic()->setTabTextColor(tabIndex, caller->titleColor());
233 void IRCDock::toolBarAction(QAction *pAction)
235 if (pAction == d->toolBarConnect)
238 if (networkSelection.exec() == QDialog::Accepted)
244 gIRCConfig.personal.alternativeNickname = connectionInfo.
alternateNick;
245 gIRCConfig.personal.nickname = connectionInfo.
nick;
246 gIRCConfig.personal.fullName = connectionInfo.
realName;
247 gIRCConfig.personal.userName = connectionInfo.
userName;
249 connectToNewNetwork(connectionInfo.
autoFilled(),
true);
252 else if (pAction == d->toolBarOpenChatWindow)
255 if (pNetwork ==
nullptr)
256 QMessageBox::warning(
nullptr, tr(
"Doomseeker IRC - Open chat window"), tr(
"Cannot obtain network connection adapter."));
257 else if (!pNetwork->isConnected())
258 QMessageBox::warning(
nullptr, tr(
"Doomseeker IRC - Open chat window"), tr(
"You are not connected to this network."));
261 QString recipientName =
CommonGUI::getText(
nullptr, tr(
"Open chat window"), tr(
"Specify a channel or user name:"));
262 if (!recipientName.isEmpty())