X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fshortcutssettingspage.cpp;h=40fd8df4640c8fc4bea9659a05112b9f759dbaaa;hp=2317a7b6e6fcb0a2bdef750dbfcce9f95d5cedb3;hb=24acf1efa9e91c58d9e64d76e03e7683ac0ac889;hpb=f8275c3b697f1ee43d93bb4e5e688e87ca0405ce diff --git a/src/qtui/settingspages/shortcutssettingspage.cpp b/src/qtui/settingspages/shortcutssettingspage.cpp index 2317a7b6..40fd8df4 100644 --- a/src/qtui/settingspages/shortcutssettingspage.cpp +++ b/src/qtui/settingspages/shortcutssettingspage.cpp @@ -1,6 +1,5 @@ - /*************************************************************************** - * Copyright (C) 2010 by the Quassel Project * + * Copyright (C) 2005-2013 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -16,7 +15,7 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include @@ -29,126 +28,149 @@ #include "shortcutsmodel.h" #include "util.h" -ShortcutsFilter::ShortcutsFilter(QObject *parent) : QSortFilterProxyModel(parent) { - setDynamicSortFilter(true); +ShortcutsFilter::ShortcutsFilter(QObject *parent) : QSortFilterProxyModel(parent) +{ + setDynamicSortFilter(true); } -void ShortcutsFilter::setFilterString(const QString &filterString) { - _filterString = filterString; - invalidateFilter(); + +void ShortcutsFilter::setFilterString(const QString &filterString) +{ + _filterString = filterString; + invalidateFilter(); } -bool ShortcutsFilter::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const { - if(!source_parent.isValid()) - return true; - QModelIndex index = source_parent.model()->index(source_row, 0, source_parent); - Q_ASSERT(index.isValid()); - if(!qobject_cast(index.data(ShortcutsModel::ActionRole).value())->isShortcutConfigurable()) - return false; +bool ShortcutsFilter::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const +{ + if (!source_parent.isValid()) + return true; + + QModelIndex index = source_parent.model()->index(source_row, 0, source_parent); + Q_ASSERT(index.isValid()); + if (!qobject_cast(index.data(ShortcutsModel::ActionRole).value())->isShortcutConfigurable()) + return false; - for(int col = 0; col < source_parent.model()->columnCount(source_parent); col++) { - if(source_parent.model()->index(source_row, col, source_parent).data().toString().contains(_filterString, Qt::CaseInsensitive)) - return true; - } - return false; + for (int col = 0; col < source_parent.model()->columnCount(source_parent); col++) { + if (source_parent.model()->index(source_row, col, source_parent).data().toString().contains(_filterString, Qt::CaseInsensitive)) + return true; + } + return false; } + /****************************************************************************/ ShortcutsSettingsPage::ShortcutsSettingsPage(const QHash &actionCollections, QWidget *parent) - : SettingsPage(tr("Interface"), tr("Shortcuts"), parent), - _shortcutsModel(new ShortcutsModel(actionCollections, this)), - _shortcutsFilter(new ShortcutsFilter(this)) + : SettingsPage(tr("Interface"), tr("Shortcuts"), parent), + _shortcutsModel(new ShortcutsModel(actionCollections, this)), + _shortcutsFilter(new ShortcutsFilter(this)) { - ui.setupUi(this); + ui.setupUi(this); - _shortcutsFilter->setSourceModel(_shortcutsModel); - ui.shortcutsView->setModel(_shortcutsFilter); - ui.shortcutsView->expandAll(); - ui.shortcutsView->resizeColumnToContents(0); - ui.shortcutsView->sortByColumn(0, Qt::AscendingOrder); + _shortcutsFilter->setSourceModel(_shortcutsModel); + ui.shortcutsView->setModel(_shortcutsFilter); + ui.shortcutsView->expandAll(); + ui.shortcutsView->resizeColumnToContents(0); + ui.shortcutsView->sortByColumn(0, Qt::AscendingOrder); - ui.keySequenceWidget->setModel(_shortcutsModel); - connect(ui.keySequenceWidget, SIGNAL(keySequenceChanged(QKeySequence,QModelIndex)), SLOT(keySequenceChanged(QKeySequence,QModelIndex))); + ui.keySequenceWidget->setModel(_shortcutsModel); + connect(ui.keySequenceWidget, SIGNAL(keySequenceChanged(QKeySequence, QModelIndex)), SLOT(keySequenceChanged(QKeySequence, QModelIndex))); - connect(ui.shortcutsView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), SLOT(setWidgetStates())); + connect(ui.shortcutsView->selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)), SLOT(setWidgetStates())); - setWidgetStates(); + setWidgetStates(); - connect(ui.useDefault, SIGNAL(clicked(bool)), SLOT(toggledCustomOrDefault())); - connect(ui.useCustom, SIGNAL(clicked(bool)), SLOT(toggledCustomOrDefault())); + connect(ui.useDefault, SIGNAL(clicked(bool)), SLOT(toggledCustomOrDefault())); + connect(ui.useCustom, SIGNAL(clicked(bool)), SLOT(toggledCustomOrDefault())); - connect(_shortcutsModel, SIGNAL(hasChanged(bool)), SLOT(setChangedState(bool))); + connect(_shortcutsModel, SIGNAL(hasChanged(bool)), SLOT(setChangedState(bool))); - // fugly, but directly setting it from the ctor doesn't seem to work - QTimer::singleShot(0, ui.searchEdit, SLOT(setFocus())); + // fugly, but directly setting it from the ctor doesn't seem to work + QTimer::singleShot(0, ui.searchEdit, SLOT(setFocus())); } -void ShortcutsSettingsPage::setWidgetStates() { - if(ui.shortcutsView->currentIndex().isValid() && ui.shortcutsView->currentIndex().parent().isValid()) { - QKeySequence active = ui.shortcutsView->currentIndex().data(ShortcutsModel::ActiveShortcutRole).value(); - QKeySequence def = ui.shortcutsView->currentIndex().data(ShortcutsModel::DefaultShortcutRole).value(); - ui.defaultShortcut->setText(def.isEmpty()? tr("None") : def.toString()); - ui.actionBox->setEnabled(true); - if(active == def) { - ui.useDefault->setChecked(true); - ui.keySequenceWidget->setKeySequence(QKeySequence()); - } else { - ui.useCustom->setChecked(true); - ui.keySequenceWidget->setKeySequence(active); + +void ShortcutsSettingsPage::setWidgetStates() +{ + if (ui.shortcutsView->currentIndex().isValid() && ui.shortcutsView->currentIndex().parent().isValid()) { + QKeySequence active = ui.shortcutsView->currentIndex().data(ShortcutsModel::ActiveShortcutRole).value(); + QKeySequence def = ui.shortcutsView->currentIndex().data(ShortcutsModel::DefaultShortcutRole).value(); + ui.defaultShortcut->setText(def.isEmpty() ? tr("None") : def.toString(QKeySequence::NativeText)); + ui.actionBox->setEnabled(true); + if (active == def) { + ui.useDefault->setChecked(true); + ui.keySequenceWidget->setKeySequence(QKeySequence()); + } + else { + ui.useCustom->setChecked(true); + ui.keySequenceWidget->setKeySequence(active); + } + } + else { + ui.defaultShortcut->setText(tr("None")); + ui.actionBox->setEnabled(false); + ui.useDefault->setChecked(true); + ui.keySequenceWidget->setKeySequence(QKeySequence()); } - } else { - ui.defaultShortcut->setText(tr("None")); - ui.actionBox->setEnabled(false); - ui.useDefault->setChecked(true); - ui.keySequenceWidget->setKeySequence(QKeySequence()); - } } -void ShortcutsSettingsPage::on_searchEdit_textChanged(const QString &text) { - _shortcutsFilter->setFilterString(text); + +void ShortcutsSettingsPage::on_searchEdit_textChanged(const QString &text) +{ + _shortcutsFilter->setFilterString(text); } -void ShortcutsSettingsPage::keySequenceChanged(const QKeySequence &seq, const QModelIndex &conflicting) { - if(conflicting.isValid()) - _shortcutsModel->setData(conflicting, QKeySequence(), ShortcutsModel::ActiveShortcutRole); - QModelIndex rowIdx = _shortcutsFilter->mapToSource(ui.shortcutsView->currentIndex()); - Q_ASSERT(rowIdx.isValid()); - _shortcutsModel->setData(rowIdx, seq, ShortcutsModel::ActiveShortcutRole); - setWidgetStates(); +void ShortcutsSettingsPage::keySequenceChanged(const QKeySequence &seq, const QModelIndex &conflicting) +{ + if (conflicting.isValid()) + _shortcutsModel->setData(conflicting, QKeySequence(), ShortcutsModel::ActiveShortcutRole); + + QModelIndex rowIdx = _shortcutsFilter->mapToSource(ui.shortcutsView->currentIndex()); + Q_ASSERT(rowIdx.isValid()); + _shortcutsModel->setData(rowIdx, seq, ShortcutsModel::ActiveShortcutRole); + setWidgetStates(); } -void ShortcutsSettingsPage::toggledCustomOrDefault() { - if(!ui.shortcutsView->currentIndex().isValid()) - return; - QModelIndex index = _shortcutsFilter->mapToSource(ui.shortcutsView->currentIndex()); - Q_ASSERT(index.isValid()); +void ShortcutsSettingsPage::toggledCustomOrDefault() +{ + if (!ui.shortcutsView->currentIndex().isValid()) + return; - if(ui.useDefault->isChecked()) { - _shortcutsModel->setData(index, index.data(ShortcutsModel::DefaultShortcutRole)); - } else { - _shortcutsModel->setData(index, QKeySequence()); - } - setWidgetStates(); + QModelIndex index = _shortcutsFilter->mapToSource(ui.shortcutsView->currentIndex()); + Q_ASSERT(index.isValid()); + + if (ui.useDefault->isChecked()) { + _shortcutsModel->setData(index, index.data(ShortcutsModel::DefaultShortcutRole)); + } + else { + _shortcutsModel->setData(index, QKeySequence()); + } + setWidgetStates(); } -void ShortcutsSettingsPage::save() { - _shortcutsModel->commit(); - QtUi::saveShortcuts(); - SettingsPage::save(); + +void ShortcutsSettingsPage::save() +{ + _shortcutsModel->commit(); + QtUi::saveShortcuts(); + SettingsPage::save(); } -void ShortcutsSettingsPage::load() { - _shortcutsModel->load(); - SettingsPage::load(); +void ShortcutsSettingsPage::load() +{ + _shortcutsModel->load(); + + SettingsPage::load(); } -void ShortcutsSettingsPage::defaults() { - _shortcutsModel->defaults(); - SettingsPage::defaults(); +void ShortcutsSettingsPage::defaults() +{ + _shortcutsModel->defaults(); + + SettingsPage::defaults(); }