Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_input_configuration_page_item.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the KDE project
3 * SPDX-FileCopyrightText: 2013 Arjen Hiemstra <ahiemstra@heimr.nl>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
9
10#include "kis_icon_utils.h"
11
19#include "ui_kis_input_configuration_page_item.h"
20
21#include <QAction>
22#include <QMessageBox>
23#include <QToolTip>
24
26 : QWidget(parent, f)
27 , m_defaultToolTipText(i18n("Conflict found for a Shortcut in this Action."))
28{
29 ui = new Ui::KisInputConfigurationPageItem;
30 this->setContentsMargins(0,0,0,0);
31 ui->setupUi(this);
32
34 ui->shortcutsView->setModel(m_shortcutsModel);
35 ui->shortcutsView->setItemDelegateForColumn(0, new KisInputTypeDelegate(ui->shortcutsView));
36 ui->shortcutsView->setItemDelegateForColumn(1, new KisInputEditorDelegate(ui->shortcutsView));
37 ui->shortcutsView->setItemDelegateForColumn(2, new KisInputModeDelegate(ui->shortcutsView));
38 ui->shortcutsView->header()->setSectionResizeMode(QHeaderView::Stretch);
39 setExpanded(false);
40
41 ui->warningConflictButton->setIcon(KisIconUtils::loadIcon("warning"));
42 ui->warningConflictButton->setFlat(true);
43 ui->warningConflictButton->hide();
44 connect(ui->warningConflictButton, &QPushButton::clicked, [&]() {
45 QToolTip::showText(QCursor::pos(), ui->warningConflictButton->toolTip());
46 });
47
48 connect(m_shortcutsModel, &KisActionShortcutsModel::dataChanged, this, [&]() {
50 });
51
52 QAction *deleteAction = new QAction(KisIconUtils::loadIcon("edit-delete"), i18n("Delete Shortcut"), ui->shortcutsView);
53 connect(deleteAction, SIGNAL(triggered(bool)), SLOT(deleteShortcut()));
54 ui->shortcutsView->addAction(deleteAction);
55 ui->shortcutsView->setContextMenuPolicy(Qt::ActionsContextMenu);
56
57 connect(ui->collapseButton, SIGNAL(clicked(bool)), SLOT(setExpanded(bool)));
58}
59
64
66{
67 m_action = action;
68 ui->collapseButton->setText(action->name());
69 ui->descriptionLabel->setText(action->description());
72 qobject_cast<KisInputModeDelegate *>(ui->shortcutsView->itemDelegateForColumn(2))->setAction(action);
73}
74
75void KisInputConfigurationPageItem::setWarningEnabled(bool enabled, QString additionalToolTipText)
76{
77 ui->warningConflictButton->setVisible(enabled);
78 if (!enabled) {
79 ui->warningConflictButton->setToolTip(m_defaultToolTipText);
80 } else if (!additionalToolTipText.isEmpty()) {
81 const QString toolTipText =
82 "<html>" +
83 ui->warningConflictButton->toolTip() + "<br>" + additionalToolTipText +
84 "</html>";
85 ui->warningConflictButton->setToolTip(toolTipText);
86 }
87}
88
90{
91 if (expand) {
92 ui->descriptionLabel->setVisible(true);
93 ui->shortcutsView->setVisible(true);
94 ui->collapseButton->setArrowType(Qt::DownArrow);
95 }
96 else {
97 ui->descriptionLabel->setVisible(false);
98 ui->shortcutsView->setVisible(false);
99 ui->collapseButton->setArrowType(Qt::RightArrow);
100 }
101}
102
104{
105 int row = ui->shortcutsView->selectionModel()->currentIndex().row();
106
107 if (m_shortcutsModel->canRemoveRow(row)) {
108 m_shortcutsModel->removeRow(row, QModelIndex());
110 } else {
111 QMessageBox shortcutMessage;
112 shortcutMessage.setText(i18n("Deleting last shortcut for this action!"));
113 shortcutMessage.setInformativeText(i18n("It is not allowed to erase some default shortcuts. Modify it instead."));
114 shortcutMessage.exec();
115 }
116}
void expand(ExpansionStrategy &expansionStrategy, KoUpdater *progressUpdater)
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
Abstract base class for input actions.
A QAbstractListModel subclass that lists shortcuts associated with an action from a profile.
void setProfile(KisInputProfile *profile)
void setAction(KisAbstractInputAction *action)
Ui::KisInputConfigurationPageItem * ui
void setWarningEnabled(bool enabled, QString additionalToolTipText=QString())
void setAction(KisAbstractInputAction *action)
KisInputConfigurationPageItem(QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags())
A delegate providing editors for the keys/buttons/etc. of KisShortcutConfiguration.
A delegate providing editors for the mode property of KisShortcutConfiguration.
static KisInputProfileManager * instance()
A delegate providing editors for the type property of KisShortcutConfiguration.
QIcon loadIcon(const QString &name)