+
+/***************************************************************************************************************
+ * JoinDlg
+ ***************************************************************************************************************/
+
+NetworkModelController::JoinDlg::JoinDlg(const QModelIndex &index, QWidget *parent) : QDialog(parent) {
+ setWindowIcon(SmallIcon("irc-join-channel"));
+ setWindowTitle(tr("Join Channel"));
+
+ QGridLayout *layout = new QGridLayout(this);
+ layout->addWidget(new QLabel(tr("Network:")), 0, 0);
+ layout->addWidget(networks = new QComboBox, 0, 1);
+ layout->addWidget(new QLabel(tr("Channel:")), 1, 0);
+ layout->addWidget(channel = new QLineEdit, 1, 1);
+ layout->addWidget(buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel), 2, 0, 1, 2);
+ setLayout(layout);
+
+ channel->setFocus();
+ buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+ networks->setInsertPolicy(QComboBox::InsertAlphabetically);
+
+ connect(buttonBox, SIGNAL(accepted()), SLOT(accept()));
+ connect(buttonBox, SIGNAL(rejected()), SLOT(reject()));
+ connect(channel, SIGNAL(textChanged(QString)), SLOT(on_channel_textChanged(QString)));
+
+ foreach(NetworkId id, Client::networkIds()) {
+ const Network *net = Client::network(id);
+ if(net->isConnected()) {
+ networks->addItem(net->networkName(), QVariant::fromValue<NetworkId>(id));
+ }
+ }
+
+ if(index.isValid()) {
+ NetworkId networkId = index.data(NetworkModel::NetworkIdRole).value<NetworkId>();
+ if(networkId.isValid()) {
+ networks->setCurrentIndex(networks->findText(Client::network(networkId)->networkName()));
+ if(index.data(NetworkModel::BufferTypeRole) == BufferInfo::ChannelBuffer
+ && !index.data(NetworkModel::ItemActiveRole).toBool())
+ channel->setText(index.data(Qt::DisplayRole).toString());
+ }
+ }
+}
+
+NetworkId NetworkModelController::JoinDlg::networkId() const {
+ return networks->itemData(networks->currentIndex()).value<NetworkId>();
+}
+
+QString NetworkModelController::JoinDlg::channelName() const {
+ return channel->text();
+}
+
+void NetworkModelController::JoinDlg::on_channel_textChanged(const QString &text) {
+ buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!text.isEmpty());
+}