23 #include "cfgircnetworks.h" 
   24 #include "gui/configuration/irc/cfgircdefinenetworkdialog.h" 
   25 #include "irc/chatlogs.h" 
   26 #include "irc/configuration/chatnetworkscfg.h" 
   27 #include "irc/configuration/ircconfig.h" 
   28 #include "irc/entities/ircnetworkentity.h" 
   29 #include "qtmetapointer.h" 
   30 #include "ui_cfgircnetworks.h" 
   31 #include <QItemDelegate> 
   32 #include <QStandardItemModel> 
   34 DClass<CFGIRCNetworks> : 
public Ui::CFGIRCNetworks
 
   45         connect(d->btnAdd, SIGNAL(clicked()), 
this, SLOT(addButtonClicked()));
 
   46         connect(d->btnEdit, SIGNAL(clicked()), 
this, SLOT(editButtonClicked()));
 
   47         connect(d->btnRemove, SIGNAL(clicked()), 
this, SLOT(removeButtonClicked()));
 
   48         connect(d->gridNetworks, SIGNAL(doubleClicked(
const QModelIndex&)), SLOT(tableDoubleClicked()));
 
   51         d->gridNetworks->setModel(
new QStandardItemModel(
this));
 
   54 CFGIRCNetworks::~CFGIRCNetworks()
 
   59 void CFGIRCNetworks::addButtonClicked()
 
   62         dialog.setExistingNetworks(networksAsQList());
 
   63         if (dialog.exec() == QDialog::Accepted)
 
   66                 *pNetworkEntity = dialog.getNetworkEntity();
 
   68                 addRecord(pNetworkEntity);
 
   75         auto pModel = (QStandardItemModel *)d->gridNetworks->model();
 
   76         pModel->appendRow(generateTableRecord(pNetworkEntity));
 
   78         this->d->gridNetworks->resizeRowsToContents();
 
   80         if (this->d->gridNetworks->model()->rowCount() == 1)
 
   81                 this->d->gridNetworks->resizeColumnToContents(0);
 
   84 void CFGIRCNetworks::cleanUpTable()
 
   86         QVector<IRCNetworkEntity *> networksArray = networks();
 
   93 void CFGIRCNetworks::editButtonClicked()
 
   96         if (pNetwork != 
nullptr)
 
   99                 dialog.setExistingNetworks(networksAsQList());
 
  100                 if (dialog.exec() == QDialog::Accepted)
 
  105                                 *pNetwork = dialog.getNetworkEntity();
 
  106                                 this->updateRecord(this->selectedRow());
 
  113 QList<QStandardItem *> CFGIRCNetworks::generateTableRecord(
IRCNetworkEntity *pNetworkEntity)
 
  115         QList<QStandardItem *> itemArray;
 
  116         QStandardItem *pItem;
 
  119         pItem = 
new QStandardItem();
 
  120         pItem->setCheckable(
true);
 
  121         pItem->setCheckState(pNetworkEntity->
isAutojoinNetwork() ? Qt::Checked : Qt::Unchecked);
 
  122         pItem->setToolTip(
"Autojoin?");
 
  125         void *pointer = pNetworkEntity;
 
  127         QVariant variantPointer = QVariant::fromValue(metaPointer);
 
  128         pItem->setData(variantPointer);
 
  130         pItem = 
new QStandardItem(pNetworkEntity->
description());
 
  133         pItem = 
new QStandardItem(QString(
"%1:%2").arg(pNetworkEntity->
address())
 
  134                 .arg(pNetworkEntity->
port()));
 
  143         auto pModel = (QStandardItemModel *)d->gridNetworks->model();
 
  145         pNetwork->setAutojoinNetwork((pModel->item(row, 0)->checkState() == Qt::Checked));
 
  150 QVector<IRCNetworkEntity *> CFGIRCNetworks::networks()
 
  152         QVector<IRCNetworkEntity *> entityArray;
 
  154         auto pModel = (QStandardItemModel *)d->gridNetworks->model();
 
  155         for (
int i = 0; i < pModel->rowCount(); ++i)
 
  159                 entityArray << pEntity;
 
  165 QList<IRCNetworkEntity> CFGIRCNetworks::networksAsQList()
 const 
  167         QList<IRCNetworkEntity> result;
 
  168         for (
int row = 0; row < d->gridNetworks->model()->rowCount(); ++row)
 
  169                 result << *network(row);
 
  173 IRCNetworkEntity *CFGIRCNetworks::obtainNetworkEntity(QStandardItem *pItem)
 const 
  176         void *pointer = metaPointer;
 
  182 void CFGIRCNetworks::prepareTable()
 
  186         auto pModel = 
new QStandardItemModel(
this);
 
  189         labels << 
"" << tr(
"Description") << tr(
"Address");
 
  190         pModel->setHorizontalHeaderLabels(labels);
 
  192         d->gridNetworks->setModel(pModel);
 
  194         d->gridNetworks->setColumnWidth(1, 180);
 
  195         d->gridNetworks->setColumnWidth(2, 180);
 
  197         d->gridNetworks->horizontalHeader()->setHighlightSections(
false);
 
  198         d->gridNetworks->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Fixed);
 
  200         d->gridNetworks->verticalHeader()->hide();
 
  208         for (
const auto &cfgNetwork : cfgNetworks)
 
  217         d->leQuitMessage->setText(gIRCConfig.personal.quitMessage);
 
  220 void CFGIRCNetworks::removeButtonClicked()
 
  222         int row = this->selectedRow();
 
  226                 auto pModel = (QStandardItemModel *)d->gridNetworks->model();
 
  227                 pModel->removeRow(row);
 
  231 void CFGIRCNetworks::saveNetworks()
 
  240         gIRCConfig.personal.quitMessage = d->leQuitMessage->text().trimmed();
 
  245         QItemSelectionModel *pSelectionModel = d->gridNetworks->selectionModel();
 
  246         QModelIndexList indexList = pSelectionModel->selectedRows();
 
  248         if (!indexList.empty())
 
  250                 QModelIndex index = indexList[0];
 
  251                 return network(index.row());
 
  257 int CFGIRCNetworks::selectedRow()
 
  259         QItemSelectionModel *pSelectionModel = d->gridNetworks->selectionModel();
 
  260         QModelIndexList indexList = pSelectionModel->selectedRows();
 
  262         if (!indexList.empty())
 
  263                 return indexList[0].row();
 
  268 void CFGIRCNetworks::tableDoubleClicked()
 
  273 void CFGIRCNetworks::updateRecord(
int row)
 
  275         auto pModel = (QStandardItemModel *)d->gridNetworks->model();
 
  276         QStandardItem *pItemDescription = pModel->item(row, 1);
 
  280         pItemDescription->setText(pNetwork->
description());
 
  282         QStandardItem *pItemAddress = pModel->item(row, 2);
 
  283         pItemAddress->setText(QString(
"%1:%2").arg(pNetwork->
address()).arg(pNetwork->
port()));
 
  285         this->d->gridNetworks->resizeRowsToContents();