1 // Copyright 2018 Dolphin Emulator Project
2 // Licensed under GPLv2+
3 // Refer to the license.txt file included.
4 
5 #pragma once
6 
7 #include <vector>
8 
9 #include <QWidget>
10 
11 class QGroupBox;
12 class QLabel;
13 class QLineEdit;
14 class QListWidget;
15 class QPushButton;
16 class QSplitter;
17 class QTextBrowser;
18 class QTreeWidget;
19 
20 class FIFOAnalyzer final : public QWidget
21 {
22   Q_OBJECT
23 
24 public:
25   explicit FIFOAnalyzer();
26   ~FIFOAnalyzer();
27 
28   void Update();
29 
30 private:
31   void CreateWidgets();
32   void ConnectWidgets();
33 
34   void BeginSearch();
35   void FindNext();
36   void FindPrevious();
37 
38   void ShowSearchResult(size_t index);
39 
40   void UpdateTree();
41   void UpdateDetails();
42   void UpdateDescription();
43 
44   QTreeWidget* m_tree_widget;
45   QListWidget* m_detail_list;
46   QTextBrowser* m_entry_detail_browser;
47   QSplitter* m_object_splitter;
48 
49   // Search
50   QGroupBox* m_search_box;
51   QLineEdit* m_search_edit;
52   QPushButton* m_search_new;
53   QPushButton* m_search_next;
54   QPushButton* m_search_previous;
55   QLabel* m_search_label;
56   QSplitter* m_search_splitter;
57 
58   struct SearchResult
59   {
60     int frame;
61     int object;
62     int cmd;
63   };
64 
65   std::vector<int> m_object_data_offsets;
66   std::vector<SearchResult> m_search_results;
67 };
68