123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #pragma once
- #include <array>
- #include <QBasicTimer>
- #include <QObject>
- #include <QSocketNotifier>
- #include <QTimer>
- #include <QTimerEvent>
- #include "tools/replay/replay.h"
- #include <ncurses.h>
- class ConsoleUI : public QObject {
- Q_OBJECT
- public:
- ConsoleUI(Replay *replay, QObject *parent = 0);
- ~ConsoleUI();
- inline static const std::array speed_array = {0.2f, 0.5f, 1.0f, 2.0f, 3.0f};
- private:
- void initWindows();
- void handleKey(char c);
- void displayHelp();
- void displayTimelineDesc();
- void updateTimeline();
- void updateSummary();
- void updateStatus();
- void pauseReplay(bool pause);
- enum Status { Waiting, Playing, Paused };
- enum Win { Title, Stats, Log, LogBorder, DownloadBar, Timeline, TimelineDesc, Help, CarState, Max};
- std::array<WINDOW*, Win::Max> w{};
- SubMaster sm;
- Replay *replay;
- QBasicTimer getch_timer;
- QTimer sm_timer;
- QSocketNotifier notifier{0, QSocketNotifier::Read, this};
- int max_width, max_height;
- Status status = Status::Waiting;
- signals:
- void updateProgressBarSignal(uint64_t cur, uint64_t total, bool success);
- void logMessageSignal(ReplyMsgType type, const QString &msg);
- private slots:
- void readyRead();
- void timerEvent(QTimerEvent *ev);
- void updateProgressBar(uint64_t cur, uint64_t total, bool success);
- void logMessage(ReplyMsgType type, const QString &msg);
- };
|