File setshortcutwidget.cpp#
File List > config > setshortcutwidget.cpp
Go to the documentation of this file.
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2020 Yurii Puchkov at Namecheap & Contributors
#include "setshortcutwidget.h"
#include "src/utils/globalvalues.h"
#include <QIcon>
#include <QKeyEvent>
#include <QLabel>
#include <QLayout>
#include <QPixmap>
SetShortcutDialog::SetShortcutDialog(QDialog* parent,
const QString& shortcutName)
: QDialog(parent)
{
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
setWindowIcon(QIcon(GlobalValues::iconPath()));
setWindowTitle(tr("Set Shortcut"));
m_ks = QKeySequence();
m_layout = new QVBoxLayout(this);
m_layout->setAlignment(Qt::AlignHCenter);
auto* infoTop = new QLabel(tr("Enter new shortcut to change "));
infoTop->setMargin(10);
infoTop->setAlignment(Qt::AlignCenter);
m_layout->addWidget(infoTop);
auto* infoIcon = new QLabel();
infoIcon->setAlignment(Qt::AlignCenter);
infoIcon->setPixmap(QPixmap(":/img/app/keyboard.svg"));
m_layout->addWidget(infoIcon);
m_layout->addWidget(infoIcon);
QString msg = "";
#if defined(Q_OS_MAC)
msg = tr(
"Press Esc to cancel or ⌘+Backspace to disable the keyboard shortcut.");
#else
msg =
tr("Press Esc to cancel or Backspace to disable the keyboard shortcut.");
#endif
if (shortcutName == "TAKE_SCREENSHOT" ||
shortcutName == "SCREENSHOT_HISTORY") {
msg +=
"\n" + tr("Flameshot must be restarted for changes to take effect.");
}
auto* infoBottom = new QLabel(msg);
infoBottom->setMargin(10);
infoBottom->setAlignment(Qt::AlignCenter);
m_layout->addWidget(infoBottom);
}
const QKeySequence& SetShortcutDialog::shortcut()
{
return m_ks;
}
void SetShortcutDialog::keyPressEvent(QKeyEvent* ke)
{
if (ke->modifiers() & Qt::ShiftModifier) {
m_modifier += "Shift+";
}
if (ke->modifiers() & Qt::ControlModifier) {
m_modifier += "Ctrl+";
}
if (ke->modifiers() & Qt::AltModifier) {
m_modifier += "Alt+";
}
if (ke->modifiers() & Qt::MetaModifier) {
m_modifier += "Meta+";
}
QString key = QKeySequence(ke->key()).toString();
m_ks = QKeySequence(m_modifier + key);
}
void SetShortcutDialog::keyReleaseEvent(QKeyEvent* event)
{
if (m_ks == QKeySequence(Qt::Key_Escape)) {
reject();
}
accept();
}