LeechCraft 0.6.70-16373-g319c272718
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
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
18class QMenu;
19
20namespace 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 ();
82 void scrolled (int, Qt::Orientation);
83 };
84}
std::variant< QString, QIcon > Icon
void scrolled(int, Qt::Orientation)
#define UTIL_GUI_API
Definition guiconfig.h:16