LeechCraft  0.6.70-16373-g319c272718
Modular cross-platform feature rich live environment.
ihaveshortcuts.h
Go to the documentation of this file.
1 /**********************************************************************
2  * LeechCraft - modular cross-platform feature rich internet client.
3  * Copyright (C) 2006-2014 Georg Rudoy
4  *
5  * Distributed under the Boost Software License, Version 1.0.
6  * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7  **********************************************************************/
8 
9 #pragma once
10 
11 #include <variant>
12 #include <QtPlugin>
13 #include <QString>
14 #include <QKeySequence>
15 #include <QIcon>
16 #include <QMetaType>
17 #include <util/sll/void.h>
18 
19 class QAction;
20 
23 
24 namespace LC
25 {
32  struct ActionInfo
33  {
35  QString Text_ {};
37  QKeySequence Seq_ {};
39  std::variant<Util::Void, QByteArray, QIcon> Icon_ { Util::Void {} };
42 
44  {
45  if (AdditionalSeqs_.isEmpty ())
46  return { Seq_ };
47 
48  QKeySequences_t result;
49  result.reserve (AdditionalSeqs_.size () + 1);
50  result.push_back (Seq_);
51  result += AdditionalSeqs_;
52  return result;
53  }
54  };
55 };
56 
58 
59 
67 class Q_DECL_EXPORT IHaveShortcuts
68 {
69 public:
77  virtual void SetShortcut (const QByteArray& id, const QKeySequences_t& sequences) = 0;
78 
87  virtual QMap<QByteArray, LC::ActionInfo> GetActionInfo () const = 0;
88 
89  virtual ~IHaveShortcuts () { }
90 };
91 
92 Q_DECLARE_INTERFACE (IHaveShortcuts, "org.Deviant.LeechCraft.IHaveShortcuts/1.0")
virtual ~IHaveShortcuts()
Describes an action exposed in shortcut manager.
QKeySequences_t GetAllShortcuts() const
QString Text_
User-visible name of the action.
QKeySequences_t AdditionalSeqs_
The additional key sequences for this action.
Interface for plugins that support configuring shortcuts.
Q_DECLARE_METATYPE(QVariantList *)
QKeySequence Seq_
The primary key sequence for this action.
std::variant< Util::Void, QByteArray, QIcon > Icon_
Icon of the action, either a QIcon itself or its ActionIcon.
A proper void type, akin to unit (or ()) type in functional languages.
Definition: void.h:20