File indexing completed on 2024-05-05 05:56:58
0001 /* 0002 SPDX-FileCopyrightText: 2008-2009 Eike Hein <hein@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #include "firstrundialog.h" 0008 #include "mainwindow.h" 0009 #include "ui_firstrundialog.h" 0010 0011 #include <KActionCollection> 0012 #include <KGlobalAccel> 0013 #include <KLocalizedString> 0014 #include <QDialogButtonBox> 0015 #include <QPushButton> 0016 0017 FirstRunDialog::FirstRunDialog(MainWindow *mainWindow) 0018 : QDialog(mainWindow) 0019 { 0020 m_mainWindow = mainWindow; 0021 0022 setWindowTitle(xi18nc("@title:window", "First Run")); 0023 QVBoxLayout *mainLayout = new QVBoxLayout; 0024 setLayout(mainLayout); 0025 QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); 0026 QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok); 0027 okButton->setDefault(true); 0028 okButton->setShortcut(Qt::CTRL | Qt::Key_Return); 0029 connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); 0030 connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); 0031 0032 QWidget *widget = new QWidget(this); 0033 mainLayout->addWidget(widget); 0034 mainLayout->addWidget(buttonBox); 0035 0036 m_ui = new Ui::FirstRunDialog(); 0037 m_ui->setupUi(widget); 0038 m_ui->titleWidget->setIcon(QIcon::fromTheme(QStringLiteral("yakuake"))); 0039 0040 widget->setMinimumSize(widget->sizeHint()); 0041 0042 initKeyButton(); 0043 0044 connect(m_ui->keyButton, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(validateKeySequence(QKeySequence))); 0045 } 0046 0047 FirstRunDialog::~FirstRunDialog() 0048 { 0049 delete m_ui; 0050 } 0051 0052 void FirstRunDialog::initKeyButton() 0053 { 0054 m_ui->keyButton->setMultiKeyShortcutsAllowed(false); 0055 0056 m_ui->keyButton->blockSignals(true); 0057 0058 QAction *action = static_cast<QAction *>(m_mainWindow->actionCollection()->action(QStringLiteral("toggle-window-state"))); 0059 0060 m_keySequence = KGlobalAccel::self()->shortcut(action).first(); 0061 0062 m_ui->keyButton->setKeySequence(m_keySequence); 0063 0064 m_ui->keyButton->blockSignals(false); 0065 } 0066 0067 void FirstRunDialog::validateKeySequence(const QKeySequence &keySequence) 0068 { 0069 if (!KGlobalAccel::isGlobalShortcutAvailable(keySequence)) { 0070 bool steal = KGlobalAccel::promptStealShortcutSystemwide(this, KGlobalAccel::globalShortcutsByKey(keySequence), keySequence); 0071 0072 if (!steal) 0073 initKeyButton(); 0074 else { 0075 KGlobalAccel::stealShortcutSystemwide(keySequence); 0076 m_keySequence = m_ui->keyButton->keySequence(); 0077 } 0078 } else 0079 m_keySequence = m_ui->keyButton->keySequence(); 0080 } 0081 0082 #include "moc_firstrundialog.cpp"