1 /* main_status_bar.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 MAIN_STATUS_BAR_H
11 #define MAIN_STATUS_BAR_H
12 
13 #include "config.h"
14 
15 #include "cfile.h"
16 
17 #include "capture/capture_session.h"
18 
19 #include <ui/qt/utils/field_information.h>
20 #include <ui/qt/widgets/label_stack.h>
21 #include <ui/qt/widgets/clickable_label.h>
22 #include "progress_frame.h"
23 #include "wireshark_application.h"
24 
25 #include <QLabel>
26 #include <QMenu>
27 #include <QStatusBar>
28 
29 class CaptureFile;
30 class QToolButton;
31 
32 class MainStatusBar : public QStatusBar
33 {
34     Q_OBJECT
35 public:
36     explicit MainStatusBar(QWidget *parent = 0);
37     void showExpert();
38     void captureFileClosing();
39     void expertUpdate();
40     void setFileName(CaptureFile &cf);
41 
42 protected:
43 
44     enum StatusContext {
45         STATUS_CTX_MAIN,
46         STATUS_CTX_FILE,
47         STATUS_CTX_FIELD,
48         STATUS_CTX_BYTE,
49         STATUS_CTX_FILTER,
50         STATUS_CTX_PROGRESS,
51         STATUS_CTX_TEMPORARY
52     };
53 
54     virtual void changeEvent(QEvent* event);
55 
56 private:
57     QToolButton *expert_button_;
58     QToolButton *comment_button_;
59     LabelStack info_status_;
60     ProgressFrame progress_frame_;
61     LabelStack packet_status_;
62     ClickableLabel profile_status_;
63     capture_file *cap_file_;
64     QString ready_msg_;
65 
66     // Capture statistics
67     bool cs_fixed_;
68     guint32 cs_count_;
69 
70     void showCaptureStatistics();
71 
72     void pushGenericStatus(StatusContext status, const QString &message, const QString &messagetip = QString());
73     void popGenericStatus(StatusContext status);
74 
75 signals:
76     void showExpertInfo();
77     void editCaptureComment();
78     void stopLoading();
79 
80 public slots:
81     void setCaptureFile(capture_file *cf);
82     void selectedFieldChanged(FieldInformation *);
83     void highlightedFieldChanged(FieldInformation *);
84     void selectedFrameChanged(QList<int>);
85 
86     void updateCaptureStatistics(capture_session * cap_session);
87     void updateCaptureFixedStatistics(capture_session * cap_session);
88 
89     void captureEventHandler(CaptureEvent ev);
90 
91 private slots:
92     void appInitialized();
93     void toggleBackground(bool enabled);
94     void setProfileName();
95     void switchToProfile();
96     void manageProfile();
97     void showProfileMenu(const QPoint &global_pos, Qt::MouseButton button);
98 
99     friend WiresharkApplication;
100 };
101 
102 #endif // MAIN_STATUS_BAR_H
103