File indexing completed on 2024-04-28 17:06:04

0001 /*
0002     SPDX-FileCopyrightText: 2000 Shie Erlich <krusader@users.sourceforge.net>
0003     SPDX-FileCopyrightText: 2000 Rafi Yanai <krusader@users.sourceforge.net>
0004     SPDX-FileCopyrightText: 2004-2022 Krusader Krew <https://krusader.org>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "kfnkeys.h"
0010 
0011 // QtWidgets
0012 #include <QGridLayout>
0013 
0014 #include <KI18n/KLocalizedString>
0015 
0016 #include "../Panel/listpanelactions.h"
0017 #include "../defaults.h"
0018 #include "../kractions.h"
0019 #include "../krmainwindow.h"
0020 
0021 KFnKeys::KFnKeys(QWidget *parent, KrMainWindow *mainWindow)
0022     : QWidget(parent)
0023     , mainWindow(mainWindow)
0024 {
0025     buttonList << setup(mainWindow->listPanelActions()->actRenameF2, i18n("Rename")) << setup(mainWindow->listPanelActions()->actViewFileF3, i18n("View"))
0026                << setup(mainWindow->listPanelActions()->actEditFileF4, i18n("Edit")) << setup(mainWindow->listPanelActions()->actCopyF5, i18n("Copy"))
0027                << setup(mainWindow->listPanelActions()->actMoveF6, i18n("Move")) << setup(mainWindow->listPanelActions()->actNewFolderF7, i18n("Mkdir"))
0028                << setup(mainWindow->listPanelActions()->actDeleteF8, i18n("Delete")) << setup(mainWindow->listPanelActions()->actTerminalF9, i18n("Term"))
0029                << setup(mainWindow->krActions()->actF10Quit, i18n("Quit"));
0030 
0031     updateShortcuts();
0032 
0033     auto *layout = new QGridLayout(this);
0034     layout->setContentsMargins(0, 0, 0, 0);
0035     layout->setSpacing(0);
0036 
0037     int pos = 0;
0038     for (QPair<QPushButton *, QPair<QAction *, const QString &>> entry : qAsConst(buttonList)) {
0039         layout->addWidget(entry.first, 0, pos++);
0040     }
0041     layout->activate();
0042 }
0043 
0044 void KFnKeys::updateShortcuts()
0045 {
0046     for (ButtonEntry entry : buttonList) {
0047         entry.first->setText(entry.second.first->shortcut().toString() + ' ' + entry.second.second);
0048     }
0049 }
0050 
0051 KFnKeys::ButtonEntry KFnKeys::setup(QAction *action, const QString &text)
0052 {
0053     auto *button = new QPushButton(this);
0054     button->setMinimumWidth(45);
0055     button->setToolTip(action->toolTip());
0056     connect(button, &QPushButton::clicked, action, &QAction::trigger);
0057     return QPair<QPushButton *, QPair<QAction *, QString>>(button, QPair<QAction *, QString>(action, text));
0058 }