blob: 28856b9d853b333e4035c99ed69c729dd7ae63b9 [file] [log] [blame]
// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MINIOS_SCREENS_SCREEN_LOG_H_
#define MINIOS_SCREENS_SCREEN_LOG_H_
#include <memory>
#include <string>
#include <vector>
#include "minios/screens/screen_base.h"
namespace minios {
class ScreenLog : public ScreenBase {
public:
ScreenLog(std::shared_ptr<DrawInterface> draw_utils,
ScreenControllerInterface* screen_controller);
~ScreenLog() = default;
ScreenLog(const ScreenLog&) = delete;
ScreenLog& operator=(const ScreenLog&) = delete;
void Show() override;
void Reset() override;
void OnKeyPress(int key_changed) override;
ScreenType GetType() override;
std::string GetName() override;
private:
// Updates buttons with current selection.
void ShowButtons();
// Updates the logs shown based on the up/down buttons pressed.
void UpdateLogArea();
// Used to keep track of the log to display.
base::FilePath log_path_;
// Used to keep track of the byte offsets in the file.
size_t log_offset_idx_ = 0;
std::vector<int64_t> log_offsets_ = {0};
};
} // namespace minios
#endif // MINIOS_SCREENS_SCREEN_LOG_H_