Wireshark  2.9.0-477-g68ec514b
The Wireshark network protocol analyzer
label_stack.h
1 /* label_stack.h
2  *
3  * Wireshark - Network traffic analyzer
4  * By Gerald Combs <gerald@wireshark.org>
5  * Copyright 1998 Gerald Combs
6  *
7  * SPDX-License-Identifier: GPL-2.0-or-later
8  */
9 
10 #ifndef LABEL_STACK_H
11 #define LABEL_STACK_H
12 
13 #include <QLabel>
14 #include <QStack>
15 #include <QTime>
16 #include <QTimer>
17 
18 class LabelStack : public QLabel
19 {
20  Q_OBJECT
21 public:
22  explicit LabelStack(QWidget *parent = 0);
23  void setTemporaryContext(const int ctx);
24  void pushText(const QString &text, int ctx);
25  void setShrinkable(bool shrinkable = true);
26 
27 protected:
28  void mousePressEvent(QMouseEvent *event);
29  void mouseReleaseEvent(QMouseEvent *event);
30  void mouseDoubleClickEvent(QMouseEvent *event);
31  void mouseMoveEvent(QMouseEvent *event);
32  void contextMenuEvent(QContextMenuEvent *event);
33  void paintEvent (QPaintEvent *event);
34 
35 private:
36  typedef struct _StackItem {
37  QString text;
38  int ctx;
39  } StackItem;
40 
41  int temporary_ctx_;
42  QList<StackItem> labels_;
43  bool shrinkable_;
44  QTime temporary_epoch_;
45  QTimer temporary_timer_;
46 
47  void fillLabel();
48 
49 signals:
50  void toggleTemporaryFlash(bool enable);
51  void mousePressedAt(const QPoint &global_pos, Qt::MouseButton button);
52 
53 public slots:
54  void popText(int ctx);
55 
56 private slots:
57  void updateTemporaryStatus();
58 };
59 
60 #endif // LABEL_STACK_H
61 
62 /*
63  * Editor modelines
64  *
65  * Local Variables:
66  * c-basic-offset: 4
67  * tab-width: 8
68  * indent-tabs-mode: nil
69  * End:
70  *
71  * ex: set shiftwidth=4 tabstop=8 expandtab:
72  * :indentSize=4:tabSize=8:noTabs=true:
73  */
Definition: label_stack.h:18