_listFinished(true),
_ircListModel(this),
_sortFilter(this),
- _simpleModeSpacer(0),
+ _simpleModeSpacer(nullptr),
_advancedMode(false)
{
_sortFilter.setSourceModel(&_ircListModel);
ui.channelListView->setTabKeyNavigation(false);
ui.channelListView->setModel(&_sortFilter);
ui.channelListView->setSortingEnabled(true);
+ // Sort A-Z by default
+ ui.channelListView->sortByColumn(0, Qt::AscendingOrder);
ui.channelListView->verticalHeader()->hide();
ui.channelListView->horizontalHeader()->setStretchLastSection(true);
enableQuery(true);
showFilterLine(false);
showErrors(false);
+
+ // Set initial input focus
+ updateInputFocus();
}
void ChannelListDlg::requestSearch()
{
+ if (!_netId.isValid()) {
+ // No valid network set yet
+ return;
+ }
+
_listFinished = false;
enableQuery(false);
showErrors(false);
showFilterLine(!channelList.isEmpty());
_ircListModel.setChannelList(channelList);
enableQuery(_listFinished);
+ // Reset input focus since UI changed
+ updateInputFocus();
}
if (_simpleModeSpacer) {
ui.searchLayout->removeItem(_simpleModeSpacer);
delete _simpleModeSpacer;
- _simpleModeSpacer = 0;
+ _simpleModeSpacer = nullptr;
}
ui.advancedModeLabel->setPixmap(icon::get("edit-clear-locationbar-rtl").pixmap(16));
}
}
+void ChannelListDlg::updateInputFocus()
+{
+ // Update keyboard focus to match what options are available. Prioritize the channel name
+ // editor as one likely won't need to filter when already limiting the list.
+ if (ui.channelNameLineEdit->isVisible()) {
+ ui.channelNameLineEdit->setFocus();
+ } else if (ui.filterLineEdit->isVisible()) {
+ ui.filterLineEdit->setFocus();
+ }
+}
+
+
void ChannelListDlg::showErrors(bool show)
{
if (!show) {