[go: nahoru, domu]

blob: 20780e9186d4f1d4cd8107c8a109f55108b361ff [file] [log] [blame]
Alexander Alekseevfefc6c12020-08-19 10:48:441// Copyright 2020 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef ASH_HUD_DISPLAY_GRAPH_PAGE_VIEW_BASE_H_
6#define ASH_HUD_DISPLAY_GRAPH_PAGE_VIEW_BASE_H_
7
8#include "ash/hud_display/data_source.h"
Alexander Alekseev7d66f342020-09-03 15:57:179#include "ash/hud_display/legend.h"
Alexander Alekseevfefc6c12020-08-19 10:48:4410#include "base/sequence_checker.h"
11#include "ui/views/view.h"
12
Alexander Alekseev7d66f342020-09-03 15:57:1713namespace views {
14class ImageButton;
15}
16
Alexander Alekseevfefc6c12020-08-19 10:48:4417namespace ash {
18namespace hud_display {
19
Alexander Alekseev7d66f342020-09-03 15:57:1720class Grid;
Alexander Alekseev0fbea5c2020-09-29 05:05:4721class Legend;
Alexander Alekseev7d66f342020-09-03 15:57:1722
Alexander Alekseevfefc6c12020-08-19 10:48:4423// Interface for a single graph page.
Allen Bauer44c7f3682020-10-22 22:12:5824class GraphPageViewBase : public views::View {
Alexander Alekseevfefc6c12020-08-19 10:48:4425 public:
26 METADATA_HEADER(GraphPageViewBase);
27
28 GraphPageViewBase();
29 GraphPageViewBase(const GraphPageViewBase&) = delete;
30 GraphPageViewBase& operator=(const GraphPageViewBase&) = delete;
31 ~GraphPageViewBase() override;
32
33 // Update page data from the new snapshot.
34 virtual void UpdateData(const DataSource::Snapshot& snapshot) = 0;
35
Alexander Alekseev7d66f342020-09-03 15:57:1736 // Adds default legend.
37 void CreateLegend(const std::vector<Legend::Entry>& entries);
38
Alexander Alekseev666011d62020-10-26 20:28:5039 // Put grid in its dedicated container. See Grid class for details.
Alexander Alekseev7d66f342020-09-03 15:57:1740 Grid* CreateGrid(float left,
41 float top,
42 float right,
43 float bottom,
Jan Wilken Dörrie85285b02021-03-11 23:38:4744 const std::u16string& x_unit,
45 const std::u16string& y_unit,
Alexander Alekseev7d66f342020-09-03 15:57:1746 int horizontal_points_number,
Alexander Alekseev666011d62020-10-26 20:28:5047 int horizontal_ticks_interval,
48 float vertical_ticks_interval);
Alexander Alekseev7d66f342020-09-03 15:57:1749
Alexander Alekseev0fbea5c2020-09-29 05:05:4750 protected:
51 void RefreshLegendValues();
52
Alexander Alekseevfefc6c12020-08-19 10:48:4453 private:
Allen Bauer44c7f3682020-10-22 22:12:5854 void OnButtonPressed();
55
Alexander Alekseev7d66f342020-09-03 15:57:1756 // Container for the Grid object.
57 views::View* grid_container_ = nullptr; // not owned
58
59 // Container for the legend object.
60 views::View* legend_container_ = nullptr; // not owned
61 views::ImageButton* legend_min_max_button_ = nullptr; // not owned
Alexander Alekseev0fbea5c2020-09-29 05:05:4762 Legend* legend_ = nullptr; // not owned
Alexander Alekseev7d66f342020-09-03 15:57:1763
Alexander Alekseevfefc6c12020-08-19 10:48:4464 SEQUENCE_CHECKER(ui_sequence_checker_);
65};
66
67} // namespace hud_display
68} // namespace ash
69
70#endif // ASH_HUD_DISPLAY_GRAPH_PAGE_VIEW_BASE_H_