ShortcutsPage::ShortcutsPage(QWidget *parent) : QWidget(parent), m_treeModel( NULL ), ui( new Ui::ShortcutsPage ) { ui->setupUi(this); m_treeModel = new QStandardItemModel(this); treeModelLoadShortcutsSetting(); ui->treeView->setModel(m_treeModel); ui->treeView->resizeColumnToContents(0); connect(ui->treeView, SIGNAL(clicked(const QModelIndex&)), this, SLOT(tableItemClicked(const QModelIndex&))); connect(ui->keySeqLineEdit, SIGNAL(keyCaptured(QKeySequence)), this, SLOT(keyCapLineEditTextChanged(QKeySequence))); connect(ui->restoreShortcutsButton, SIGNAL(clicked()), this, SLOT(restoreShortcutsButtonClicked())); connect(ui->clearButton, SIGNAL(clicked()), this, SLOT(clearButtonClicked())); }
void ShortcutsPage::keyCapLineEditTextChanged() { QKeySequence keySeqence = ui->keySequenceEdit->keySequence(); if (!m_currentItemIndex.isValid()) { return; } int row = m_currentItemIndex.row(); QStandardItem* actionItem = m_treeModel->item(row, ACT_NAME_COLUMN); QStandardItem* keyseqItem = m_treeModel->item(row, KEY_SEQ_COLUMN); QString strCmdName = QString("Cmd%1").arg( actionItem->text() ); QString strKeySeq = keySeqence.toString( QKeySequence::PortableText ); QSettings setting( PENCIL2D, PENCIL2D ); setting.beginGroup("shortcuts"); if (isKeySequenceExist(setting, strCmdName, keySeqence)) { QMessageBox msgBox; msgBox.setText( tr("Shortcut Conflict!")); msgBox.setInformativeText( tr("%1 is already used, overwrite?").arg(keySeqence.toString(QKeySequence::NativeText)) ); msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); msgBox.setDefaultButton(QMessageBox::No); msgBox.setIcon( QMessageBox::Warning ); int result = msgBox.exec(); if ( result != QMessageBox::Yes ) { ui->keySequenceEdit->setKeySequence( keyseqItem->text() ); return; } removeDuplicateKeySequence(&setting, keySeqence); } setting.setValue(strCmdName, strKeySeq); setting.endGroup(); setting.sync(); treeModelLoadShortcutsSetting(); qDebug() << "Shortcut " << strCmdName << " = " << strKeySeq; }
ShortcutsPage::ShortcutsPage( QWidget* parent ) : QWidget(parent), ui( new Ui::ShortcutsPage ) { ui->setupUi(this); m_treeModel = new QStandardItemModel(this); m_treeModel->setColumnCount(2); m_treeModel->setHorizontalHeaderLabels({ "Action", "Shortcut" }); treeModelLoadShortcutsSetting(); ui->treeView->setModel(m_treeModel); ui->treeView->resizeColumnToContents(0); connect( ui->treeView, &QTreeView::clicked, this, &ShortcutsPage::tableItemClicked ); connect( ui->keySequenceEdit, &QKeySequenceEdit::editingFinished, this, &ShortcutsPage::keyCapLineEditTextChanged ); connect( ui->restoreShortcutsButton, &QPushButton::clicked, this, &ShortcutsPage::restoreShortcutsButtonClicked ); connect( ui->clearButton, &QPushButton::clicked, this, &ShortcutsPage::clearButtonClicked ); }
void ShortcutsPage::restoreShortcutsButtonClicked() { restoreShortcutsToDefault(); treeModelLoadShortcutsSetting(); }