23 #include "gui/irc/ircdocktabcontents.h"
24 #include "gui/irc/ircnetworkselectionbox.h"
25 #include "gui/irc/ircsounds.h"
26 #include "irc/configuration/chatnetworkscfg.h"
27 #include "irc/configuration/ircconfig.h"
28 #include "irc/ircnetworkadapter.h"
30 #include "ui_ircdock.h"
32 #include <QInputDialog>
33 #include <QMessageBox>
37 DClass<IRCDock> :
public Ui::IRCDock
41 QAction *toolBarConnect;
42 QAction *toolBarOpenChatWindow;
51 toggleViewAction()->setIcon(QIcon(
":/icons/chat.png"));
53 d->pSounds.loadFromConfig();
57 connect(d->tabWidget, SIGNAL(currentChanged(
int)),
58 SLOT(tabCurrentChanged(
int)));
60 connect(d->tabWidget, SIGNAL(tabCloseRequested(
int)),
61 SLOT(tabCloseRequestedSlot(
int)));
75 connect(pNewAdapterWidget, SIGNAL(newMessagePrinted()),
76 SLOT(titleChangeWithColorOfSenderIfNotFocused()));
77 connect(pNewAdapterWidget, SIGNAL(titleBlinkRequested()),
78 SLOT(titleChangeWithColorOfSenderIfNotFocused()));
80 pNewAdapterWidget->setIRCAdapter(pIRCAdapter);
81 d->tabWidget->addTab(pNewAdapterWidget, pNewAdapterWidget->icon(), pNewAdapterWidget->title());
82 this->titleChange(pNewAdapterWidget);
84 return pNewAdapterWidget;
89 for (
int i = 0; i < d->tabWidget->count(); ++i)
92 pWidget->applyAppearanceSettings();
98 int tabIndex = d->tabWidget->indexOf(pCaller);
100 tabCloseRequestedSlot(tabIndex);
114 pIRCNetworkAdapter->connect();
117 tabFocusRequest(pTab);
122 return this->d->tabWidget->currentWidget() == pTab;
128 if (pWidget ==
nullptr)
131 return pWidget->ircAdapter()->network();
134 void IRCDock::performNetworkAutojoins()
137 connectionInfo.
alternateNick = gIRCConfig.personal.alternativeNickname;
138 connectionInfo.
nick = gIRCConfig.personal.nickname;
139 connectionInfo.
realName = gIRCConfig.personal.fullName;
140 connectionInfo.
userName = gIRCConfig.personal.userName;
142 QList<IRCNetworkEntity> autojoinNetworks =
ChatNetworksCfg().autoJoinNetworks();
147 connectToNewNetwork(connectionInfo.
autoFilled(),
false);
153 if (pMessageSender !=
nullptr)
156 if (pTargetNetwork != pMessageSender)
157 return QString(
"%1: %2").arg(pMessageSender->
title(), message);
163 void IRCDock::setupToolbar()
165 auto pToolBar =
new QToolBar(
this);
166 pToolBar->setMovable(
false);
167 pToolBar->setOrientation(Qt::Vertical);
169 d->toolBarConnect =
new QAction(QIcon(
":/icons/network-connect-3.png"), tr(
"Connect"), pToolBar);
170 d->toolBarOpenChatWindow =
new QAction(QIcon(
":/icons/irc_channel.png"), tr(
"Open chat window"), pToolBar);
172 pToolBar->addAction(d->toolBarConnect);
173 pToolBar->addAction(d->toolBarOpenChatWindow);
175 d->horizontalLayout->insertWidget(0, pToolBar);
176 connect(pToolBar, SIGNAL(actionTriggered(QAction*)),
this, SLOT(toolBarAction(QAction*)));
184 void IRCDock::tabCloseRequestedSlot(
int index)
186 QWidget *pPageWidget = d->tabWidget->widget(index);
187 d->tabWidget->removeTab(index);
192 void IRCDock::tabCurrentChanged(
int index)
196 d->tabWidget->tabBarPublic()->setTabTextColor(index,
"");
204 d->tabWidget->setCurrentWidget(pCaller);
209 if (d->tabWidget->currentWidget() !=
nullptr)
210 return static_cast<IRCDockTabContents *>(d->tabWidget->currentWidget());
216 int tabIndex = d->tabWidget->indexOf(caller);
218 d->tabWidget->setTabText(tabIndex, caller->title());
221 void IRCDock::titleChangeWithColorOfSenderIfNotFocused()
224 int tabIndex = d->tabWidget->indexOf(caller);
227 d->tabWidget->setTabText(tabIndex, caller->title());
228 d->tabWidget->tabBarPublic()->setTabTextColor(tabIndex, caller->titleColor());
232 void IRCDock::toolBarAction(QAction *pAction)
234 if (pAction == d->toolBarConnect)
237 if (networkSelection.exec() == QDialog::Accepted)
243 gIRCConfig.personal.alternativeNickname = connectionInfo.
alternateNick;
244 gIRCConfig.personal.nickname = connectionInfo.
nick;
245 gIRCConfig.personal.fullName = connectionInfo.
realName;
246 gIRCConfig.personal.userName = connectionInfo.
userName;
248 connectToNewNetwork(connectionInfo.
autoFilled(),
true);
251 else if (pAction == d->toolBarOpenChatWindow)
254 if (pNetwork ==
nullptr)
255 QMessageBox::warning(
nullptr, tr(
"Doomseeker IRC - Open chat window"), tr(
"Cannot obtain network connection adapter."));
256 else if (!pNetwork->isConnected())
257 QMessageBox::warning(
nullptr, tr(
"Doomseeker IRC - Open chat window"), tr(
"You are not connected to this network."));
260 QString recipientName = QInputDialog::getText(
nullptr, tr(
"Open chat window"), tr(
"Specify a channel or user name:"));
261 if (!recipientName.isEmpty())