LeechCraft  0.6.70-16373-g319c272718
Modular cross-platform feature rich live environment.
fancytrayicon.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 <memory>
12 #include <variant>
13 #include <QObject>
14 #include <QIcon>
15 #include <QPointer>
16 #include "guiconfig.h"
17 
18 class QMenu;
19 
20 namespace LC::Util
21 {
22  class FancyTrayIconImpl;
23 
24  class UTIL_GUI_API FancyTrayIcon : public QObject
25  {
26  Q_OBJECT
27  public:
28  struct IconInfo
29  {
30  QString Id_;
31  QString Title_;
32  };
33 
34  struct Tooltip
35  {
36  QString PlainText_;
37  QString HTML_;
38  };
39 
40  enum class Status
41  {
42  Passive,
43  Active,
44  NeedsAttention,
45  };
46 
47  using Icon = std::variant<QString, QIcon>;
48  private:
49  std::unique_ptr<FancyTrayIconImpl> Impl_;
50 
51  const IconInfo Info_;
52 
53  bool Visible_ = true;
54  Status Status_ = Status::Active;
55  Icon Icon_;
56  Tooltip Tooltip_;
57  QPointer<QMenu> Menu_;
58  public:
59  explicit FancyTrayIcon (IconInfo info, QObject *parent = nullptr);
60  ~FancyTrayIcon () override;
61 
62  const IconInfo& GetInfo () const;
63 
64  void SetVisible (bool visible);
65 
66  void SetStatus (Status status);
67  Status GetStatus () const;
68 
69  void SetIcon (const Icon& icon);
70  const Icon& GetIcon () const;
71 
72  void SetToolTip (Tooltip tooltip);
73  const Tooltip& GetTooltip () const;
74 
75  void SetContextMenu (QMenu *menu);
76  QMenu* GetContextMenu () const;
77  private:
78  void ReinitImpl ();
79  signals:
80  void activated ();
81  void secondaryActivated ();
82  void scrolled (int, Qt::Orientation);
83  };
84 }
#define UTIL_GUI_API
Definition: guiconfig.h:16
std::variant< QString, QIcon > Icon
Definition: fancytrayicon.h:47