File indexing completed on 2025-03-09 05:11:45

0001 /*
0002 SPDX-FileCopyrightText: 2021 Hamed Masafi <hamed.masfi@gmail.com>
0003 
0004 SPDX-License-Identifier: GPL-3.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QObject>
0010 
0011 #include "libkommitwidgets_export.h"
0012 
0013 class QAction;
0014 class QPlainTextEdit;
0015 class KActionCollection;
0016 class LIBKOMMITWIDGETS_EXPORT EditActionsMapper : public QObject
0017 {
0018     Q_OBJECT
0019 
0020 public:
0021     explicit EditActionsMapper(QObject *parent = nullptr);
0022     ~EditActionsMapper() override = default;
0023 
0024     void addTextEdit(QPlainTextEdit *control);
0025     void init(KActionCollection *actionCollection);
0026 
0027 private Q_SLOTS:
0028     void control_undoAvailable(bool b);
0029     void control_redoAvailable(bool b);
0030     void control_copyAvailable(bool b);
0031     void control_selectionChanged();
0032 
0033     void actionUndo_triggered();
0034     void actionRedo_triggered();
0035     void actionCopy_triggered();
0036     void actionCut_triggered();
0037     void actionPaste_triggered();
0038     void actionSelectAll_triggered();
0039     void actionDelete_triggered();
0040 
0041     // QObject interface
0042 public:
0043     bool eventFilter(QObject *watched, QEvent *event) override;
0044 
0045 private:
0046     QList<QPlainTextEdit *> mTextEdits;
0047     QPlainTextEdit *mActiveControl{nullptr};
0048 
0049     QAction *mActionCut{nullptr};
0050     QAction *mActionCopy{nullptr};
0051     QAction *mActionPaste{nullptr};
0052     QAction *mSelectAll{nullptr};
0053     QAction *mActionUndo{nullptr};
0054     QAction *mActionRedo{nullptr};
0055 };