We now pre-select a currently selected channel if it's not joined. This way, pressing
the Join toolbutton while a non-joined channel is selected provides a direct way
to join that channel.
if(!indexList().count())
return;
NetworkId networkId = indexList().at(0).data(NetworkModel::NetworkIdRole).value<NetworkId>();
if(!indexList().count())
return;
NetworkId networkId = indexList().at(0).data(NetworkModel::NetworkIdRole).value<NetworkId>();
- if(!networkId.isValid())
- return;
switch(type) {
case JoinChannel: {
QString channelName = contextItem();
if(channelName.isEmpty()) {
switch(type) {
case JoinChannel: {
QString channelName = contextItem();
if(channelName.isEmpty()) {
- JoinDlg dlg(networkId);
+ JoinDlg dlg(indexList().first());
if(dlg.exec() == QDialog::Accepted) {
channelName = dlg.channelName();
networkId = dlg.networkId();
if(dlg.exec() == QDialog::Accepted) {
channelName = dlg.channelName();
networkId = dlg.networkId();
break;
}
case ShowChannelList:
break;
}
case ShowChannelList:
- emit showChannelList(networkId);
+ if(networkId.isValid())
+ emit showChannelList(networkId);
break;
case ShowIgnoreList:
break;
case ShowIgnoreList:
- emit showIgnoreList(networkId);
+ if(networkId.isValid())
+ emit showIgnoreList(networkId);
* JoinDlg
***************************************************************************************************************/
* JoinDlg
***************************************************************************************************************/
-NetworkModelController::JoinDlg::JoinDlg(NetworkId defaultId, QWidget *parent) : QDialog(parent) {
+NetworkModelController::JoinDlg::JoinDlg(const QModelIndex &index, QWidget *parent) : QDialog(parent) {
setWindowIcon(SmallIcon("irc-join-channel"));
setWindowTitle(tr("Join Channel"));
setWindowIcon(SmallIcon("irc-join-channel"));
setWindowTitle(tr("Join Channel"));
connect(buttonBox, SIGNAL(rejected()), SLOT(reject()));
connect(channel, SIGNAL(textChanged(QString)), SLOT(on_channel_textChanged(QString)));
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));
foreach(NetworkId id, Client::networkIds()) {
const Network *net = Client::network(id);
if(net->isConnected()) {
networks->addItem(net->networkName(), QVariant::fromValue<NetworkId>(id));
- if(id == defaultId)
- defaultName = net->networkName();
- if(!defaultName.isEmpty())
- networks->setCurrentIndex(networks->findText(defaultName));
-
+ 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 {
}
NetworkId NetworkModelController::JoinDlg::networkId() const {
- JoinDlg(NetworkId id, QWidget *parent = 0);
+ JoinDlg(const QModelIndex &index, QWidget *parent = 0);
QString channelName() const;
NetworkId networkId() const;
QString channelName() const;
NetworkId networkId() const;