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())