File indexing completed on 2024-04-28 04:21:25

0001 // SPDX-FileCopyrightText: 2023 Jesper K. Pedersen <jesper.pedersen@kdab.com>
0002 //
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 #pragma once
0006 
0007 #include <KLocalizedString>
0008 #include <QMap>
0009 #include <QObject>
0010 
0011 class QKeyEvent;
0012 
0013 namespace Viewer
0014 {
0015 
0016 class AnnotationHandler : public QObject
0017 {
0018     Q_OBJECT
0019 
0020 public:
0021     AnnotationHandler(QObject *parent);
0022     bool handle(QKeyEvent *event);
0023     bool askForTagAndInsert();
0024 
0025     struct Assignment {
0026         QString category;
0027         QString value;
0028     };
0029     using Key = QString;
0030     using Assignments = QMap<Key, Assignment>;
0031 
0032     Assignments assignments() const;
0033 
0034 Q_SIGNALS:
0035     void requestToggleCategory(const QString &category, const QString &value);
0036     void requestHelp();
0037 
0038 private:
0039     bool assignKey(const QString &key);
0040     void clearKey(const QString &key);
0041     void saveSettings();
0042     void loadSettings();
0043 
0044     Assignments m_assignments;
0045 };
0046 
0047 QDebug operator<<(QDebug debug, const AnnotationHandler::Assignment &a);
0048 
0049 } // namespace Viewer